# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.8.0, generator: @autorest/python@5.12.2)
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

import datetime
from typing import Any, Dict, IO, List, Optional, Union

from azure.core.exceptions import HttpResponseError
import msrest.serialization

from ._azure_machine_learning_designer_service_client_enums import *


class ACIAdvanceSettings(msrest.serialization.Model):
    """ACIAdvanceSettings.

    :ivar container_resource_requirements:
    :vartype container_resource_requirements: ~flow.models.ContainerResourceRequirements
    :ivar app_insights_enabled:
    :vartype app_insights_enabled: bool
    :ivar ssl_enabled:
    :vartype ssl_enabled: bool
    :ivar ssl_certificate:
    :vartype ssl_certificate: str
    :ivar ssl_key:
    :vartype ssl_key: str
    :ivar c_name:
    :vartype c_name: str
    :ivar dns_name_label:
    :vartype dns_name_label: str
    """

    _attribute_map = {
        'container_resource_requirements': {'key': 'containerResourceRequirements', 'type': 'ContainerResourceRequirements'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'ssl_enabled': {'key': 'sslEnabled', 'type': 'bool'},
        'ssl_certificate': {'key': 'sslCertificate', 'type': 'str'},
        'ssl_key': {'key': 'sslKey', 'type': 'str'},
        'c_name': {'key': 'cName', 'type': 'str'},
        'dns_name_label': {'key': 'dnsNameLabel', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        container_resource_requirements: Optional["ContainerResourceRequirements"] = None,
        app_insights_enabled: Optional[bool] = None,
        ssl_enabled: Optional[bool] = None,
        ssl_certificate: Optional[str] = None,
        ssl_key: Optional[str] = None,
        c_name: Optional[str] = None,
        dns_name_label: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword container_resource_requirements:
        :paramtype container_resource_requirements: ~flow.models.ContainerResourceRequirements
        :keyword app_insights_enabled:
        :paramtype app_insights_enabled: bool
        :keyword ssl_enabled:
        :paramtype ssl_enabled: bool
        :keyword ssl_certificate:
        :paramtype ssl_certificate: str
        :keyword ssl_key:
        :paramtype ssl_key: str
        :keyword c_name:
        :paramtype c_name: str
        :keyword dns_name_label:
        :paramtype dns_name_label: str
        """
        super(ACIAdvanceSettings, self).__init__(**kwargs)
        self.container_resource_requirements = container_resource_requirements
        self.app_insights_enabled = app_insights_enabled
        self.ssl_enabled = ssl_enabled
        self.ssl_certificate = ssl_certificate
        self.ssl_key = ssl_key
        self.c_name = c_name
        self.dns_name_label = dns_name_label


class Activate(msrest.serialization.Model):
    """Activate.

    :ivar when:
    :vartype when: str
    :ivar is_property: Anything.
    :vartype is_property: any
    """

    _attribute_map = {
        'when': {'key': 'when', 'type': 'str'},
        'is_property': {'key': 'is', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        when: Optional[str] = None,
        is_property: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword when:
        :paramtype when: str
        :keyword is_property: Anything.
        :paramtype is_property: any
        """
        super(Activate, self).__init__(**kwargs)
        self.when = when
        self.is_property = is_property


class AdditionalErrorInfo(msrest.serialization.Model):
    """AdditionalErrorInfo.

    :ivar type:
    :vartype type: str
    :ivar info: Anything.
    :vartype info: any
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'info': {'key': 'info', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        info: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword info: Anything.
        :paramtype info: any
        """
        super(AdditionalErrorInfo, self).__init__(**kwargs)
        self.type = type
        self.info = info


class AdhocTriggerScheduledCommandJobRequest(msrest.serialization.Model):
    """AdhocTriggerScheduledCommandJobRequest.

    :ivar job_name:
    :vartype job_name: str
    :ivar job_display_name:
    :vartype job_display_name: str
    :ivar trigger_time_string:
    :vartype trigger_time_string: str
    """

    _attribute_map = {
        'job_name': {'key': 'jobName', 'type': 'str'},
        'job_display_name': {'key': 'jobDisplayName', 'type': 'str'},
        'trigger_time_string': {'key': 'triggerTimeString', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        job_name: Optional[str] = None,
        job_display_name: Optional[str] = None,
        trigger_time_string: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword job_name:
        :paramtype job_name: str
        :keyword job_display_name:
        :paramtype job_display_name: str
        :keyword trigger_time_string:
        :paramtype trigger_time_string: str
        """
        super(AdhocTriggerScheduledCommandJobRequest, self).__init__(**kwargs)
        self.job_name = job_name
        self.job_display_name = job_display_name
        self.trigger_time_string = trigger_time_string


class AdhocTriggerScheduledSparkJobRequest(msrest.serialization.Model):
    """AdhocTriggerScheduledSparkJobRequest.

    :ivar job_name:
    :vartype job_name: str
    :ivar job_display_name:
    :vartype job_display_name: str
    :ivar trigger_time_string:
    :vartype trigger_time_string: str
    """

    _attribute_map = {
        'job_name': {'key': 'jobName', 'type': 'str'},
        'job_display_name': {'key': 'jobDisplayName', 'type': 'str'},
        'trigger_time_string': {'key': 'triggerTimeString', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        job_name: Optional[str] = None,
        job_display_name: Optional[str] = None,
        trigger_time_string: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword job_name:
        :paramtype job_name: str
        :keyword job_display_name:
        :paramtype job_display_name: str
        :keyword trigger_time_string:
        :paramtype trigger_time_string: str
        """
        super(AdhocTriggerScheduledSparkJobRequest, self).__init__(**kwargs)
        self.job_name = job_name
        self.job_display_name = job_display_name
        self.trigger_time_string = trigger_time_string


class AetherAmlDataset(msrest.serialization.Model):
    """AetherAmlDataset.

    :ivar registered_data_set_reference:
    :vartype registered_data_set_reference: ~flow.models.AetherRegisteredDataSetReference
    :ivar saved_data_set_reference:
    :vartype saved_data_set_reference: ~flow.models.AetherSavedDataSetReference
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'registered_data_set_reference': {'key': 'registeredDataSetReference', 'type': 'AetherRegisteredDataSetReference'},
        'saved_data_set_reference': {'key': 'savedDataSetReference', 'type': 'AetherSavedDataSetReference'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        registered_data_set_reference: Optional["AetherRegisteredDataSetReference"] = None,
        saved_data_set_reference: Optional["AetherSavedDataSetReference"] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword registered_data_set_reference:
        :paramtype registered_data_set_reference: ~flow.models.AetherRegisteredDataSetReference
        :keyword saved_data_set_reference:
        :paramtype saved_data_set_reference: ~flow.models.AetherSavedDataSetReference
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(AetherAmlDataset, self).__init__(**kwargs)
        self.registered_data_set_reference = registered_data_set_reference
        self.saved_data_set_reference = saved_data_set_reference
        self.additional_transformations = additional_transformations


class AetherAmlSparkCloudSetting(msrest.serialization.Model):
    """AetherAmlSparkCloudSetting.

    :ivar entry:
    :vartype entry: ~flow.models.AetherEntrySetting
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar inline_environment_definition_string:
    :vartype inline_environment_definition_string: str
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar compute:
    :vartype compute: str
    :ivar resources:
    :vartype resources: ~flow.models.AetherResourcesSetting
    :ivar identity:
    :vartype identity: ~flow.models.AetherIdentitySetting
    """

    _attribute_map = {
        'entry': {'key': 'entry', 'type': 'AetherEntrySetting'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'inline_environment_definition_string': {'key': 'inlineEnvironmentDefinitionString', 'type': 'str'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'compute': {'key': 'compute', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'AetherResourcesSetting'},
        'identity': {'key': 'identity', 'type': 'AetherIdentitySetting'},
    }

    def __init__(
        self,
        *,
        entry: Optional["AetherEntrySetting"] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        environment_asset_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        inline_environment_definition_string: Optional[str] = None,
        conf: Optional[Dict[str, str]] = None,
        compute: Optional[str] = None,
        resources: Optional["AetherResourcesSetting"] = None,
        identity: Optional["AetherIdentitySetting"] = None,
        **kwargs
    ):
        """
        :keyword entry:
        :paramtype entry: ~flow.models.AetherEntrySetting
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword inline_environment_definition_string:
        :paramtype inline_environment_definition_string: str
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword compute:
        :paramtype compute: str
        :keyword resources:
        :paramtype resources: ~flow.models.AetherResourcesSetting
        :keyword identity:
        :paramtype identity: ~flow.models.AetherIdentitySetting
        """
        super(AetherAmlSparkCloudSetting, self).__init__(**kwargs)
        self.entry = entry
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.environment_asset_id = environment_asset_id
        self.environment_variables = environment_variables
        self.inline_environment_definition_string = inline_environment_definition_string
        self.conf = conf
        self.compute = compute
        self.resources = resources
        self.identity = identity


class AetherAPCloudConfiguration(msrest.serialization.Model):
    """AetherAPCloudConfiguration.

    :ivar referenced_ap_module_guid:
    :vartype referenced_ap_module_guid: str
    :ivar user_alias:
    :vartype user_alias: str
    :ivar aether_module_type:
    :vartype aether_module_type: str
    :ivar allow_overwrite:
    :vartype allow_overwrite: bool
    :ivar destination_expiration_days:
    :vartype destination_expiration_days: int
    :ivar should_respect_line_boundaries:
    :vartype should_respect_line_boundaries: bool
    """

    _attribute_map = {
        'referenced_ap_module_guid': {'key': 'referencedAPModuleGuid', 'type': 'str'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'aether_module_type': {'key': 'aetherModuleType', 'type': 'str'},
        'allow_overwrite': {'key': 'allowOverwrite', 'type': 'bool'},
        'destination_expiration_days': {'key': 'destinationExpirationDays', 'type': 'int'},
        'should_respect_line_boundaries': {'key': 'shouldRespectLineBoundaries', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        referenced_ap_module_guid: Optional[str] = None,
        user_alias: Optional[str] = None,
        aether_module_type: Optional[str] = None,
        allow_overwrite: Optional[bool] = None,
        destination_expiration_days: Optional[int] = None,
        should_respect_line_boundaries: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword referenced_ap_module_guid:
        :paramtype referenced_ap_module_guid: str
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword aether_module_type:
        :paramtype aether_module_type: str
        :keyword allow_overwrite:
        :paramtype allow_overwrite: bool
        :keyword destination_expiration_days:
        :paramtype destination_expiration_days: int
        :keyword should_respect_line_boundaries:
        :paramtype should_respect_line_boundaries: bool
        """
        super(AetherAPCloudConfiguration, self).__init__(**kwargs)
        self.referenced_ap_module_guid = referenced_ap_module_guid
        self.user_alias = user_alias
        self.aether_module_type = aether_module_type
        self.allow_overwrite = allow_overwrite
        self.destination_expiration_days = destination_expiration_days
        self.should_respect_line_boundaries = should_respect_line_boundaries


class AetherArgumentAssignment(msrest.serialization.Model):
    """AetherArgumentAssignment.

    :ivar value_type: Possible values include: "Literal", "Parameter", "Input", "Output",
     "NestedList", "StringInterpolationList".
    :vartype value_type: str or ~flow.models.AetherArgumentValueType
    :ivar value:
    :vartype value: str
    :ivar nested_argument_list:
    :vartype nested_argument_list: list[~flow.models.AetherArgumentAssignment]
    :ivar string_interpolation_argument_list:
    :vartype string_interpolation_argument_list: list[~flow.models.AetherArgumentAssignment]
    """

    _attribute_map = {
        'value_type': {'key': 'valueType', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
        'nested_argument_list': {'key': 'nestedArgumentList', 'type': '[AetherArgumentAssignment]'},
        'string_interpolation_argument_list': {'key': 'stringInterpolationArgumentList', 'type': '[AetherArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        value_type: Optional[Union[str, "AetherArgumentValueType"]] = None,
        value: Optional[str] = None,
        nested_argument_list: Optional[List["AetherArgumentAssignment"]] = None,
        string_interpolation_argument_list: Optional[List["AetherArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword value_type: Possible values include: "Literal", "Parameter", "Input", "Output",
         "NestedList", "StringInterpolationList".
        :paramtype value_type: str or ~flow.models.AetherArgumentValueType
        :keyword value:
        :paramtype value: str
        :keyword nested_argument_list:
        :paramtype nested_argument_list: list[~flow.models.AetherArgumentAssignment]
        :keyword string_interpolation_argument_list:
        :paramtype string_interpolation_argument_list: list[~flow.models.AetherArgumentAssignment]
        """
        super(AetherArgumentAssignment, self).__init__(**kwargs)
        self.value_type = value_type
        self.value = value
        self.nested_argument_list = nested_argument_list
        self.string_interpolation_argument_list = string_interpolation_argument_list


class AetherAssetDefinition(msrest.serialization.Model):
    """AetherAssetDefinition.

    :ivar path:
    :vartype path: str
    :ivar type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
     "MLFlowModel", "TritonModel", "OpenAIModel".
    :vartype type: str or ~flow.models.AetherAssetType
    :ivar asset_id:
    :vartype asset_id: str
    :ivar initial_asset_id:
    :vartype initial_asset_id: str
    :ivar serialized_asset_id:
    :vartype serialized_asset_id: str
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'initial_asset_id': {'key': 'initialAssetId', 'type': 'str'},
        'serialized_asset_id': {'key': 'serializedAssetId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        path: Optional[str] = None,
        type: Optional[Union[str, "AetherAssetType"]] = None,
        asset_id: Optional[str] = None,
        initial_asset_id: Optional[str] = None,
        serialized_asset_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword path:
        :paramtype path: str
        :keyword type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
         "MLFlowModel", "TritonModel", "OpenAIModel".
        :paramtype type: str or ~flow.models.AetherAssetType
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword initial_asset_id:
        :paramtype initial_asset_id: str
        :keyword serialized_asset_id:
        :paramtype serialized_asset_id: str
        """
        super(AetherAssetDefinition, self).__init__(**kwargs)
        self.path = path
        self.type = type
        self.asset_id = asset_id
        self.initial_asset_id = initial_asset_id
        self.serialized_asset_id = serialized_asset_id


class AetherAssetOutputSettings(msrest.serialization.Model):
    """AetherAssetOutputSettings.

    :ivar path:
    :vartype path: str
    :ivar path_parameter_assignment:
    :vartype path_parameter_assignment: ~flow.models.AetherParameterAssignment
    :ivar type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
     "MLFlowModel", "TritonModel", "OpenAIModel".
    :vartype type: str or ~flow.models.AetherAssetType
    :ivar options: This is a dictionary.
    :vartype options: dict[str, str]
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'path_parameter_assignment': {'key': 'PathParameterAssignment', 'type': 'AetherParameterAssignment'},
        'type': {'key': 'type', 'type': 'str'},
        'options': {'key': 'options', 'type': '{str}'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        path: Optional[str] = None,
        path_parameter_assignment: Optional["AetherParameterAssignment"] = None,
        type: Optional[Union[str, "AetherAssetType"]] = None,
        options: Optional[Dict[str, str]] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword path:
        :paramtype path: str
        :keyword path_parameter_assignment:
        :paramtype path_parameter_assignment: ~flow.models.AetherParameterAssignment
        :keyword type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
         "MLFlowModel", "TritonModel", "OpenAIModel".
        :paramtype type: str or ~flow.models.AetherAssetType
        :keyword options: This is a dictionary.
        :paramtype options: dict[str, str]
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(AetherAssetOutputSettings, self).__init__(**kwargs)
        self.path = path
        self.path_parameter_assignment = path_parameter_assignment
        self.type = type
        self.options = options
        self.data_store_mode = data_store_mode
        self.name = name
        self.version = version


class AetherAutoFeaturizeConfiguration(msrest.serialization.Model):
    """AetherAutoFeaturizeConfiguration.

    :ivar featurization_config:
    :vartype featurization_config: ~flow.models.AetherFeaturizationSettings
    """

    _attribute_map = {
        'featurization_config': {'key': 'featurizationConfig', 'type': 'AetherFeaturizationSettings'},
    }

    def __init__(
        self,
        *,
        featurization_config: Optional["AetherFeaturizationSettings"] = None,
        **kwargs
    ):
        """
        :keyword featurization_config:
        :paramtype featurization_config: ~flow.models.AetherFeaturizationSettings
        """
        super(AetherAutoFeaturizeConfiguration, self).__init__(**kwargs)
        self.featurization_config = featurization_config


class AetherAutoMLComponentConfiguration(msrest.serialization.Model):
    """AetherAutoMLComponentConfiguration.

    :ivar auto_train_config:
    :vartype auto_train_config: ~flow.models.AetherAutoTrainConfiguration
    :ivar auto_featurize_config:
    :vartype auto_featurize_config: ~flow.models.AetherAutoFeaturizeConfiguration
    """

    _attribute_map = {
        'auto_train_config': {'key': 'autoTrainConfig', 'type': 'AetherAutoTrainConfiguration'},
        'auto_featurize_config': {'key': 'autoFeaturizeConfig', 'type': 'AetherAutoFeaturizeConfiguration'},
    }

    def __init__(
        self,
        *,
        auto_train_config: Optional["AetherAutoTrainConfiguration"] = None,
        auto_featurize_config: Optional["AetherAutoFeaturizeConfiguration"] = None,
        **kwargs
    ):
        """
        :keyword auto_train_config:
        :paramtype auto_train_config: ~flow.models.AetherAutoTrainConfiguration
        :keyword auto_featurize_config:
        :paramtype auto_featurize_config: ~flow.models.AetherAutoFeaturizeConfiguration
        """
        super(AetherAutoMLComponentConfiguration, self).__init__(**kwargs)
        self.auto_train_config = auto_train_config
        self.auto_featurize_config = auto_featurize_config


class AetherAutoTrainConfiguration(msrest.serialization.Model):
    """AetherAutoTrainConfiguration.

    :ivar general_settings:
    :vartype general_settings: ~flow.models.AetherGeneralSettings
    :ivar limit_settings:
    :vartype limit_settings: ~flow.models.AetherLimitSettings
    :ivar data_settings:
    :vartype data_settings: ~flow.models.AetherDataSettings
    :ivar forecasting_settings:
    :vartype forecasting_settings: ~flow.models.AetherForecastingSettings
    :ivar training_settings:
    :vartype training_settings: ~flow.models.AetherTrainingSettings
    :ivar sweep_settings:
    :vartype sweep_settings: ~flow.models.AetherSweepSettings
    :ivar image_model_settings: Dictionary of :code:`<any>`.
    :vartype image_model_settings: dict[str, any]
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar compute_configuration:
    :vartype compute_configuration: ~flow.models.AetherComputeConfiguration
    :ivar resource_configurtion:
    :vartype resource_configurtion: ~flow.models.AetherResourceConfiguration
    :ivar environment_id:
    :vartype environment_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    """

    _attribute_map = {
        'general_settings': {'key': 'generalSettings', 'type': 'AetherGeneralSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'AetherLimitSettings'},
        'data_settings': {'key': 'dataSettings', 'type': 'AetherDataSettings'},
        'forecasting_settings': {'key': 'forecastingSettings', 'type': 'AetherForecastingSettings'},
        'training_settings': {'key': 'trainingSettings', 'type': 'AetherTrainingSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'AetherSweepSettings'},
        'image_model_settings': {'key': 'imageModelSettings', 'type': '{object}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'compute_configuration': {'key': 'computeConfiguration', 'type': 'AetherComputeConfiguration'},
        'resource_configurtion': {'key': 'resourceConfigurtion', 'type': 'AetherResourceConfiguration'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        general_settings: Optional["AetherGeneralSettings"] = None,
        limit_settings: Optional["AetherLimitSettings"] = None,
        data_settings: Optional["AetherDataSettings"] = None,
        forecasting_settings: Optional["AetherForecastingSettings"] = None,
        training_settings: Optional["AetherTrainingSettings"] = None,
        sweep_settings: Optional["AetherSweepSettings"] = None,
        image_model_settings: Optional[Dict[str, Any]] = None,
        properties: Optional[Dict[str, str]] = None,
        compute_configuration: Optional["AetherComputeConfiguration"] = None,
        resource_configurtion: Optional["AetherResourceConfiguration"] = None,
        environment_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword general_settings:
        :paramtype general_settings: ~flow.models.AetherGeneralSettings
        :keyword limit_settings:
        :paramtype limit_settings: ~flow.models.AetherLimitSettings
        :keyword data_settings:
        :paramtype data_settings: ~flow.models.AetherDataSettings
        :keyword forecasting_settings:
        :paramtype forecasting_settings: ~flow.models.AetherForecastingSettings
        :keyword training_settings:
        :paramtype training_settings: ~flow.models.AetherTrainingSettings
        :keyword sweep_settings:
        :paramtype sweep_settings: ~flow.models.AetherSweepSettings
        :keyword image_model_settings: Dictionary of :code:`<any>`.
        :paramtype image_model_settings: dict[str, any]
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword compute_configuration:
        :paramtype compute_configuration: ~flow.models.AetherComputeConfiguration
        :keyword resource_configurtion:
        :paramtype resource_configurtion: ~flow.models.AetherResourceConfiguration
        :keyword environment_id:
        :paramtype environment_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        """
        super(AetherAutoTrainConfiguration, self).__init__(**kwargs)
        self.general_settings = general_settings
        self.limit_settings = limit_settings
        self.data_settings = data_settings
        self.forecasting_settings = forecasting_settings
        self.training_settings = training_settings
        self.sweep_settings = sweep_settings
        self.image_model_settings = image_model_settings
        self.properties = properties
        self.compute_configuration = compute_configuration
        self.resource_configurtion = resource_configurtion
        self.environment_id = environment_id
        self.environment_variables = environment_variables


class AetherAzureBlobReference(msrest.serialization.Model):
    """AetherAzureBlobReference.

    :ivar container:
    :vartype container: str
    :ivar sas_token:
    :vartype sas_token: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar path_type: Possible values include: "Unknown", "File", "Folder".
    :vartype path_type: str or ~flow.models.AetherFileBasedPathType
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'container': {'key': 'container', 'type': 'str'},
        'sas_token': {'key': 'sasToken', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'path_type': {'key': 'pathType', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        container: Optional[str] = None,
        sas_token: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        path_type: Optional[Union[str, "AetherFileBasedPathType"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword container:
        :paramtype container: str
        :keyword sas_token:
        :paramtype sas_token: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword path_type: Possible values include: "Unknown", "File", "Folder".
        :paramtype path_type: str or ~flow.models.AetherFileBasedPathType
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherAzureBlobReference, self).__init__(**kwargs)
        self.container = container
        self.sas_token = sas_token
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.path_type = path_type
        self.aml_data_store_name = aml_data_store_name


class AetherAzureDatabaseReference(msrest.serialization.Model):
    """AetherAzureDatabaseReference.

    :ivar server_uri:
    :vartype server_uri: str
    :ivar database_name:
    :vartype database_name: str
    :ivar table_name:
    :vartype table_name: str
    :ivar sql_query:
    :vartype sql_query: str
    :ivar stored_procedure_name:
    :vartype stored_procedure_name: str
    :ivar stored_procedure_parameters:
    :vartype stored_procedure_parameters: list[~flow.models.AetherStoredProcedureParameter]
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'server_uri': {'key': 'serverUri', 'type': 'str'},
        'database_name': {'key': 'databaseName', 'type': 'str'},
        'table_name': {'key': 'tableName', 'type': 'str'},
        'sql_query': {'key': 'sqlQuery', 'type': 'str'},
        'stored_procedure_name': {'key': 'storedProcedureName', 'type': 'str'},
        'stored_procedure_parameters': {'key': 'storedProcedureParameters', 'type': '[AetherStoredProcedureParameter]'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        server_uri: Optional[str] = None,
        database_name: Optional[str] = None,
        table_name: Optional[str] = None,
        sql_query: Optional[str] = None,
        stored_procedure_name: Optional[str] = None,
        stored_procedure_parameters: Optional[List["AetherStoredProcedureParameter"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword server_uri:
        :paramtype server_uri: str
        :keyword database_name:
        :paramtype database_name: str
        :keyword table_name:
        :paramtype table_name: str
        :keyword sql_query:
        :paramtype sql_query: str
        :keyword stored_procedure_name:
        :paramtype stored_procedure_name: str
        :keyword stored_procedure_parameters:
        :paramtype stored_procedure_parameters: list[~flow.models.AetherStoredProcedureParameter]
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherAzureDatabaseReference, self).__init__(**kwargs)
        self.server_uri = server_uri
        self.database_name = database_name
        self.table_name = table_name
        self.sql_query = sql_query
        self.stored_procedure_name = stored_procedure_name
        self.stored_procedure_parameters = stored_procedure_parameters
        self.aml_data_store_name = aml_data_store_name


class AetherAzureDataLakeGen2Reference(msrest.serialization.Model):
    """AetherAzureDataLakeGen2Reference.

    :ivar file_system_name:
    :vartype file_system_name: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar path_type: Possible values include: "Unknown", "File", "Folder".
    :vartype path_type: str or ~flow.models.AetherFileBasedPathType
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'file_system_name': {'key': 'fileSystemName', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'path_type': {'key': 'pathType', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file_system_name: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        path_type: Optional[Union[str, "AetherFileBasedPathType"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file_system_name:
        :paramtype file_system_name: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword path_type: Possible values include: "Unknown", "File", "Folder".
        :paramtype path_type: str or ~flow.models.AetherFileBasedPathType
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherAzureDataLakeGen2Reference, self).__init__(**kwargs)
        self.file_system_name = file_system_name
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.path_type = path_type
        self.aml_data_store_name = aml_data_store_name


class AetherAzureDataLakeReference(msrest.serialization.Model):
    """AetherAzureDataLakeReference.

    :ivar tenant:
    :vartype tenant: str
    :ivar subscription:
    :vartype subscription: str
    :ivar resource_group:
    :vartype resource_group: str
    :ivar data_lake_uri:
    :vartype data_lake_uri: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar path_type: Possible values include: "Unknown", "File", "Folder".
    :vartype path_type: str or ~flow.models.AetherFileBasedPathType
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'tenant': {'key': 'tenant', 'type': 'str'},
        'subscription': {'key': 'subscription', 'type': 'str'},
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'data_lake_uri': {'key': 'dataLakeUri', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'path_type': {'key': 'pathType', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        tenant: Optional[str] = None,
        subscription: Optional[str] = None,
        resource_group: Optional[str] = None,
        data_lake_uri: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        path_type: Optional[Union[str, "AetherFileBasedPathType"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword tenant:
        :paramtype tenant: str
        :keyword subscription:
        :paramtype subscription: str
        :keyword resource_group:
        :paramtype resource_group: str
        :keyword data_lake_uri:
        :paramtype data_lake_uri: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword path_type: Possible values include: "Unknown", "File", "Folder".
        :paramtype path_type: str or ~flow.models.AetherFileBasedPathType
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherAzureDataLakeReference, self).__init__(**kwargs)
        self.tenant = tenant
        self.subscription = subscription
        self.resource_group = resource_group
        self.data_lake_uri = data_lake_uri
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.path_type = path_type
        self.aml_data_store_name = aml_data_store_name


class AetherAzureFilesReference(msrest.serialization.Model):
    """AetherAzureFilesReference.

    :ivar share:
    :vartype share: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar path_type: Possible values include: "Unknown", "File", "Folder".
    :vartype path_type: str or ~flow.models.AetherFileBasedPathType
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'share': {'key': 'share', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'path_type': {'key': 'pathType', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        share: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        path_type: Optional[Union[str, "AetherFileBasedPathType"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword share:
        :paramtype share: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword path_type: Possible values include: "Unknown", "File", "Folder".
        :paramtype path_type: str or ~flow.models.AetherFileBasedPathType
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherAzureFilesReference, self).__init__(**kwargs)
        self.share = share
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.path_type = path_type
        self.aml_data_store_name = aml_data_store_name


class AetherBatchAiComputeInfo(msrest.serialization.Model):
    """AetherBatchAiComputeInfo.

    :ivar batch_ai_subscription_id:
    :vartype batch_ai_subscription_id: str
    :ivar batch_ai_resource_group:
    :vartype batch_ai_resource_group: str
    :ivar batch_ai_workspace_name:
    :vartype batch_ai_workspace_name: str
    :ivar cluster_name:
    :vartype cluster_name: str
    :ivar native_shared_directory:
    :vartype native_shared_directory: str
    """

    _attribute_map = {
        'batch_ai_subscription_id': {'key': 'batchAiSubscriptionId', 'type': 'str'},
        'batch_ai_resource_group': {'key': 'batchAiResourceGroup', 'type': 'str'},
        'batch_ai_workspace_name': {'key': 'batchAiWorkspaceName', 'type': 'str'},
        'cluster_name': {'key': 'clusterName', 'type': 'str'},
        'native_shared_directory': {'key': 'nativeSharedDirectory', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        batch_ai_subscription_id: Optional[str] = None,
        batch_ai_resource_group: Optional[str] = None,
        batch_ai_workspace_name: Optional[str] = None,
        cluster_name: Optional[str] = None,
        native_shared_directory: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword batch_ai_subscription_id:
        :paramtype batch_ai_subscription_id: str
        :keyword batch_ai_resource_group:
        :paramtype batch_ai_resource_group: str
        :keyword batch_ai_workspace_name:
        :paramtype batch_ai_workspace_name: str
        :keyword cluster_name:
        :paramtype cluster_name: str
        :keyword native_shared_directory:
        :paramtype native_shared_directory: str
        """
        super(AetherBatchAiComputeInfo, self).__init__(**kwargs)
        self.batch_ai_subscription_id = batch_ai_subscription_id
        self.batch_ai_resource_group = batch_ai_resource_group
        self.batch_ai_workspace_name = batch_ai_workspace_name
        self.cluster_name = cluster_name
        self.native_shared_directory = native_shared_directory


class AetherBuildArtifactInfo(msrest.serialization.Model):
    """AetherBuildArtifactInfo.

    :ivar type: Possible values include: "CloudBuild", "Vso", "VsoGit".
    :vartype type: str or ~flow.models.AetherBuildSourceType
    :ivar cloud_build_drop_path_info:
    :vartype cloud_build_drop_path_info: ~flow.models.AetherCloudBuildDropPathInfo
    :ivar vso_build_artifact_info:
    :vartype vso_build_artifact_info: ~flow.models.AetherVsoBuildArtifactInfo
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'cloud_build_drop_path_info': {'key': 'cloudBuildDropPathInfo', 'type': 'AetherCloudBuildDropPathInfo'},
        'vso_build_artifact_info': {'key': 'vsoBuildArtifactInfo', 'type': 'AetherVsoBuildArtifactInfo'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AetherBuildSourceType"]] = None,
        cloud_build_drop_path_info: Optional["AetherCloudBuildDropPathInfo"] = None,
        vso_build_artifact_info: Optional["AetherVsoBuildArtifactInfo"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "CloudBuild", "Vso", "VsoGit".
        :paramtype type: str or ~flow.models.AetherBuildSourceType
        :keyword cloud_build_drop_path_info:
        :paramtype cloud_build_drop_path_info: ~flow.models.AetherCloudBuildDropPathInfo
        :keyword vso_build_artifact_info:
        :paramtype vso_build_artifact_info: ~flow.models.AetherVsoBuildArtifactInfo
        """
        super(AetherBuildArtifactInfo, self).__init__(**kwargs)
        self.type = type
        self.cloud_build_drop_path_info = cloud_build_drop_path_info
        self.vso_build_artifact_info = vso_build_artifact_info


class AetherCloudBuildDropPathInfo(msrest.serialization.Model):
    """AetherCloudBuildDropPathInfo.

    :ivar build_info:
    :vartype build_info: ~flow.models.AetherCloudBuildInfo
    :ivar root:
    :vartype root: str
    """

    _attribute_map = {
        'build_info': {'key': 'buildInfo', 'type': 'AetherCloudBuildInfo'},
        'root': {'key': 'root', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        build_info: Optional["AetherCloudBuildInfo"] = None,
        root: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword build_info:
        :paramtype build_info: ~flow.models.AetherCloudBuildInfo
        :keyword root:
        :paramtype root: str
        """
        super(AetherCloudBuildDropPathInfo, self).__init__(**kwargs)
        self.build_info = build_info
        self.root = root


class AetherCloudBuildInfo(msrest.serialization.Model):
    """AetherCloudBuildInfo.

    :ivar queue_info:
    :vartype queue_info: ~flow.models.AetherCloudBuildQueueInfo
    :ivar build_id:
    :vartype build_id: str
    :ivar drop_url:
    :vartype drop_url: str
    """

    _attribute_map = {
        'queue_info': {'key': 'queueInfo', 'type': 'AetherCloudBuildQueueInfo'},
        'build_id': {'key': 'buildId', 'type': 'str'},
        'drop_url': {'key': 'dropUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        queue_info: Optional["AetherCloudBuildQueueInfo"] = None,
        build_id: Optional[str] = None,
        drop_url: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword queue_info:
        :paramtype queue_info: ~flow.models.AetherCloudBuildQueueInfo
        :keyword build_id:
        :paramtype build_id: str
        :keyword drop_url:
        :paramtype drop_url: str
        """
        super(AetherCloudBuildInfo, self).__init__(**kwargs)
        self.queue_info = queue_info
        self.build_id = build_id
        self.drop_url = drop_url


class AetherCloudBuildQueueInfo(msrest.serialization.Model):
    """AetherCloudBuildQueueInfo.

    :ivar build_queue:
    :vartype build_queue: str
    :ivar build_role:
    :vartype build_role: str
    """

    _attribute_map = {
        'build_queue': {'key': 'buildQueue', 'type': 'str'},
        'build_role': {'key': 'buildRole', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        build_queue: Optional[str] = None,
        build_role: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword build_queue:
        :paramtype build_queue: str
        :keyword build_role:
        :paramtype build_role: str
        """
        super(AetherCloudBuildQueueInfo, self).__init__(**kwargs)
        self.build_queue = build_queue
        self.build_role = build_role


class AetherCloudPrioritySetting(msrest.serialization.Model):
    """AetherCloudPrioritySetting.

    :ivar scope_priority:
    :vartype scope_priority: ~flow.models.AetherPriorityConfiguration
    :ivar aml_compute_priority:
    :vartype aml_compute_priority: ~flow.models.AetherPriorityConfiguration
    :ivar itp_priority:
    :vartype itp_priority: ~flow.models.AetherPriorityConfiguration
    :ivar singularity_priority:
    :vartype singularity_priority: ~flow.models.AetherPriorityConfiguration
    """

    _attribute_map = {
        'scope_priority': {'key': 'scopePriority', 'type': 'AetherPriorityConfiguration'},
        'aml_compute_priority': {'key': 'AmlComputePriority', 'type': 'AetherPriorityConfiguration'},
        'itp_priority': {'key': 'ItpPriority', 'type': 'AetherPriorityConfiguration'},
        'singularity_priority': {'key': 'SingularityPriority', 'type': 'AetherPriorityConfiguration'},
    }

    def __init__(
        self,
        *,
        scope_priority: Optional["AetherPriorityConfiguration"] = None,
        aml_compute_priority: Optional["AetherPriorityConfiguration"] = None,
        itp_priority: Optional["AetherPriorityConfiguration"] = None,
        singularity_priority: Optional["AetherPriorityConfiguration"] = None,
        **kwargs
    ):
        """
        :keyword scope_priority:
        :paramtype scope_priority: ~flow.models.AetherPriorityConfiguration
        :keyword aml_compute_priority:
        :paramtype aml_compute_priority: ~flow.models.AetherPriorityConfiguration
        :keyword itp_priority:
        :paramtype itp_priority: ~flow.models.AetherPriorityConfiguration
        :keyword singularity_priority:
        :paramtype singularity_priority: ~flow.models.AetherPriorityConfiguration
        """
        super(AetherCloudPrioritySetting, self).__init__(**kwargs)
        self.scope_priority = scope_priority
        self.aml_compute_priority = aml_compute_priority
        self.itp_priority = itp_priority
        self.singularity_priority = singularity_priority


class AetherCloudSettings(msrest.serialization.Model):
    """AetherCloudSettings.

    :ivar linked_settings:
    :vartype linked_settings: list[~flow.models.AetherParameterAssignment]
    :ivar priority_config:
    :vartype priority_config: ~flow.models.AetherPriorityConfiguration
    :ivar hdi_run_config:
    :vartype hdi_run_config: ~flow.models.AetherHdiRunConfiguration
    :ivar sub_graph_config:
    :vartype sub_graph_config: ~flow.models.AetherSubGraphConfiguration
    :ivar auto_ml_component_config:
    :vartype auto_ml_component_config: ~flow.models.AetherAutoMLComponentConfiguration
    :ivar ap_cloud_config:
    :vartype ap_cloud_config: ~flow.models.AetherAPCloudConfiguration
    :ivar scope_cloud_config:
    :vartype scope_cloud_config: ~flow.models.AetherScopeCloudConfiguration
    :ivar es_cloud_config:
    :vartype es_cloud_config: ~flow.models.AetherEsCloudConfiguration
    :ivar data_transfer_cloud_config:
    :vartype data_transfer_cloud_config: ~flow.models.AetherDataTransferCloudConfiguration
    :ivar aml_spark_cloud_setting:
    :vartype aml_spark_cloud_setting: ~flow.models.AetherAmlSparkCloudSetting
    :ivar fine_tuning_cloud_setting:
    :vartype fine_tuning_cloud_setting: ~flow.models.AetherFineTuningCloudSetting
    :ivar data_transfer_v2_cloud_setting:
    :vartype data_transfer_v2_cloud_setting: ~flow.models.AetherDataTransferV2CloudSetting
    """

    _attribute_map = {
        'linked_settings': {'key': 'linkedSettings', 'type': '[AetherParameterAssignment]'},
        'priority_config': {'key': 'priorityConfig', 'type': 'AetherPriorityConfiguration'},
        'hdi_run_config': {'key': 'hdiRunConfig', 'type': 'AetherHdiRunConfiguration'},
        'sub_graph_config': {'key': 'subGraphConfig', 'type': 'AetherSubGraphConfiguration'},
        'auto_ml_component_config': {'key': 'autoMLComponentConfig', 'type': 'AetherAutoMLComponentConfiguration'},
        'ap_cloud_config': {'key': 'apCloudConfig', 'type': 'AetherAPCloudConfiguration'},
        'scope_cloud_config': {'key': 'scopeCloudConfig', 'type': 'AetherScopeCloudConfiguration'},
        'es_cloud_config': {'key': 'esCloudConfig', 'type': 'AetherEsCloudConfiguration'},
        'data_transfer_cloud_config': {'key': 'dataTransferCloudConfig', 'type': 'AetherDataTransferCloudConfiguration'},
        'aml_spark_cloud_setting': {'key': 'amlSparkCloudSetting', 'type': 'AetherAmlSparkCloudSetting'},
        'fine_tuning_cloud_setting': {'key': 'fineTuningCloudSetting', 'type': 'AetherFineTuningCloudSetting'},
        'data_transfer_v2_cloud_setting': {'key': 'dataTransferV2CloudSetting', 'type': 'AetherDataTransferV2CloudSetting'},
    }

    def __init__(
        self,
        *,
        linked_settings: Optional[List["AetherParameterAssignment"]] = None,
        priority_config: Optional["AetherPriorityConfiguration"] = None,
        hdi_run_config: Optional["AetherHdiRunConfiguration"] = None,
        sub_graph_config: Optional["AetherSubGraphConfiguration"] = None,
        auto_ml_component_config: Optional["AetherAutoMLComponentConfiguration"] = None,
        ap_cloud_config: Optional["AetherAPCloudConfiguration"] = None,
        scope_cloud_config: Optional["AetherScopeCloudConfiguration"] = None,
        es_cloud_config: Optional["AetherEsCloudConfiguration"] = None,
        data_transfer_cloud_config: Optional["AetherDataTransferCloudConfiguration"] = None,
        aml_spark_cloud_setting: Optional["AetherAmlSparkCloudSetting"] = None,
        fine_tuning_cloud_setting: Optional["AetherFineTuningCloudSetting"] = None,
        data_transfer_v2_cloud_setting: Optional["AetherDataTransferV2CloudSetting"] = None,
        **kwargs
    ):
        """
        :keyword linked_settings:
        :paramtype linked_settings: list[~flow.models.AetherParameterAssignment]
        :keyword priority_config:
        :paramtype priority_config: ~flow.models.AetherPriorityConfiguration
        :keyword hdi_run_config:
        :paramtype hdi_run_config: ~flow.models.AetherHdiRunConfiguration
        :keyword sub_graph_config:
        :paramtype sub_graph_config: ~flow.models.AetherSubGraphConfiguration
        :keyword auto_ml_component_config:
        :paramtype auto_ml_component_config: ~flow.models.AetherAutoMLComponentConfiguration
        :keyword ap_cloud_config:
        :paramtype ap_cloud_config: ~flow.models.AetherAPCloudConfiguration
        :keyword scope_cloud_config:
        :paramtype scope_cloud_config: ~flow.models.AetherScopeCloudConfiguration
        :keyword es_cloud_config:
        :paramtype es_cloud_config: ~flow.models.AetherEsCloudConfiguration
        :keyword data_transfer_cloud_config:
        :paramtype data_transfer_cloud_config: ~flow.models.AetherDataTransferCloudConfiguration
        :keyword aml_spark_cloud_setting:
        :paramtype aml_spark_cloud_setting: ~flow.models.AetherAmlSparkCloudSetting
        :keyword fine_tuning_cloud_setting:
        :paramtype fine_tuning_cloud_setting: ~flow.models.AetherFineTuningCloudSetting
        :keyword data_transfer_v2_cloud_setting:
        :paramtype data_transfer_v2_cloud_setting: ~flow.models.AetherDataTransferV2CloudSetting
        """
        super(AetherCloudSettings, self).__init__(**kwargs)
        self.linked_settings = linked_settings
        self.priority_config = priority_config
        self.hdi_run_config = hdi_run_config
        self.sub_graph_config = sub_graph_config
        self.auto_ml_component_config = auto_ml_component_config
        self.ap_cloud_config = ap_cloud_config
        self.scope_cloud_config = scope_cloud_config
        self.es_cloud_config = es_cloud_config
        self.data_transfer_cloud_config = data_transfer_cloud_config
        self.aml_spark_cloud_setting = aml_spark_cloud_setting
        self.fine_tuning_cloud_setting = fine_tuning_cloud_setting
        self.data_transfer_v2_cloud_setting = data_transfer_v2_cloud_setting


class AetherColumnTransformer(msrest.serialization.Model):
    """AetherColumnTransformer.

    :ivar fields:
    :vartype fields: list[str]
    :ivar parameters: Anything.
    :vartype parameters: any
    """

    _attribute_map = {
        'fields': {'key': 'fields', 'type': '[str]'},
        'parameters': {'key': 'parameters', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        fields: Optional[List[str]] = None,
        parameters: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword fields:
        :paramtype fields: list[str]
        :keyword parameters: Anything.
        :paramtype parameters: any
        """
        super(AetherColumnTransformer, self).__init__(**kwargs)
        self.fields = fields
        self.parameters = parameters


class AetherComputeConfiguration(msrest.serialization.Model):
    """AetherComputeConfiguration.

    :ivar target:
    :vartype target: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar is_local:
    :vartype is_local: bool
    :ivar location:
    :vartype location: str
    :ivar is_clusterless:
    :vartype is_clusterless: bool
    :ivar instance_type:
    :vartype instance_type: str
    :ivar properties: Dictionary of :code:`<any>`.
    :vartype properties: dict[str, any]
    :ivar is_preemptable:
    :vartype is_preemptable: bool
    """

    _attribute_map = {
        'target': {'key': 'target', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'is_local': {'key': 'isLocal', 'type': 'bool'},
        'location': {'key': 'location', 'type': 'str'},
        'is_clusterless': {'key': 'isClusterless', 'type': 'bool'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'is_preemptable': {'key': 'isPreemptable', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        target: Optional[str] = None,
        instance_count: Optional[int] = None,
        is_local: Optional[bool] = None,
        location: Optional[str] = None,
        is_clusterless: Optional[bool] = None,
        instance_type: Optional[str] = None,
        properties: Optional[Dict[str, Any]] = None,
        is_preemptable: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword target:
        :paramtype target: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword is_local:
        :paramtype is_local: bool
        :keyword location:
        :paramtype location: str
        :keyword is_clusterless:
        :paramtype is_clusterless: bool
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword properties: Dictionary of :code:`<any>`.
        :paramtype properties: dict[str, any]
        :keyword is_preemptable:
        :paramtype is_preemptable: bool
        """
        super(AetherComputeConfiguration, self).__init__(**kwargs)
        self.target = target
        self.instance_count = instance_count
        self.is_local = is_local
        self.location = location
        self.is_clusterless = is_clusterless
        self.instance_type = instance_type
        self.properties = properties
        self.is_preemptable = is_preemptable


class AetherComputeSetting(msrest.serialization.Model):
    """AetherComputeSetting.

    :ivar name:
    :vartype name: str
    :ivar compute_type: Possible values include: "BatchAi", "MLC", "HdiCluster", "RemoteDocker",
     "Databricks", "Aisc".
    :vartype compute_type: str or ~flow.models.AetherComputeType
    :ivar batch_ai_compute_info:
    :vartype batch_ai_compute_info: ~flow.models.AetherBatchAiComputeInfo
    :ivar remote_docker_compute_info:
    :vartype remote_docker_compute_info: ~flow.models.AetherRemoteDockerComputeInfo
    :ivar hdi_cluster_compute_info:
    :vartype hdi_cluster_compute_info: ~flow.models.AetherHdiClusterComputeInfo
    :ivar mlc_compute_info:
    :vartype mlc_compute_info: ~flow.models.AetherMlcComputeInfo
    :ivar databricks_compute_info:
    :vartype databricks_compute_info: ~flow.models.AetherDatabricksComputeInfo
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'batch_ai_compute_info': {'key': 'batchAiComputeInfo', 'type': 'AetherBatchAiComputeInfo'},
        'remote_docker_compute_info': {'key': 'remoteDockerComputeInfo', 'type': 'AetherRemoteDockerComputeInfo'},
        'hdi_cluster_compute_info': {'key': 'hdiClusterComputeInfo', 'type': 'AetherHdiClusterComputeInfo'},
        'mlc_compute_info': {'key': 'mlcComputeInfo', 'type': 'AetherMlcComputeInfo'},
        'databricks_compute_info': {'key': 'databricksComputeInfo', 'type': 'AetherDatabricksComputeInfo'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        compute_type: Optional[Union[str, "AetherComputeType"]] = None,
        batch_ai_compute_info: Optional["AetherBatchAiComputeInfo"] = None,
        remote_docker_compute_info: Optional["AetherRemoteDockerComputeInfo"] = None,
        hdi_cluster_compute_info: Optional["AetherHdiClusterComputeInfo"] = None,
        mlc_compute_info: Optional["AetherMlcComputeInfo"] = None,
        databricks_compute_info: Optional["AetherDatabricksComputeInfo"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword compute_type: Possible values include: "BatchAi", "MLC", "HdiCluster", "RemoteDocker",
         "Databricks", "Aisc".
        :paramtype compute_type: str or ~flow.models.AetherComputeType
        :keyword batch_ai_compute_info:
        :paramtype batch_ai_compute_info: ~flow.models.AetherBatchAiComputeInfo
        :keyword remote_docker_compute_info:
        :paramtype remote_docker_compute_info: ~flow.models.AetherRemoteDockerComputeInfo
        :keyword hdi_cluster_compute_info:
        :paramtype hdi_cluster_compute_info: ~flow.models.AetherHdiClusterComputeInfo
        :keyword mlc_compute_info:
        :paramtype mlc_compute_info: ~flow.models.AetherMlcComputeInfo
        :keyword databricks_compute_info:
        :paramtype databricks_compute_info: ~flow.models.AetherDatabricksComputeInfo
        """
        super(AetherComputeSetting, self).__init__(**kwargs)
        self.name = name
        self.compute_type = compute_type
        self.batch_ai_compute_info = batch_ai_compute_info
        self.remote_docker_compute_info = remote_docker_compute_info
        self.hdi_cluster_compute_info = hdi_cluster_compute_info
        self.mlc_compute_info = mlc_compute_info
        self.databricks_compute_info = databricks_compute_info


class AetherControlInput(msrest.serialization.Model):
    """AetherControlInput.

    :ivar name:
    :vartype name: str
    :ivar default_value: Possible values include: "None", "False", "True", "Skipped".
    :vartype default_value: str or ~flow.models.AetherControlInputValue
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        default_value: Optional[Union[str, "AetherControlInputValue"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword default_value: Possible values include: "None", "False", "True", "Skipped".
        :paramtype default_value: str or ~flow.models.AetherControlInputValue
        """
        super(AetherControlInput, self).__init__(**kwargs)
        self.name = name
        self.default_value = default_value


class AetherControlOutput(msrest.serialization.Model):
    """AetherControlOutput.

    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        """
        super(AetherControlOutput, self).__init__(**kwargs)
        self.name = name


class AetherCopyDataTask(msrest.serialization.Model):
    """AetherCopyDataTask.

    :ivar data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
    :vartype data_copy_mode: str or ~flow.models.AetherDataCopyMode
    """

    _attribute_map = {
        'data_copy_mode': {'key': 'DataCopyMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_copy_mode: Optional[Union[str, "AetherDataCopyMode"]] = None,
        **kwargs
    ):
        """
        :keyword data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
        :paramtype data_copy_mode: str or ~flow.models.AetherDataCopyMode
        """
        super(AetherCopyDataTask, self).__init__(**kwargs)
        self.data_copy_mode = data_copy_mode


class AetherCosmosReference(msrest.serialization.Model):
    """AetherCosmosReference.

    :ivar cluster:
    :vartype cluster: str
    :ivar vc:
    :vartype vc: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'cluster': {'key': 'cluster', 'type': 'str'},
        'vc': {'key': 'vc', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        cluster: Optional[str] = None,
        vc: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword cluster:
        :paramtype cluster: str
        :keyword vc:
        :paramtype vc: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AetherCosmosReference, self).__init__(**kwargs)
        self.cluster = cluster
        self.vc = vc
        self.relative_path = relative_path


class AetherCreatedBy(msrest.serialization.Model):
    """AetherCreatedBy.

    :ivar user_object_id:
    :vartype user_object_id: str
    :ivar user_tenant_id:
    :vartype user_tenant_id: str
    :ivar user_name:
    :vartype user_name: str
    :ivar puid:
    :vartype puid: str
    :ivar iss:
    :vartype iss: str
    :ivar idp:
    :vartype idp: str
    :ivar altsec_id:
    :vartype altsec_id: str
    :ivar source_ip:
    :vartype source_ip: str
    :ivar skip_registry_private_link_check:
    :vartype skip_registry_private_link_check: bool
    """

    _attribute_map = {
        'user_object_id': {'key': 'userObjectId', 'type': 'str'},
        'user_tenant_id': {'key': 'userTenantId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
        'puid': {'key': 'puid', 'type': 'str'},
        'iss': {'key': 'iss', 'type': 'str'},
        'idp': {'key': 'idp', 'type': 'str'},
        'altsec_id': {'key': 'altsecId', 'type': 'str'},
        'source_ip': {'key': 'sourceIp', 'type': 'str'},
        'skip_registry_private_link_check': {'key': 'skipRegistryPrivateLinkCheck', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        user_object_id: Optional[str] = None,
        user_tenant_id: Optional[str] = None,
        user_name: Optional[str] = None,
        puid: Optional[str] = None,
        iss: Optional[str] = None,
        idp: Optional[str] = None,
        altsec_id: Optional[str] = None,
        source_ip: Optional[str] = None,
        skip_registry_private_link_check: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword user_object_id:
        :paramtype user_object_id: str
        :keyword user_tenant_id:
        :paramtype user_tenant_id: str
        :keyword user_name:
        :paramtype user_name: str
        :keyword puid:
        :paramtype puid: str
        :keyword iss:
        :paramtype iss: str
        :keyword idp:
        :paramtype idp: str
        :keyword altsec_id:
        :paramtype altsec_id: str
        :keyword source_ip:
        :paramtype source_ip: str
        :keyword skip_registry_private_link_check:
        :paramtype skip_registry_private_link_check: bool
        """
        super(AetherCreatedBy, self).__init__(**kwargs)
        self.user_object_id = user_object_id
        self.user_tenant_id = user_tenant_id
        self.user_name = user_name
        self.puid = puid
        self.iss = iss
        self.idp = idp
        self.altsec_id = altsec_id
        self.source_ip = source_ip
        self.skip_registry_private_link_check = skip_registry_private_link_check


class AetherCustomReference(msrest.serialization.Model):
    """AetherCustomReference.

    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AetherCustomReference, self).__init__(**kwargs)
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path


class AetherDatabaseSink(msrest.serialization.Model):
    """AetherDatabaseSink.

    :ivar connection:
    :vartype connection: str
    :ivar table:
    :vartype table: str
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'table': {'key': 'table', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        table: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword table:
        :paramtype table: str
        """
        super(AetherDatabaseSink, self).__init__(**kwargs)
        self.connection = connection
        self.table = table


class AetherDatabaseSource(msrest.serialization.Model):
    """AetherDatabaseSource.

    :ivar connection:
    :vartype connection: str
    :ivar query:
    :vartype query: str
    :ivar stored_procedure_name:
    :vartype stored_procedure_name: str
    :ivar stored_procedure_parameters:
    :vartype stored_procedure_parameters: list[~flow.models.AetherStoredProcedureParameter]
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'query': {'key': 'query', 'type': 'str'},
        'stored_procedure_name': {'key': 'storedProcedureName', 'type': 'str'},
        'stored_procedure_parameters': {'key': 'storedProcedureParameters', 'type': '[AetherStoredProcedureParameter]'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        query: Optional[str] = None,
        stored_procedure_name: Optional[str] = None,
        stored_procedure_parameters: Optional[List["AetherStoredProcedureParameter"]] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword query:
        :paramtype query: str
        :keyword stored_procedure_name:
        :paramtype stored_procedure_name: str
        :keyword stored_procedure_parameters:
        :paramtype stored_procedure_parameters: list[~flow.models.AetherStoredProcedureParameter]
        """
        super(AetherDatabaseSource, self).__init__(**kwargs)
        self.connection = connection
        self.query = query
        self.stored_procedure_name = stored_procedure_name
        self.stored_procedure_parameters = stored_procedure_parameters


class AetherDatabricksComputeInfo(msrest.serialization.Model):
    """AetherDatabricksComputeInfo.

    :ivar existing_cluster_id:
    :vartype existing_cluster_id: str
    """

    _attribute_map = {
        'existing_cluster_id': {'key': 'existingClusterId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        existing_cluster_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword existing_cluster_id:
        :paramtype existing_cluster_id: str
        """
        super(AetherDatabricksComputeInfo, self).__init__(**kwargs)
        self.existing_cluster_id = existing_cluster_id


class AetherDataLocation(msrest.serialization.Model):
    """AetherDataLocation.

    :ivar storage_type: Possible values include: "Cosmos", "AzureBlob", "Artifact", "Snapshot",
     "SavedAmlDataset", "Asset".
    :vartype storage_type: str or ~flow.models.AetherDataLocationStorageType
    :ivar storage_id:
    :vartype storage_id: str
    :ivar uri:
    :vartype uri: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_reference:
    :vartype data_reference: ~flow.models.AetherDataReference
    :ivar aml_dataset:
    :vartype aml_dataset: ~flow.models.AetherAmlDataset
    :ivar asset_definition:
    :vartype asset_definition: ~flow.models.AetherAssetDefinition
    :ivar is_compliant:
    :vartype is_compliant: bool
    :ivar reuse_calculation_fields:
    :vartype reuse_calculation_fields: ~flow.models.AetherDataLocationReuseCalculationFields
    """

    _attribute_map = {
        'storage_type': {'key': 'storageType', 'type': 'str'},
        'storage_id': {'key': 'storageId', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_reference': {'key': 'dataReference', 'type': 'AetherDataReference'},
        'aml_dataset': {'key': 'amlDataset', 'type': 'AetherAmlDataset'},
        'asset_definition': {'key': 'assetDefinition', 'type': 'AetherAssetDefinition'},
        'is_compliant': {'key': 'isCompliant', 'type': 'bool'},
        'reuse_calculation_fields': {'key': 'reuseCalculationFields', 'type': 'AetherDataLocationReuseCalculationFields'},
    }

    def __init__(
        self,
        *,
        storage_type: Optional[Union[str, "AetherDataLocationStorageType"]] = None,
        storage_id: Optional[str] = None,
        uri: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_reference: Optional["AetherDataReference"] = None,
        aml_dataset: Optional["AetherAmlDataset"] = None,
        asset_definition: Optional["AetherAssetDefinition"] = None,
        is_compliant: Optional[bool] = None,
        reuse_calculation_fields: Optional["AetherDataLocationReuseCalculationFields"] = None,
        **kwargs
    ):
        """
        :keyword storage_type: Possible values include: "Cosmos", "AzureBlob", "Artifact", "Snapshot",
         "SavedAmlDataset", "Asset".
        :paramtype storage_type: str or ~flow.models.AetherDataLocationStorageType
        :keyword storage_id:
        :paramtype storage_id: str
        :keyword uri:
        :paramtype uri: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_reference:
        :paramtype data_reference: ~flow.models.AetherDataReference
        :keyword aml_dataset:
        :paramtype aml_dataset: ~flow.models.AetherAmlDataset
        :keyword asset_definition:
        :paramtype asset_definition: ~flow.models.AetherAssetDefinition
        :keyword is_compliant:
        :paramtype is_compliant: bool
        :keyword reuse_calculation_fields:
        :paramtype reuse_calculation_fields: ~flow.models.AetherDataLocationReuseCalculationFields
        """
        super(AetherDataLocation, self).__init__(**kwargs)
        self.storage_type = storage_type
        self.storage_id = storage_id
        self.uri = uri
        self.data_store_name = data_store_name
        self.data_reference = data_reference
        self.aml_dataset = aml_dataset
        self.asset_definition = asset_definition
        self.is_compliant = is_compliant
        self.reuse_calculation_fields = reuse_calculation_fields


class AetherDataLocationReuseCalculationFields(msrest.serialization.Model):
    """AetherDataLocationReuseCalculationFields.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar data_experiment_id:
    :vartype data_experiment_id: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'data_experiment_id': {'key': 'dataExperimentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        data_experiment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword data_experiment_id:
        :paramtype data_experiment_id: str
        """
        super(AetherDataLocationReuseCalculationFields, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.relative_path = relative_path
        self.data_experiment_id = data_experiment_id


class AetherDataPath(msrest.serialization.Model):
    """AetherDataPath.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar sql_data_path:
    :vartype sql_data_path: ~flow.models.AetherSqlDataPath
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'sql_data_path': {'key': 'sqlDataPath', 'type': 'AetherSqlDataPath'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        sql_data_path: Optional["AetherSqlDataPath"] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword sql_data_path:
        :paramtype sql_data_path: ~flow.models.AetherSqlDataPath
        """
        super(AetherDataPath, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.relative_path = relative_path
        self.sql_data_path = sql_data_path


class AetherDataReference(msrest.serialization.Model):
    """AetherDataReference.

    :ivar type: Possible values include: "None", "AzureBlob", "AzureDataLake", "AzureFiles",
     "Cosmos", "PhillyHdfs", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2",
     "DBFS", "AzureMySqlDatabase", "Custom", "Hdfs".
    :vartype type: str or ~flow.models.AetherDataReferenceType
    :ivar azure_blob_reference:
    :vartype azure_blob_reference: ~flow.models.AetherAzureBlobReference
    :ivar azure_data_lake_reference:
    :vartype azure_data_lake_reference: ~flow.models.AetherAzureDataLakeReference
    :ivar azure_files_reference:
    :vartype azure_files_reference: ~flow.models.AetherAzureFilesReference
    :ivar cosmos_reference:
    :vartype cosmos_reference: ~flow.models.AetherCosmosReference
    :ivar philly_hdfs_reference:
    :vartype philly_hdfs_reference: ~flow.models.AetherPhillyHdfsReference
    :ivar azure_sql_database_reference:
    :vartype azure_sql_database_reference: ~flow.models.AetherAzureDatabaseReference
    :ivar azure_postgres_database_reference:
    :vartype azure_postgres_database_reference: ~flow.models.AetherAzureDatabaseReference
    :ivar azure_data_lake_gen2_reference:
    :vartype azure_data_lake_gen2_reference: ~flow.models.AetherAzureDataLakeGen2Reference
    :ivar dbfs_reference:
    :vartype dbfs_reference: ~flow.models.AetherDBFSReference
    :ivar azure_my_sql_database_reference:
    :vartype azure_my_sql_database_reference: ~flow.models.AetherAzureDatabaseReference
    :ivar custom_reference:
    :vartype custom_reference: ~flow.models.AetherCustomReference
    :ivar hdfs_reference:
    :vartype hdfs_reference: ~flow.models.AetherHdfsReference
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'azure_blob_reference': {'key': 'azureBlobReference', 'type': 'AetherAzureBlobReference'},
        'azure_data_lake_reference': {'key': 'azureDataLakeReference', 'type': 'AetherAzureDataLakeReference'},
        'azure_files_reference': {'key': 'azureFilesReference', 'type': 'AetherAzureFilesReference'},
        'cosmos_reference': {'key': 'cosmosReference', 'type': 'AetherCosmosReference'},
        'philly_hdfs_reference': {'key': 'phillyHdfsReference', 'type': 'AetherPhillyHdfsReference'},
        'azure_sql_database_reference': {'key': 'azureSqlDatabaseReference', 'type': 'AetherAzureDatabaseReference'},
        'azure_postgres_database_reference': {'key': 'azurePostgresDatabaseReference', 'type': 'AetherAzureDatabaseReference'},
        'azure_data_lake_gen2_reference': {'key': 'azureDataLakeGen2Reference', 'type': 'AetherAzureDataLakeGen2Reference'},
        'dbfs_reference': {'key': 'dbfsReference', 'type': 'AetherDBFSReference'},
        'azure_my_sql_database_reference': {'key': 'azureMySqlDatabaseReference', 'type': 'AetherAzureDatabaseReference'},
        'custom_reference': {'key': 'customReference', 'type': 'AetherCustomReference'},
        'hdfs_reference': {'key': 'hdfsReference', 'type': 'AetherHdfsReference'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AetherDataReferenceType"]] = None,
        azure_blob_reference: Optional["AetherAzureBlobReference"] = None,
        azure_data_lake_reference: Optional["AetherAzureDataLakeReference"] = None,
        azure_files_reference: Optional["AetherAzureFilesReference"] = None,
        cosmos_reference: Optional["AetherCosmosReference"] = None,
        philly_hdfs_reference: Optional["AetherPhillyHdfsReference"] = None,
        azure_sql_database_reference: Optional["AetherAzureDatabaseReference"] = None,
        azure_postgres_database_reference: Optional["AetherAzureDatabaseReference"] = None,
        azure_data_lake_gen2_reference: Optional["AetherAzureDataLakeGen2Reference"] = None,
        dbfs_reference: Optional["AetherDBFSReference"] = None,
        azure_my_sql_database_reference: Optional["AetherAzureDatabaseReference"] = None,
        custom_reference: Optional["AetherCustomReference"] = None,
        hdfs_reference: Optional["AetherHdfsReference"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "None", "AzureBlob", "AzureDataLake", "AzureFiles",
         "Cosmos", "PhillyHdfs", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2",
         "DBFS", "AzureMySqlDatabase", "Custom", "Hdfs".
        :paramtype type: str or ~flow.models.AetherDataReferenceType
        :keyword azure_blob_reference:
        :paramtype azure_blob_reference: ~flow.models.AetherAzureBlobReference
        :keyword azure_data_lake_reference:
        :paramtype azure_data_lake_reference: ~flow.models.AetherAzureDataLakeReference
        :keyword azure_files_reference:
        :paramtype azure_files_reference: ~flow.models.AetherAzureFilesReference
        :keyword cosmos_reference:
        :paramtype cosmos_reference: ~flow.models.AetherCosmosReference
        :keyword philly_hdfs_reference:
        :paramtype philly_hdfs_reference: ~flow.models.AetherPhillyHdfsReference
        :keyword azure_sql_database_reference:
        :paramtype azure_sql_database_reference: ~flow.models.AetherAzureDatabaseReference
        :keyword azure_postgres_database_reference:
        :paramtype azure_postgres_database_reference: ~flow.models.AetherAzureDatabaseReference
        :keyword azure_data_lake_gen2_reference:
        :paramtype azure_data_lake_gen2_reference: ~flow.models.AetherAzureDataLakeGen2Reference
        :keyword dbfs_reference:
        :paramtype dbfs_reference: ~flow.models.AetherDBFSReference
        :keyword azure_my_sql_database_reference:
        :paramtype azure_my_sql_database_reference: ~flow.models.AetherAzureDatabaseReference
        :keyword custom_reference:
        :paramtype custom_reference: ~flow.models.AetherCustomReference
        :keyword hdfs_reference:
        :paramtype hdfs_reference: ~flow.models.AetherHdfsReference
        """
        super(AetherDataReference, self).__init__(**kwargs)
        self.type = type
        self.azure_blob_reference = azure_blob_reference
        self.azure_data_lake_reference = azure_data_lake_reference
        self.azure_files_reference = azure_files_reference
        self.cosmos_reference = cosmos_reference
        self.philly_hdfs_reference = philly_hdfs_reference
        self.azure_sql_database_reference = azure_sql_database_reference
        self.azure_postgres_database_reference = azure_postgres_database_reference
        self.azure_data_lake_gen2_reference = azure_data_lake_gen2_reference
        self.dbfs_reference = dbfs_reference
        self.azure_my_sql_database_reference = azure_my_sql_database_reference
        self.custom_reference = custom_reference
        self.hdfs_reference = hdfs_reference


class AetherDataSetDefinition(msrest.serialization.Model):
    """AetherDataSetDefinition.

    :ivar data_type_short_name:
    :vartype data_type_short_name: str
    :ivar parameter_name:
    :vartype parameter_name: str
    :ivar value:
    :vartype value: ~flow.models.AetherDataSetDefinitionValue
    """

    _attribute_map = {
        'data_type_short_name': {'key': 'dataTypeShortName', 'type': 'str'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
        'value': {'key': 'value', 'type': 'AetherDataSetDefinitionValue'},
    }

    def __init__(
        self,
        *,
        data_type_short_name: Optional[str] = None,
        parameter_name: Optional[str] = None,
        value: Optional["AetherDataSetDefinitionValue"] = None,
        **kwargs
    ):
        """
        :keyword data_type_short_name:
        :paramtype data_type_short_name: str
        :keyword parameter_name:
        :paramtype parameter_name: str
        :keyword value:
        :paramtype value: ~flow.models.AetherDataSetDefinitionValue
        """
        super(AetherDataSetDefinition, self).__init__(**kwargs)
        self.data_type_short_name = data_type_short_name
        self.parameter_name = parameter_name
        self.value = value


class AetherDataSetDefinitionValue(msrest.serialization.Model):
    """AetherDataSetDefinitionValue.

    :ivar literal_value:
    :vartype literal_value: ~flow.models.AetherDataPath
    :ivar data_set_reference:
    :vartype data_set_reference: ~flow.models.AetherRegisteredDataSetReference
    :ivar saved_data_set_reference:
    :vartype saved_data_set_reference: ~flow.models.AetherSavedDataSetReference
    :ivar asset_definition:
    :vartype asset_definition: ~flow.models.AetherAssetDefinition
    """

    _attribute_map = {
        'literal_value': {'key': 'literalValue', 'type': 'AetherDataPath'},
        'data_set_reference': {'key': 'dataSetReference', 'type': 'AetherRegisteredDataSetReference'},
        'saved_data_set_reference': {'key': 'savedDataSetReference', 'type': 'AetherSavedDataSetReference'},
        'asset_definition': {'key': 'assetDefinition', 'type': 'AetherAssetDefinition'},
    }

    def __init__(
        self,
        *,
        literal_value: Optional["AetherDataPath"] = None,
        data_set_reference: Optional["AetherRegisteredDataSetReference"] = None,
        saved_data_set_reference: Optional["AetherSavedDataSetReference"] = None,
        asset_definition: Optional["AetherAssetDefinition"] = None,
        **kwargs
    ):
        """
        :keyword literal_value:
        :paramtype literal_value: ~flow.models.AetherDataPath
        :keyword data_set_reference:
        :paramtype data_set_reference: ~flow.models.AetherRegisteredDataSetReference
        :keyword saved_data_set_reference:
        :paramtype saved_data_set_reference: ~flow.models.AetherSavedDataSetReference
        :keyword asset_definition:
        :paramtype asset_definition: ~flow.models.AetherAssetDefinition
        """
        super(AetherDataSetDefinitionValue, self).__init__(**kwargs)
        self.literal_value = literal_value
        self.data_set_reference = data_set_reference
        self.saved_data_set_reference = saved_data_set_reference
        self.asset_definition = asset_definition


class AetherDatasetOutput(msrest.serialization.Model):
    """AetherDatasetOutput.

    :ivar dataset_type: Possible values include: "File", "Tabular".
    :vartype dataset_type: str or ~flow.models.AetherDatasetType
    :ivar dataset_registration:
    :vartype dataset_registration: ~flow.models.AetherDatasetRegistration
    :ivar dataset_output_options:
    :vartype dataset_output_options: ~flow.models.AetherDatasetOutputOptions
    """

    _attribute_map = {
        'dataset_type': {'key': 'datasetType', 'type': 'str'},
        'dataset_registration': {'key': 'datasetRegistration', 'type': 'AetherDatasetRegistration'},
        'dataset_output_options': {'key': 'datasetOutputOptions', 'type': 'AetherDatasetOutputOptions'},
    }

    def __init__(
        self,
        *,
        dataset_type: Optional[Union[str, "AetherDatasetType"]] = None,
        dataset_registration: Optional["AetherDatasetRegistration"] = None,
        dataset_output_options: Optional["AetherDatasetOutputOptions"] = None,
        **kwargs
    ):
        """
        :keyword dataset_type: Possible values include: "File", "Tabular".
        :paramtype dataset_type: str or ~flow.models.AetherDatasetType
        :keyword dataset_registration:
        :paramtype dataset_registration: ~flow.models.AetherDatasetRegistration
        :keyword dataset_output_options:
        :paramtype dataset_output_options: ~flow.models.AetherDatasetOutputOptions
        """
        super(AetherDatasetOutput, self).__init__(**kwargs)
        self.dataset_type = dataset_type
        self.dataset_registration = dataset_registration
        self.dataset_output_options = dataset_output_options


class AetherDatasetOutputOptions(msrest.serialization.Model):
    """AetherDatasetOutputOptions.

    :ivar source_globs:
    :vartype source_globs: ~flow.models.AetherGlobsOptions
    :ivar path_on_datastore:
    :vartype path_on_datastore: str
    :ivar path_on_datastore_parameter_assignment:
    :vartype path_on_datastore_parameter_assignment: ~flow.models.AetherParameterAssignment
    """

    _attribute_map = {
        'source_globs': {'key': 'sourceGlobs', 'type': 'AetherGlobsOptions'},
        'path_on_datastore': {'key': 'pathOnDatastore', 'type': 'str'},
        'path_on_datastore_parameter_assignment': {'key': 'PathOnDatastoreParameterAssignment', 'type': 'AetherParameterAssignment'},
    }

    def __init__(
        self,
        *,
        source_globs: Optional["AetherGlobsOptions"] = None,
        path_on_datastore: Optional[str] = None,
        path_on_datastore_parameter_assignment: Optional["AetherParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword source_globs:
        :paramtype source_globs: ~flow.models.AetherGlobsOptions
        :keyword path_on_datastore:
        :paramtype path_on_datastore: str
        :keyword path_on_datastore_parameter_assignment:
        :paramtype path_on_datastore_parameter_assignment: ~flow.models.AetherParameterAssignment
        """
        super(AetherDatasetOutputOptions, self).__init__(**kwargs)
        self.source_globs = source_globs
        self.path_on_datastore = path_on_datastore
        self.path_on_datastore_parameter_assignment = path_on_datastore_parameter_assignment


class AetherDatasetRegistration(msrest.serialization.Model):
    """AetherDatasetRegistration.

    :ivar name:
    :vartype name: str
    :ivar create_new_version:
    :vartype create_new_version: bool
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'create_new_version': {'key': 'createNewVersion', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        create_new_version: Optional[bool] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword create_new_version:
        :paramtype create_new_version: bool
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(AetherDatasetRegistration, self).__init__(**kwargs)
        self.name = name
        self.create_new_version = create_new_version
        self.description = description
        self.tags = tags
        self.additional_transformations = additional_transformations


class AetherDataSettings(msrest.serialization.Model):
    """AetherDataSettings.

    :ivar target_column_name:
    :vartype target_column_name: str
    :ivar weight_column_name:
    :vartype weight_column_name: str
    :ivar positive_label:
    :vartype positive_label: str
    :ivar validation_data:
    :vartype validation_data: ~flow.models.AetherValidationDataSettings
    :ivar test_data:
    :vartype test_data: ~flow.models.AetherTestDataSettings
    """

    _attribute_map = {
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
        'positive_label': {'key': 'positiveLabel', 'type': 'str'},
        'validation_data': {'key': 'validationData', 'type': 'AetherValidationDataSettings'},
        'test_data': {'key': 'testData', 'type': 'AetherTestDataSettings'},
    }

    def __init__(
        self,
        *,
        target_column_name: Optional[str] = None,
        weight_column_name: Optional[str] = None,
        positive_label: Optional[str] = None,
        validation_data: Optional["AetherValidationDataSettings"] = None,
        test_data: Optional["AetherTestDataSettings"] = None,
        **kwargs
    ):
        """
        :keyword target_column_name:
        :paramtype target_column_name: str
        :keyword weight_column_name:
        :paramtype weight_column_name: str
        :keyword positive_label:
        :paramtype positive_label: str
        :keyword validation_data:
        :paramtype validation_data: ~flow.models.AetherValidationDataSettings
        :keyword test_data:
        :paramtype test_data: ~flow.models.AetherTestDataSettings
        """
        super(AetherDataSettings, self).__init__(**kwargs)
        self.target_column_name = target_column_name
        self.weight_column_name = weight_column_name
        self.positive_label = positive_label
        self.validation_data = validation_data
        self.test_data = test_data


class AetherDatastoreSetting(msrest.serialization.Model):
    """AetherDatastoreSetting.

    :ivar data_store_name:
    :vartype data_store_name: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        """
        super(AetherDatastoreSetting, self).__init__(**kwargs)
        self.data_store_name = data_store_name


class AetherDataTransferCloudConfiguration(msrest.serialization.Model):
    """AetherDataTransferCloudConfiguration.

    :ivar allow_overwrite:
    :vartype allow_overwrite: bool
    """

    _attribute_map = {
        'allow_overwrite': {'key': 'AllowOverwrite', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        allow_overwrite: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword allow_overwrite:
        :paramtype allow_overwrite: bool
        """
        super(AetherDataTransferCloudConfiguration, self).__init__(**kwargs)
        self.allow_overwrite = allow_overwrite


class AetherDataTransferSink(msrest.serialization.Model):
    """AetherDataTransferSink.

    :ivar type: Possible values include: "DataBase", "FileSystem".
    :vartype type: str or ~flow.models.AetherDataTransferStorageType
    :ivar file_system:
    :vartype file_system: ~flow.models.AetherFileSystem
    :ivar database_sink:
    :vartype database_sink: ~flow.models.AetherDatabaseSink
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'file_system': {'key': 'fileSystem', 'type': 'AetherFileSystem'},
        'database_sink': {'key': 'databaseSink', 'type': 'AetherDatabaseSink'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AetherDataTransferStorageType"]] = None,
        file_system: Optional["AetherFileSystem"] = None,
        database_sink: Optional["AetherDatabaseSink"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "DataBase", "FileSystem".
        :paramtype type: str or ~flow.models.AetherDataTransferStorageType
        :keyword file_system:
        :paramtype file_system: ~flow.models.AetherFileSystem
        :keyword database_sink:
        :paramtype database_sink: ~flow.models.AetherDatabaseSink
        """
        super(AetherDataTransferSink, self).__init__(**kwargs)
        self.type = type
        self.file_system = file_system
        self.database_sink = database_sink


class AetherDataTransferSource(msrest.serialization.Model):
    """AetherDataTransferSource.

    :ivar type: Possible values include: "DataBase", "FileSystem".
    :vartype type: str or ~flow.models.AetherDataTransferStorageType
    :ivar file_system:
    :vartype file_system: ~flow.models.AetherFileSystem
    :ivar database_source:
    :vartype database_source: ~flow.models.AetherDatabaseSource
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'file_system': {'key': 'fileSystem', 'type': 'AetherFileSystem'},
        'database_source': {'key': 'databaseSource', 'type': 'AetherDatabaseSource'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AetherDataTransferStorageType"]] = None,
        file_system: Optional["AetherFileSystem"] = None,
        database_source: Optional["AetherDatabaseSource"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "DataBase", "FileSystem".
        :paramtype type: str or ~flow.models.AetherDataTransferStorageType
        :keyword file_system:
        :paramtype file_system: ~flow.models.AetherFileSystem
        :keyword database_source:
        :paramtype database_source: ~flow.models.AetherDatabaseSource
        """
        super(AetherDataTransferSource, self).__init__(**kwargs)
        self.type = type
        self.file_system = file_system
        self.database_source = database_source


class AetherDataTransferV2CloudSetting(msrest.serialization.Model):
    """AetherDataTransferV2CloudSetting.

    :ivar task_type: Possible values include: "ImportData", "ExportData", "CopyData".
    :vartype task_type: str or ~flow.models.AetherDataTransferTaskType
    :ivar compute_name:
    :vartype compute_name: str
    :ivar copy_data_task:
    :vartype copy_data_task: ~flow.models.AetherCopyDataTask
    :ivar import_data_task:
    :vartype import_data_task: ~flow.models.AetherImportDataTask
    :ivar export_data_task:
    :vartype export_data_task: ~flow.models.AetherExportDataTask
    :ivar data_transfer_sources: This is a dictionary.
    :vartype data_transfer_sources: dict[str, ~flow.models.AetherDataTransferSource]
    :ivar data_transfer_sinks: This is a dictionary.
    :vartype data_transfer_sinks: dict[str, ~flow.models.AetherDataTransferSink]
    :ivar data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
    :vartype data_copy_mode: str or ~flow.models.AetherDataCopyMode
    """

    _attribute_map = {
        'task_type': {'key': 'taskType', 'type': 'str'},
        'compute_name': {'key': 'ComputeName', 'type': 'str'},
        'copy_data_task': {'key': 'CopyDataTask', 'type': 'AetherCopyDataTask'},
        'import_data_task': {'key': 'ImportDataTask', 'type': 'AetherImportDataTask'},
        'export_data_task': {'key': 'ExportDataTask', 'type': 'AetherExportDataTask'},
        'data_transfer_sources': {'key': 'DataTransferSources', 'type': '{AetherDataTransferSource}'},
        'data_transfer_sinks': {'key': 'DataTransferSinks', 'type': '{AetherDataTransferSink}'},
        'data_copy_mode': {'key': 'DataCopyMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        task_type: Optional[Union[str, "AetherDataTransferTaskType"]] = None,
        compute_name: Optional[str] = None,
        copy_data_task: Optional["AetherCopyDataTask"] = None,
        import_data_task: Optional["AetherImportDataTask"] = None,
        export_data_task: Optional["AetherExportDataTask"] = None,
        data_transfer_sources: Optional[Dict[str, "AetherDataTransferSource"]] = None,
        data_transfer_sinks: Optional[Dict[str, "AetherDataTransferSink"]] = None,
        data_copy_mode: Optional[Union[str, "AetherDataCopyMode"]] = None,
        **kwargs
    ):
        """
        :keyword task_type: Possible values include: "ImportData", "ExportData", "CopyData".
        :paramtype task_type: str or ~flow.models.AetherDataTransferTaskType
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword copy_data_task:
        :paramtype copy_data_task: ~flow.models.AetherCopyDataTask
        :keyword import_data_task:
        :paramtype import_data_task: ~flow.models.AetherImportDataTask
        :keyword export_data_task:
        :paramtype export_data_task: ~flow.models.AetherExportDataTask
        :keyword data_transfer_sources: This is a dictionary.
        :paramtype data_transfer_sources: dict[str, ~flow.models.AetherDataTransferSource]
        :keyword data_transfer_sinks: This is a dictionary.
        :paramtype data_transfer_sinks: dict[str, ~flow.models.AetherDataTransferSink]
        :keyword data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
        :paramtype data_copy_mode: str or ~flow.models.AetherDataCopyMode
        """
        super(AetherDataTransferV2CloudSetting, self).__init__(**kwargs)
        self.task_type = task_type
        self.compute_name = compute_name
        self.copy_data_task = copy_data_task
        self.import_data_task = import_data_task
        self.export_data_task = export_data_task
        self.data_transfer_sources = data_transfer_sources
        self.data_transfer_sinks = data_transfer_sinks
        self.data_copy_mode = data_copy_mode


class AetherDBFSReference(msrest.serialization.Model):
    """AetherDBFSReference.

    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AetherDBFSReference, self).__init__(**kwargs)
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class AetherDockerSettingConfiguration(msrest.serialization.Model):
    """AetherDockerSettingConfiguration.

    :ivar use_docker:
    :vartype use_docker: bool
    :ivar shared_volumes:
    :vartype shared_volumes: bool
    :ivar shm_size:
    :vartype shm_size: str
    :ivar arguments:
    :vartype arguments: list[str]
    """

    _attribute_map = {
        'use_docker': {'key': 'useDocker', 'type': 'bool'},
        'shared_volumes': {'key': 'sharedVolumes', 'type': 'bool'},
        'shm_size': {'key': 'shmSize', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        use_docker: Optional[bool] = None,
        shared_volumes: Optional[bool] = None,
        shm_size: Optional[str] = None,
        arguments: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword use_docker:
        :paramtype use_docker: bool
        :keyword shared_volumes:
        :paramtype shared_volumes: bool
        :keyword shm_size:
        :paramtype shm_size: str
        :keyword arguments:
        :paramtype arguments: list[str]
        """
        super(AetherDockerSettingConfiguration, self).__init__(**kwargs)
        self.use_docker = use_docker
        self.shared_volumes = shared_volumes
        self.shm_size = shm_size
        self.arguments = arguments


class AetherDoWhileControlFlowInfo(msrest.serialization.Model):
    """AetherDoWhileControlFlowInfo.

    :ivar output_port_name_to_input_port_names_mapping: Dictionary of
     <components·1f2aigm·schemas·aetherdowhilecontrolflowinfo·properties·outputportnametoinputportnamesmapping·additionalproperties>.
    :vartype output_port_name_to_input_port_names_mapping: dict[str, list[str]]
    :ivar condition_output_port_name:
    :vartype condition_output_port_name: str
    :ivar run_settings:
    :vartype run_settings: ~flow.models.AetherDoWhileControlFlowRunSettings
    """

    _attribute_map = {
        'output_port_name_to_input_port_names_mapping': {'key': 'outputPortNameToInputPortNamesMapping', 'type': '{[str]}'},
        'condition_output_port_name': {'key': 'conditionOutputPortName', 'type': 'str'},
        'run_settings': {'key': 'runSettings', 'type': 'AetherDoWhileControlFlowRunSettings'},
    }

    def __init__(
        self,
        *,
        output_port_name_to_input_port_names_mapping: Optional[Dict[str, List[str]]] = None,
        condition_output_port_name: Optional[str] = None,
        run_settings: Optional["AetherDoWhileControlFlowRunSettings"] = None,
        **kwargs
    ):
        """
        :keyword output_port_name_to_input_port_names_mapping: Dictionary of
         <components·1f2aigm·schemas·aetherdowhilecontrolflowinfo·properties·outputportnametoinputportnamesmapping·additionalproperties>.
        :paramtype output_port_name_to_input_port_names_mapping: dict[str, list[str]]
        :keyword condition_output_port_name:
        :paramtype condition_output_port_name: str
        :keyword run_settings:
        :paramtype run_settings: ~flow.models.AetherDoWhileControlFlowRunSettings
        """
        super(AetherDoWhileControlFlowInfo, self).__init__(**kwargs)
        self.output_port_name_to_input_port_names_mapping = output_port_name_to_input_port_names_mapping
        self.condition_output_port_name = condition_output_port_name
        self.run_settings = run_settings


class AetherDoWhileControlFlowRunSettings(msrest.serialization.Model):
    """AetherDoWhileControlFlowRunSettings.

    :ivar max_loop_iteration_count:
    :vartype max_loop_iteration_count: ~flow.models.AetherParameterAssignment
    """

    _attribute_map = {
        'max_loop_iteration_count': {'key': 'maxLoopIterationCount', 'type': 'AetherParameterAssignment'},
    }

    def __init__(
        self,
        *,
        max_loop_iteration_count: Optional["AetherParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword max_loop_iteration_count:
        :paramtype max_loop_iteration_count: ~flow.models.AetherParameterAssignment
        """
        super(AetherDoWhileControlFlowRunSettings, self).__init__(**kwargs)
        self.max_loop_iteration_count = max_loop_iteration_count


class AetherEntityInterfaceDocumentation(msrest.serialization.Model):
    """AetherEntityInterfaceDocumentation.

    :ivar inputs_documentation: Dictionary of :code:`<string>`.
    :vartype inputs_documentation: dict[str, str]
    :ivar outputs_documentation: Dictionary of :code:`<string>`.
    :vartype outputs_documentation: dict[str, str]
    :ivar parameters_documentation: Dictionary of :code:`<string>`.
    :vartype parameters_documentation: dict[str, str]
    """

    _attribute_map = {
        'inputs_documentation': {'key': 'inputsDocumentation', 'type': '{str}'},
        'outputs_documentation': {'key': 'outputsDocumentation', 'type': '{str}'},
        'parameters_documentation': {'key': 'parametersDocumentation', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        inputs_documentation: Optional[Dict[str, str]] = None,
        outputs_documentation: Optional[Dict[str, str]] = None,
        parameters_documentation: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword inputs_documentation: Dictionary of :code:`<string>`.
        :paramtype inputs_documentation: dict[str, str]
        :keyword outputs_documentation: Dictionary of :code:`<string>`.
        :paramtype outputs_documentation: dict[str, str]
        :keyword parameters_documentation: Dictionary of :code:`<string>`.
        :paramtype parameters_documentation: dict[str, str]
        """
        super(AetherEntityInterfaceDocumentation, self).__init__(**kwargs)
        self.inputs_documentation = inputs_documentation
        self.outputs_documentation = outputs_documentation
        self.parameters_documentation = parameters_documentation


class AetherEntrySetting(msrest.serialization.Model):
    """AetherEntrySetting.

    :ivar file:
    :vartype file: str
    :ivar class_name:
    :vartype class_name: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        class_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword class_name:
        :paramtype class_name: str
        """
        super(AetherEntrySetting, self).__init__(**kwargs)
        self.file = file
        self.class_name = class_name


class AetherEnvironmentConfiguration(msrest.serialization.Model):
    """AetherEnvironmentConfiguration.

    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar use_environment_definition:
    :vartype use_environment_definition: bool
    :ivar environment_definition_string:
    :vartype environment_definition_string: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'use_environment_definition': {'key': 'useEnvironmentDefinition', 'type': 'bool'},
        'environment_definition_string': {'key': 'environmentDefinitionString', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        version: Optional[str] = None,
        use_environment_definition: Optional[bool] = None,
        environment_definition_string: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword use_environment_definition:
        :paramtype use_environment_definition: bool
        :keyword environment_definition_string:
        :paramtype environment_definition_string: str
        """
        super(AetherEnvironmentConfiguration, self).__init__(**kwargs)
        self.name = name
        self.version = version
        self.use_environment_definition = use_environment_definition
        self.environment_definition_string = environment_definition_string


class AetherEsCloudConfiguration(msrest.serialization.Model):
    """AetherEsCloudConfiguration.

    :ivar enable_output_to_file_based_on_data_type_id:
    :vartype enable_output_to_file_based_on_data_type_id: bool
    :ivar aml_compute_priority_internal:
    :vartype aml_compute_priority_internal: ~flow.models.AetherPriorityConfiguration
    :ivar itp_priority_internal:
    :vartype itp_priority_internal: ~flow.models.AetherPriorityConfiguration
    :ivar singularity_priority_internal:
    :vartype singularity_priority_internal: ~flow.models.AetherPriorityConfiguration
    :ivar environment:
    :vartype environment: ~flow.models.AetherEnvironmentConfiguration
    :ivar hyper_drive_configuration:
    :vartype hyper_drive_configuration: ~flow.models.AetherHyperDriveConfiguration
    :ivar k8_s_config:
    :vartype k8_s_config: ~flow.models.AetherK8SConfiguration
    :ivar resource_config:
    :vartype resource_config: ~flow.models.AetherResourceConfiguration
    :ivar torch_distributed_config:
    :vartype torch_distributed_config: ~flow.models.AetherTorchDistributedConfiguration
    :ivar target_selector_config:
    :vartype target_selector_config: ~flow.models.AetherTargetSelectorConfiguration
    :ivar docker_config:
    :vartype docker_config: ~flow.models.AetherDockerSettingConfiguration
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar max_run_duration_seconds:
    :vartype max_run_duration_seconds: int
    :ivar identity:
    :vartype identity: ~flow.models.AetherIdentitySetting
    :ivar application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
    :vartype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
    :ivar run_config:
    :vartype run_config: str
    """

    _attribute_map = {
        'enable_output_to_file_based_on_data_type_id': {'key': 'enableOutputToFileBasedOnDataTypeId', 'type': 'bool'},
        'aml_compute_priority_internal': {'key': 'amlComputePriorityInternal', 'type': 'AetherPriorityConfiguration'},
        'itp_priority_internal': {'key': 'itpPriorityInternal', 'type': 'AetherPriorityConfiguration'},
        'singularity_priority_internal': {'key': 'singularityPriorityInternal', 'type': 'AetherPriorityConfiguration'},
        'environment': {'key': 'environment', 'type': 'AetherEnvironmentConfiguration'},
        'hyper_drive_configuration': {'key': 'hyperDriveConfiguration', 'type': 'AetherHyperDriveConfiguration'},
        'k8_s_config': {'key': 'k8sConfig', 'type': 'AetherK8SConfiguration'},
        'resource_config': {'key': 'resourceConfig', 'type': 'AetherResourceConfiguration'},
        'torch_distributed_config': {'key': 'torchDistributedConfig', 'type': 'AetherTorchDistributedConfiguration'},
        'target_selector_config': {'key': 'targetSelectorConfig', 'type': 'AetherTargetSelectorConfiguration'},
        'docker_config': {'key': 'dockerConfig', 'type': 'AetherDockerSettingConfiguration'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'max_run_duration_seconds': {'key': 'maxRunDurationSeconds', 'type': 'int'},
        'identity': {'key': 'identity', 'type': 'AetherIdentitySetting'},
        'application_endpoints': {'key': 'applicationEndpoints', 'type': '{ApplicationEndpointConfiguration}'},
        'run_config': {'key': 'runConfig', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        enable_output_to_file_based_on_data_type_id: Optional[bool] = None,
        aml_compute_priority_internal: Optional["AetherPriorityConfiguration"] = None,
        itp_priority_internal: Optional["AetherPriorityConfiguration"] = None,
        singularity_priority_internal: Optional["AetherPriorityConfiguration"] = None,
        environment: Optional["AetherEnvironmentConfiguration"] = None,
        hyper_drive_configuration: Optional["AetherHyperDriveConfiguration"] = None,
        k8_s_config: Optional["AetherK8SConfiguration"] = None,
        resource_config: Optional["AetherResourceConfiguration"] = None,
        torch_distributed_config: Optional["AetherTorchDistributedConfiguration"] = None,
        target_selector_config: Optional["AetherTargetSelectorConfiguration"] = None,
        docker_config: Optional["AetherDockerSettingConfiguration"] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        max_run_duration_seconds: Optional[int] = None,
        identity: Optional["AetherIdentitySetting"] = None,
        application_endpoints: Optional[Dict[str, "ApplicationEndpointConfiguration"]] = None,
        run_config: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword enable_output_to_file_based_on_data_type_id:
        :paramtype enable_output_to_file_based_on_data_type_id: bool
        :keyword aml_compute_priority_internal:
        :paramtype aml_compute_priority_internal: ~flow.models.AetherPriorityConfiguration
        :keyword itp_priority_internal:
        :paramtype itp_priority_internal: ~flow.models.AetherPriorityConfiguration
        :keyword singularity_priority_internal:
        :paramtype singularity_priority_internal: ~flow.models.AetherPriorityConfiguration
        :keyword environment:
        :paramtype environment: ~flow.models.AetherEnvironmentConfiguration
        :keyword hyper_drive_configuration:
        :paramtype hyper_drive_configuration: ~flow.models.AetherHyperDriveConfiguration
        :keyword k8_s_config:
        :paramtype k8_s_config: ~flow.models.AetherK8SConfiguration
        :keyword resource_config:
        :paramtype resource_config: ~flow.models.AetherResourceConfiguration
        :keyword torch_distributed_config:
        :paramtype torch_distributed_config: ~flow.models.AetherTorchDistributedConfiguration
        :keyword target_selector_config:
        :paramtype target_selector_config: ~flow.models.AetherTargetSelectorConfiguration
        :keyword docker_config:
        :paramtype docker_config: ~flow.models.AetherDockerSettingConfiguration
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword max_run_duration_seconds:
        :paramtype max_run_duration_seconds: int
        :keyword identity:
        :paramtype identity: ~flow.models.AetherIdentitySetting
        :keyword application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
        :paramtype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
        :keyword run_config:
        :paramtype run_config: str
        """
        super(AetherEsCloudConfiguration, self).__init__(**kwargs)
        self.enable_output_to_file_based_on_data_type_id = enable_output_to_file_based_on_data_type_id
        self.aml_compute_priority_internal = aml_compute_priority_internal
        self.itp_priority_internal = itp_priority_internal
        self.singularity_priority_internal = singularity_priority_internal
        self.environment = environment
        self.hyper_drive_configuration = hyper_drive_configuration
        self.k8_s_config = k8_s_config
        self.resource_config = resource_config
        self.torch_distributed_config = torch_distributed_config
        self.target_selector_config = target_selector_config
        self.docker_config = docker_config
        self.environment_variables = environment_variables
        self.max_run_duration_seconds = max_run_duration_seconds
        self.identity = identity
        self.application_endpoints = application_endpoints
        self.run_config = run_config


class AetherExportDataTask(msrest.serialization.Model):
    """AetherExportDataTask.

    :ivar data_transfer_sink:
    :vartype data_transfer_sink: ~flow.models.AetherDataTransferSink
    """

    _attribute_map = {
        'data_transfer_sink': {'key': 'DataTransferSink', 'type': 'AetherDataTransferSink'},
    }

    def __init__(
        self,
        *,
        data_transfer_sink: Optional["AetherDataTransferSink"] = None,
        **kwargs
    ):
        """
        :keyword data_transfer_sink:
        :paramtype data_transfer_sink: ~flow.models.AetherDataTransferSink
        """
        super(AetherExportDataTask, self).__init__(**kwargs)
        self.data_transfer_sink = data_transfer_sink


class AetherFeaturizationSettings(msrest.serialization.Model):
    """AetherFeaturizationSettings.

    :ivar mode: Possible values include: "Auto", "Custom", "Off".
    :vartype mode: str or ~flow.models.AetherFeaturizationMode
    :ivar blocked_transformers:
    :vartype blocked_transformers: list[str]
    :ivar column_purposes: Dictionary of :code:`<string>`.
    :vartype column_purposes: dict[str, str]
    :ivar drop_columns:
    :vartype drop_columns: list[str]
    :ivar transformer_params: Dictionary of
     <components·1y90i4m·schemas·aetherfeaturizationsettings·properties·transformerparams·additionalproperties>.
    :vartype transformer_params: dict[str, list[~flow.models.AetherColumnTransformer]]
    :ivar dataset_language:
    :vartype dataset_language: str
    :ivar enable_dnn_featurization:
    :vartype enable_dnn_featurization: bool
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'blocked_transformers': {'key': 'blockedTransformers', 'type': '[str]'},
        'column_purposes': {'key': 'columnPurposes', 'type': '{str}'},
        'drop_columns': {'key': 'dropColumns', 'type': '[str]'},
        'transformer_params': {'key': 'transformerParams', 'type': '{[AetherColumnTransformer]}'},
        'dataset_language': {'key': 'datasetLanguage', 'type': 'str'},
        'enable_dnn_featurization': {'key': 'enableDnnFeaturization', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherFeaturizationMode"]] = None,
        blocked_transformers: Optional[List[str]] = None,
        column_purposes: Optional[Dict[str, str]] = None,
        drop_columns: Optional[List[str]] = None,
        transformer_params: Optional[Dict[str, List["AetherColumnTransformer"]]] = None,
        dataset_language: Optional[str] = None,
        enable_dnn_featurization: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom", "Off".
        :paramtype mode: str or ~flow.models.AetherFeaturizationMode
        :keyword blocked_transformers:
        :paramtype blocked_transformers: list[str]
        :keyword column_purposes: Dictionary of :code:`<string>`.
        :paramtype column_purposes: dict[str, str]
        :keyword drop_columns:
        :paramtype drop_columns: list[str]
        :keyword transformer_params: Dictionary of
         <components·1y90i4m·schemas·aetherfeaturizationsettings·properties·transformerparams·additionalproperties>.
        :paramtype transformer_params: dict[str, list[~flow.models.AetherColumnTransformer]]
        :keyword dataset_language:
        :paramtype dataset_language: str
        :keyword enable_dnn_featurization:
        :paramtype enable_dnn_featurization: bool
        """
        super(AetherFeaturizationSettings, self).__init__(**kwargs)
        self.mode = mode
        self.blocked_transformers = blocked_transformers
        self.column_purposes = column_purposes
        self.drop_columns = drop_columns
        self.transformer_params = transformer_params
        self.dataset_language = dataset_language
        self.enable_dnn_featurization = enable_dnn_featurization


class AetherFileSystem(msrest.serialization.Model):
    """AetherFileSystem.

    :ivar connection:
    :vartype connection: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword path:
        :paramtype path: str
        """
        super(AetherFileSystem, self).__init__(**kwargs)
        self.connection = connection
        self.path = path


class AetherFineTuningCloudSetting(msrest.serialization.Model):
    """AetherFineTuningCloudSetting.

    :ivar entry:
    :vartype entry: ~flow.models.AetherEntrySetting
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar inline_environment_definition_string:
    :vartype inline_environment_definition_string: str
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar compute:
    :vartype compute: str
    :ivar resources:
    :vartype resources: ~flow.models.AetherResourcesSetting
    :ivar identity:
    :vartype identity: ~flow.models.AetherIdentitySetting
    """

    _attribute_map = {
        'entry': {'key': 'entry', 'type': 'AetherEntrySetting'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'inline_environment_definition_string': {'key': 'inlineEnvironmentDefinitionString', 'type': 'str'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'compute': {'key': 'compute', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'AetherResourcesSetting'},
        'identity': {'key': 'identity', 'type': 'AetherIdentitySetting'},
    }

    def __init__(
        self,
        *,
        entry: Optional["AetherEntrySetting"] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        environment_asset_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        inline_environment_definition_string: Optional[str] = None,
        conf: Optional[Dict[str, str]] = None,
        compute: Optional[str] = None,
        resources: Optional["AetherResourcesSetting"] = None,
        identity: Optional["AetherIdentitySetting"] = None,
        **kwargs
    ):
        """
        :keyword entry:
        :paramtype entry: ~flow.models.AetherEntrySetting
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword inline_environment_definition_string:
        :paramtype inline_environment_definition_string: str
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword compute:
        :paramtype compute: str
        :keyword resources:
        :paramtype resources: ~flow.models.AetherResourcesSetting
        :keyword identity:
        :paramtype identity: ~flow.models.AetherIdentitySetting
        """
        super(AetherFineTuningCloudSetting, self).__init__(**kwargs)
        self.entry = entry
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.environment_asset_id = environment_asset_id
        self.environment_variables = environment_variables
        self.inline_environment_definition_string = inline_environment_definition_string
        self.conf = conf
        self.compute = compute
        self.resources = resources
        self.identity = identity


class AetherForecastHorizon(msrest.serialization.Model):
    """AetherForecastHorizon.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.AetherForecastHorizonMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherForecastHorizonMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.AetherForecastHorizonMode
        :keyword value:
        :paramtype value: int
        """
        super(AetherForecastHorizon, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class AetherForecastingSettings(msrest.serialization.Model):
    """AetherForecastingSettings.

    :ivar country_or_region_for_holidays:
    :vartype country_or_region_for_holidays: str
    :ivar time_column_name:
    :vartype time_column_name: str
    :ivar target_lags:
    :vartype target_lags: ~flow.models.AetherTargetLags
    :ivar target_rolling_window_size:
    :vartype target_rolling_window_size: ~flow.models.AetherTargetRollingWindowSize
    :ivar forecast_horizon:
    :vartype forecast_horizon: ~flow.models.AetherForecastHorizon
    :ivar time_series_id_column_names:
    :vartype time_series_id_column_names: list[str]
    :ivar frequency:
    :vartype frequency: str
    :ivar feature_lags:
    :vartype feature_lags: str
    :ivar seasonality:
    :vartype seasonality: ~flow.models.AetherSeasonality
    :ivar short_series_handling_config: Possible values include: "Auto", "Pad", "Drop".
    :vartype short_series_handling_config: str or
     ~flow.models.AetherShortSeriesHandlingConfiguration
    :ivar use_stl: Possible values include: "Season", "SeasonTrend".
    :vartype use_stl: str or ~flow.models.AetherUseStl
    :ivar target_aggregate_function: Possible values include: "Sum", "Max", "Min", "Mean".
    :vartype target_aggregate_function: str or ~flow.models.AetherTargetAggregationFunction
    :ivar cv_step_size:
    :vartype cv_step_size: int
    :ivar features_unknown_at_forecast_time:
    :vartype features_unknown_at_forecast_time: list[str]
    """

    _attribute_map = {
        'country_or_region_for_holidays': {'key': 'countryOrRegionForHolidays', 'type': 'str'},
        'time_column_name': {'key': 'timeColumnName', 'type': 'str'},
        'target_lags': {'key': 'targetLags', 'type': 'AetherTargetLags'},
        'target_rolling_window_size': {'key': 'targetRollingWindowSize', 'type': 'AetherTargetRollingWindowSize'},
        'forecast_horizon': {'key': 'forecastHorizon', 'type': 'AetherForecastHorizon'},
        'time_series_id_column_names': {'key': 'timeSeriesIdColumnNames', 'type': '[str]'},
        'frequency': {'key': 'frequency', 'type': 'str'},
        'feature_lags': {'key': 'featureLags', 'type': 'str'},
        'seasonality': {'key': 'seasonality', 'type': 'AetherSeasonality'},
        'short_series_handling_config': {'key': 'shortSeriesHandlingConfig', 'type': 'str'},
        'use_stl': {'key': 'useStl', 'type': 'str'},
        'target_aggregate_function': {'key': 'targetAggregateFunction', 'type': 'str'},
        'cv_step_size': {'key': 'cvStepSize', 'type': 'int'},
        'features_unknown_at_forecast_time': {'key': 'featuresUnknownAtForecastTime', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        country_or_region_for_holidays: Optional[str] = None,
        time_column_name: Optional[str] = None,
        target_lags: Optional["AetherTargetLags"] = None,
        target_rolling_window_size: Optional["AetherTargetRollingWindowSize"] = None,
        forecast_horizon: Optional["AetherForecastHorizon"] = None,
        time_series_id_column_names: Optional[List[str]] = None,
        frequency: Optional[str] = None,
        feature_lags: Optional[str] = None,
        seasonality: Optional["AetherSeasonality"] = None,
        short_series_handling_config: Optional[Union[str, "AetherShortSeriesHandlingConfiguration"]] = None,
        use_stl: Optional[Union[str, "AetherUseStl"]] = None,
        target_aggregate_function: Optional[Union[str, "AetherTargetAggregationFunction"]] = None,
        cv_step_size: Optional[int] = None,
        features_unknown_at_forecast_time: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword country_or_region_for_holidays:
        :paramtype country_or_region_for_holidays: str
        :keyword time_column_name:
        :paramtype time_column_name: str
        :keyword target_lags:
        :paramtype target_lags: ~flow.models.AetherTargetLags
        :keyword target_rolling_window_size:
        :paramtype target_rolling_window_size: ~flow.models.AetherTargetRollingWindowSize
        :keyword forecast_horizon:
        :paramtype forecast_horizon: ~flow.models.AetherForecastHorizon
        :keyword time_series_id_column_names:
        :paramtype time_series_id_column_names: list[str]
        :keyword frequency:
        :paramtype frequency: str
        :keyword feature_lags:
        :paramtype feature_lags: str
        :keyword seasonality:
        :paramtype seasonality: ~flow.models.AetherSeasonality
        :keyword short_series_handling_config: Possible values include: "Auto", "Pad", "Drop".
        :paramtype short_series_handling_config: str or
         ~flow.models.AetherShortSeriesHandlingConfiguration
        :keyword use_stl: Possible values include: "Season", "SeasonTrend".
        :paramtype use_stl: str or ~flow.models.AetherUseStl
        :keyword target_aggregate_function: Possible values include: "Sum", "Max", "Min", "Mean".
        :paramtype target_aggregate_function: str or ~flow.models.AetherTargetAggregationFunction
        :keyword cv_step_size:
        :paramtype cv_step_size: int
        :keyword features_unknown_at_forecast_time:
        :paramtype features_unknown_at_forecast_time: list[str]
        """
        super(AetherForecastingSettings, self).__init__(**kwargs)
        self.country_or_region_for_holidays = country_or_region_for_holidays
        self.time_column_name = time_column_name
        self.target_lags = target_lags
        self.target_rolling_window_size = target_rolling_window_size
        self.forecast_horizon = forecast_horizon
        self.time_series_id_column_names = time_series_id_column_names
        self.frequency = frequency
        self.feature_lags = feature_lags
        self.seasonality = seasonality
        self.short_series_handling_config = short_series_handling_config
        self.use_stl = use_stl
        self.target_aggregate_function = target_aggregate_function
        self.cv_step_size = cv_step_size
        self.features_unknown_at_forecast_time = features_unknown_at_forecast_time


class AetherGeneralSettings(msrest.serialization.Model):
    """AetherGeneralSettings.

    :ivar primary_metric: Possible values include: "AUCWeighted", "Accuracy", "NormMacroRecall",
     "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted", "SpearmanCorrelation",
     "NormalizedRootMeanSquaredError", "R2Score", "NormalizedMeanAbsoluteError",
     "NormalizedRootMeanSquaredLogError", "MeanAveragePrecision", "Iou".
    :vartype primary_metric: str or ~flow.models.AetherPrimaryMetrics
    :ivar task_type: Possible values include: "Classification", "Regression", "Forecasting",
     "ImageClassification", "ImageClassificationMultilabel", "ImageObjectDetection",
     "ImageInstanceSegmentation", "TextClassification", "TextMultiLabeling", "TextNER",
     "TextClassificationMultilabel".
    :vartype task_type: str or ~flow.models.AetherTaskType
    :ivar log_verbosity: Possible values include: "NotSet", "Debug", "Info", "Warning", "Error",
     "Critical".
    :vartype log_verbosity: str or ~flow.models.AetherLogVerbosity
    """

    _attribute_map = {
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        primary_metric: Optional[Union[str, "AetherPrimaryMetrics"]] = None,
        task_type: Optional[Union[str, "AetherTaskType"]] = None,
        log_verbosity: Optional[Union[str, "AetherLogVerbosity"]] = None,
        **kwargs
    ):
        """
        :keyword primary_metric: Possible values include: "AUCWeighted", "Accuracy", "NormMacroRecall",
         "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted", "SpearmanCorrelation",
         "NormalizedRootMeanSquaredError", "R2Score", "NormalizedMeanAbsoluteError",
         "NormalizedRootMeanSquaredLogError", "MeanAveragePrecision", "Iou".
        :paramtype primary_metric: str or ~flow.models.AetherPrimaryMetrics
        :keyword task_type: Possible values include: "Classification", "Regression", "Forecasting",
         "ImageClassification", "ImageClassificationMultilabel", "ImageObjectDetection",
         "ImageInstanceSegmentation", "TextClassification", "TextMultiLabeling", "TextNER",
         "TextClassificationMultilabel".
        :paramtype task_type: str or ~flow.models.AetherTaskType
        :keyword log_verbosity: Possible values include: "NotSet", "Debug", "Info", "Warning", "Error",
         "Critical".
        :paramtype log_verbosity: str or ~flow.models.AetherLogVerbosity
        """
        super(AetherGeneralSettings, self).__init__(**kwargs)
        self.primary_metric = primary_metric
        self.task_type = task_type
        self.log_verbosity = log_verbosity


class AetherGlobsOptions(msrest.serialization.Model):
    """AetherGlobsOptions.

    :ivar glob_patterns:
    :vartype glob_patterns: list[str]
    """

    _attribute_map = {
        'glob_patterns': {'key': 'globPatterns', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        glob_patterns: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword glob_patterns:
        :paramtype glob_patterns: list[str]
        """
        super(AetherGlobsOptions, self).__init__(**kwargs)
        self.glob_patterns = glob_patterns


class AetherGraphControlNode(msrest.serialization.Model):
    """AetherGraphControlNode.

    :ivar id:
    :vartype id: str
    :ivar control_type:  The only acceptable values to pass in are None and "IfElse". The default
     value is None.
    :vartype control_type: str
    :ivar control_parameter:
    :vartype control_parameter: ~flow.models.AetherParameterAssignment
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'control_type': {'key': 'controlType', 'type': 'str'},
        'control_parameter': {'key': 'controlParameter', 'type': 'AetherParameterAssignment'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        control_type: Optional[str] = None,
        control_parameter: Optional["AetherParameterAssignment"] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword control_type:  The only acceptable values to pass in are None and "IfElse". The
         default value is None.
        :paramtype control_type: str
        :keyword control_parameter:
        :paramtype control_parameter: ~flow.models.AetherParameterAssignment
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(AetherGraphControlNode, self).__init__(**kwargs)
        self.id = id
        self.control_type = control_type
        self.control_parameter = control_parameter
        self.run_attribution = run_attribution


class AetherGraphControlReferenceNode(msrest.serialization.Model):
    """AetherGraphControlReferenceNode.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar comment:
    :vartype comment: str
    :ivar control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
    :vartype control_flow_type: str or ~flow.models.AetherControlFlowType
    :ivar reference_node_id:
    :vartype reference_node_id: str
    :ivar do_while_control_flow_info:
    :vartype do_while_control_flow_info: ~flow.models.AetherDoWhileControlFlowInfo
    :ivar parallel_for_control_flow_info:
    :vartype parallel_for_control_flow_info: ~flow.models.AetherParallelForControlFlowInfo
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'control_flow_type': {'key': 'controlFlowType', 'type': 'str'},
        'reference_node_id': {'key': 'referenceNodeId', 'type': 'str'},
        'do_while_control_flow_info': {'key': 'doWhileControlFlowInfo', 'type': 'AetherDoWhileControlFlowInfo'},
        'parallel_for_control_flow_info': {'key': 'parallelForControlFlowInfo', 'type': 'AetherParallelForControlFlowInfo'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        comment: Optional[str] = None,
        control_flow_type: Optional[Union[str, "AetherControlFlowType"]] = None,
        reference_node_id: Optional[str] = None,
        do_while_control_flow_info: Optional["AetherDoWhileControlFlowInfo"] = None,
        parallel_for_control_flow_info: Optional["AetherParallelForControlFlowInfo"] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword comment:
        :paramtype comment: str
        :keyword control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
        :paramtype control_flow_type: str or ~flow.models.AetherControlFlowType
        :keyword reference_node_id:
        :paramtype reference_node_id: str
        :keyword do_while_control_flow_info:
        :paramtype do_while_control_flow_info: ~flow.models.AetherDoWhileControlFlowInfo
        :keyword parallel_for_control_flow_info:
        :paramtype parallel_for_control_flow_info: ~flow.models.AetherParallelForControlFlowInfo
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(AetherGraphControlReferenceNode, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.comment = comment
        self.control_flow_type = control_flow_type
        self.reference_node_id = reference_node_id
        self.do_while_control_flow_info = do_while_control_flow_info
        self.parallel_for_control_flow_info = parallel_for_control_flow_info
        self.run_attribution = run_attribution


class AetherGraphDatasetNode(msrest.serialization.Model):
    """AetherGraphDatasetNode.

    :ivar id:
    :vartype id: str
    :ivar dataset_id:
    :vartype dataset_id: str
    :ivar data_path_parameter_name:
    :vartype data_path_parameter_name: str
    :ivar data_set_definition:
    :vartype data_set_definition: ~flow.models.AetherDataSetDefinition
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'dataset_id': {'key': 'datasetId', 'type': 'str'},
        'data_path_parameter_name': {'key': 'dataPathParameterName', 'type': 'str'},
        'data_set_definition': {'key': 'dataSetDefinition', 'type': 'AetherDataSetDefinition'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        dataset_id: Optional[str] = None,
        data_path_parameter_name: Optional[str] = None,
        data_set_definition: Optional["AetherDataSetDefinition"] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword dataset_id:
        :paramtype dataset_id: str
        :keyword data_path_parameter_name:
        :paramtype data_path_parameter_name: str
        :keyword data_set_definition:
        :paramtype data_set_definition: ~flow.models.AetherDataSetDefinition
        """
        super(AetherGraphDatasetNode, self).__init__(**kwargs)
        self.id = id
        self.dataset_id = dataset_id
        self.data_path_parameter_name = data_path_parameter_name
        self.data_set_definition = data_set_definition


class AetherGraphEdge(msrest.serialization.Model):
    """AetherGraphEdge.

    :ivar source_output_port:
    :vartype source_output_port: ~flow.models.AetherPortInfo
    :ivar destination_input_port:
    :vartype destination_input_port: ~flow.models.AetherPortInfo
    """

    _attribute_map = {
        'source_output_port': {'key': 'sourceOutputPort', 'type': 'AetherPortInfo'},
        'destination_input_port': {'key': 'destinationInputPort', 'type': 'AetherPortInfo'},
    }

    def __init__(
        self,
        *,
        source_output_port: Optional["AetherPortInfo"] = None,
        destination_input_port: Optional["AetherPortInfo"] = None,
        **kwargs
    ):
        """
        :keyword source_output_port:
        :paramtype source_output_port: ~flow.models.AetherPortInfo
        :keyword destination_input_port:
        :paramtype destination_input_port: ~flow.models.AetherPortInfo
        """
        super(AetherGraphEdge, self).__init__(**kwargs)
        self.source_output_port = source_output_port
        self.destination_input_port = destination_input_port


class AetherGraphEntity(msrest.serialization.Model):
    """AetherGraphEntity.

    :ivar module_nodes:
    :vartype module_nodes: list[~flow.models.AetherGraphModuleNode]
    :ivar dataset_nodes:
    :vartype dataset_nodes: list[~flow.models.AetherGraphDatasetNode]
    :ivar sub_graph_nodes:
    :vartype sub_graph_nodes: list[~flow.models.AetherGraphReferenceNode]
    :ivar control_reference_nodes:
    :vartype control_reference_nodes: list[~flow.models.AetherGraphControlReferenceNode]
    :ivar control_nodes:
    :vartype control_nodes: list[~flow.models.AetherGraphControlNode]
    :ivar edges:
    :vartype edges: list[~flow.models.AetherGraphEdge]
    :ivar default_compute:
    :vartype default_compute: ~flow.models.AetherComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.AetherDatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.AetherCloudPrioritySetting
    :ivar parent_sub_graph_module_ids:
    :vartype parent_sub_graph_module_ids: list[str]
    :ivar id:
    :vartype id: str
    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar etag:
    :vartype etag: str
    :ivar tags: A set of tags.
    :vartype tags: list[str]
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.AetherEntityStatus
    """

    _attribute_map = {
        'module_nodes': {'key': 'moduleNodes', 'type': '[AetherGraphModuleNode]'},
        'dataset_nodes': {'key': 'datasetNodes', 'type': '[AetherGraphDatasetNode]'},
        'sub_graph_nodes': {'key': 'subGraphNodes', 'type': '[AetherGraphReferenceNode]'},
        'control_reference_nodes': {'key': 'controlReferenceNodes', 'type': '[AetherGraphControlReferenceNode]'},
        'control_nodes': {'key': 'controlNodes', 'type': '[AetherGraphControlNode]'},
        'edges': {'key': 'edges', 'type': '[AetherGraphEdge]'},
        'default_compute': {'key': 'defaultCompute', 'type': 'AetherComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'AetherDatastoreSetting'},
        'default_cloud_priority': {'key': 'defaultCloudPriority', 'type': 'AetherCloudPrioritySetting'},
        'parent_sub_graph_module_ids': {'key': 'parentSubGraphModuleIds', 'type': '[str]'},
        'id': {'key': 'id', 'type': 'str'},
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '[str]'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        module_nodes: Optional[List["AetherGraphModuleNode"]] = None,
        dataset_nodes: Optional[List["AetherGraphDatasetNode"]] = None,
        sub_graph_nodes: Optional[List["AetherGraphReferenceNode"]] = None,
        control_reference_nodes: Optional[List["AetherGraphControlReferenceNode"]] = None,
        control_nodes: Optional[List["AetherGraphControlNode"]] = None,
        edges: Optional[List["AetherGraphEdge"]] = None,
        default_compute: Optional["AetherComputeSetting"] = None,
        default_datastore: Optional["AetherDatastoreSetting"] = None,
        default_cloud_priority: Optional["AetherCloudPrioritySetting"] = None,
        parent_sub_graph_module_ids: Optional[List[str]] = None,
        id: Optional[str] = None,
        workspace_id: Optional[str] = None,
        etag: Optional[str] = None,
        tags: Optional[List[str]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        entity_status: Optional[Union[str, "AetherEntityStatus"]] = None,
        **kwargs
    ):
        """
        :keyword module_nodes:
        :paramtype module_nodes: list[~flow.models.AetherGraphModuleNode]
        :keyword dataset_nodes:
        :paramtype dataset_nodes: list[~flow.models.AetherGraphDatasetNode]
        :keyword sub_graph_nodes:
        :paramtype sub_graph_nodes: list[~flow.models.AetherGraphReferenceNode]
        :keyword control_reference_nodes:
        :paramtype control_reference_nodes: list[~flow.models.AetherGraphControlReferenceNode]
        :keyword control_nodes:
        :paramtype control_nodes: list[~flow.models.AetherGraphControlNode]
        :keyword edges:
        :paramtype edges: list[~flow.models.AetherGraphEdge]
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.AetherComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.AetherDatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.AetherCloudPrioritySetting
        :keyword parent_sub_graph_module_ids:
        :paramtype parent_sub_graph_module_ids: list[str]
        :keyword id:
        :paramtype id: str
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword etag:
        :paramtype etag: str
        :keyword tags: A set of tags.
        :paramtype tags: list[str]
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.AetherEntityStatus
        """
        super(AetherGraphEntity, self).__init__(**kwargs)
        self.module_nodes = module_nodes
        self.dataset_nodes = dataset_nodes
        self.sub_graph_nodes = sub_graph_nodes
        self.control_reference_nodes = control_reference_nodes
        self.control_nodes = control_nodes
        self.edges = edges
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.default_cloud_priority = default_cloud_priority
        self.parent_sub_graph_module_ids = parent_sub_graph_module_ids
        self.id = id
        self.workspace_id = workspace_id
        self.etag = etag
        self.tags = tags
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.entity_status = entity_status


class AetherGraphModuleNode(msrest.serialization.Model):
    """AetherGraphModuleNode.

    :ivar cloud_priority:
    :vartype cloud_priority: int
    :ivar default_data_retention_hint:
    :vartype default_data_retention_hint: int
    :ivar compliance_cluster:
    :vartype compliance_cluster: str
    :ivar euclid_workspace_id:
    :vartype euclid_workspace_id: str
    :ivar attached_modules:
    :vartype attached_modules: list[str]
    :ivar acceptable_machine_clusters:
    :vartype acceptable_machine_clusters: list[str]
    :ivar custom_data_location_id:
    :vartype custom_data_location_id: str
    :ivar alert_timeout_duration:
    :vartype alert_timeout_duration: str
    :ivar runconfig:
    :vartype runconfig: str
    :ivar id:
    :vartype id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar comment:
    :vartype comment: str
    :ivar name:
    :vartype name: str
    :ivar module_parameters:
    :vartype module_parameters: list[~flow.models.AetherParameterAssignment]
    :ivar module_metadata_parameters:
    :vartype module_metadata_parameters: list[~flow.models.AetherParameterAssignment]
    :ivar module_output_settings:
    :vartype module_output_settings: list[~flow.models.AetherOutputSetting]
    :ivar module_input_settings:
    :vartype module_input_settings: list[~flow.models.AetherInputSetting]
    :ivar use_graph_default_compute:
    :vartype use_graph_default_compute: bool
    :ivar use_graph_default_datastore:
    :vartype use_graph_default_datastore: bool
    :ivar regenerate_output:
    :vartype regenerate_output: bool
    :ivar control_inputs:
    :vartype control_inputs: list[~flow.models.AetherControlInput]
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.AetherCloudSettings
    :ivar execution_phase: Possible values include: "Execution", "Initialization", "Finalization".
    :vartype execution_phase: str or ~flow.models.AetherExecutionPhase
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'cloud_priority': {'key': 'cloudPriority', 'type': 'int'},
        'default_data_retention_hint': {'key': 'defaultDataRetentionHint', 'type': 'int'},
        'compliance_cluster': {'key': 'complianceCluster', 'type': 'str'},
        'euclid_workspace_id': {'key': 'euclidWorkspaceId', 'type': 'str'},
        'attached_modules': {'key': 'attachedModules', 'type': '[str]'},
        'acceptable_machine_clusters': {'key': 'acceptableMachineClusters', 'type': '[str]'},
        'custom_data_location_id': {'key': 'customDataLocationId', 'type': 'str'},
        'alert_timeout_duration': {'key': 'alertTimeoutDuration', 'type': 'str'},
        'runconfig': {'key': 'runconfig', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'module_parameters': {'key': 'moduleParameters', 'type': '[AetherParameterAssignment]'},
        'module_metadata_parameters': {'key': 'moduleMetadataParameters', 'type': '[AetherParameterAssignment]'},
        'module_output_settings': {'key': 'moduleOutputSettings', 'type': '[AetherOutputSetting]'},
        'module_input_settings': {'key': 'moduleInputSettings', 'type': '[AetherInputSetting]'},
        'use_graph_default_compute': {'key': 'useGraphDefaultCompute', 'type': 'bool'},
        'use_graph_default_datastore': {'key': 'useGraphDefaultDatastore', 'type': 'bool'},
        'regenerate_output': {'key': 'regenerateOutput', 'type': 'bool'},
        'control_inputs': {'key': 'controlInputs', 'type': '[AetherControlInput]'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'AetherCloudSettings'},
        'execution_phase': {'key': 'executionPhase', 'type': 'str'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        cloud_priority: Optional[int] = None,
        default_data_retention_hint: Optional[int] = None,
        compliance_cluster: Optional[str] = None,
        euclid_workspace_id: Optional[str] = None,
        attached_modules: Optional[List[str]] = None,
        acceptable_machine_clusters: Optional[List[str]] = None,
        custom_data_location_id: Optional[str] = None,
        alert_timeout_duration: Optional[str] = None,
        runconfig: Optional[str] = None,
        id: Optional[str] = None,
        module_id: Optional[str] = None,
        comment: Optional[str] = None,
        name: Optional[str] = None,
        module_parameters: Optional[List["AetherParameterAssignment"]] = None,
        module_metadata_parameters: Optional[List["AetherParameterAssignment"]] = None,
        module_output_settings: Optional[List["AetherOutputSetting"]] = None,
        module_input_settings: Optional[List["AetherInputSetting"]] = None,
        use_graph_default_compute: Optional[bool] = None,
        use_graph_default_datastore: Optional[bool] = None,
        regenerate_output: Optional[bool] = None,
        control_inputs: Optional[List["AetherControlInput"]] = None,
        cloud_settings: Optional["AetherCloudSettings"] = None,
        execution_phase: Optional[Union[str, "AetherExecutionPhase"]] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword cloud_priority:
        :paramtype cloud_priority: int
        :keyword default_data_retention_hint:
        :paramtype default_data_retention_hint: int
        :keyword compliance_cluster:
        :paramtype compliance_cluster: str
        :keyword euclid_workspace_id:
        :paramtype euclid_workspace_id: str
        :keyword attached_modules:
        :paramtype attached_modules: list[str]
        :keyword acceptable_machine_clusters:
        :paramtype acceptable_machine_clusters: list[str]
        :keyword custom_data_location_id:
        :paramtype custom_data_location_id: str
        :keyword alert_timeout_duration:
        :paramtype alert_timeout_duration: str
        :keyword runconfig:
        :paramtype runconfig: str
        :keyword id:
        :paramtype id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword comment:
        :paramtype comment: str
        :keyword name:
        :paramtype name: str
        :keyword module_parameters:
        :paramtype module_parameters: list[~flow.models.AetherParameterAssignment]
        :keyword module_metadata_parameters:
        :paramtype module_metadata_parameters: list[~flow.models.AetherParameterAssignment]
        :keyword module_output_settings:
        :paramtype module_output_settings: list[~flow.models.AetherOutputSetting]
        :keyword module_input_settings:
        :paramtype module_input_settings: list[~flow.models.AetherInputSetting]
        :keyword use_graph_default_compute:
        :paramtype use_graph_default_compute: bool
        :keyword use_graph_default_datastore:
        :paramtype use_graph_default_datastore: bool
        :keyword regenerate_output:
        :paramtype regenerate_output: bool
        :keyword control_inputs:
        :paramtype control_inputs: list[~flow.models.AetherControlInput]
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.AetherCloudSettings
        :keyword execution_phase: Possible values include: "Execution", "Initialization",
         "Finalization".
        :paramtype execution_phase: str or ~flow.models.AetherExecutionPhase
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(AetherGraphModuleNode, self).__init__(**kwargs)
        self.cloud_priority = cloud_priority
        self.default_data_retention_hint = default_data_retention_hint
        self.compliance_cluster = compliance_cluster
        self.euclid_workspace_id = euclid_workspace_id
        self.attached_modules = attached_modules
        self.acceptable_machine_clusters = acceptable_machine_clusters
        self.custom_data_location_id = custom_data_location_id
        self.alert_timeout_duration = alert_timeout_duration
        self.runconfig = runconfig
        self.id = id
        self.module_id = module_id
        self.comment = comment
        self.name = name
        self.module_parameters = module_parameters
        self.module_metadata_parameters = module_metadata_parameters
        self.module_output_settings = module_output_settings
        self.module_input_settings = module_input_settings
        self.use_graph_default_compute = use_graph_default_compute
        self.use_graph_default_datastore = use_graph_default_datastore
        self.regenerate_output = regenerate_output
        self.control_inputs = control_inputs
        self.cloud_settings = cloud_settings
        self.execution_phase = execution_phase
        self.run_attribution = run_attribution


class AetherGraphReferenceNode(msrest.serialization.Model):
    """AetherGraphReferenceNode.

    :ivar graph_id:
    :vartype graph_id: str
    :ivar default_compute:
    :vartype default_compute: ~flow.models.AetherComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.AetherDatastoreSetting
    :ivar id:
    :vartype id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar comment:
    :vartype comment: str
    :ivar name:
    :vartype name: str
    :ivar module_parameters:
    :vartype module_parameters: list[~flow.models.AetherParameterAssignment]
    :ivar module_metadata_parameters:
    :vartype module_metadata_parameters: list[~flow.models.AetherParameterAssignment]
    :ivar module_output_settings:
    :vartype module_output_settings: list[~flow.models.AetherOutputSetting]
    :ivar module_input_settings:
    :vartype module_input_settings: list[~flow.models.AetherInputSetting]
    :ivar use_graph_default_compute:
    :vartype use_graph_default_compute: bool
    :ivar use_graph_default_datastore:
    :vartype use_graph_default_datastore: bool
    :ivar regenerate_output:
    :vartype regenerate_output: bool
    :ivar control_inputs:
    :vartype control_inputs: list[~flow.models.AetherControlInput]
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.AetherCloudSettings
    :ivar execution_phase: Possible values include: "Execution", "Initialization", "Finalization".
    :vartype execution_phase: str or ~flow.models.AetherExecutionPhase
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'default_compute': {'key': 'defaultCompute', 'type': 'AetherComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'AetherDatastoreSetting'},
        'id': {'key': 'id', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'module_parameters': {'key': 'moduleParameters', 'type': '[AetherParameterAssignment]'},
        'module_metadata_parameters': {'key': 'moduleMetadataParameters', 'type': '[AetherParameterAssignment]'},
        'module_output_settings': {'key': 'moduleOutputSettings', 'type': '[AetherOutputSetting]'},
        'module_input_settings': {'key': 'moduleInputSettings', 'type': '[AetherInputSetting]'},
        'use_graph_default_compute': {'key': 'useGraphDefaultCompute', 'type': 'bool'},
        'use_graph_default_datastore': {'key': 'useGraphDefaultDatastore', 'type': 'bool'},
        'regenerate_output': {'key': 'regenerateOutput', 'type': 'bool'},
        'control_inputs': {'key': 'controlInputs', 'type': '[AetherControlInput]'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'AetherCloudSettings'},
        'execution_phase': {'key': 'executionPhase', 'type': 'str'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        graph_id: Optional[str] = None,
        default_compute: Optional["AetherComputeSetting"] = None,
        default_datastore: Optional["AetherDatastoreSetting"] = None,
        id: Optional[str] = None,
        module_id: Optional[str] = None,
        comment: Optional[str] = None,
        name: Optional[str] = None,
        module_parameters: Optional[List["AetherParameterAssignment"]] = None,
        module_metadata_parameters: Optional[List["AetherParameterAssignment"]] = None,
        module_output_settings: Optional[List["AetherOutputSetting"]] = None,
        module_input_settings: Optional[List["AetherInputSetting"]] = None,
        use_graph_default_compute: Optional[bool] = None,
        use_graph_default_datastore: Optional[bool] = None,
        regenerate_output: Optional[bool] = None,
        control_inputs: Optional[List["AetherControlInput"]] = None,
        cloud_settings: Optional["AetherCloudSettings"] = None,
        execution_phase: Optional[Union[str, "AetherExecutionPhase"]] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.AetherComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.AetherDatastoreSetting
        :keyword id:
        :paramtype id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword comment:
        :paramtype comment: str
        :keyword name:
        :paramtype name: str
        :keyword module_parameters:
        :paramtype module_parameters: list[~flow.models.AetherParameterAssignment]
        :keyword module_metadata_parameters:
        :paramtype module_metadata_parameters: list[~flow.models.AetherParameterAssignment]
        :keyword module_output_settings:
        :paramtype module_output_settings: list[~flow.models.AetherOutputSetting]
        :keyword module_input_settings:
        :paramtype module_input_settings: list[~flow.models.AetherInputSetting]
        :keyword use_graph_default_compute:
        :paramtype use_graph_default_compute: bool
        :keyword use_graph_default_datastore:
        :paramtype use_graph_default_datastore: bool
        :keyword regenerate_output:
        :paramtype regenerate_output: bool
        :keyword control_inputs:
        :paramtype control_inputs: list[~flow.models.AetherControlInput]
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.AetherCloudSettings
        :keyword execution_phase: Possible values include: "Execution", "Initialization",
         "Finalization".
        :paramtype execution_phase: str or ~flow.models.AetherExecutionPhase
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(AetherGraphReferenceNode, self).__init__(**kwargs)
        self.graph_id = graph_id
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.id = id
        self.module_id = module_id
        self.comment = comment
        self.name = name
        self.module_parameters = module_parameters
        self.module_metadata_parameters = module_metadata_parameters
        self.module_output_settings = module_output_settings
        self.module_input_settings = module_input_settings
        self.use_graph_default_compute = use_graph_default_compute
        self.use_graph_default_datastore = use_graph_default_datastore
        self.regenerate_output = regenerate_output
        self.control_inputs = control_inputs
        self.cloud_settings = cloud_settings
        self.execution_phase = execution_phase
        self.run_attribution = run_attribution


class AetherHdfsReference(msrest.serialization.Model):
    """AetherHdfsReference.

    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AetherHdfsReference, self).__init__(**kwargs)
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path


class AetherHdiClusterComputeInfo(msrest.serialization.Model):
    """AetherHdiClusterComputeInfo.

    :ivar address:
    :vartype address: str
    :ivar username:
    :vartype username: str
    :ivar password:
    :vartype password: str
    :ivar private_key:
    :vartype private_key: str
    """

    _attribute_map = {
        'address': {'key': 'address', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'private_key': {'key': 'privateKey', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        address: Optional[str] = None,
        username: Optional[str] = None,
        password: Optional[str] = None,
        private_key: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword address:
        :paramtype address: str
        :keyword username:
        :paramtype username: str
        :keyword password:
        :paramtype password: str
        :keyword private_key:
        :paramtype private_key: str
        """
        super(AetherHdiClusterComputeInfo, self).__init__(**kwargs)
        self.address = address
        self.username = username
        self.password = password
        self.private_key = private_key


class AetherHdiRunConfiguration(msrest.serialization.Model):
    """AetherHdiRunConfiguration.

    :ivar file:
    :vartype file: str
    :ivar class_name:
    :vartype class_name: str
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar compute_name:
    :vartype compute_name: str
    :ivar queue:
    :vartype queue: str
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'queue': {'key': 'queue', 'type': 'str'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        class_name: Optional[str] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        compute_name: Optional[str] = None,
        queue: Optional[str] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        conf: Optional[Dict[str, str]] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword class_name:
        :paramtype class_name: str
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword queue:
        :paramtype queue: str
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword name:
        :paramtype name: str
        """
        super(AetherHdiRunConfiguration, self).__init__(**kwargs)
        self.file = file
        self.class_name = class_name
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.compute_name = compute_name
        self.queue = queue
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.conf = conf
        self.name = name


class AetherHyperDriveConfiguration(msrest.serialization.Model):
    """AetherHyperDriveConfiguration.

    :ivar hyper_drive_run_config:
    :vartype hyper_drive_run_config: str
    :ivar primary_metric_goal:
    :vartype primary_metric_goal: str
    :ivar primary_metric_name:
    :vartype primary_metric_name: str
    :ivar arguments:
    :vartype arguments: list[~flow.models.AetherArgumentAssignment]
    """

    _attribute_map = {
        'hyper_drive_run_config': {'key': 'hyperDriveRunConfig', 'type': 'str'},
        'primary_metric_goal': {'key': 'primaryMetricGoal', 'type': 'str'},
        'primary_metric_name': {'key': 'primaryMetricName', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[AetherArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        hyper_drive_run_config: Optional[str] = None,
        primary_metric_goal: Optional[str] = None,
        primary_metric_name: Optional[str] = None,
        arguments: Optional[List["AetherArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword hyper_drive_run_config:
        :paramtype hyper_drive_run_config: str
        :keyword primary_metric_goal:
        :paramtype primary_metric_goal: str
        :keyword primary_metric_name:
        :paramtype primary_metric_name: str
        :keyword arguments:
        :paramtype arguments: list[~flow.models.AetherArgumentAssignment]
        """
        super(AetherHyperDriveConfiguration, self).__init__(**kwargs)
        self.hyper_drive_run_config = hyper_drive_run_config
        self.primary_metric_goal = primary_metric_goal
        self.primary_metric_name = primary_metric_name
        self.arguments = arguments


class AetherIdentitySetting(msrest.serialization.Model):
    """AetherIdentitySetting.

    :ivar type: Possible values include: "UserIdentity", "Managed", "AMLToken".
    :vartype type: str or ~flow.models.AetherIdentityType
    :ivar client_id:
    :vartype client_id: str
    :ivar object_id:
    :vartype object_id: str
    :ivar msi_resource_id:
    :vartype msi_resource_id: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'object_id': {'key': 'objectId', 'type': 'str'},
        'msi_resource_id': {'key': 'msiResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AetherIdentityType"]] = None,
        client_id: Optional[str] = None,
        object_id: Optional[str] = None,
        msi_resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "UserIdentity", "Managed", "AMLToken".
        :paramtype type: str or ~flow.models.AetherIdentityType
        :keyword client_id:
        :paramtype client_id: str
        :keyword object_id:
        :paramtype object_id: str
        :keyword msi_resource_id:
        :paramtype msi_resource_id: str
        """
        super(AetherIdentitySetting, self).__init__(**kwargs)
        self.type = type
        self.client_id = client_id
        self.object_id = object_id
        self.msi_resource_id = msi_resource_id


class AetherImportDataTask(msrest.serialization.Model):
    """AetherImportDataTask.

    :ivar data_transfer_source:
    :vartype data_transfer_source: ~flow.models.AetherDataTransferSource
    """

    _attribute_map = {
        'data_transfer_source': {'key': 'DataTransferSource', 'type': 'AetherDataTransferSource'},
    }

    def __init__(
        self,
        *,
        data_transfer_source: Optional["AetherDataTransferSource"] = None,
        **kwargs
    ):
        """
        :keyword data_transfer_source:
        :paramtype data_transfer_source: ~flow.models.AetherDataTransferSource
        """
        super(AetherImportDataTask, self).__init__(**kwargs)
        self.data_transfer_source = data_transfer_source


class AetherInputSetting(msrest.serialization.Model):
    """AetherInputSetting.

    :ivar name:
    :vartype name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar options: This is a dictionary.
    :vartype options: dict[str, str]
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'options': {'key': 'options', 'type': '{str}'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        options: Optional[Dict[str, str]] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword options: This is a dictionary.
        :paramtype options: dict[str, str]
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(AetherInputSetting, self).__init__(**kwargs)
        self.name = name
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.options = options
        self.additional_transformations = additional_transformations


class AetherInteractiveConfig(msrest.serialization.Model):
    """AetherInteractiveConfig.

    :ivar is_ssh_enabled:
    :vartype is_ssh_enabled: bool
    :ivar ssh_public_key:
    :vartype ssh_public_key: str
    :ivar is_i_python_enabled:
    :vartype is_i_python_enabled: bool
    :ivar is_tensor_board_enabled:
    :vartype is_tensor_board_enabled: bool
    :ivar interactive_port:
    :vartype interactive_port: int
    """

    _attribute_map = {
        'is_ssh_enabled': {'key': 'isSSHEnabled', 'type': 'bool'},
        'ssh_public_key': {'key': 'sshPublicKey', 'type': 'str'},
        'is_i_python_enabled': {'key': 'isIPythonEnabled', 'type': 'bool'},
        'is_tensor_board_enabled': {'key': 'isTensorBoardEnabled', 'type': 'bool'},
        'interactive_port': {'key': 'interactivePort', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        is_ssh_enabled: Optional[bool] = None,
        ssh_public_key: Optional[str] = None,
        is_i_python_enabled: Optional[bool] = None,
        is_tensor_board_enabled: Optional[bool] = None,
        interactive_port: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword is_ssh_enabled:
        :paramtype is_ssh_enabled: bool
        :keyword ssh_public_key:
        :paramtype ssh_public_key: str
        :keyword is_i_python_enabled:
        :paramtype is_i_python_enabled: bool
        :keyword is_tensor_board_enabled:
        :paramtype is_tensor_board_enabled: bool
        :keyword interactive_port:
        :paramtype interactive_port: int
        """
        super(AetherInteractiveConfig, self).__init__(**kwargs)
        self.is_ssh_enabled = is_ssh_enabled
        self.ssh_public_key = ssh_public_key
        self.is_i_python_enabled = is_i_python_enabled
        self.is_tensor_board_enabled = is_tensor_board_enabled
        self.interactive_port = interactive_port


class AetherK8SConfiguration(msrest.serialization.Model):
    """AetherK8SConfiguration.

    :ivar max_retry_count:
    :vartype max_retry_count: int
    :ivar resource_configuration:
    :vartype resource_configuration: ~flow.models.AetherResourceConfig
    :ivar priority_configuration:
    :vartype priority_configuration: ~flow.models.AetherPriorityConfig
    :ivar interactive_configuration:
    :vartype interactive_configuration: ~flow.models.AetherInteractiveConfig
    """

    _attribute_map = {
        'max_retry_count': {'key': 'maxRetryCount', 'type': 'int'},
        'resource_configuration': {'key': 'resourceConfiguration', 'type': 'AetherResourceConfig'},
        'priority_configuration': {'key': 'priorityConfiguration', 'type': 'AetherPriorityConfig'},
        'interactive_configuration': {'key': 'interactiveConfiguration', 'type': 'AetherInteractiveConfig'},
    }

    def __init__(
        self,
        *,
        max_retry_count: Optional[int] = None,
        resource_configuration: Optional["AetherResourceConfig"] = None,
        priority_configuration: Optional["AetherPriorityConfig"] = None,
        interactive_configuration: Optional["AetherInteractiveConfig"] = None,
        **kwargs
    ):
        """
        :keyword max_retry_count:
        :paramtype max_retry_count: int
        :keyword resource_configuration:
        :paramtype resource_configuration: ~flow.models.AetherResourceConfig
        :keyword priority_configuration:
        :paramtype priority_configuration: ~flow.models.AetherPriorityConfig
        :keyword interactive_configuration:
        :paramtype interactive_configuration: ~flow.models.AetherInteractiveConfig
        """
        super(AetherK8SConfiguration, self).__init__(**kwargs)
        self.max_retry_count = max_retry_count
        self.resource_configuration = resource_configuration
        self.priority_configuration = priority_configuration
        self.interactive_configuration = interactive_configuration


class AetherLegacyDataPath(msrest.serialization.Model):
    """AetherLegacyDataPath.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AetherLegacyDataPath, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.data_store_mode = data_store_mode
        self.relative_path = relative_path


class AetherLimitSettings(msrest.serialization.Model):
    """AetherLimitSettings.

    :ivar max_trials:
    :vartype max_trials: int
    :ivar timeout:
    :vartype timeout: str
    :ivar trial_timeout:
    :vartype trial_timeout: str
    :ivar max_concurrent_trials:
    :vartype max_concurrent_trials: int
    :ivar max_cores_per_trial:
    :vartype max_cores_per_trial: int
    :ivar exit_score:
    :vartype exit_score: float
    :ivar enable_early_termination:
    :vartype enable_early_termination: bool
    :ivar max_nodes:
    :vartype max_nodes: int
    """

    _attribute_map = {
        'max_trials': {'key': 'maxTrials', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'str'},
        'trial_timeout': {'key': 'trialTimeout', 'type': 'str'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_cores_per_trial': {'key': 'maxCoresPerTrial', 'type': 'int'},
        'exit_score': {'key': 'exitScore', 'type': 'float'},
        'enable_early_termination': {'key': 'enableEarlyTermination', 'type': 'bool'},
        'max_nodes': {'key': 'maxNodes', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        max_trials: Optional[int] = None,
        timeout: Optional[str] = None,
        trial_timeout: Optional[str] = None,
        max_concurrent_trials: Optional[int] = None,
        max_cores_per_trial: Optional[int] = None,
        exit_score: Optional[float] = None,
        enable_early_termination: Optional[bool] = None,
        max_nodes: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword max_trials:
        :paramtype max_trials: int
        :keyword timeout:
        :paramtype timeout: str
        :keyword trial_timeout:
        :paramtype trial_timeout: str
        :keyword max_concurrent_trials:
        :paramtype max_concurrent_trials: int
        :keyword max_cores_per_trial:
        :paramtype max_cores_per_trial: int
        :keyword exit_score:
        :paramtype exit_score: float
        :keyword enable_early_termination:
        :paramtype enable_early_termination: bool
        :keyword max_nodes:
        :paramtype max_nodes: int
        """
        super(AetherLimitSettings, self).__init__(**kwargs)
        self.max_trials = max_trials
        self.timeout = timeout
        self.trial_timeout = trial_timeout
        self.max_concurrent_trials = max_concurrent_trials
        self.max_cores_per_trial = max_cores_per_trial
        self.exit_score = exit_score
        self.enable_early_termination = enable_early_termination
        self.max_nodes = max_nodes


class AetherMlcComputeInfo(msrest.serialization.Model):
    """AetherMlcComputeInfo.

    :ivar mlc_compute_type:
    :vartype mlc_compute_type: str
    """

    _attribute_map = {
        'mlc_compute_type': {'key': 'mlcComputeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        mlc_compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword mlc_compute_type:
        :paramtype mlc_compute_type: str
        """
        super(AetherMlcComputeInfo, self).__init__(**kwargs)
        self.mlc_compute_type = mlc_compute_type


class AetherModuleEntity(msrest.serialization.Model):
    """AetherModuleEntity.

    :ivar last_updated_by:
    :vartype last_updated_by: ~flow.models.AetherCreatedBy
    :ivar display_name:
    :vartype display_name: str
    :ivar module_execution_type:
    :vartype module_execution_type: str
    :ivar module_type: Possible values include: "None", "BatchInferencing".
    :vartype module_type: str or ~flow.models.AetherModuleType
    :ivar module_type_version:
    :vartype module_type_version: str
    :ivar resource_requirements:
    :vartype resource_requirements: ~flow.models.AetherResourceModel
    :ivar machine_cluster:
    :vartype machine_cluster: list[str]
    :ivar default_compliance_cluster:
    :vartype default_compliance_cluster: str
    :ivar repository_type: Possible values include: "None", "Other", "Git", "SourceDepot",
     "Cosmos".
    :vartype repository_type: str or ~flow.models.AetherRepositoryType
    :ivar relative_path_to_source_code:
    :vartype relative_path_to_source_code: str
    :ivar commit_id:
    :vartype commit_id: str
    :ivar code_review_link:
    :vartype code_review_link: str
    :ivar unit_tests_available:
    :vartype unit_tests_available: bool
    :ivar is_compressed:
    :vartype is_compressed: bool
    :ivar execution_environment: Possible values include: "ExeWorkerMachine",
     "DockerContainerWithoutNetwork", "DockerContainerWithNetwork", "HyperVWithoutNetwork",
     "HyperVWithNetwork".
    :vartype execution_environment: str or ~flow.models.AetherExecutionEnvironment
    :ivar is_output_markup_enabled:
    :vartype is_output_markup_enabled: bool
    :ivar docker_image_id:
    :vartype docker_image_id: str
    :ivar docker_image_reference:
    :vartype docker_image_reference: str
    :ivar docker_image_security_groups:
    :vartype docker_image_security_groups: str
    :ivar extended_properties:
    :vartype extended_properties: ~flow.models.AetherModuleExtendedProperties
    :ivar deployment_source: Possible values include: "Client", "AutoDeployment", "Vsts".
    :vartype deployment_source: str or ~flow.models.AetherModuleDeploymentSource
    :ivar deployment_source_metadata:
    :vartype deployment_source_metadata: str
    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    :ivar kv_tags: This is a dictionary.
    :vartype kv_tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar created_by:
    :vartype created_by: ~flow.models.AetherCreatedBy
    :ivar runconfig:
    :vartype runconfig: str
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.AetherCloudSettings
    :ivar category:
    :vartype category: str
    :ivar step_type:
    :vartype step_type: str
    :ivar stage:
    :vartype stage: str
    :ivar upload_state: Possible values include: "Uploading", "Completed", "Canceled", "Failed".
    :vartype upload_state: str or ~flow.models.AetherUploadState
    :ivar source_code_location:
    :vartype source_code_location: str
    :ivar size_in_bytes:
    :vartype size_in_bytes: long
    :ivar download_location:
    :vartype download_location: str
    :ivar data_location:
    :vartype data_location: ~flow.models.AetherDataLocation
    :ivar scripting_runtime_id:
    :vartype scripting_runtime_id: str
    :ivar interface_documentation:
    :vartype interface_documentation: ~flow.models.AetherEntityInterfaceDocumentation
    :ivar is_eyes_on:
    :vartype is_eyes_on: bool
    :ivar compliance_cluster:
    :vartype compliance_cluster: str
    :ivar is_deterministic:
    :vartype is_deterministic: bool
    :ivar information_url:
    :vartype information_url: str
    :ivar is_experiment_id_in_parameters:
    :vartype is_experiment_id_in_parameters: bool
    :ivar interface_string:
    :vartype interface_string: str
    :ivar default_parameters: This is a dictionary.
    :vartype default_parameters: dict[str, str]
    :ivar structured_interface:
    :vartype structured_interface: ~flow.models.AetherStructuredInterface
    :ivar family_id:
    :vartype family_id: str
    :ivar name:
    :vartype name: str
    :ivar hash:
    :vartype hash: str
    :ivar description:
    :vartype description: str
    :ivar version:
    :vartype version: str
    :ivar sequence_number_in_family:
    :vartype sequence_number_in_family: int
    :ivar owner:
    :vartype owner: str
    :ivar azure_tenant_id:
    :vartype azure_tenant_id: str
    :ivar azure_user_id:
    :vartype azure_user_id: str
    :ivar collaborators:
    :vartype collaborators: list[str]
    :ivar id:
    :vartype id: str
    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar etag:
    :vartype etag: str
    :ivar tags: A set of tags.
    :vartype tags: list[str]
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.AetherEntityStatus
    """

    _attribute_map = {
        'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'AetherCreatedBy'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'module_execution_type': {'key': 'moduleExecutionType', 'type': 'str'},
        'module_type': {'key': 'moduleType', 'type': 'str'},
        'module_type_version': {'key': 'moduleTypeVersion', 'type': 'str'},
        'resource_requirements': {'key': 'resourceRequirements', 'type': 'AetherResourceModel'},
        'machine_cluster': {'key': 'machineCluster', 'type': '[str]'},
        'default_compliance_cluster': {'key': 'defaultComplianceCluster', 'type': 'str'},
        'repository_type': {'key': 'repositoryType', 'type': 'str'},
        'relative_path_to_source_code': {'key': 'relativePathToSourceCode', 'type': 'str'},
        'commit_id': {'key': 'commitId', 'type': 'str'},
        'code_review_link': {'key': 'codeReviewLink', 'type': 'str'},
        'unit_tests_available': {'key': 'unitTestsAvailable', 'type': 'bool'},
        'is_compressed': {'key': 'isCompressed', 'type': 'bool'},
        'execution_environment': {'key': 'executionEnvironment', 'type': 'str'},
        'is_output_markup_enabled': {'key': 'isOutputMarkupEnabled', 'type': 'bool'},
        'docker_image_id': {'key': 'dockerImageId', 'type': 'str'},
        'docker_image_reference': {'key': 'dockerImageReference', 'type': 'str'},
        'docker_image_security_groups': {'key': 'dockerImageSecurityGroups', 'type': 'str'},
        'extended_properties': {'key': 'extendedProperties', 'type': 'AetherModuleExtendedProperties'},
        'deployment_source': {'key': 'deploymentSource', 'type': 'str'},
        'deployment_source_metadata': {'key': 'deploymentSourceMetadata', 'type': 'str'},
        'identifier_hash': {'key': 'identifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'identifierHashV2', 'type': 'str'},
        'kv_tags': {'key': 'kvTags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'created_by': {'key': 'createdBy', 'type': 'AetherCreatedBy'},
        'runconfig': {'key': 'runconfig', 'type': 'str'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'AetherCloudSettings'},
        'category': {'key': 'category', 'type': 'str'},
        'step_type': {'key': 'stepType', 'type': 'str'},
        'stage': {'key': 'stage', 'type': 'str'},
        'upload_state': {'key': 'uploadState', 'type': 'str'},
        'source_code_location': {'key': 'sourceCodeLocation', 'type': 'str'},
        'size_in_bytes': {'key': 'sizeInBytes', 'type': 'long'},
        'download_location': {'key': 'downloadLocation', 'type': 'str'},
        'data_location': {'key': 'dataLocation', 'type': 'AetherDataLocation'},
        'scripting_runtime_id': {'key': 'scriptingRuntimeId', 'type': 'str'},
        'interface_documentation': {'key': 'interfaceDocumentation', 'type': 'AetherEntityInterfaceDocumentation'},
        'is_eyes_on': {'key': 'isEyesOn', 'type': 'bool'},
        'compliance_cluster': {'key': 'complianceCluster', 'type': 'str'},
        'is_deterministic': {'key': 'isDeterministic', 'type': 'bool'},
        'information_url': {'key': 'informationUrl', 'type': 'str'},
        'is_experiment_id_in_parameters': {'key': 'isExperimentIdInParameters', 'type': 'bool'},
        'interface_string': {'key': 'interfaceString', 'type': 'str'},
        'default_parameters': {'key': 'defaultParameters', 'type': '{str}'},
        'structured_interface': {'key': 'structuredInterface', 'type': 'AetherStructuredInterface'},
        'family_id': {'key': 'familyId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'hash': {'key': 'hash', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'sequence_number_in_family': {'key': 'sequenceNumberInFamily', 'type': 'int'},
        'owner': {'key': 'owner', 'type': 'str'},
        'azure_tenant_id': {'key': 'azureTenantId', 'type': 'str'},
        'azure_user_id': {'key': 'azureUserId', 'type': 'str'},
        'collaborators': {'key': 'collaborators', 'type': '[str]'},
        'id': {'key': 'id', 'type': 'str'},
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '[str]'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        last_updated_by: Optional["AetherCreatedBy"] = None,
        display_name: Optional[str] = None,
        module_execution_type: Optional[str] = None,
        module_type: Optional[Union[str, "AetherModuleType"]] = None,
        module_type_version: Optional[str] = None,
        resource_requirements: Optional["AetherResourceModel"] = None,
        machine_cluster: Optional[List[str]] = None,
        default_compliance_cluster: Optional[str] = None,
        repository_type: Optional[Union[str, "AetherRepositoryType"]] = None,
        relative_path_to_source_code: Optional[str] = None,
        commit_id: Optional[str] = None,
        code_review_link: Optional[str] = None,
        unit_tests_available: Optional[bool] = None,
        is_compressed: Optional[bool] = None,
        execution_environment: Optional[Union[str, "AetherExecutionEnvironment"]] = None,
        is_output_markup_enabled: Optional[bool] = None,
        docker_image_id: Optional[str] = None,
        docker_image_reference: Optional[str] = None,
        docker_image_security_groups: Optional[str] = None,
        extended_properties: Optional["AetherModuleExtendedProperties"] = None,
        deployment_source: Optional[Union[str, "AetherModuleDeploymentSource"]] = None,
        deployment_source_metadata: Optional[str] = None,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        kv_tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        created_by: Optional["AetherCreatedBy"] = None,
        runconfig: Optional[str] = None,
        cloud_settings: Optional["AetherCloudSettings"] = None,
        category: Optional[str] = None,
        step_type: Optional[str] = None,
        stage: Optional[str] = None,
        upload_state: Optional[Union[str, "AetherUploadState"]] = None,
        source_code_location: Optional[str] = None,
        size_in_bytes: Optional[int] = None,
        download_location: Optional[str] = None,
        data_location: Optional["AetherDataLocation"] = None,
        scripting_runtime_id: Optional[str] = None,
        interface_documentation: Optional["AetherEntityInterfaceDocumentation"] = None,
        is_eyes_on: Optional[bool] = None,
        compliance_cluster: Optional[str] = None,
        is_deterministic: Optional[bool] = None,
        information_url: Optional[str] = None,
        is_experiment_id_in_parameters: Optional[bool] = None,
        interface_string: Optional[str] = None,
        default_parameters: Optional[Dict[str, str]] = None,
        structured_interface: Optional["AetherStructuredInterface"] = None,
        family_id: Optional[str] = None,
        name: Optional[str] = None,
        hash: Optional[str] = None,
        description: Optional[str] = None,
        version: Optional[str] = None,
        sequence_number_in_family: Optional[int] = None,
        owner: Optional[str] = None,
        azure_tenant_id: Optional[str] = None,
        azure_user_id: Optional[str] = None,
        collaborators: Optional[List[str]] = None,
        id: Optional[str] = None,
        workspace_id: Optional[str] = None,
        etag: Optional[str] = None,
        tags: Optional[List[str]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        entity_status: Optional[Union[str, "AetherEntityStatus"]] = None,
        **kwargs
    ):
        """
        :keyword last_updated_by:
        :paramtype last_updated_by: ~flow.models.AetherCreatedBy
        :keyword display_name:
        :paramtype display_name: str
        :keyword module_execution_type:
        :paramtype module_execution_type: str
        :keyword module_type: Possible values include: "None", "BatchInferencing".
        :paramtype module_type: str or ~flow.models.AetherModuleType
        :keyword module_type_version:
        :paramtype module_type_version: str
        :keyword resource_requirements:
        :paramtype resource_requirements: ~flow.models.AetherResourceModel
        :keyword machine_cluster:
        :paramtype machine_cluster: list[str]
        :keyword default_compliance_cluster:
        :paramtype default_compliance_cluster: str
        :keyword repository_type: Possible values include: "None", "Other", "Git", "SourceDepot",
         "Cosmos".
        :paramtype repository_type: str or ~flow.models.AetherRepositoryType
        :keyword relative_path_to_source_code:
        :paramtype relative_path_to_source_code: str
        :keyword commit_id:
        :paramtype commit_id: str
        :keyword code_review_link:
        :paramtype code_review_link: str
        :keyword unit_tests_available:
        :paramtype unit_tests_available: bool
        :keyword is_compressed:
        :paramtype is_compressed: bool
        :keyword execution_environment: Possible values include: "ExeWorkerMachine",
         "DockerContainerWithoutNetwork", "DockerContainerWithNetwork", "HyperVWithoutNetwork",
         "HyperVWithNetwork".
        :paramtype execution_environment: str or ~flow.models.AetherExecutionEnvironment
        :keyword is_output_markup_enabled:
        :paramtype is_output_markup_enabled: bool
        :keyword docker_image_id:
        :paramtype docker_image_id: str
        :keyword docker_image_reference:
        :paramtype docker_image_reference: str
        :keyword docker_image_security_groups:
        :paramtype docker_image_security_groups: str
        :keyword extended_properties:
        :paramtype extended_properties: ~flow.models.AetherModuleExtendedProperties
        :keyword deployment_source: Possible values include: "Client", "AutoDeployment", "Vsts".
        :paramtype deployment_source: str or ~flow.models.AetherModuleDeploymentSource
        :keyword deployment_source_metadata:
        :paramtype deployment_source_metadata: str
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        :keyword kv_tags: This is a dictionary.
        :paramtype kv_tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword created_by:
        :paramtype created_by: ~flow.models.AetherCreatedBy
        :keyword runconfig:
        :paramtype runconfig: str
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.AetherCloudSettings
        :keyword category:
        :paramtype category: str
        :keyword step_type:
        :paramtype step_type: str
        :keyword stage:
        :paramtype stage: str
        :keyword upload_state: Possible values include: "Uploading", "Completed", "Canceled", "Failed".
        :paramtype upload_state: str or ~flow.models.AetherUploadState
        :keyword source_code_location:
        :paramtype source_code_location: str
        :keyword size_in_bytes:
        :paramtype size_in_bytes: long
        :keyword download_location:
        :paramtype download_location: str
        :keyword data_location:
        :paramtype data_location: ~flow.models.AetherDataLocation
        :keyword scripting_runtime_id:
        :paramtype scripting_runtime_id: str
        :keyword interface_documentation:
        :paramtype interface_documentation: ~flow.models.AetherEntityInterfaceDocumentation
        :keyword is_eyes_on:
        :paramtype is_eyes_on: bool
        :keyword compliance_cluster:
        :paramtype compliance_cluster: str
        :keyword is_deterministic:
        :paramtype is_deterministic: bool
        :keyword information_url:
        :paramtype information_url: str
        :keyword is_experiment_id_in_parameters:
        :paramtype is_experiment_id_in_parameters: bool
        :keyword interface_string:
        :paramtype interface_string: str
        :keyword default_parameters: This is a dictionary.
        :paramtype default_parameters: dict[str, str]
        :keyword structured_interface:
        :paramtype structured_interface: ~flow.models.AetherStructuredInterface
        :keyword family_id:
        :paramtype family_id: str
        :keyword name:
        :paramtype name: str
        :keyword hash:
        :paramtype hash: str
        :keyword description:
        :paramtype description: str
        :keyword version:
        :paramtype version: str
        :keyword sequence_number_in_family:
        :paramtype sequence_number_in_family: int
        :keyword owner:
        :paramtype owner: str
        :keyword azure_tenant_id:
        :paramtype azure_tenant_id: str
        :keyword azure_user_id:
        :paramtype azure_user_id: str
        :keyword collaborators:
        :paramtype collaborators: list[str]
        :keyword id:
        :paramtype id: str
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword etag:
        :paramtype etag: str
        :keyword tags: A set of tags.
        :paramtype tags: list[str]
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.AetherEntityStatus
        """
        super(AetherModuleEntity, self).__init__(**kwargs)
        self.last_updated_by = last_updated_by
        self.display_name = display_name
        self.module_execution_type = module_execution_type
        self.module_type = module_type
        self.module_type_version = module_type_version
        self.resource_requirements = resource_requirements
        self.machine_cluster = machine_cluster
        self.default_compliance_cluster = default_compliance_cluster
        self.repository_type = repository_type
        self.relative_path_to_source_code = relative_path_to_source_code
        self.commit_id = commit_id
        self.code_review_link = code_review_link
        self.unit_tests_available = unit_tests_available
        self.is_compressed = is_compressed
        self.execution_environment = execution_environment
        self.is_output_markup_enabled = is_output_markup_enabled
        self.docker_image_id = docker_image_id
        self.docker_image_reference = docker_image_reference
        self.docker_image_security_groups = docker_image_security_groups
        self.extended_properties = extended_properties
        self.deployment_source = deployment_source
        self.deployment_source_metadata = deployment_source_metadata
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2
        self.kv_tags = kv_tags
        self.properties = properties
        self.created_by = created_by
        self.runconfig = runconfig
        self.cloud_settings = cloud_settings
        self.category = category
        self.step_type = step_type
        self.stage = stage
        self.upload_state = upload_state
        self.source_code_location = source_code_location
        self.size_in_bytes = size_in_bytes
        self.download_location = download_location
        self.data_location = data_location
        self.scripting_runtime_id = scripting_runtime_id
        self.interface_documentation = interface_documentation
        self.is_eyes_on = is_eyes_on
        self.compliance_cluster = compliance_cluster
        self.is_deterministic = is_deterministic
        self.information_url = information_url
        self.is_experiment_id_in_parameters = is_experiment_id_in_parameters
        self.interface_string = interface_string
        self.default_parameters = default_parameters
        self.structured_interface = structured_interface
        self.family_id = family_id
        self.name = name
        self.hash = hash
        self.description = description
        self.version = version
        self.sequence_number_in_family = sequence_number_in_family
        self.owner = owner
        self.azure_tenant_id = azure_tenant_id
        self.azure_user_id = azure_user_id
        self.collaborators = collaborators
        self.id = id
        self.workspace_id = workspace_id
        self.etag = etag
        self.tags = tags
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.entity_status = entity_status


class AetherModuleExtendedProperties(msrest.serialization.Model):
    """AetherModuleExtendedProperties.

    :ivar auto_deployed_artifact:
    :vartype auto_deployed_artifact: ~flow.models.AetherBuildArtifactInfo
    :ivar script_needs_approval:
    :vartype script_needs_approval: bool
    """

    _attribute_map = {
        'auto_deployed_artifact': {'key': 'autoDeployedArtifact', 'type': 'AetherBuildArtifactInfo'},
        'script_needs_approval': {'key': 'scriptNeedsApproval', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        auto_deployed_artifact: Optional["AetherBuildArtifactInfo"] = None,
        script_needs_approval: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword auto_deployed_artifact:
        :paramtype auto_deployed_artifact: ~flow.models.AetherBuildArtifactInfo
        :keyword script_needs_approval:
        :paramtype script_needs_approval: bool
        """
        super(AetherModuleExtendedProperties, self).__init__(**kwargs)
        self.auto_deployed_artifact = auto_deployed_artifact
        self.script_needs_approval = script_needs_approval


class AetherNCrossValidations(msrest.serialization.Model):
    """AetherNCrossValidations.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.AetherNCrossValidationMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherNCrossValidationMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.AetherNCrossValidationMode
        :keyword value:
        :paramtype value: int
        """
        super(AetherNCrossValidations, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class AetherOutputSetting(msrest.serialization.Model):
    """AetherOutputSetting.

    :ivar name:
    :vartype name: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_name_parameter_assignment:
    :vartype data_store_name_parameter_assignment: ~flow.models.AetherParameterAssignment
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar data_store_mode_parameter_assignment:
    :vartype data_store_mode_parameter_assignment: ~flow.models.AetherParameterAssignment
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar path_on_compute_parameter_assignment:
    :vartype path_on_compute_parameter_assignment: ~flow.models.AetherParameterAssignment
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar web_service_port:
    :vartype web_service_port: str
    :ivar dataset_registration:
    :vartype dataset_registration: ~flow.models.AetherDatasetRegistration
    :ivar dataset_output_options:
    :vartype dataset_output_options: ~flow.models.AetherDatasetOutputOptions
    :ivar asset_output_settings:
    :vartype asset_output_settings: ~flow.models.AetherAssetOutputSettings
    :ivar parameter_name:
    :vartype parameter_name: str
    :ivar asset_output_settings_parameter_name:
    :vartype asset_output_settings_parameter_name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_name_parameter_assignment': {'key': 'DataStoreNameParameterAssignment', 'type': 'AetherParameterAssignment'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'data_store_mode_parameter_assignment': {'key': 'DataStoreModeParameterAssignment', 'type': 'AetherParameterAssignment'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'path_on_compute_parameter_assignment': {'key': 'PathOnComputeParameterAssignment', 'type': 'AetherParameterAssignment'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'web_service_port': {'key': 'webServicePort', 'type': 'str'},
        'dataset_registration': {'key': 'datasetRegistration', 'type': 'AetherDatasetRegistration'},
        'dataset_output_options': {'key': 'datasetOutputOptions', 'type': 'AetherDatasetOutputOptions'},
        'asset_output_settings': {'key': 'AssetOutputSettings', 'type': 'AetherAssetOutputSettings'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
        'asset_output_settings_parameter_name': {'key': 'AssetOutputSettingsParameterName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_store_name_parameter_assignment: Optional["AetherParameterAssignment"] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        data_store_mode_parameter_assignment: Optional["AetherParameterAssignment"] = None,
        path_on_compute: Optional[str] = None,
        path_on_compute_parameter_assignment: Optional["AetherParameterAssignment"] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        web_service_port: Optional[str] = None,
        dataset_registration: Optional["AetherDatasetRegistration"] = None,
        dataset_output_options: Optional["AetherDatasetOutputOptions"] = None,
        asset_output_settings: Optional["AetherAssetOutputSettings"] = None,
        parameter_name: Optional[str] = None,
        asset_output_settings_parameter_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_name_parameter_assignment:
        :paramtype data_store_name_parameter_assignment: ~flow.models.AetherParameterAssignment
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword data_store_mode_parameter_assignment:
        :paramtype data_store_mode_parameter_assignment: ~flow.models.AetherParameterAssignment
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword path_on_compute_parameter_assignment:
        :paramtype path_on_compute_parameter_assignment: ~flow.models.AetherParameterAssignment
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword web_service_port:
        :paramtype web_service_port: str
        :keyword dataset_registration:
        :paramtype dataset_registration: ~flow.models.AetherDatasetRegistration
        :keyword dataset_output_options:
        :paramtype dataset_output_options: ~flow.models.AetherDatasetOutputOptions
        :keyword asset_output_settings:
        :paramtype asset_output_settings: ~flow.models.AetherAssetOutputSettings
        :keyword parameter_name:
        :paramtype parameter_name: str
        :keyword asset_output_settings_parameter_name:
        :paramtype asset_output_settings_parameter_name: str
        """
        super(AetherOutputSetting, self).__init__(**kwargs)
        self.name = name
        self.data_store_name = data_store_name
        self.data_store_name_parameter_assignment = data_store_name_parameter_assignment
        self.data_store_mode = data_store_mode
        self.data_store_mode_parameter_assignment = data_store_mode_parameter_assignment
        self.path_on_compute = path_on_compute
        self.path_on_compute_parameter_assignment = path_on_compute_parameter_assignment
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.web_service_port = web_service_port
        self.dataset_registration = dataset_registration
        self.dataset_output_options = dataset_output_options
        self.asset_output_settings = asset_output_settings
        self.parameter_name = parameter_name
        self.asset_output_settings_parameter_name = asset_output_settings_parameter_name


class AetherParallelForControlFlowInfo(msrest.serialization.Model):
    """AetherParallelForControlFlowInfo.

    :ivar parallel_for_items_input:
    :vartype parallel_for_items_input: ~flow.models.AetherParameterAssignment
    """

    _attribute_map = {
        'parallel_for_items_input': {'key': 'parallelForItemsInput', 'type': 'AetherParameterAssignment'},
    }

    def __init__(
        self,
        *,
        parallel_for_items_input: Optional["AetherParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword parallel_for_items_input:
        :paramtype parallel_for_items_input: ~flow.models.AetherParameterAssignment
        """
        super(AetherParallelForControlFlowInfo, self).__init__(**kwargs)
        self.parallel_for_items_input = parallel_for_items_input


class AetherParameterAssignment(msrest.serialization.Model):
    """AetherParameterAssignment.

    :ivar value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
     "Input", "DataPath", "DataSetDefinition".
    :vartype value_type: str or ~flow.models.AetherParameterValueType
    :ivar assignments_to_concatenate:
    :vartype assignments_to_concatenate: list[~flow.models.AetherParameterAssignment]
    :ivar data_path_assignment:
    :vartype data_path_assignment: ~flow.models.AetherLegacyDataPath
    :ivar data_set_definition_value_assignment:
    :vartype data_set_definition_value_assignment: ~flow.models.AetherDataSetDefinitionValue
    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'value_type': {'key': 'valueType', 'type': 'str'},
        'assignments_to_concatenate': {'key': 'assignmentsToConcatenate', 'type': '[AetherParameterAssignment]'},
        'data_path_assignment': {'key': 'dataPathAssignment', 'type': 'AetherLegacyDataPath'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': 'AetherDataSetDefinitionValue'},
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value_type: Optional[Union[str, "AetherParameterValueType"]] = None,
        assignments_to_concatenate: Optional[List["AetherParameterAssignment"]] = None,
        data_path_assignment: Optional["AetherLegacyDataPath"] = None,
        data_set_definition_value_assignment: Optional["AetherDataSetDefinitionValue"] = None,
        name: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
         "Input", "DataPath", "DataSetDefinition".
        :paramtype value_type: str or ~flow.models.AetherParameterValueType
        :keyword assignments_to_concatenate:
        :paramtype assignments_to_concatenate: list[~flow.models.AetherParameterAssignment]
        :keyword data_path_assignment:
        :paramtype data_path_assignment: ~flow.models.AetherLegacyDataPath
        :keyword data_set_definition_value_assignment:
        :paramtype data_set_definition_value_assignment: ~flow.models.AetherDataSetDefinitionValue
        :keyword name:
        :paramtype name: str
        :keyword value:
        :paramtype value: str
        """
        super(AetherParameterAssignment, self).__init__(**kwargs)
        self.value_type = value_type
        self.assignments_to_concatenate = assignments_to_concatenate
        self.data_path_assignment = data_path_assignment
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.name = name
        self.value = value


class AetherPhillyHdfsReference(msrest.serialization.Model):
    """AetherPhillyHdfsReference.

    :ivar cluster:
    :vartype cluster: str
    :ivar vc:
    :vartype vc: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'cluster': {'key': 'cluster', 'type': 'str'},
        'vc': {'key': 'vc', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        cluster: Optional[str] = None,
        vc: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword cluster:
        :paramtype cluster: str
        :keyword vc:
        :paramtype vc: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AetherPhillyHdfsReference, self).__init__(**kwargs)
        self.cluster = cluster
        self.vc = vc
        self.relative_path = relative_path


class AetherPortInfo(msrest.serialization.Model):
    """AetherPortInfo.

    :ivar node_id:
    :vartype node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar graph_port_name:
    :vartype graph_port_name: str
    :ivar is_parameter:
    :vartype is_parameter: bool
    :ivar web_service_port:
    :vartype web_service_port: str
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'graph_port_name': {'key': 'graphPortName', 'type': 'str'},
        'is_parameter': {'key': 'isParameter', 'type': 'bool'},
        'web_service_port': {'key': 'webServicePort', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        graph_port_name: Optional[str] = None,
        is_parameter: Optional[bool] = None,
        web_service_port: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword graph_port_name:
        :paramtype graph_port_name: str
        :keyword is_parameter:
        :paramtype is_parameter: bool
        :keyword web_service_port:
        :paramtype web_service_port: str
        """
        super(AetherPortInfo, self).__init__(**kwargs)
        self.node_id = node_id
        self.port_name = port_name
        self.graph_port_name = graph_port_name
        self.is_parameter = is_parameter
        self.web_service_port = web_service_port


class AetherPriorityConfig(msrest.serialization.Model):
    """AetherPriorityConfig.

    :ivar job_priority:
    :vartype job_priority: int
    :ivar is_preemptible:
    :vartype is_preemptible: bool
    :ivar node_count_set:
    :vartype node_count_set: list[int]
    :ivar scale_interval:
    :vartype scale_interval: int
    """

    _attribute_map = {
        'job_priority': {'key': 'jobPriority', 'type': 'int'},
        'is_preemptible': {'key': 'isPreemptible', 'type': 'bool'},
        'node_count_set': {'key': 'nodeCountSet', 'type': '[int]'},
        'scale_interval': {'key': 'scaleInterval', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        job_priority: Optional[int] = None,
        is_preemptible: Optional[bool] = None,
        node_count_set: Optional[List[int]] = None,
        scale_interval: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword job_priority:
        :paramtype job_priority: int
        :keyword is_preemptible:
        :paramtype is_preemptible: bool
        :keyword node_count_set:
        :paramtype node_count_set: list[int]
        :keyword scale_interval:
        :paramtype scale_interval: int
        """
        super(AetherPriorityConfig, self).__init__(**kwargs)
        self.job_priority = job_priority
        self.is_preemptible = is_preemptible
        self.node_count_set = node_count_set
        self.scale_interval = scale_interval


class AetherPriorityConfiguration(msrest.serialization.Model):
    """AetherPriorityConfiguration.

    :ivar cloud_priority:
    :vartype cloud_priority: int
    :ivar string_type_priority:
    :vartype string_type_priority: str
    """

    _attribute_map = {
        'cloud_priority': {'key': 'cloudPriority', 'type': 'int'},
        'string_type_priority': {'key': 'stringTypePriority', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        cloud_priority: Optional[int] = None,
        string_type_priority: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword cloud_priority:
        :paramtype cloud_priority: int
        :keyword string_type_priority:
        :paramtype string_type_priority: str
        """
        super(AetherPriorityConfiguration, self).__init__(**kwargs)
        self.cloud_priority = cloud_priority
        self.string_type_priority = string_type_priority


class AetherRegisteredDataSetReference(msrest.serialization.Model):
    """AetherRegisteredDataSetReference.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(AetherRegisteredDataSetReference, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.version = version


class AetherRemoteDockerComputeInfo(msrest.serialization.Model):
    """AetherRemoteDockerComputeInfo.

    :ivar address:
    :vartype address: str
    :ivar username:
    :vartype username: str
    :ivar password:
    :vartype password: str
    :ivar private_key:
    :vartype private_key: str
    """

    _attribute_map = {
        'address': {'key': 'address', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'private_key': {'key': 'privateKey', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        address: Optional[str] = None,
        username: Optional[str] = None,
        password: Optional[str] = None,
        private_key: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword address:
        :paramtype address: str
        :keyword username:
        :paramtype username: str
        :keyword password:
        :paramtype password: str
        :keyword private_key:
        :paramtype private_key: str
        """
        super(AetherRemoteDockerComputeInfo, self).__init__(**kwargs)
        self.address = address
        self.username = username
        self.password = password
        self.private_key = private_key


class AetherResourceAssignment(msrest.serialization.Model):
    """AetherResourceAssignment.

    :ivar attributes: Dictionary of :code:`<AetherResourceAttributeAssignment>`.
    :vartype attributes: dict[str, ~flow.models.AetherResourceAttributeAssignment]
    """

    _attribute_map = {
        'attributes': {'key': 'attributes', 'type': '{AetherResourceAttributeAssignment}'},
    }

    def __init__(
        self,
        *,
        attributes: Optional[Dict[str, "AetherResourceAttributeAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword attributes: Dictionary of :code:`<AetherResourceAttributeAssignment>`.
        :paramtype attributes: dict[str, ~flow.models.AetherResourceAttributeAssignment]
        """
        super(AetherResourceAssignment, self).__init__(**kwargs)
        self.attributes = attributes


class AetherResourceAttributeAssignment(msrest.serialization.Model):
    """AetherResourceAttributeAssignment.

    :ivar attribute:
    :vartype attribute: ~flow.models.AetherResourceAttributeDefinition
    :ivar operator: Possible values include: "Equal", "Contain", "GreaterOrEqual".
    :vartype operator: str or ~flow.models.AetherResourceOperator
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'attribute': {'key': 'attribute', 'type': 'AetherResourceAttributeDefinition'},
        'operator': {'key': 'operator', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        attribute: Optional["AetherResourceAttributeDefinition"] = None,
        operator: Optional[Union[str, "AetherResourceOperator"]] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword attribute:
        :paramtype attribute: ~flow.models.AetherResourceAttributeDefinition
        :keyword operator: Possible values include: "Equal", "Contain", "GreaterOrEqual".
        :paramtype operator: str or ~flow.models.AetherResourceOperator
        :keyword value:
        :paramtype value: str
        """
        super(AetherResourceAttributeAssignment, self).__init__(**kwargs)
        self.attribute = attribute
        self.operator = operator
        self.value = value


class AetherResourceAttributeDefinition(msrest.serialization.Model):
    """AetherResourceAttributeDefinition.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "String", "Double".
    :vartype type: str or ~flow.models.AetherResourceValueType
    :ivar units:
    :vartype units: str
    :ivar allowed_operators:
    :vartype allowed_operators: list[str or ~flow.models.AetherResourceOperator]
    """

    _validation = {
        'allowed_operators': {'unique': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'units': {'key': 'units', 'type': 'str'},
        'allowed_operators': {'key': 'allowedOperators', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "AetherResourceValueType"]] = None,
        units: Optional[str] = None,
        allowed_operators: Optional[List[Union[str, "AetherResourceOperator"]]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "String", "Double".
        :paramtype type: str or ~flow.models.AetherResourceValueType
        :keyword units:
        :paramtype units: str
        :keyword allowed_operators:
        :paramtype allowed_operators: list[str or ~flow.models.AetherResourceOperator]
        """
        super(AetherResourceAttributeDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.units = units
        self.allowed_operators = allowed_operators


class AetherResourceConfig(msrest.serialization.Model):
    """AetherResourceConfig.

    :ivar gpu_count:
    :vartype gpu_count: int
    :ivar cpu_count:
    :vartype cpu_count: int
    :ivar memory_request_in_gb:
    :vartype memory_request_in_gb: int
    """

    _attribute_map = {
        'gpu_count': {'key': 'gpuCount', 'type': 'int'},
        'cpu_count': {'key': 'cpuCount', 'type': 'int'},
        'memory_request_in_gb': {'key': 'memoryRequestInGB', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        gpu_count: Optional[int] = None,
        cpu_count: Optional[int] = None,
        memory_request_in_gb: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword gpu_count:
        :paramtype gpu_count: int
        :keyword cpu_count:
        :paramtype cpu_count: int
        :keyword memory_request_in_gb:
        :paramtype memory_request_in_gb: int
        """
        super(AetherResourceConfig, self).__init__(**kwargs)
        self.gpu_count = gpu_count
        self.cpu_count = cpu_count
        self.memory_request_in_gb = memory_request_in_gb


class AetherResourceConfiguration(msrest.serialization.Model):
    """AetherResourceConfiguration.

    :ivar instance_count:
    :vartype instance_count: int
    :ivar instance_type:
    :vartype instance_type: str
    :ivar properties: Dictionary of :code:`<any>`.
    :vartype properties: dict[str, any]
    :ivar locations:
    :vartype locations: list[str]
    :ivar instance_priority:
    :vartype instance_priority: str
    :ivar quota_enforcement_resource_id:
    :vartype quota_enforcement_resource_id: str
    """

    _attribute_map = {
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'locations': {'key': 'locations', 'type': '[str]'},
        'instance_priority': {'key': 'instancePriority', 'type': 'str'},
        'quota_enforcement_resource_id': {'key': 'quotaEnforcementResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_count: Optional[int] = None,
        instance_type: Optional[str] = None,
        properties: Optional[Dict[str, Any]] = None,
        locations: Optional[List[str]] = None,
        instance_priority: Optional[str] = None,
        quota_enforcement_resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword properties: Dictionary of :code:`<any>`.
        :paramtype properties: dict[str, any]
        :keyword locations:
        :paramtype locations: list[str]
        :keyword instance_priority:
        :paramtype instance_priority: str
        :keyword quota_enforcement_resource_id:
        :paramtype quota_enforcement_resource_id: str
        """
        super(AetherResourceConfiguration, self).__init__(**kwargs)
        self.instance_count = instance_count
        self.instance_type = instance_type
        self.properties = properties
        self.locations = locations
        self.instance_priority = instance_priority
        self.quota_enforcement_resource_id = quota_enforcement_resource_id


class AetherResourceModel(msrest.serialization.Model):
    """AetherResourceModel.

    :ivar resources:
    :vartype resources: list[~flow.models.AetherResourceAssignment]
    """

    _attribute_map = {
        'resources': {'key': 'resources', 'type': '[AetherResourceAssignment]'},
    }

    def __init__(
        self,
        *,
        resources: Optional[List["AetherResourceAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword resources:
        :paramtype resources: list[~flow.models.AetherResourceAssignment]
        """
        super(AetherResourceModel, self).__init__(**kwargs)
        self.resources = resources


class AetherResourcesSetting(msrest.serialization.Model):
    """AetherResourcesSetting.

    :ivar instance_size:
    :vartype instance_size: str
    :ivar spark_version:
    :vartype spark_version: str
    """

    _attribute_map = {
        'instance_size': {'key': 'instanceSize', 'type': 'str'},
        'spark_version': {'key': 'sparkVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_size: Optional[str] = None,
        spark_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_size:
        :paramtype instance_size: str
        :keyword spark_version:
        :paramtype spark_version: str
        """
        super(AetherResourcesSetting, self).__init__(**kwargs)
        self.instance_size = instance_size
        self.spark_version = spark_version


class AetherSavedDataSetReference(msrest.serialization.Model):
    """AetherSavedDataSetReference.

    :ivar id:
    :vartype id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        """
        super(AetherSavedDataSetReference, self).__init__(**kwargs)
        self.id = id


class AetherScopeCloudConfiguration(msrest.serialization.Model):
    """AetherScopeCloudConfiguration.

    :ivar input_path_suffixes: This is a dictionary.
    :vartype input_path_suffixes: dict[str, ~flow.models.AetherArgumentAssignment]
    :ivar output_path_suffixes: This is a dictionary.
    :vartype output_path_suffixes: dict[str, ~flow.models.AetherArgumentAssignment]
    :ivar user_alias:
    :vartype user_alias: str
    :ivar tokens:
    :vartype tokens: int
    :ivar auto_token:
    :vartype auto_token: int
    :ivar vcp:
    :vartype vcp: float
    """

    _attribute_map = {
        'input_path_suffixes': {'key': 'inputPathSuffixes', 'type': '{AetherArgumentAssignment}'},
        'output_path_suffixes': {'key': 'outputPathSuffixes', 'type': '{AetherArgumentAssignment}'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'tokens': {'key': 'tokens', 'type': 'int'},
        'auto_token': {'key': 'autoToken', 'type': 'int'},
        'vcp': {'key': 'vcp', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        input_path_suffixes: Optional[Dict[str, "AetherArgumentAssignment"]] = None,
        output_path_suffixes: Optional[Dict[str, "AetherArgumentAssignment"]] = None,
        user_alias: Optional[str] = None,
        tokens: Optional[int] = None,
        auto_token: Optional[int] = None,
        vcp: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword input_path_suffixes: This is a dictionary.
        :paramtype input_path_suffixes: dict[str, ~flow.models.AetherArgumentAssignment]
        :keyword output_path_suffixes: This is a dictionary.
        :paramtype output_path_suffixes: dict[str, ~flow.models.AetherArgumentAssignment]
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword tokens:
        :paramtype tokens: int
        :keyword auto_token:
        :paramtype auto_token: int
        :keyword vcp:
        :paramtype vcp: float
        """
        super(AetherScopeCloudConfiguration, self).__init__(**kwargs)
        self.input_path_suffixes = input_path_suffixes
        self.output_path_suffixes = output_path_suffixes
        self.user_alias = user_alias
        self.tokens = tokens
        self.auto_token = auto_token
        self.vcp = vcp


class AetherSeasonality(msrest.serialization.Model):
    """AetherSeasonality.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.AetherSeasonalityMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherSeasonalityMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.AetherSeasonalityMode
        :keyword value:
        :paramtype value: int
        """
        super(AetherSeasonality, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class AetherSqlDataPath(msrest.serialization.Model):
    """AetherSqlDataPath.

    :ivar sql_table_name:
    :vartype sql_table_name: str
    :ivar sql_query:
    :vartype sql_query: str
    :ivar sql_stored_procedure_name:
    :vartype sql_stored_procedure_name: str
    :ivar sql_stored_procedure_params:
    :vartype sql_stored_procedure_params: list[~flow.models.AetherStoredProcedureParameter]
    """

    _attribute_map = {
        'sql_table_name': {'key': 'sqlTableName', 'type': 'str'},
        'sql_query': {'key': 'sqlQuery', 'type': 'str'},
        'sql_stored_procedure_name': {'key': 'sqlStoredProcedureName', 'type': 'str'},
        'sql_stored_procedure_params': {'key': 'sqlStoredProcedureParams', 'type': '[AetherStoredProcedureParameter]'},
    }

    def __init__(
        self,
        *,
        sql_table_name: Optional[str] = None,
        sql_query: Optional[str] = None,
        sql_stored_procedure_name: Optional[str] = None,
        sql_stored_procedure_params: Optional[List["AetherStoredProcedureParameter"]] = None,
        **kwargs
    ):
        """
        :keyword sql_table_name:
        :paramtype sql_table_name: str
        :keyword sql_query:
        :paramtype sql_query: str
        :keyword sql_stored_procedure_name:
        :paramtype sql_stored_procedure_name: str
        :keyword sql_stored_procedure_params:
        :paramtype sql_stored_procedure_params: list[~flow.models.AetherStoredProcedureParameter]
        """
        super(AetherSqlDataPath, self).__init__(**kwargs)
        self.sql_table_name = sql_table_name
        self.sql_query = sql_query
        self.sql_stored_procedure_name = sql_stored_procedure_name
        self.sql_stored_procedure_params = sql_stored_procedure_params


class AetherStackEnsembleSettings(msrest.serialization.Model):
    """AetherStackEnsembleSettings.

    :ivar stack_meta_learner_type: Possible values include: "None", "LogisticRegression",
     "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
     "LightGBMRegressor", "LinearRegression".
    :vartype stack_meta_learner_type: str or ~flow.models.AetherStackMetaLearnerType
    :ivar stack_meta_learner_train_percentage:
    :vartype stack_meta_learner_train_percentage: float
    :ivar stack_meta_learner_k_wargs: Anything.
    :vartype stack_meta_learner_k_wargs: any
    """

    _attribute_map = {
        'stack_meta_learner_type': {'key': 'stackMetaLearnerType', 'type': 'str'},
        'stack_meta_learner_train_percentage': {'key': 'stackMetaLearnerTrainPercentage', 'type': 'float'},
        'stack_meta_learner_k_wargs': {'key': 'stackMetaLearnerKWargs', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        stack_meta_learner_type: Optional[Union[str, "AetherStackMetaLearnerType"]] = None,
        stack_meta_learner_train_percentage: Optional[float] = None,
        stack_meta_learner_k_wargs: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword stack_meta_learner_type: Possible values include: "None", "LogisticRegression",
         "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
         "LightGBMRegressor", "LinearRegression".
        :paramtype stack_meta_learner_type: str or ~flow.models.AetherStackMetaLearnerType
        :keyword stack_meta_learner_train_percentage:
        :paramtype stack_meta_learner_train_percentage: float
        :keyword stack_meta_learner_k_wargs: Anything.
        :paramtype stack_meta_learner_k_wargs: any
        """
        super(AetherStackEnsembleSettings, self).__init__(**kwargs)
        self.stack_meta_learner_type = stack_meta_learner_type
        self.stack_meta_learner_train_percentage = stack_meta_learner_train_percentage
        self.stack_meta_learner_k_wargs = stack_meta_learner_k_wargs


class AetherStoredProcedureParameter(msrest.serialization.Model):
    """AetherStoredProcedureParameter.

    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    :ivar type: Possible values include: "String", "Int", "Decimal", "Guid", "Boolean", "Date".
    :vartype type: str or ~flow.models.AetherStoredProcedureParameterType
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        value: Optional[str] = None,
        type: Optional[Union[str, "AetherStoredProcedureParameterType"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword value:
        :paramtype value: str
        :keyword type: Possible values include: "String", "Int", "Decimal", "Guid", "Boolean", "Date".
        :paramtype type: str or ~flow.models.AetherStoredProcedureParameterType
        """
        super(AetherStoredProcedureParameter, self).__init__(**kwargs)
        self.name = name
        self.value = value
        self.type = type


class AetherStructuredInterface(msrest.serialization.Model):
    """AetherStructuredInterface.

    :ivar command_line_pattern:
    :vartype command_line_pattern: str
    :ivar inputs:
    :vartype inputs: list[~flow.models.AetherStructuredInterfaceInput]
    :ivar outputs:
    :vartype outputs: list[~flow.models.AetherStructuredInterfaceOutput]
    :ivar control_outputs:
    :vartype control_outputs: list[~flow.models.AetherControlOutput]
    :ivar parameters:
    :vartype parameters: list[~flow.models.AetherStructuredInterfaceParameter]
    :ivar metadata_parameters:
    :vartype metadata_parameters: list[~flow.models.AetherStructuredInterfaceParameter]
    :ivar arguments:
    :vartype arguments: list[~flow.models.AetherArgumentAssignment]
    """

    _attribute_map = {
        'command_line_pattern': {'key': 'commandLinePattern', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '[AetherStructuredInterfaceInput]'},
        'outputs': {'key': 'outputs', 'type': '[AetherStructuredInterfaceOutput]'},
        'control_outputs': {'key': 'controlOutputs', 'type': '[AetherControlOutput]'},
        'parameters': {'key': 'parameters', 'type': '[AetherStructuredInterfaceParameter]'},
        'metadata_parameters': {'key': 'metadataParameters', 'type': '[AetherStructuredInterfaceParameter]'},
        'arguments': {'key': 'arguments', 'type': '[AetherArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        command_line_pattern: Optional[str] = None,
        inputs: Optional[List["AetherStructuredInterfaceInput"]] = None,
        outputs: Optional[List["AetherStructuredInterfaceOutput"]] = None,
        control_outputs: Optional[List["AetherControlOutput"]] = None,
        parameters: Optional[List["AetherStructuredInterfaceParameter"]] = None,
        metadata_parameters: Optional[List["AetherStructuredInterfaceParameter"]] = None,
        arguments: Optional[List["AetherArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword command_line_pattern:
        :paramtype command_line_pattern: str
        :keyword inputs:
        :paramtype inputs: list[~flow.models.AetherStructuredInterfaceInput]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.AetherStructuredInterfaceOutput]
        :keyword control_outputs:
        :paramtype control_outputs: list[~flow.models.AetherControlOutput]
        :keyword parameters:
        :paramtype parameters: list[~flow.models.AetherStructuredInterfaceParameter]
        :keyword metadata_parameters:
        :paramtype metadata_parameters: list[~flow.models.AetherStructuredInterfaceParameter]
        :keyword arguments:
        :paramtype arguments: list[~flow.models.AetherArgumentAssignment]
        """
        super(AetherStructuredInterface, self).__init__(**kwargs)
        self.command_line_pattern = command_line_pattern
        self.inputs = inputs
        self.outputs = outputs
        self.control_outputs = control_outputs
        self.parameters = parameters
        self.metadata_parameters = metadata_parameters
        self.arguments = arguments


class AetherStructuredInterfaceInput(msrest.serialization.Model):
    """AetherStructuredInterfaceInput.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar data_type_ids_list:
    :vartype data_type_ids_list: list[str]
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar description:
    :vartype description: str
    :ivar skip_processing:
    :vartype skip_processing: bool
    :ivar is_resource:
    :vartype is_resource: bool
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar dataset_types:
    :vartype dataset_types: list[str or ~flow.models.AetherDatasetType]
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _validation = {
        'dataset_types': {'unique': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'data_type_ids_list': {'key': 'dataTypeIdsList', 'type': '[str]'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'skip_processing': {'key': 'skipProcessing', 'type': 'bool'},
        'is_resource': {'key': 'isResource', 'type': 'bool'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'dataset_types': {'key': 'datasetTypes', 'type': '[str]'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        data_type_ids_list: Optional[List[str]] = None,
        is_optional: Optional[bool] = None,
        description: Optional[str] = None,
        skip_processing: Optional[bool] = None,
        is_resource: Optional[bool] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        dataset_types: Optional[List[Union[str, "AetherDatasetType"]]] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword data_type_ids_list:
        :paramtype data_type_ids_list: list[str]
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword description:
        :paramtype description: str
        :keyword skip_processing:
        :paramtype skip_processing: bool
        :keyword is_resource:
        :paramtype is_resource: bool
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword dataset_types:
        :paramtype dataset_types: list[str or ~flow.models.AetherDatasetType]
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(AetherStructuredInterfaceInput, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.data_type_ids_list = data_type_ids_list
        self.is_optional = is_optional
        self.description = description
        self.skip_processing = skip_processing
        self.is_resource = is_resource
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.dataset_types = dataset_types
        self.additional_transformations = additional_transformations


class AetherStructuredInterfaceOutput(msrest.serialization.Model):
    """AetherStructuredInterfaceOutput.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar data_type_id:
    :vartype data_type_id: str
    :ivar pass_through_data_type_input_name:
    :vartype pass_through_data_type_input_name: str
    :ivar description:
    :vartype description: str
    :ivar skip_processing:
    :vartype skip_processing: bool
    :ivar is_artifact:
    :vartype is_artifact: bool
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AetherDataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar training_output:
    :vartype training_output: ~flow.models.AetherTrainingOutput
    :ivar dataset_output:
    :vartype dataset_output: ~flow.models.AetherDatasetOutput
    :ivar asset_output_settings:
    :vartype asset_output_settings: ~flow.models.AetherAssetOutputSettings
    :ivar early_available:
    :vartype early_available: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
        'pass_through_data_type_input_name': {'key': 'passThroughDataTypeInputName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'skip_processing': {'key': 'skipProcessing', 'type': 'bool'},
        'is_artifact': {'key': 'isArtifact', 'type': 'bool'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'training_output': {'key': 'trainingOutput', 'type': 'AetherTrainingOutput'},
        'dataset_output': {'key': 'datasetOutput', 'type': 'AetherDatasetOutput'},
        'asset_output_settings': {'key': 'AssetOutputSettings', 'type': 'AetherAssetOutputSettings'},
        'early_available': {'key': 'earlyAvailable', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        data_type_id: Optional[str] = None,
        pass_through_data_type_input_name: Optional[str] = None,
        description: Optional[str] = None,
        skip_processing: Optional[bool] = None,
        is_artifact: Optional[bool] = None,
        data_store_name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AetherDataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        training_output: Optional["AetherTrainingOutput"] = None,
        dataset_output: Optional["AetherDatasetOutput"] = None,
        asset_output_settings: Optional["AetherAssetOutputSettings"] = None,
        early_available: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword data_type_id:
        :paramtype data_type_id: str
        :keyword pass_through_data_type_input_name:
        :paramtype pass_through_data_type_input_name: str
        :keyword description:
        :paramtype description: str
        :keyword skip_processing:
        :paramtype skip_processing: bool
        :keyword is_artifact:
        :paramtype is_artifact: bool
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AetherDataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword training_output:
        :paramtype training_output: ~flow.models.AetherTrainingOutput
        :keyword dataset_output:
        :paramtype dataset_output: ~flow.models.AetherDatasetOutput
        :keyword asset_output_settings:
        :paramtype asset_output_settings: ~flow.models.AetherAssetOutputSettings
        :keyword early_available:
        :paramtype early_available: bool
        """
        super(AetherStructuredInterfaceOutput, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.data_type_id = data_type_id
        self.pass_through_data_type_input_name = pass_through_data_type_input_name
        self.description = description
        self.skip_processing = skip_processing
        self.is_artifact = is_artifact
        self.data_store_name = data_store_name
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.training_output = training_output
        self.dataset_output = dataset_output
        self.asset_output_settings = asset_output_settings
        self.early_available = early_available


class AetherStructuredInterfaceParameter(msrest.serialization.Model):
    """AetherStructuredInterfaceParameter.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar parameter_type: Possible values include: "Int", "Double", "Bool", "String", "Undefined".
    :vartype parameter_type: str or ~flow.models.AetherParameterType
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar default_value:
    :vartype default_value: str
    :ivar lower_bound:
    :vartype lower_bound: str
    :ivar upper_bound:
    :vartype upper_bound: str
    :ivar enum_values:
    :vartype enum_values: list[str]
    :ivar enum_values_to_argument_strings: This is a dictionary.
    :vartype enum_values_to_argument_strings: dict[str, str]
    :ivar description:
    :vartype description: str
    :ivar set_environment_variable:
    :vartype set_environment_variable: bool
    :ivar environment_variable_override:
    :vartype environment_variable_override: str
    :ivar enabled_by_parameter_name:
    :vartype enabled_by_parameter_name: str
    :ivar enabled_by_parameter_values:
    :vartype enabled_by_parameter_values: list[str]
    :ivar ui_hint:
    :vartype ui_hint: ~flow.models.AetherUIParameterHint
    :ivar group_names:
    :vartype group_names: list[str]
    :ivar argument_name:
    :vartype argument_name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'parameter_type': {'key': 'parameterType', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'lower_bound': {'key': 'lowerBound', 'type': 'str'},
        'upper_bound': {'key': 'upperBound', 'type': 'str'},
        'enum_values': {'key': 'enumValues', 'type': '[str]'},
        'enum_values_to_argument_strings': {'key': 'enumValuesToArgumentStrings', 'type': '{str}'},
        'description': {'key': 'description', 'type': 'str'},
        'set_environment_variable': {'key': 'setEnvironmentVariable', 'type': 'bool'},
        'environment_variable_override': {'key': 'environmentVariableOverride', 'type': 'str'},
        'enabled_by_parameter_name': {'key': 'enabledByParameterName', 'type': 'str'},
        'enabled_by_parameter_values': {'key': 'enabledByParameterValues', 'type': '[str]'},
        'ui_hint': {'key': 'uiHint', 'type': 'AetherUIParameterHint'},
        'group_names': {'key': 'groupNames', 'type': '[str]'},
        'argument_name': {'key': 'argumentName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        parameter_type: Optional[Union[str, "AetherParameterType"]] = None,
        is_optional: Optional[bool] = None,
        default_value: Optional[str] = None,
        lower_bound: Optional[str] = None,
        upper_bound: Optional[str] = None,
        enum_values: Optional[List[str]] = None,
        enum_values_to_argument_strings: Optional[Dict[str, str]] = None,
        description: Optional[str] = None,
        set_environment_variable: Optional[bool] = None,
        environment_variable_override: Optional[str] = None,
        enabled_by_parameter_name: Optional[str] = None,
        enabled_by_parameter_values: Optional[List[str]] = None,
        ui_hint: Optional["AetherUIParameterHint"] = None,
        group_names: Optional[List[str]] = None,
        argument_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword parameter_type: Possible values include: "Int", "Double", "Bool", "String",
         "Undefined".
        :paramtype parameter_type: str or ~flow.models.AetherParameterType
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword default_value:
        :paramtype default_value: str
        :keyword lower_bound:
        :paramtype lower_bound: str
        :keyword upper_bound:
        :paramtype upper_bound: str
        :keyword enum_values:
        :paramtype enum_values: list[str]
        :keyword enum_values_to_argument_strings: This is a dictionary.
        :paramtype enum_values_to_argument_strings: dict[str, str]
        :keyword description:
        :paramtype description: str
        :keyword set_environment_variable:
        :paramtype set_environment_variable: bool
        :keyword environment_variable_override:
        :paramtype environment_variable_override: str
        :keyword enabled_by_parameter_name:
        :paramtype enabled_by_parameter_name: str
        :keyword enabled_by_parameter_values:
        :paramtype enabled_by_parameter_values: list[str]
        :keyword ui_hint:
        :paramtype ui_hint: ~flow.models.AetherUIParameterHint
        :keyword group_names:
        :paramtype group_names: list[str]
        :keyword argument_name:
        :paramtype argument_name: str
        """
        super(AetherStructuredInterfaceParameter, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.parameter_type = parameter_type
        self.is_optional = is_optional
        self.default_value = default_value
        self.lower_bound = lower_bound
        self.upper_bound = upper_bound
        self.enum_values = enum_values
        self.enum_values_to_argument_strings = enum_values_to_argument_strings
        self.description = description
        self.set_environment_variable = set_environment_variable
        self.environment_variable_override = environment_variable_override
        self.enabled_by_parameter_name = enabled_by_parameter_name
        self.enabled_by_parameter_values = enabled_by_parameter_values
        self.ui_hint = ui_hint
        self.group_names = group_names
        self.argument_name = argument_name


class AetherSubGraphConfiguration(msrest.serialization.Model):
    """AetherSubGraphConfiguration.

    :ivar graph_id:
    :vartype graph_id: str
    :ivar graph_draft_id:
    :vartype graph_draft_id: str
    :ivar default_compute_internal:
    :vartype default_compute_internal: ~flow.models.AetherComputeSetting
    :ivar default_datastore_internal:
    :vartype default_datastore_internal: ~flow.models.AetherDatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.AetherCloudPrioritySetting
    :ivar user_alias:
    :vartype user_alias: str
    :ivar is_dynamic:
    :vartype is_dynamic: bool
    """

    _attribute_map = {
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'graph_draft_id': {'key': 'graphDraftId', 'type': 'str'},
        'default_compute_internal': {'key': 'defaultComputeInternal', 'type': 'AetherComputeSetting'},
        'default_datastore_internal': {'key': 'defaultDatastoreInternal', 'type': 'AetherDatastoreSetting'},
        'default_cloud_priority': {'key': 'DefaultCloudPriority', 'type': 'AetherCloudPrioritySetting'},
        'user_alias': {'key': 'UserAlias', 'type': 'str'},
        'is_dynamic': {'key': 'IsDynamic', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        graph_id: Optional[str] = None,
        graph_draft_id: Optional[str] = None,
        default_compute_internal: Optional["AetherComputeSetting"] = None,
        default_datastore_internal: Optional["AetherDatastoreSetting"] = None,
        default_cloud_priority: Optional["AetherCloudPrioritySetting"] = None,
        user_alias: Optional[str] = None,
        is_dynamic: Optional[bool] = False,
        **kwargs
    ):
        """
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword graph_draft_id:
        :paramtype graph_draft_id: str
        :keyword default_compute_internal:
        :paramtype default_compute_internal: ~flow.models.AetherComputeSetting
        :keyword default_datastore_internal:
        :paramtype default_datastore_internal: ~flow.models.AetherDatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.AetherCloudPrioritySetting
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword is_dynamic:
        :paramtype is_dynamic: bool
        """
        super(AetherSubGraphConfiguration, self).__init__(**kwargs)
        self.graph_id = graph_id
        self.graph_draft_id = graph_draft_id
        self.default_compute_internal = default_compute_internal
        self.default_datastore_internal = default_datastore_internal
        self.default_cloud_priority = default_cloud_priority
        self.user_alias = user_alias
        self.is_dynamic = is_dynamic


class AetherSweepEarlyTerminationPolicy(msrest.serialization.Model):
    """AetherSweepEarlyTerminationPolicy.

    :ivar policy_type: Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or ~flow.models.AetherEarlyTerminationPolicyType
    :ivar evaluation_interval:
    :vartype evaluation_interval: int
    :ivar delay_evaluation:
    :vartype delay_evaluation: int
    :ivar slack_factor:
    :vartype slack_factor: float
    :ivar slack_amount:
    :vartype slack_amount: float
    :ivar truncation_percentage:
    :vartype truncation_percentage: int
    """

    _attribute_map = {
        'policy_type': {'key': 'policyType', 'type': 'str'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'slack_factor': {'key': 'slackFactor', 'type': 'float'},
        'slack_amount': {'key': 'slackAmount', 'type': 'float'},
        'truncation_percentage': {'key': 'truncationPercentage', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        policy_type: Optional[Union[str, "AetherEarlyTerminationPolicyType"]] = None,
        evaluation_interval: Optional[int] = None,
        delay_evaluation: Optional[int] = None,
        slack_factor: Optional[float] = None,
        slack_amount: Optional[float] = None,
        truncation_percentage: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword policy_type: Possible values include: "Bandit", "MedianStopping",
         "TruncationSelection".
        :paramtype policy_type: str or ~flow.models.AetherEarlyTerminationPolicyType
        :keyword evaluation_interval:
        :paramtype evaluation_interval: int
        :keyword delay_evaluation:
        :paramtype delay_evaluation: int
        :keyword slack_factor:
        :paramtype slack_factor: float
        :keyword slack_amount:
        :paramtype slack_amount: float
        :keyword truncation_percentage:
        :paramtype truncation_percentage: int
        """
        super(AetherSweepEarlyTerminationPolicy, self).__init__(**kwargs)
        self.policy_type = policy_type
        self.evaluation_interval = evaluation_interval
        self.delay_evaluation = delay_evaluation
        self.slack_factor = slack_factor
        self.slack_amount = slack_amount
        self.truncation_percentage = truncation_percentage


class AetherSweepSettings(msrest.serialization.Model):
    """AetherSweepSettings.

    :ivar limits:
    :vartype limits: ~flow.models.AetherSweepSettingsLimits
    :ivar search_space:
    :vartype search_space: list[dict[str, str]]
    :ivar sampling_algorithm: Possible values include: "Random", "Grid", "Bayesian".
    :vartype sampling_algorithm: str or ~flow.models.AetherSamplingAlgorithmType
    :ivar early_termination:
    :vartype early_termination: ~flow.models.AetherSweepEarlyTerminationPolicy
    """

    _attribute_map = {
        'limits': {'key': 'limits', 'type': 'AetherSweepSettingsLimits'},
        'search_space': {'key': 'searchSpace', 'type': '[{str}]'},
        'sampling_algorithm': {'key': 'samplingAlgorithm', 'type': 'str'},
        'early_termination': {'key': 'earlyTermination', 'type': 'AetherSweepEarlyTerminationPolicy'},
    }

    def __init__(
        self,
        *,
        limits: Optional["AetherSweepSettingsLimits"] = None,
        search_space: Optional[List[Dict[str, str]]] = None,
        sampling_algorithm: Optional[Union[str, "AetherSamplingAlgorithmType"]] = None,
        early_termination: Optional["AetherSweepEarlyTerminationPolicy"] = None,
        **kwargs
    ):
        """
        :keyword limits:
        :paramtype limits: ~flow.models.AetherSweepSettingsLimits
        :keyword search_space:
        :paramtype search_space: list[dict[str, str]]
        :keyword sampling_algorithm: Possible values include: "Random", "Grid", "Bayesian".
        :paramtype sampling_algorithm: str or ~flow.models.AetherSamplingAlgorithmType
        :keyword early_termination:
        :paramtype early_termination: ~flow.models.AetherSweepEarlyTerminationPolicy
        """
        super(AetherSweepSettings, self).__init__(**kwargs)
        self.limits = limits
        self.search_space = search_space
        self.sampling_algorithm = sampling_algorithm
        self.early_termination = early_termination


class AetherSweepSettingsLimits(msrest.serialization.Model):
    """AetherSweepSettingsLimits.

    :ivar max_total_trials:
    :vartype max_total_trials: int
    :ivar max_concurrent_trials:
    :vartype max_concurrent_trials: int
    """

    _attribute_map = {
        'max_total_trials': {'key': 'maxTotalTrials', 'type': 'int'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        max_total_trials: Optional[int] = None,
        max_concurrent_trials: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword max_total_trials:
        :paramtype max_total_trials: int
        :keyword max_concurrent_trials:
        :paramtype max_concurrent_trials: int
        """
        super(AetherSweepSettingsLimits, self).__init__(**kwargs)
        self.max_total_trials = max_total_trials
        self.max_concurrent_trials = max_concurrent_trials


class AetherTargetLags(msrest.serialization.Model):
    """AetherTargetLags.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.AetherTargetLagsMode
    :ivar values:
    :vartype values: list[int]
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'values': {'key': 'values', 'type': '[int]'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherTargetLagsMode"]] = None,
        values: Optional[List[int]] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.AetherTargetLagsMode
        :keyword values:
        :paramtype values: list[int]
        """
        super(AetherTargetLags, self).__init__(**kwargs)
        self.mode = mode
        self.values = values


class AetherTargetRollingWindowSize(msrest.serialization.Model):
    """AetherTargetRollingWindowSize.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.AetherTargetRollingWindowSizeMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "AetherTargetRollingWindowSizeMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.AetherTargetRollingWindowSizeMode
        :keyword value:
        :paramtype value: int
        """
        super(AetherTargetRollingWindowSize, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class AetherTargetSelectorConfiguration(msrest.serialization.Model):
    """AetherTargetSelectorConfiguration.

    :ivar low_priority_vm_tolerant:
    :vartype low_priority_vm_tolerant: bool
    :ivar cluster_block_list:
    :vartype cluster_block_list: list[str]
    :ivar compute_type:
    :vartype compute_type: str
    :ivar instance_type:
    :vartype instance_type: list[str]
    :ivar instance_types:
    :vartype instance_types: list[str]
    :ivar my_resource_only:
    :vartype my_resource_only: bool
    :ivar plan_id:
    :vartype plan_id: str
    :ivar plan_region_id:
    :vartype plan_region_id: str
    :ivar region:
    :vartype region: list[str]
    :ivar regions:
    :vartype regions: list[str]
    :ivar vc_block_list:
    :vartype vc_block_list: list[str]
    """

    _attribute_map = {
        'low_priority_vm_tolerant': {'key': 'lowPriorityVMTolerant', 'type': 'bool'},
        'cluster_block_list': {'key': 'clusterBlockList', 'type': '[str]'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': '[str]'},
        'instance_types': {'key': 'instanceTypes', 'type': '[str]'},
        'my_resource_only': {'key': 'myResourceOnly', 'type': 'bool'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'plan_region_id': {'key': 'planRegionId', 'type': 'str'},
        'region': {'key': 'region', 'type': '[str]'},
        'regions': {'key': 'regions', 'type': '[str]'},
        'vc_block_list': {'key': 'vcBlockList', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        low_priority_vm_tolerant: Optional[bool] = None,
        cluster_block_list: Optional[List[str]] = None,
        compute_type: Optional[str] = None,
        instance_type: Optional[List[str]] = None,
        instance_types: Optional[List[str]] = None,
        my_resource_only: Optional[bool] = None,
        plan_id: Optional[str] = None,
        plan_region_id: Optional[str] = None,
        region: Optional[List[str]] = None,
        regions: Optional[List[str]] = None,
        vc_block_list: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword low_priority_vm_tolerant:
        :paramtype low_priority_vm_tolerant: bool
        :keyword cluster_block_list:
        :paramtype cluster_block_list: list[str]
        :keyword compute_type:
        :paramtype compute_type: str
        :keyword instance_type:
        :paramtype instance_type: list[str]
        :keyword instance_types:
        :paramtype instance_types: list[str]
        :keyword my_resource_only:
        :paramtype my_resource_only: bool
        :keyword plan_id:
        :paramtype plan_id: str
        :keyword plan_region_id:
        :paramtype plan_region_id: str
        :keyword region:
        :paramtype region: list[str]
        :keyword regions:
        :paramtype regions: list[str]
        :keyword vc_block_list:
        :paramtype vc_block_list: list[str]
        """
        super(AetherTargetSelectorConfiguration, self).__init__(**kwargs)
        self.low_priority_vm_tolerant = low_priority_vm_tolerant
        self.cluster_block_list = cluster_block_list
        self.compute_type = compute_type
        self.instance_type = instance_type
        self.instance_types = instance_types
        self.my_resource_only = my_resource_only
        self.plan_id = plan_id
        self.plan_region_id = plan_region_id
        self.region = region
        self.regions = regions
        self.vc_block_list = vc_block_list


class AetherTestDataSettings(msrest.serialization.Model):
    """AetherTestDataSettings.

    :ivar test_data_size:
    :vartype test_data_size: float
    """

    _attribute_map = {
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        test_data_size: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword test_data_size:
        :paramtype test_data_size: float
        """
        super(AetherTestDataSettings, self).__init__(**kwargs)
        self.test_data_size = test_data_size


class AetherTorchDistributedConfiguration(msrest.serialization.Model):
    """AetherTorchDistributedConfiguration.

    :ivar process_count_per_node:
    :vartype process_count_per_node: int
    """

    _attribute_map = {
        'process_count_per_node': {'key': 'processCountPerNode', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        process_count_per_node: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword process_count_per_node:
        :paramtype process_count_per_node: int
        """
        super(AetherTorchDistributedConfiguration, self).__init__(**kwargs)
        self.process_count_per_node = process_count_per_node


class AetherTrainingOutput(msrest.serialization.Model):
    """AetherTrainingOutput.

    :ivar training_output_type: Possible values include: "Metrics", "Model".
    :vartype training_output_type: str or ~flow.models.AetherTrainingOutputType
    :ivar iteration:
    :vartype iteration: int
    :ivar metric:
    :vartype metric: str
    :ivar model_file:
    :vartype model_file: str
    """

    _attribute_map = {
        'training_output_type': {'key': 'trainingOutputType', 'type': 'str'},
        'iteration': {'key': 'iteration', 'type': 'int'},
        'metric': {'key': 'metric', 'type': 'str'},
        'model_file': {'key': 'modelFile', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        training_output_type: Optional[Union[str, "AetherTrainingOutputType"]] = None,
        iteration: Optional[int] = None,
        metric: Optional[str] = None,
        model_file: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword training_output_type: Possible values include: "Metrics", "Model".
        :paramtype training_output_type: str or ~flow.models.AetherTrainingOutputType
        :keyword iteration:
        :paramtype iteration: int
        :keyword metric:
        :paramtype metric: str
        :keyword model_file:
        :paramtype model_file: str
        """
        super(AetherTrainingOutput, self).__init__(**kwargs)
        self.training_output_type = training_output_type
        self.iteration = iteration
        self.metric = metric
        self.model_file = model_file


class AetherTrainingSettings(msrest.serialization.Model):
    """AetherTrainingSettings.

    :ivar block_list_models:
    :vartype block_list_models: list[str]
    :ivar allow_list_models:
    :vartype allow_list_models: list[str]
    :ivar enable_dnn_training:
    :vartype enable_dnn_training: bool
    :ivar enable_onnx_compatible_models:
    :vartype enable_onnx_compatible_models: bool
    :ivar stack_ensemble_settings:
    :vartype stack_ensemble_settings: ~flow.models.AetherStackEnsembleSettings
    :ivar enable_stack_ensemble:
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble:
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout:
    :vartype ensemble_model_download_timeout: str
    :ivar enable_model_explainability:
    :vartype enable_model_explainability: bool
    :ivar training_mode: Possible values include: "Distributed", "NonDistributed", "Auto".
    :vartype training_mode: str or ~flow.models.AetherTabularTrainingMode
    """

    _attribute_map = {
        'block_list_models': {'key': 'blockListModels', 'type': '[str]'},
        'allow_list_models': {'key': 'allowListModels', 'type': '[str]'},
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'AetherStackEnsembleSettings'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'str'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'training_mode': {'key': 'trainingMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        block_list_models: Optional[List[str]] = None,
        allow_list_models: Optional[List[str]] = None,
        enable_dnn_training: Optional[bool] = None,
        enable_onnx_compatible_models: Optional[bool] = None,
        stack_ensemble_settings: Optional["AetherStackEnsembleSettings"] = None,
        enable_stack_ensemble: Optional[bool] = None,
        enable_vote_ensemble: Optional[bool] = None,
        ensemble_model_download_timeout: Optional[str] = None,
        enable_model_explainability: Optional[bool] = None,
        training_mode: Optional[Union[str, "AetherTabularTrainingMode"]] = None,
        **kwargs
    ):
        """
        :keyword block_list_models:
        :paramtype block_list_models: list[str]
        :keyword allow_list_models:
        :paramtype allow_list_models: list[str]
        :keyword enable_dnn_training:
        :paramtype enable_dnn_training: bool
        :keyword enable_onnx_compatible_models:
        :paramtype enable_onnx_compatible_models: bool
        :keyword stack_ensemble_settings:
        :paramtype stack_ensemble_settings: ~flow.models.AetherStackEnsembleSettings
        :keyword enable_stack_ensemble:
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble:
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout:
        :paramtype ensemble_model_download_timeout: str
        :keyword enable_model_explainability:
        :paramtype enable_model_explainability: bool
        :keyword training_mode: Possible values include: "Distributed", "NonDistributed", "Auto".
        :paramtype training_mode: str or ~flow.models.AetherTabularTrainingMode
        """
        super(AetherTrainingSettings, self).__init__(**kwargs)
        self.block_list_models = block_list_models
        self.allow_list_models = allow_list_models
        self.enable_dnn_training = enable_dnn_training
        self.enable_onnx_compatible_models = enable_onnx_compatible_models
        self.stack_ensemble_settings = stack_ensemble_settings
        self.enable_stack_ensemble = enable_stack_ensemble
        self.enable_vote_ensemble = enable_vote_ensemble
        self.ensemble_model_download_timeout = ensemble_model_download_timeout
        self.enable_model_explainability = enable_model_explainability
        self.training_mode = training_mode


class AetherUIAzureOpenAIDeploymentNameSelector(msrest.serialization.Model):
    """AetherUIAzureOpenAIDeploymentNameSelector.

    :ivar capabilities:
    :vartype capabilities: ~flow.models.AetherUIAzureOpenAIModelCapabilities
    """

    _attribute_map = {
        'capabilities': {'key': 'Capabilities', 'type': 'AetherUIAzureOpenAIModelCapabilities'},
    }

    def __init__(
        self,
        *,
        capabilities: Optional["AetherUIAzureOpenAIModelCapabilities"] = None,
        **kwargs
    ):
        """
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AetherUIAzureOpenAIModelCapabilities
        """
        super(AetherUIAzureOpenAIDeploymentNameSelector, self).__init__(**kwargs)
        self.capabilities = capabilities


class AetherUIAzureOpenAIModelCapabilities(msrest.serialization.Model):
    """AetherUIAzureOpenAIModelCapabilities.

    :ivar completion:
    :vartype completion: bool
    :ivar chat_completion:
    :vartype chat_completion: bool
    :ivar embeddings:
    :vartype embeddings: bool
    """

    _attribute_map = {
        'completion': {'key': 'Completion', 'type': 'bool'},
        'chat_completion': {'key': 'ChatCompletion', 'type': 'bool'},
        'embeddings': {'key': 'Embeddings', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        completion: Optional[bool] = None,
        chat_completion: Optional[bool] = None,
        embeddings: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword completion:
        :paramtype completion: bool
        :keyword chat_completion:
        :paramtype chat_completion: bool
        :keyword embeddings:
        :paramtype embeddings: bool
        """
        super(AetherUIAzureOpenAIModelCapabilities, self).__init__(**kwargs)
        self.completion = completion
        self.chat_completion = chat_completion
        self.embeddings = embeddings


class AetherUIColumnPicker(msrest.serialization.Model):
    """AetherUIColumnPicker.

    :ivar column_picker_for:
    :vartype column_picker_for: str
    :ivar column_selection_categories:
    :vartype column_selection_categories: list[str]
    :ivar single_column_selection:
    :vartype single_column_selection: bool
    """

    _attribute_map = {
        'column_picker_for': {'key': 'columnPickerFor', 'type': 'str'},
        'column_selection_categories': {'key': 'columnSelectionCategories', 'type': '[str]'},
        'single_column_selection': {'key': 'singleColumnSelection', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        column_picker_for: Optional[str] = None,
        column_selection_categories: Optional[List[str]] = None,
        single_column_selection: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword column_picker_for:
        :paramtype column_picker_for: str
        :keyword column_selection_categories:
        :paramtype column_selection_categories: list[str]
        :keyword single_column_selection:
        :paramtype single_column_selection: bool
        """
        super(AetherUIColumnPicker, self).__init__(**kwargs)
        self.column_picker_for = column_picker_for
        self.column_selection_categories = column_selection_categories
        self.single_column_selection = single_column_selection


class AetherUIJsonEditor(msrest.serialization.Model):
    """AetherUIJsonEditor.

    :ivar json_schema:
    :vartype json_schema: str
    """

    _attribute_map = {
        'json_schema': {'key': 'jsonSchema', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        json_schema: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword json_schema:
        :paramtype json_schema: str
        """
        super(AetherUIJsonEditor, self).__init__(**kwargs)
        self.json_schema = json_schema


class AetherUIParameterHint(msrest.serialization.Model):
    """AetherUIParameterHint.

    :ivar ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker", "Credential",
     "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter", "SectionToggle",
     "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection", "InstanceTypeSelection",
     "ConnectionSelection", "PromptFlowConnectionSelection", "AzureOpenAIDeploymentNameSelection".
    :vartype ui_widget_type: str or ~flow.models.AetherUIWidgetTypeEnum
    :ivar column_picker:
    :vartype column_picker: ~flow.models.AetherUIColumnPicker
    :ivar ui_script_language: Possible values include: "None", "Python", "R", "Json", "Sql".
    :vartype ui_script_language: str or ~flow.models.AetherUIScriptLanguageEnum
    :ivar json_editor:
    :vartype json_editor: ~flow.models.AetherUIJsonEditor
    :ivar prompt_flow_connection_selector:
    :vartype prompt_flow_connection_selector: ~flow.models.AetherUIPromptFlowConnectionSelector
    :ivar azure_open_ai_deployment_name_selector:
    :vartype azure_open_ai_deployment_name_selector:
     ~flow.models.AetherUIAzureOpenAIDeploymentNameSelector
    :ivar ux_ignore:
    :vartype ux_ignore: bool
    :ivar anonymous:
    :vartype anonymous: bool
    """

    _attribute_map = {
        'ui_widget_type': {'key': 'uiWidgetType', 'type': 'str'},
        'column_picker': {'key': 'columnPicker', 'type': 'AetherUIColumnPicker'},
        'ui_script_language': {'key': 'uiScriptLanguage', 'type': 'str'},
        'json_editor': {'key': 'jsonEditor', 'type': 'AetherUIJsonEditor'},
        'prompt_flow_connection_selector': {'key': 'PromptFlowConnectionSelector', 'type': 'AetherUIPromptFlowConnectionSelector'},
        'azure_open_ai_deployment_name_selector': {'key': 'AzureOpenAIDeploymentNameSelector', 'type': 'AetherUIAzureOpenAIDeploymentNameSelector'},
        'ux_ignore': {'key': 'UxIgnore', 'type': 'bool'},
        'anonymous': {'key': 'Anonymous', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        ui_widget_type: Optional[Union[str, "AetherUIWidgetTypeEnum"]] = None,
        column_picker: Optional["AetherUIColumnPicker"] = None,
        ui_script_language: Optional[Union[str, "AetherUIScriptLanguageEnum"]] = None,
        json_editor: Optional["AetherUIJsonEditor"] = None,
        prompt_flow_connection_selector: Optional["AetherUIPromptFlowConnectionSelector"] = None,
        azure_open_ai_deployment_name_selector: Optional["AetherUIAzureOpenAIDeploymentNameSelector"] = None,
        ux_ignore: Optional[bool] = None,
        anonymous: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker",
         "Credential", "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter",
         "SectionToggle", "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection",
         "InstanceTypeSelection", "ConnectionSelection", "PromptFlowConnectionSelection",
         "AzureOpenAIDeploymentNameSelection".
        :paramtype ui_widget_type: str or ~flow.models.AetherUIWidgetTypeEnum
        :keyword column_picker:
        :paramtype column_picker: ~flow.models.AetherUIColumnPicker
        :keyword ui_script_language: Possible values include: "None", "Python", "R", "Json", "Sql".
        :paramtype ui_script_language: str or ~flow.models.AetherUIScriptLanguageEnum
        :keyword json_editor:
        :paramtype json_editor: ~flow.models.AetherUIJsonEditor
        :keyword prompt_flow_connection_selector:
        :paramtype prompt_flow_connection_selector: ~flow.models.AetherUIPromptFlowConnectionSelector
        :keyword azure_open_ai_deployment_name_selector:
        :paramtype azure_open_ai_deployment_name_selector:
         ~flow.models.AetherUIAzureOpenAIDeploymentNameSelector
        :keyword ux_ignore:
        :paramtype ux_ignore: bool
        :keyword anonymous:
        :paramtype anonymous: bool
        """
        super(AetherUIParameterHint, self).__init__(**kwargs)
        self.ui_widget_type = ui_widget_type
        self.column_picker = column_picker
        self.ui_script_language = ui_script_language
        self.json_editor = json_editor
        self.prompt_flow_connection_selector = prompt_flow_connection_selector
        self.azure_open_ai_deployment_name_selector = azure_open_ai_deployment_name_selector
        self.ux_ignore = ux_ignore
        self.anonymous = anonymous


class AetherUIPromptFlowConnectionSelector(msrest.serialization.Model):
    """AetherUIPromptFlowConnectionSelector.

    :ivar prompt_flow_connection_type:
    :vartype prompt_flow_connection_type: str
    """

    _attribute_map = {
        'prompt_flow_connection_type': {'key': 'PromptFlowConnectionType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        prompt_flow_connection_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword prompt_flow_connection_type:
        :paramtype prompt_flow_connection_type: str
        """
        super(AetherUIPromptFlowConnectionSelector, self).__init__(**kwargs)
        self.prompt_flow_connection_type = prompt_flow_connection_type


class AetherValidationDataSettings(msrest.serialization.Model):
    """AetherValidationDataSettings.

    :ivar n_cross_validations:
    :vartype n_cross_validations: ~flow.models.AetherNCrossValidations
    :ivar validation_data_size:
    :vartype validation_data_size: float
    :ivar cv_split_column_names:
    :vartype cv_split_column_names: list[str]
    :ivar validation_type:
    :vartype validation_type: str
    """

    _attribute_map = {
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'AetherNCrossValidations'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'validation_type': {'key': 'validationType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        n_cross_validations: Optional["AetherNCrossValidations"] = None,
        validation_data_size: Optional[float] = None,
        cv_split_column_names: Optional[List[str]] = None,
        validation_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword n_cross_validations:
        :paramtype n_cross_validations: ~flow.models.AetherNCrossValidations
        :keyword validation_data_size:
        :paramtype validation_data_size: float
        :keyword cv_split_column_names:
        :paramtype cv_split_column_names: list[str]
        :keyword validation_type:
        :paramtype validation_type: str
        """
        super(AetherValidationDataSettings, self).__init__(**kwargs)
        self.n_cross_validations = n_cross_validations
        self.validation_data_size = validation_data_size
        self.cv_split_column_names = cv_split_column_names
        self.validation_type = validation_type


class AetherVsoBuildArtifactInfo(msrest.serialization.Model):
    """AetherVsoBuildArtifactInfo.

    :ivar build_info:
    :vartype build_info: ~flow.models.AetherVsoBuildInfo
    :ivar download_url:
    :vartype download_url: str
    """

    _attribute_map = {
        'build_info': {'key': 'buildInfo', 'type': 'AetherVsoBuildInfo'},
        'download_url': {'key': 'downloadUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        build_info: Optional["AetherVsoBuildInfo"] = None,
        download_url: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword build_info:
        :paramtype build_info: ~flow.models.AetherVsoBuildInfo
        :keyword download_url:
        :paramtype download_url: str
        """
        super(AetherVsoBuildArtifactInfo, self).__init__(**kwargs)
        self.build_info = build_info
        self.download_url = download_url


class AetherVsoBuildDefinitionInfo(msrest.serialization.Model):
    """AetherVsoBuildDefinitionInfo.

    :ivar account_name:
    :vartype account_name: str
    :ivar project_id:
    :vartype project_id: str
    :ivar build_definition_id:
    :vartype build_definition_id: int
    """

    _attribute_map = {
        'account_name': {'key': 'accountName', 'type': 'str'},
        'project_id': {'key': 'projectId', 'type': 'str'},
        'build_definition_id': {'key': 'buildDefinitionId', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        account_name: Optional[str] = None,
        project_id: Optional[str] = None,
        build_definition_id: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword account_name:
        :paramtype account_name: str
        :keyword project_id:
        :paramtype project_id: str
        :keyword build_definition_id:
        :paramtype build_definition_id: int
        """
        super(AetherVsoBuildDefinitionInfo, self).__init__(**kwargs)
        self.account_name = account_name
        self.project_id = project_id
        self.build_definition_id = build_definition_id


class AetherVsoBuildInfo(msrest.serialization.Model):
    """AetherVsoBuildInfo.

    :ivar definition_info:
    :vartype definition_info: ~flow.models.AetherVsoBuildDefinitionInfo
    :ivar build_id:
    :vartype build_id: int
    """

    _attribute_map = {
        'definition_info': {'key': 'definitionInfo', 'type': 'AetherVsoBuildDefinitionInfo'},
        'build_id': {'key': 'buildId', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        definition_info: Optional["AetherVsoBuildDefinitionInfo"] = None,
        build_id: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword definition_info:
        :paramtype definition_info: ~flow.models.AetherVsoBuildDefinitionInfo
        :keyword build_id:
        :paramtype build_id: int
        """
        super(AetherVsoBuildInfo, self).__init__(**kwargs)
        self.definition_info = definition_info
        self.build_id = build_id


class AEVAComputeConfiguration(msrest.serialization.Model):
    """AEVAComputeConfiguration.

    :ivar target:
    :vartype target: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar is_local:
    :vartype is_local: bool
    :ivar location:
    :vartype location: str
    :ivar is_clusterless:
    :vartype is_clusterless: bool
    :ivar instance_type:
    :vartype instance_type: str
    :ivar properties: Dictionary of :code:`<any>`.
    :vartype properties: dict[str, any]
    :ivar is_preemptable:
    :vartype is_preemptable: bool
    """

    _attribute_map = {
        'target': {'key': 'target', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'is_local': {'key': 'isLocal', 'type': 'bool'},
        'location': {'key': 'location', 'type': 'str'},
        'is_clusterless': {'key': 'isClusterless', 'type': 'bool'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'is_preemptable': {'key': 'isPreemptable', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        target: Optional[str] = None,
        instance_count: Optional[int] = None,
        is_local: Optional[bool] = None,
        location: Optional[str] = None,
        is_clusterless: Optional[bool] = None,
        instance_type: Optional[str] = None,
        properties: Optional[Dict[str, Any]] = None,
        is_preemptable: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword target:
        :paramtype target: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword is_local:
        :paramtype is_local: bool
        :keyword location:
        :paramtype location: str
        :keyword is_clusterless:
        :paramtype is_clusterless: bool
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword properties: Dictionary of :code:`<any>`.
        :paramtype properties: dict[str, any]
        :keyword is_preemptable:
        :paramtype is_preemptable: bool
        """
        super(AEVAComputeConfiguration, self).__init__(**kwargs)
        self.target = target
        self.instance_count = instance_count
        self.is_local = is_local
        self.location = location
        self.is_clusterless = is_clusterless
        self.instance_type = instance_type
        self.properties = properties
        self.is_preemptable = is_preemptable


class AEVAResourceConfiguration(msrest.serialization.Model):
    """AEVAResourceConfiguration.

    :ivar instance_count:
    :vartype instance_count: int
    :ivar instance_type:
    :vartype instance_type: str
    :ivar properties: Dictionary of :code:`<any>`.
    :vartype properties: dict[str, any]
    :ivar locations:
    :vartype locations: list[str]
    :ivar instance_priority:
    :vartype instance_priority: str
    :ivar quota_enforcement_resource_id:
    :vartype quota_enforcement_resource_id: str
    """

    _attribute_map = {
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'locations': {'key': 'locations', 'type': '[str]'},
        'instance_priority': {'key': 'instancePriority', 'type': 'str'},
        'quota_enforcement_resource_id': {'key': 'quotaEnforcementResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_count: Optional[int] = None,
        instance_type: Optional[str] = None,
        properties: Optional[Dict[str, Any]] = None,
        locations: Optional[List[str]] = None,
        instance_priority: Optional[str] = None,
        quota_enforcement_resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword properties: Dictionary of :code:`<any>`.
        :paramtype properties: dict[str, any]
        :keyword locations:
        :paramtype locations: list[str]
        :keyword instance_priority:
        :paramtype instance_priority: str
        :keyword quota_enforcement_resource_id:
        :paramtype quota_enforcement_resource_id: str
        """
        super(AEVAResourceConfiguration, self).__init__(**kwargs)
        self.instance_count = instance_count
        self.instance_type = instance_type
        self.properties = properties
        self.locations = locations
        self.instance_priority = instance_priority
        self.quota_enforcement_resource_id = quota_enforcement_resource_id


class AISuperComputerConfiguration(msrest.serialization.Model):
    """AISuperComputerConfiguration.

    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_types:
    :vartype instance_types: list[str]
    :ivar image_version:
    :vartype image_version: str
    :ivar location:
    :vartype location: str
    :ivar locations:
    :vartype locations: list[str]
    :ivar ai_super_computer_storage_data: Dictionary of
     :code:`<AISuperComputerStorageReferenceConfiguration>`.
    :vartype ai_super_computer_storage_data: dict[str,
     ~flow.models.AISuperComputerStorageReferenceConfiguration]
    :ivar interactive:
    :vartype interactive: bool
    :ivar scale_policy:
    :vartype scale_policy: ~flow.models.AISuperComputerScalePolicy
    :ivar virtual_cluster_arm_id:
    :vartype virtual_cluster_arm_id: str
    :ivar tensorboard_log_directory:
    :vartype tensorboard_log_directory: str
    :ivar ssh_public_key:
    :vartype ssh_public_key: str
    :ivar ssh_public_keys:
    :vartype ssh_public_keys: list[str]
    :ivar enable_azml_int:
    :vartype enable_azml_int: bool
    :ivar priority:
    :vartype priority: str
    :ivar sla_tier:
    :vartype sla_tier: str
    :ivar suspend_on_idle_time_hours:
    :vartype suspend_on_idle_time_hours: long
    :ivar user_alias:
    :vartype user_alias: str
    :ivar quota_enforcement_resource_id:
    :vartype quota_enforcement_resource_id: str
    :ivar model_compute_specification_id:
    :vartype model_compute_specification_id: str
    :ivar group_policy_name:
    :vartype group_policy_name: str
    """

    _attribute_map = {
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_types': {'key': 'instanceTypes', 'type': '[str]'},
        'image_version': {'key': 'imageVersion', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'locations': {'key': 'locations', 'type': '[str]'},
        'ai_super_computer_storage_data': {'key': 'aiSuperComputerStorageData', 'type': '{AISuperComputerStorageReferenceConfiguration}'},
        'interactive': {'key': 'interactive', 'type': 'bool'},
        'scale_policy': {'key': 'scalePolicy', 'type': 'AISuperComputerScalePolicy'},
        'virtual_cluster_arm_id': {'key': 'virtualClusterArmId', 'type': 'str'},
        'tensorboard_log_directory': {'key': 'tensorboardLogDirectory', 'type': 'str'},
        'ssh_public_key': {'key': 'sshPublicKey', 'type': 'str'},
        'ssh_public_keys': {'key': 'sshPublicKeys', 'type': '[str]'},
        'enable_azml_int': {'key': 'enableAzmlInt', 'type': 'bool'},
        'priority': {'key': 'priority', 'type': 'str'},
        'sla_tier': {'key': 'slaTier', 'type': 'str'},
        'suspend_on_idle_time_hours': {'key': 'suspendOnIdleTimeHours', 'type': 'long'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'quota_enforcement_resource_id': {'key': 'quotaEnforcementResourceId', 'type': 'str'},
        'model_compute_specification_id': {'key': 'modelComputeSpecificationId', 'type': 'str'},
        'group_policy_name': {'key': 'groupPolicyName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_type: Optional[str] = None,
        instance_types: Optional[List[str]] = None,
        image_version: Optional[str] = None,
        location: Optional[str] = None,
        locations: Optional[List[str]] = None,
        ai_super_computer_storage_data: Optional[Dict[str, "AISuperComputerStorageReferenceConfiguration"]] = None,
        interactive: Optional[bool] = None,
        scale_policy: Optional["AISuperComputerScalePolicy"] = None,
        virtual_cluster_arm_id: Optional[str] = None,
        tensorboard_log_directory: Optional[str] = None,
        ssh_public_key: Optional[str] = None,
        ssh_public_keys: Optional[List[str]] = None,
        enable_azml_int: Optional[bool] = None,
        priority: Optional[str] = None,
        sla_tier: Optional[str] = None,
        suspend_on_idle_time_hours: Optional[int] = None,
        user_alias: Optional[str] = None,
        quota_enforcement_resource_id: Optional[str] = None,
        model_compute_specification_id: Optional[str] = None,
        group_policy_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_types:
        :paramtype instance_types: list[str]
        :keyword image_version:
        :paramtype image_version: str
        :keyword location:
        :paramtype location: str
        :keyword locations:
        :paramtype locations: list[str]
        :keyword ai_super_computer_storage_data: Dictionary of
         :code:`<AISuperComputerStorageReferenceConfiguration>`.
        :paramtype ai_super_computer_storage_data: dict[str,
         ~flow.models.AISuperComputerStorageReferenceConfiguration]
        :keyword interactive:
        :paramtype interactive: bool
        :keyword scale_policy:
        :paramtype scale_policy: ~flow.models.AISuperComputerScalePolicy
        :keyword virtual_cluster_arm_id:
        :paramtype virtual_cluster_arm_id: str
        :keyword tensorboard_log_directory:
        :paramtype tensorboard_log_directory: str
        :keyword ssh_public_key:
        :paramtype ssh_public_key: str
        :keyword ssh_public_keys:
        :paramtype ssh_public_keys: list[str]
        :keyword enable_azml_int:
        :paramtype enable_azml_int: bool
        :keyword priority:
        :paramtype priority: str
        :keyword sla_tier:
        :paramtype sla_tier: str
        :keyword suspend_on_idle_time_hours:
        :paramtype suspend_on_idle_time_hours: long
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword quota_enforcement_resource_id:
        :paramtype quota_enforcement_resource_id: str
        :keyword model_compute_specification_id:
        :paramtype model_compute_specification_id: str
        :keyword group_policy_name:
        :paramtype group_policy_name: str
        """
        super(AISuperComputerConfiguration, self).__init__(**kwargs)
        self.instance_type = instance_type
        self.instance_types = instance_types
        self.image_version = image_version
        self.location = location
        self.locations = locations
        self.ai_super_computer_storage_data = ai_super_computer_storage_data
        self.interactive = interactive
        self.scale_policy = scale_policy
        self.virtual_cluster_arm_id = virtual_cluster_arm_id
        self.tensorboard_log_directory = tensorboard_log_directory
        self.ssh_public_key = ssh_public_key
        self.ssh_public_keys = ssh_public_keys
        self.enable_azml_int = enable_azml_int
        self.priority = priority
        self.sla_tier = sla_tier
        self.suspend_on_idle_time_hours = suspend_on_idle_time_hours
        self.user_alias = user_alias
        self.quota_enforcement_resource_id = quota_enforcement_resource_id
        self.model_compute_specification_id = model_compute_specification_id
        self.group_policy_name = group_policy_name


class AISuperComputerScalePolicy(msrest.serialization.Model):
    """AISuperComputerScalePolicy.

    :ivar auto_scale_instance_type_count_set:
    :vartype auto_scale_instance_type_count_set: list[int]
    :ivar auto_scale_interval_in_sec:
    :vartype auto_scale_interval_in_sec: int
    :ivar max_instance_type_count:
    :vartype max_instance_type_count: int
    :ivar min_instance_type_count:
    :vartype min_instance_type_count: int
    """

    _attribute_map = {
        'auto_scale_instance_type_count_set': {'key': 'autoScaleInstanceTypeCountSet', 'type': '[int]'},
        'auto_scale_interval_in_sec': {'key': 'autoScaleIntervalInSec', 'type': 'int'},
        'max_instance_type_count': {'key': 'maxInstanceTypeCount', 'type': 'int'},
        'min_instance_type_count': {'key': 'minInstanceTypeCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        auto_scale_instance_type_count_set: Optional[List[int]] = None,
        auto_scale_interval_in_sec: Optional[int] = None,
        max_instance_type_count: Optional[int] = None,
        min_instance_type_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword auto_scale_instance_type_count_set:
        :paramtype auto_scale_instance_type_count_set: list[int]
        :keyword auto_scale_interval_in_sec:
        :paramtype auto_scale_interval_in_sec: int
        :keyword max_instance_type_count:
        :paramtype max_instance_type_count: int
        :keyword min_instance_type_count:
        :paramtype min_instance_type_count: int
        """
        super(AISuperComputerScalePolicy, self).__init__(**kwargs)
        self.auto_scale_instance_type_count_set = auto_scale_instance_type_count_set
        self.auto_scale_interval_in_sec = auto_scale_interval_in_sec
        self.max_instance_type_count = max_instance_type_count
        self.min_instance_type_count = min_instance_type_count


class AISuperComputerStorageReferenceConfiguration(msrest.serialization.Model):
    """AISuperComputerStorageReferenceConfiguration.

    :ivar container_name:
    :vartype container_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'container_name': {'key': 'containerName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        container_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword container_name:
        :paramtype container_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(AISuperComputerStorageReferenceConfiguration, self).__init__(**kwargs)
        self.container_name = container_name
        self.relative_path = relative_path


class AKSAdvanceSettings(msrest.serialization.Model):
    """AKSAdvanceSettings.

    :ivar auto_scaler:
    :vartype auto_scaler: ~flow.models.AutoScaler
    :ivar container_resource_requirements:
    :vartype container_resource_requirements: ~flow.models.ContainerResourceRequirements
    :ivar app_insights_enabled:
    :vartype app_insights_enabled: bool
    :ivar scoring_timeout_ms:
    :vartype scoring_timeout_ms: int
    :ivar num_replicas:
    :vartype num_replicas: int
    """

    _attribute_map = {
        'auto_scaler': {'key': 'autoScaler', 'type': 'AutoScaler'},
        'container_resource_requirements': {'key': 'containerResourceRequirements', 'type': 'ContainerResourceRequirements'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'scoring_timeout_ms': {'key': 'scoringTimeoutMs', 'type': 'int'},
        'num_replicas': {'key': 'numReplicas', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        auto_scaler: Optional["AutoScaler"] = None,
        container_resource_requirements: Optional["ContainerResourceRequirements"] = None,
        app_insights_enabled: Optional[bool] = None,
        scoring_timeout_ms: Optional[int] = None,
        num_replicas: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword auto_scaler:
        :paramtype auto_scaler: ~flow.models.AutoScaler
        :keyword container_resource_requirements:
        :paramtype container_resource_requirements: ~flow.models.ContainerResourceRequirements
        :keyword app_insights_enabled:
        :paramtype app_insights_enabled: bool
        :keyword scoring_timeout_ms:
        :paramtype scoring_timeout_ms: int
        :keyword num_replicas:
        :paramtype num_replicas: int
        """
        super(AKSAdvanceSettings, self).__init__(**kwargs)
        self.auto_scaler = auto_scaler
        self.container_resource_requirements = container_resource_requirements
        self.app_insights_enabled = app_insights_enabled
        self.scoring_timeout_ms = scoring_timeout_ms
        self.num_replicas = num_replicas


class AKSReplicaStatus(msrest.serialization.Model):
    """AKSReplicaStatus.

    :ivar desired_replicas:
    :vartype desired_replicas: int
    :ivar updated_replicas:
    :vartype updated_replicas: int
    :ivar available_replicas:
    :vartype available_replicas: int
    :ivar error:
    :vartype error: ~flow.models.ModelManagementErrorResponse
    """

    _attribute_map = {
        'desired_replicas': {'key': 'desiredReplicas', 'type': 'int'},
        'updated_replicas': {'key': 'updatedReplicas', 'type': 'int'},
        'available_replicas': {'key': 'availableReplicas', 'type': 'int'},
        'error': {'key': 'error', 'type': 'ModelManagementErrorResponse'},
    }

    def __init__(
        self,
        *,
        desired_replicas: Optional[int] = None,
        updated_replicas: Optional[int] = None,
        available_replicas: Optional[int] = None,
        error: Optional["ModelManagementErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword desired_replicas:
        :paramtype desired_replicas: int
        :keyword updated_replicas:
        :paramtype updated_replicas: int
        :keyword available_replicas:
        :paramtype available_replicas: int
        :keyword error:
        :paramtype error: ~flow.models.ModelManagementErrorResponse
        """
        super(AKSReplicaStatus, self).__init__(**kwargs)
        self.desired_replicas = desired_replicas
        self.updated_replicas = updated_replicas
        self.available_replicas = available_replicas
        self.error = error


class AMLComputeConfiguration(msrest.serialization.Model):
    """AMLComputeConfiguration.

    :ivar name:
    :vartype name: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar vm_priority: Possible values include: "Dedicated", "Lowpriority".
    :vartype vm_priority: str or ~flow.models.VmPriority
    :ivar retain_cluster:
    :vartype retain_cluster: bool
    :ivar cluster_max_node_count:
    :vartype cluster_max_node_count: int
    :ivar os_type:
    :vartype os_type: str
    :ivar virtual_machine_image:
    :vartype virtual_machine_image: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'vm_priority': {'key': 'vmPriority', 'type': 'str'},
        'retain_cluster': {'key': 'retainCluster', 'type': 'bool'},
        'cluster_max_node_count': {'key': 'clusterMaxNodeCount', 'type': 'int'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'virtual_machine_image': {'key': 'virtualMachineImage', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        vm_size: Optional[str] = None,
        vm_priority: Optional[Union[str, "VmPriority"]] = None,
        retain_cluster: Optional[bool] = None,
        cluster_max_node_count: Optional[int] = None,
        os_type: Optional[str] = None,
        virtual_machine_image: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword vm_priority: Possible values include: "Dedicated", "Lowpriority".
        :paramtype vm_priority: str or ~flow.models.VmPriority
        :keyword retain_cluster:
        :paramtype retain_cluster: bool
        :keyword cluster_max_node_count:
        :paramtype cluster_max_node_count: int
        :keyword os_type:
        :paramtype os_type: str
        :keyword virtual_machine_image:
        :paramtype virtual_machine_image: str
        """
        super(AMLComputeConfiguration, self).__init__(**kwargs)
        self.name = name
        self.vm_size = vm_size
        self.vm_priority = vm_priority
        self.retain_cluster = retain_cluster
        self.cluster_max_node_count = cluster_max_node_count
        self.os_type = os_type
        self.virtual_machine_image = virtual_machine_image


class AmlDataset(msrest.serialization.Model):
    """AmlDataset.

    :ivar registered_data_set_reference:
    :vartype registered_data_set_reference: ~flow.models.RegisteredDataSetReference
    :ivar saved_data_set_reference:
    :vartype saved_data_set_reference: ~flow.models.SavedDataSetReference
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'registered_data_set_reference': {'key': 'registeredDataSetReference', 'type': 'RegisteredDataSetReference'},
        'saved_data_set_reference': {'key': 'savedDataSetReference', 'type': 'SavedDataSetReference'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        registered_data_set_reference: Optional["RegisteredDataSetReference"] = None,
        saved_data_set_reference: Optional["SavedDataSetReference"] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword registered_data_set_reference:
        :paramtype registered_data_set_reference: ~flow.models.RegisteredDataSetReference
        :keyword saved_data_set_reference:
        :paramtype saved_data_set_reference: ~flow.models.SavedDataSetReference
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(AmlDataset, self).__init__(**kwargs)
        self.registered_data_set_reference = registered_data_set_reference
        self.saved_data_set_reference = saved_data_set_reference
        self.additional_transformations = additional_transformations


class AmlK8SConfiguration(msrest.serialization.Model):
    """AmlK8SConfiguration.

    :ivar resource_configuration:
    :vartype resource_configuration: ~flow.models.ResourceConfiguration
    :ivar priority_configuration:
    :vartype priority_configuration: ~flow.models.AmlK8SPriorityConfiguration
    :ivar interactive_configuration:
    :vartype interactive_configuration: ~flow.models.InteractiveConfiguration
    """

    _attribute_map = {
        'resource_configuration': {'key': 'resourceConfiguration', 'type': 'ResourceConfiguration'},
        'priority_configuration': {'key': 'priorityConfiguration', 'type': 'AmlK8SPriorityConfiguration'},
        'interactive_configuration': {'key': 'interactiveConfiguration', 'type': 'InteractiveConfiguration'},
    }

    def __init__(
        self,
        *,
        resource_configuration: Optional["ResourceConfiguration"] = None,
        priority_configuration: Optional["AmlK8SPriorityConfiguration"] = None,
        interactive_configuration: Optional["InteractiveConfiguration"] = None,
        **kwargs
    ):
        """
        :keyword resource_configuration:
        :paramtype resource_configuration: ~flow.models.ResourceConfiguration
        :keyword priority_configuration:
        :paramtype priority_configuration: ~flow.models.AmlK8SPriorityConfiguration
        :keyword interactive_configuration:
        :paramtype interactive_configuration: ~flow.models.InteractiveConfiguration
        """
        super(AmlK8SConfiguration, self).__init__(**kwargs)
        self.resource_configuration = resource_configuration
        self.priority_configuration = priority_configuration
        self.interactive_configuration = interactive_configuration


class AmlK8SPriorityConfiguration(msrest.serialization.Model):
    """AmlK8SPriorityConfiguration.

    :ivar job_priority:
    :vartype job_priority: int
    :ivar is_preemptible:
    :vartype is_preemptible: bool
    :ivar node_count_set:
    :vartype node_count_set: list[int]
    :ivar scale_interval:
    :vartype scale_interval: int
    """

    _attribute_map = {
        'job_priority': {'key': 'jobPriority', 'type': 'int'},
        'is_preemptible': {'key': 'isPreemptible', 'type': 'bool'},
        'node_count_set': {'key': 'nodeCountSet', 'type': '[int]'},
        'scale_interval': {'key': 'scaleInterval', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        job_priority: Optional[int] = None,
        is_preemptible: Optional[bool] = None,
        node_count_set: Optional[List[int]] = None,
        scale_interval: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword job_priority:
        :paramtype job_priority: int
        :keyword is_preemptible:
        :paramtype is_preemptible: bool
        :keyword node_count_set:
        :paramtype node_count_set: list[int]
        :keyword scale_interval:
        :paramtype scale_interval: int
        """
        super(AmlK8SPriorityConfiguration, self).__init__(**kwargs)
        self.job_priority = job_priority
        self.is_preemptible = is_preemptible
        self.node_count_set = node_count_set
        self.scale_interval = scale_interval


class AmlSparkCloudSetting(msrest.serialization.Model):
    """AmlSparkCloudSetting.

    :ivar entry:
    :vartype entry: ~flow.models.EntrySetting
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar inline_environment_definition_string:
    :vartype inline_environment_definition_string: str
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar compute:
    :vartype compute: str
    :ivar resources:
    :vartype resources: ~flow.models.ResourcesSetting
    :ivar identity:
    :vartype identity: ~flow.models.IdentitySetting
    """

    _attribute_map = {
        'entry': {'key': 'entry', 'type': 'EntrySetting'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'inline_environment_definition_string': {'key': 'inlineEnvironmentDefinitionString', 'type': 'str'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'compute': {'key': 'compute', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'ResourcesSetting'},
        'identity': {'key': 'identity', 'type': 'IdentitySetting'},
    }

    def __init__(
        self,
        *,
        entry: Optional["EntrySetting"] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        environment_asset_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        inline_environment_definition_string: Optional[str] = None,
        conf: Optional[Dict[str, str]] = None,
        compute: Optional[str] = None,
        resources: Optional["ResourcesSetting"] = None,
        identity: Optional["IdentitySetting"] = None,
        **kwargs
    ):
        """
        :keyword entry:
        :paramtype entry: ~flow.models.EntrySetting
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword inline_environment_definition_string:
        :paramtype inline_environment_definition_string: str
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword compute:
        :paramtype compute: str
        :keyword resources:
        :paramtype resources: ~flow.models.ResourcesSetting
        :keyword identity:
        :paramtype identity: ~flow.models.IdentitySetting
        """
        super(AmlSparkCloudSetting, self).__init__(**kwargs)
        self.entry = entry
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.environment_asset_id = environment_asset_id
        self.environment_variables = environment_variables
        self.inline_environment_definition_string = inline_environment_definition_string
        self.conf = conf
        self.compute = compute
        self.resources = resources
        self.identity = identity


class APCloudConfiguration(msrest.serialization.Model):
    """APCloudConfiguration.

    :ivar referenced_ap_module_guid:
    :vartype referenced_ap_module_guid: str
    :ivar user_alias:
    :vartype user_alias: str
    :ivar aether_module_type:
    :vartype aether_module_type: str
    :ivar allow_overwrite:
    :vartype allow_overwrite: bool
    :ivar destination_expiration_days:
    :vartype destination_expiration_days: int
    :ivar should_respect_line_boundaries:
    :vartype should_respect_line_boundaries: bool
    """

    _attribute_map = {
        'referenced_ap_module_guid': {'key': 'referencedAPModuleGuid', 'type': 'str'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'aether_module_type': {'key': 'aetherModuleType', 'type': 'str'},
        'allow_overwrite': {'key': 'allowOverwrite', 'type': 'bool'},
        'destination_expiration_days': {'key': 'destinationExpirationDays', 'type': 'int'},
        'should_respect_line_boundaries': {'key': 'shouldRespectLineBoundaries', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        referenced_ap_module_guid: Optional[str] = None,
        user_alias: Optional[str] = None,
        aether_module_type: Optional[str] = None,
        allow_overwrite: Optional[bool] = None,
        destination_expiration_days: Optional[int] = None,
        should_respect_line_boundaries: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword referenced_ap_module_guid:
        :paramtype referenced_ap_module_guid: str
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword aether_module_type:
        :paramtype aether_module_type: str
        :keyword allow_overwrite:
        :paramtype allow_overwrite: bool
        :keyword destination_expiration_days:
        :paramtype destination_expiration_days: int
        :keyword should_respect_line_boundaries:
        :paramtype should_respect_line_boundaries: bool
        """
        super(APCloudConfiguration, self).__init__(**kwargs)
        self.referenced_ap_module_guid = referenced_ap_module_guid
        self.user_alias = user_alias
        self.aether_module_type = aether_module_type
        self.allow_overwrite = allow_overwrite
        self.destination_expiration_days = destination_expiration_days
        self.should_respect_line_boundaries = should_respect_line_boundaries


class ApiAndParameters(msrest.serialization.Model):
    """ApiAndParameters.

    :ivar api:
    :vartype api: str
    :ivar parameters: This is a dictionary.
    :vartype parameters: dict[str, ~flow.models.FlowToolSettingParameter]
    :ivar default_prompt:
    :vartype default_prompt: str
    """

    _attribute_map = {
        'api': {'key': 'api', 'type': 'str'},
        'parameters': {'key': 'parameters', 'type': '{FlowToolSettingParameter}'},
        'default_prompt': {'key': 'default_prompt', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        api: Optional[str] = None,
        parameters: Optional[Dict[str, "FlowToolSettingParameter"]] = None,
        default_prompt: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword api:
        :paramtype api: str
        :keyword parameters: This is a dictionary.
        :paramtype parameters: dict[str, ~flow.models.FlowToolSettingParameter]
        :keyword default_prompt:
        :paramtype default_prompt: str
        """
        super(ApiAndParameters, self).__init__(**kwargs)
        self.api = api
        self.parameters = parameters
        self.default_prompt = default_prompt


class ApplicationEndpointConfiguration(msrest.serialization.Model):
    """ApplicationEndpointConfiguration.

    :ivar type: Possible values include: "Jupyter", "JupyterLab", "SSH", "TensorBoard", "VSCode",
     "Theia", "Grafana", "Custom", "RayDashboard".
    :vartype type: str or ~flow.models.ApplicationEndpointType
    :ivar port:
    :vartype port: int
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar nodes:
    :vartype nodes: ~flow.models.Nodes
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'port': {'key': 'port', 'type': 'int'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'nodes': {'key': 'nodes', 'type': 'Nodes'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "ApplicationEndpointType"]] = None,
        port: Optional[int] = None,
        properties: Optional[Dict[str, str]] = None,
        nodes: Optional["Nodes"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "Jupyter", "JupyterLab", "SSH", "TensorBoard",
         "VSCode", "Theia", "Grafana", "Custom", "RayDashboard".
        :paramtype type: str or ~flow.models.ApplicationEndpointType
        :keyword port:
        :paramtype port: int
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword nodes:
        :paramtype nodes: ~flow.models.Nodes
        """
        super(ApplicationEndpointConfiguration, self).__init__(**kwargs)
        self.type = type
        self.port = port
        self.properties = properties
        self.nodes = nodes


class ArgumentAssignment(msrest.serialization.Model):
    """ArgumentAssignment.

    :ivar value_type: Possible values include: "Literal", "Parameter", "Input", "Output",
     "NestedList", "StringInterpolationList".
    :vartype value_type: str or ~flow.models.ArgumentValueType
    :ivar value:
    :vartype value: str
    :ivar nested_argument_list:
    :vartype nested_argument_list: list[~flow.models.ArgumentAssignment]
    :ivar string_interpolation_argument_list:
    :vartype string_interpolation_argument_list: list[~flow.models.ArgumentAssignment]
    """

    _attribute_map = {
        'value_type': {'key': 'valueType', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
        'nested_argument_list': {'key': 'nestedArgumentList', 'type': '[ArgumentAssignment]'},
        'string_interpolation_argument_list': {'key': 'stringInterpolationArgumentList', 'type': '[ArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        value_type: Optional[Union[str, "ArgumentValueType"]] = None,
        value: Optional[str] = None,
        nested_argument_list: Optional[List["ArgumentAssignment"]] = None,
        string_interpolation_argument_list: Optional[List["ArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword value_type: Possible values include: "Literal", "Parameter", "Input", "Output",
         "NestedList", "StringInterpolationList".
        :paramtype value_type: str or ~flow.models.ArgumentValueType
        :keyword value:
        :paramtype value: str
        :keyword nested_argument_list:
        :paramtype nested_argument_list: list[~flow.models.ArgumentAssignment]
        :keyword string_interpolation_argument_list:
        :paramtype string_interpolation_argument_list: list[~flow.models.ArgumentAssignment]
        """
        super(ArgumentAssignment, self).__init__(**kwargs)
        self.value_type = value_type
        self.value = value
        self.nested_argument_list = nested_argument_list
        self.string_interpolation_argument_list = string_interpolation_argument_list


class Asset(msrest.serialization.Model):
    """Asset.

    :ivar asset_id:
    :vartype asset_id: str
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        asset_id: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword type:
        :paramtype type: str
        """
        super(Asset, self).__init__(**kwargs)
        self.asset_id = asset_id
        self.type = type


class AssetDefinition(msrest.serialization.Model):
    """AssetDefinition.

    :ivar path:
    :vartype path: str
    :ivar type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
     "MLFlowModel", "TritonModel", "OpenAIModel".
    :vartype type: str or ~flow.models.AEVAAssetType
    :ivar asset_id:
    :vartype asset_id: str
    :ivar serialized_asset_id:
    :vartype serialized_asset_id: str
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'serialized_asset_id': {'key': 'serializedAssetId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        path: Optional[str] = None,
        type: Optional[Union[str, "AEVAAssetType"]] = None,
        asset_id: Optional[str] = None,
        serialized_asset_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword path:
        :paramtype path: str
        :keyword type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
         "MLFlowModel", "TritonModel", "OpenAIModel".
        :paramtype type: str or ~flow.models.AEVAAssetType
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword serialized_asset_id:
        :paramtype serialized_asset_id: str
        """
        super(AssetDefinition, self).__init__(**kwargs)
        self.path = path
        self.type = type
        self.asset_id = asset_id
        self.serialized_asset_id = serialized_asset_id


class AssetNameAndVersionIdentifier(msrest.serialization.Model):
    """AssetNameAndVersionIdentifier.

    :ivar asset_name:
    :vartype asset_name: str
    :ivar version:
    :vartype version: str
    :ivar feed_name:
    :vartype feed_name: str
    """

    _attribute_map = {
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        asset_name: Optional[str] = None,
        version: Optional[str] = None,
        feed_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword asset_name:
        :paramtype asset_name: str
        :keyword version:
        :paramtype version: str
        :keyword feed_name:
        :paramtype feed_name: str
        """
        super(AssetNameAndVersionIdentifier, self).__init__(**kwargs)
        self.asset_name = asset_name
        self.version = version
        self.feed_name = feed_name


class AssetOutputSettings(msrest.serialization.Model):
    """AssetOutputSettings.

    :ivar path:
    :vartype path: str
    :ivar path_parameter_assignment:
    :vartype path_parameter_assignment: ~flow.models.ParameterAssignment
    :ivar type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
     "MLFlowModel", "TritonModel", "OpenAIModel".
    :vartype type: str or ~flow.models.AEVAAssetType
    :ivar options: This is a dictionary.
    :vartype options: dict[str, str]
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'path_parameter_assignment': {'key': 'PathParameterAssignment', 'type': 'ParameterAssignment'},
        'type': {'key': 'type', 'type': 'str'},
        'options': {'key': 'options', 'type': '{str}'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        path: Optional[str] = None,
        path_parameter_assignment: Optional["ParameterAssignment"] = None,
        type: Optional[Union[str, "AEVAAssetType"]] = None,
        options: Optional[Dict[str, str]] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword path:
        :paramtype path: str
        :keyword path_parameter_assignment:
        :paramtype path_parameter_assignment: ~flow.models.ParameterAssignment
        :keyword type: Possible values include: "UriFile", "UriFolder", "MLTable", "CustomModel",
         "MLFlowModel", "TritonModel", "OpenAIModel".
        :paramtype type: str or ~flow.models.AEVAAssetType
        :keyword options: This is a dictionary.
        :paramtype options: dict[str, str]
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(AssetOutputSettings, self).__init__(**kwargs)
        self.path = path
        self.path_parameter_assignment = path_parameter_assignment
        self.type = type
        self.options = options
        self.data_store_mode = data_store_mode
        self.name = name
        self.version = version


class AssetOutputSettingsParameter(msrest.serialization.Model):
    """AssetOutputSettingsParameter.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar default_value:
    :vartype default_value: ~flow.models.AssetOutputSettings
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'AssetOutputSettings'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        default_value: Optional["AssetOutputSettings"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword default_value:
        :paramtype default_value: ~flow.models.AssetOutputSettings
        """
        super(AssetOutputSettingsParameter, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.default_value = default_value


class AssetPublishResult(msrest.serialization.Model):
    """AssetPublishResult.

    :ivar feed_name:
    :vartype feed_name: str
    :ivar asset_name:
    :vartype asset_name: str
    :ivar asset_version:
    :vartype asset_version: str
    :ivar step_name:
    :vartype step_name: str
    :ivar status:
    :vartype status: str
    :ivar error_message:
    :vartype error_message: str
    :ivar created_time:
    :vartype created_time: ~datetime.datetime
    :ivar last_updated_time:
    :vartype last_updated_time: ~datetime.datetime
    :ivar regional_publish_results: Dictionary of :code:`<AssetPublishSingleRegionResult>`.
    :vartype regional_publish_results: dict[str, ~flow.models.AssetPublishSingleRegionResult]
    """

    _attribute_map = {
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'asset_version': {'key': 'assetVersion', 'type': 'str'},
        'step_name': {'key': 'stepName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
        'regional_publish_results': {'key': 'regionalPublishResults', 'type': '{AssetPublishSingleRegionResult}'},
    }

    def __init__(
        self,
        *,
        feed_name: Optional[str] = None,
        asset_name: Optional[str] = None,
        asset_version: Optional[str] = None,
        step_name: Optional[str] = None,
        status: Optional[str] = None,
        error_message: Optional[str] = None,
        created_time: Optional[datetime.datetime] = None,
        last_updated_time: Optional[datetime.datetime] = None,
        regional_publish_results: Optional[Dict[str, "AssetPublishSingleRegionResult"]] = None,
        **kwargs
    ):
        """
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword asset_name:
        :paramtype asset_name: str
        :keyword asset_version:
        :paramtype asset_version: str
        :keyword step_name:
        :paramtype step_name: str
        :keyword status:
        :paramtype status: str
        :keyword error_message:
        :paramtype error_message: str
        :keyword created_time:
        :paramtype created_time: ~datetime.datetime
        :keyword last_updated_time:
        :paramtype last_updated_time: ~datetime.datetime
        :keyword regional_publish_results: Dictionary of :code:`<AssetPublishSingleRegionResult>`.
        :paramtype regional_publish_results: dict[str, ~flow.models.AssetPublishSingleRegionResult]
        """
        super(AssetPublishResult, self).__init__(**kwargs)
        self.feed_name = feed_name
        self.asset_name = asset_name
        self.asset_version = asset_version
        self.step_name = step_name
        self.status = status
        self.error_message = error_message
        self.created_time = created_time
        self.last_updated_time = last_updated_time
        self.regional_publish_results = regional_publish_results


class AssetPublishSingleRegionResult(msrest.serialization.Model):
    """AssetPublishSingleRegionResult.

    :ivar step_name:
    :vartype step_name: str
    :ivar status:
    :vartype status: str
    :ivar error_message:
    :vartype error_message: str
    :ivar last_updated_time:
    :vartype last_updated_time: ~datetime.datetime
    :ivar total_steps:
    :vartype total_steps: int
    :ivar finished_steps:
    :vartype finished_steps: int
    :ivar remaining_steps:
    :vartype remaining_steps: int
    """

    _attribute_map = {
        'step_name': {'key': 'stepName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
        'total_steps': {'key': 'totalSteps', 'type': 'int'},
        'finished_steps': {'key': 'finishedSteps', 'type': 'int'},
        'remaining_steps': {'key': 'remainingSteps', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        step_name: Optional[str] = None,
        status: Optional[str] = None,
        error_message: Optional[str] = None,
        last_updated_time: Optional[datetime.datetime] = None,
        total_steps: Optional[int] = None,
        finished_steps: Optional[int] = None,
        remaining_steps: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword step_name:
        :paramtype step_name: str
        :keyword status:
        :paramtype status: str
        :keyword error_message:
        :paramtype error_message: str
        :keyword last_updated_time:
        :paramtype last_updated_time: ~datetime.datetime
        :keyword total_steps:
        :paramtype total_steps: int
        :keyword finished_steps:
        :paramtype finished_steps: int
        :keyword remaining_steps:
        :paramtype remaining_steps: int
        """
        super(AssetPublishSingleRegionResult, self).__init__(**kwargs)
        self.step_name = step_name
        self.status = status
        self.error_message = error_message
        self.last_updated_time = last_updated_time
        self.total_steps = total_steps
        self.finished_steps = finished_steps
        self.remaining_steps = remaining_steps


class AssetTypeMetaInfo(msrest.serialization.Model):
    """AssetTypeMetaInfo.

    :ivar consumption_mode: Possible values include: "Reference", "Copy", "CopyAndAutoUpgrade".
    :vartype consumption_mode: str or ~flow.models.ConsumeMode
    """

    _attribute_map = {
        'consumption_mode': {'key': 'consumptionMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        consumption_mode: Optional[Union[str, "ConsumeMode"]] = None,
        **kwargs
    ):
        """
        :keyword consumption_mode: Possible values include: "Reference", "Copy", "CopyAndAutoUpgrade".
        :paramtype consumption_mode: str or ~flow.models.ConsumeMode
        """
        super(AssetTypeMetaInfo, self).__init__(**kwargs)
        self.consumption_mode = consumption_mode


class AssetVersionPublishRequest(msrest.serialization.Model):
    """AssetVersionPublishRequest.

    :ivar asset_type: Possible values include: "Component", "Model", "Environment", "Dataset",
     "DataStore", "SampleGraph", "FlowToolSetting", "FlowConnection", "FlowRuntimeSpec".
    :vartype asset_type: str or ~flow.models.AssetType
    :ivar asset_source_type: Possible values include: "Unknown", "Local", "GithubFile",
     "GithubFolder", "DevopsArtifactsZip".
    :vartype asset_source_type: str or ~flow.models.AssetSourceType
    :ivar yaml_file:
    :vartype yaml_file: str
    :ivar source_zip_url:
    :vartype source_zip_url: str
    :ivar source_zip_file:
    :vartype source_zip_file: IO
    :ivar feed_name:
    :vartype feed_name: str
    :ivar set_as_default_version:
    :vartype set_as_default_version: bool
    :ivar referenced_assets:
    :vartype referenced_assets: list[~flow.models.AssetNameAndVersionIdentifier]
    :ivar flow_file:
    :vartype flow_file: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'asset_type': {'key': 'assetType', 'type': 'str'},
        'asset_source_type': {'key': 'assetSourceType', 'type': 'str'},
        'yaml_file': {'key': 'yamlFile', 'type': 'str'},
        'source_zip_url': {'key': 'sourceZipUrl', 'type': 'str'},
        'source_zip_file': {'key': 'sourceZipFile', 'type': 'IO'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'set_as_default_version': {'key': 'setAsDefaultVersion', 'type': 'bool'},
        'referenced_assets': {'key': 'referencedAssets', 'type': '[AssetNameAndVersionIdentifier]'},
        'flow_file': {'key': 'flowFile', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        asset_type: Optional[Union[str, "AssetType"]] = None,
        asset_source_type: Optional[Union[str, "AssetSourceType"]] = None,
        yaml_file: Optional[str] = None,
        source_zip_url: Optional[str] = None,
        source_zip_file: Optional[IO] = None,
        feed_name: Optional[str] = None,
        set_as_default_version: Optional[bool] = None,
        referenced_assets: Optional[List["AssetNameAndVersionIdentifier"]] = None,
        flow_file: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword asset_type: Possible values include: "Component", "Model", "Environment", "Dataset",
         "DataStore", "SampleGraph", "FlowToolSetting", "FlowConnection", "FlowRuntimeSpec".
        :paramtype asset_type: str or ~flow.models.AssetType
        :keyword asset_source_type: Possible values include: "Unknown", "Local", "GithubFile",
         "GithubFolder", "DevopsArtifactsZip".
        :paramtype asset_source_type: str or ~flow.models.AssetSourceType
        :keyword yaml_file:
        :paramtype yaml_file: str
        :keyword source_zip_url:
        :paramtype source_zip_url: str
        :keyword source_zip_file:
        :paramtype source_zip_file: IO
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword set_as_default_version:
        :paramtype set_as_default_version: bool
        :keyword referenced_assets:
        :paramtype referenced_assets: list[~flow.models.AssetNameAndVersionIdentifier]
        :keyword flow_file:
        :paramtype flow_file: str
        :keyword version:
        :paramtype version: str
        """
        super(AssetVersionPublishRequest, self).__init__(**kwargs)
        self.asset_type = asset_type
        self.asset_source_type = asset_source_type
        self.yaml_file = yaml_file
        self.source_zip_url = source_zip_url
        self.source_zip_file = source_zip_file
        self.feed_name = feed_name
        self.set_as_default_version = set_as_default_version
        self.referenced_assets = referenced_assets
        self.flow_file = flow_file
        self.version = version


class AssignedUser(msrest.serialization.Model):
    """AssignedUser.

    :ivar object_id:
    :vartype object_id: str
    :ivar tenant_id:
    :vartype tenant_id: str
    """

    _attribute_map = {
        'object_id': {'key': 'objectId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        object_id: Optional[str] = None,
        tenant_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword object_id:
        :paramtype object_id: str
        :keyword tenant_id:
        :paramtype tenant_id: str
        """
        super(AssignedUser, self).__init__(**kwargs)
        self.object_id = object_id
        self.tenant_id = tenant_id


class AttachCosmosRequest(msrest.serialization.Model):
    """AttachCosmosRequest.

    :ivar account_endpoint:
    :vartype account_endpoint: str
    :ivar resource_arm_id:
    :vartype resource_arm_id: str
    :ivar database_name:
    :vartype database_name: str
    """

    _attribute_map = {
        'account_endpoint': {'key': 'accountEndpoint', 'type': 'str'},
        'resource_arm_id': {'key': 'resourceArmId', 'type': 'str'},
        'database_name': {'key': 'databaseName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        account_endpoint: Optional[str] = None,
        resource_arm_id: Optional[str] = None,
        database_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword account_endpoint:
        :paramtype account_endpoint: str
        :keyword resource_arm_id:
        :paramtype resource_arm_id: str
        :keyword database_name:
        :paramtype database_name: str
        """
        super(AttachCosmosRequest, self).__init__(**kwargs)
        self.account_endpoint = account_endpoint
        self.resource_arm_id = resource_arm_id
        self.database_name = database_name


class AuthKeys(msrest.serialization.Model):
    """AuthKeys.

    :ivar primary_key:
    :vartype primary_key: str
    :ivar secondary_key:
    :vartype secondary_key: str
    """

    _attribute_map = {
        'primary_key': {'key': 'primaryKey', 'type': 'str'},
        'secondary_key': {'key': 'secondaryKey', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        primary_key: Optional[str] = None,
        secondary_key: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword primary_key:
        :paramtype primary_key: str
        :keyword secondary_key:
        :paramtype secondary_key: str
        """
        super(AuthKeys, self).__init__(**kwargs)
        self.primary_key = primary_key
        self.secondary_key = secondary_key


class AutoClusterComputeSpecification(msrest.serialization.Model):
    """AutoClusterComputeSpecification.

    :ivar instance_size:
    :vartype instance_size: str
    :ivar instance_priority:
    :vartype instance_priority: str
    :ivar os_type:
    :vartype os_type: str
    :ivar location:
    :vartype location: str
    :ivar runtime_version:
    :vartype runtime_version: str
    :ivar quota_enforcement_resource_id:
    :vartype quota_enforcement_resource_id: str
    :ivar model_compute_specification_id:
    :vartype model_compute_specification_id: str
    """

    _attribute_map = {
        'instance_size': {'key': 'instanceSize', 'type': 'str'},
        'instance_priority': {'key': 'instancePriority', 'type': 'str'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'runtime_version': {'key': 'runtimeVersion', 'type': 'str'},
        'quota_enforcement_resource_id': {'key': 'quotaEnforcementResourceId', 'type': 'str'},
        'model_compute_specification_id': {'key': 'modelComputeSpecificationId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_size: Optional[str] = None,
        instance_priority: Optional[str] = None,
        os_type: Optional[str] = None,
        location: Optional[str] = None,
        runtime_version: Optional[str] = None,
        quota_enforcement_resource_id: Optional[str] = None,
        model_compute_specification_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_size:
        :paramtype instance_size: str
        :keyword instance_priority:
        :paramtype instance_priority: str
        :keyword os_type:
        :paramtype os_type: str
        :keyword location:
        :paramtype location: str
        :keyword runtime_version:
        :paramtype runtime_version: str
        :keyword quota_enforcement_resource_id:
        :paramtype quota_enforcement_resource_id: str
        :keyword model_compute_specification_id:
        :paramtype model_compute_specification_id: str
        """
        super(AutoClusterComputeSpecification, self).__init__(**kwargs)
        self.instance_size = instance_size
        self.instance_priority = instance_priority
        self.os_type = os_type
        self.location = location
        self.runtime_version = runtime_version
        self.quota_enforcement_resource_id = quota_enforcement_resource_id
        self.model_compute_specification_id = model_compute_specification_id


class AutoDeleteSetting(msrest.serialization.Model):
    """AutoDeleteSetting.

    :ivar condition: Possible values include: "CreatedGreaterThan", "LastAccessedGreaterThan".
    :vartype condition: str or ~flow.models.AutoDeleteCondition
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'condition': {'key': 'condition', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        condition: Optional[Union[str, "AutoDeleteCondition"]] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword condition: Possible values include: "CreatedGreaterThan", "LastAccessedGreaterThan".
        :paramtype condition: str or ~flow.models.AutoDeleteCondition
        :keyword value:
        :paramtype value: str
        """
        super(AutoDeleteSetting, self).__init__(**kwargs)
        self.condition = condition
        self.value = value


class AutoFeaturizeConfiguration(msrest.serialization.Model):
    """AutoFeaturizeConfiguration.

    :ivar featurization_config:
    :vartype featurization_config: ~flow.models.FeaturizationSettings
    """

    _attribute_map = {
        'featurization_config': {'key': 'featurizationConfig', 'type': 'FeaturizationSettings'},
    }

    def __init__(
        self,
        *,
        featurization_config: Optional["FeaturizationSettings"] = None,
        **kwargs
    ):
        """
        :keyword featurization_config:
        :paramtype featurization_config: ~flow.models.FeaturizationSettings
        """
        super(AutoFeaturizeConfiguration, self).__init__(**kwargs)
        self.featurization_config = featurization_config


class AutologgerSettings(msrest.serialization.Model):
    """AutologgerSettings.

    :ivar ml_flow_autologger: Possible values include: "Enabled", "Disabled".
    :vartype ml_flow_autologger: str or ~flow.models.MLFlowAutologgerState
    """

    _attribute_map = {
        'ml_flow_autologger': {'key': 'mlFlowAutologger', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        ml_flow_autologger: Optional[Union[str, "MLFlowAutologgerState"]] = None,
        **kwargs
    ):
        """
        :keyword ml_flow_autologger: Possible values include: "Enabled", "Disabled".
        :paramtype ml_flow_autologger: str or ~flow.models.MLFlowAutologgerState
        """
        super(AutologgerSettings, self).__init__(**kwargs)
        self.ml_flow_autologger = ml_flow_autologger


class AutoMLComponentConfiguration(msrest.serialization.Model):
    """AutoMLComponentConfiguration.

    :ivar auto_train_config:
    :vartype auto_train_config: ~flow.models.AutoTrainConfiguration
    :ivar auto_featurize_config:
    :vartype auto_featurize_config: ~flow.models.AutoFeaturizeConfiguration
    """

    _attribute_map = {
        'auto_train_config': {'key': 'autoTrainConfig', 'type': 'AutoTrainConfiguration'},
        'auto_featurize_config': {'key': 'autoFeaturizeConfig', 'type': 'AutoFeaturizeConfiguration'},
    }

    def __init__(
        self,
        *,
        auto_train_config: Optional["AutoTrainConfiguration"] = None,
        auto_featurize_config: Optional["AutoFeaturizeConfiguration"] = None,
        **kwargs
    ):
        """
        :keyword auto_train_config:
        :paramtype auto_train_config: ~flow.models.AutoTrainConfiguration
        :keyword auto_featurize_config:
        :paramtype auto_featurize_config: ~flow.models.AutoFeaturizeConfiguration
        """
        super(AutoMLComponentConfiguration, self).__init__(**kwargs)
        self.auto_train_config = auto_train_config
        self.auto_featurize_config = auto_featurize_config


class AutoScaler(msrest.serialization.Model):
    """AutoScaler.

    :ivar autoscale_enabled:
    :vartype autoscale_enabled: bool
    :ivar min_replicas:
    :vartype min_replicas: int
    :ivar max_replicas:
    :vartype max_replicas: int
    :ivar target_utilization:
    :vartype target_utilization: int
    :ivar refresh_period_in_seconds:
    :vartype refresh_period_in_seconds: int
    """

    _attribute_map = {
        'autoscale_enabled': {'key': 'autoscaleEnabled', 'type': 'bool'},
        'min_replicas': {'key': 'minReplicas', 'type': 'int'},
        'max_replicas': {'key': 'maxReplicas', 'type': 'int'},
        'target_utilization': {'key': 'targetUtilization', 'type': 'int'},
        'refresh_period_in_seconds': {'key': 'refreshPeriodInSeconds', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        autoscale_enabled: Optional[bool] = None,
        min_replicas: Optional[int] = None,
        max_replicas: Optional[int] = None,
        target_utilization: Optional[int] = None,
        refresh_period_in_seconds: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword autoscale_enabled:
        :paramtype autoscale_enabled: bool
        :keyword min_replicas:
        :paramtype min_replicas: int
        :keyword max_replicas:
        :paramtype max_replicas: int
        :keyword target_utilization:
        :paramtype target_utilization: int
        :keyword refresh_period_in_seconds:
        :paramtype refresh_period_in_seconds: int
        """
        super(AutoScaler, self).__init__(**kwargs)
        self.autoscale_enabled = autoscale_enabled
        self.min_replicas = min_replicas
        self.max_replicas = max_replicas
        self.target_utilization = target_utilization
        self.refresh_period_in_seconds = refresh_period_in_seconds


class AutoTrainConfiguration(msrest.serialization.Model):
    """AutoTrainConfiguration.

    :ivar general_settings:
    :vartype general_settings: ~flow.models.GeneralSettings
    :ivar limit_settings:
    :vartype limit_settings: ~flow.models.LimitSettings
    :ivar data_settings:
    :vartype data_settings: ~flow.models.DataSettings
    :ivar forecasting_settings:
    :vartype forecasting_settings: ~flow.models.ForecastingSettings
    :ivar training_settings:
    :vartype training_settings: ~flow.models.TrainingSettings
    :ivar sweep_settings:
    :vartype sweep_settings: ~flow.models.SweepSettings
    :ivar image_model_settings: Dictionary of :code:`<any>`.
    :vartype image_model_settings: dict[str, any]
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar compute_configuration:
    :vartype compute_configuration: ~flow.models.AEVAComputeConfiguration
    :ivar resource_configurtion:
    :vartype resource_configurtion: ~flow.models.AEVAResourceConfiguration
    :ivar environment_id:
    :vartype environment_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    """

    _attribute_map = {
        'general_settings': {'key': 'generalSettings', 'type': 'GeneralSettings'},
        'limit_settings': {'key': 'limitSettings', 'type': 'LimitSettings'},
        'data_settings': {'key': 'dataSettings', 'type': 'DataSettings'},
        'forecasting_settings': {'key': 'forecastingSettings', 'type': 'ForecastingSettings'},
        'training_settings': {'key': 'trainingSettings', 'type': 'TrainingSettings'},
        'sweep_settings': {'key': 'sweepSettings', 'type': 'SweepSettings'},
        'image_model_settings': {'key': 'imageModelSettings', 'type': '{object}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'compute_configuration': {'key': 'computeConfiguration', 'type': 'AEVAComputeConfiguration'},
        'resource_configurtion': {'key': 'resourceConfigurtion', 'type': 'AEVAResourceConfiguration'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        general_settings: Optional["GeneralSettings"] = None,
        limit_settings: Optional["LimitSettings"] = None,
        data_settings: Optional["DataSettings"] = None,
        forecasting_settings: Optional["ForecastingSettings"] = None,
        training_settings: Optional["TrainingSettings"] = None,
        sweep_settings: Optional["SweepSettings"] = None,
        image_model_settings: Optional[Dict[str, Any]] = None,
        properties: Optional[Dict[str, str]] = None,
        compute_configuration: Optional["AEVAComputeConfiguration"] = None,
        resource_configurtion: Optional["AEVAResourceConfiguration"] = None,
        environment_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword general_settings:
        :paramtype general_settings: ~flow.models.GeneralSettings
        :keyword limit_settings:
        :paramtype limit_settings: ~flow.models.LimitSettings
        :keyword data_settings:
        :paramtype data_settings: ~flow.models.DataSettings
        :keyword forecasting_settings:
        :paramtype forecasting_settings: ~flow.models.ForecastingSettings
        :keyword training_settings:
        :paramtype training_settings: ~flow.models.TrainingSettings
        :keyword sweep_settings:
        :paramtype sweep_settings: ~flow.models.SweepSettings
        :keyword image_model_settings: Dictionary of :code:`<any>`.
        :paramtype image_model_settings: dict[str, any]
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword compute_configuration:
        :paramtype compute_configuration: ~flow.models.AEVAComputeConfiguration
        :keyword resource_configurtion:
        :paramtype resource_configurtion: ~flow.models.AEVAResourceConfiguration
        :keyword environment_id:
        :paramtype environment_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        """
        super(AutoTrainConfiguration, self).__init__(**kwargs)
        self.general_settings = general_settings
        self.limit_settings = limit_settings
        self.data_settings = data_settings
        self.forecasting_settings = forecasting_settings
        self.training_settings = training_settings
        self.sweep_settings = sweep_settings
        self.image_model_settings = image_model_settings
        self.properties = properties
        self.compute_configuration = compute_configuration
        self.resource_configurtion = resource_configurtion
        self.environment_id = environment_id
        self.environment_variables = environment_variables


class AvailabilityResponse(msrest.serialization.Model):
    """AvailabilityResponse.

    :ivar is_available:
    :vartype is_available: bool
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    """

    _attribute_map = {
        'is_available': {'key': 'isAvailable', 'type': 'bool'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
    }

    def __init__(
        self,
        *,
        is_available: Optional[bool] = None,
        error: Optional["ErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword is_available:
        :paramtype is_available: bool
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        """
        super(AvailabilityResponse, self).__init__(**kwargs)
        self.is_available = is_available
        self.error = error


class AzureBlobReference(msrest.serialization.Model):
    """AzureBlobReference.

    :ivar container:
    :vartype container: str
    :ivar sas_token:
    :vartype sas_token: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'container': {'key': 'container', 'type': 'str'},
        'sas_token': {'key': 'sasToken', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        container: Optional[str] = None,
        sas_token: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword container:
        :paramtype container: str
        :keyword sas_token:
        :paramtype sas_token: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AzureBlobReference, self).__init__(**kwargs)
        self.container = container
        self.sas_token = sas_token
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class AzureDatabaseReference(msrest.serialization.Model):
    """AzureDatabaseReference.

    :ivar table_name:
    :vartype table_name: str
    :ivar sql_query:
    :vartype sql_query: str
    :ivar stored_procedure_name:
    :vartype stored_procedure_name: str
    :ivar stored_procedure_parameters:
    :vartype stored_procedure_parameters: list[~flow.models.StoredProcedureParameter]
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'table_name': {'key': 'tableName', 'type': 'str'},
        'sql_query': {'key': 'sqlQuery', 'type': 'str'},
        'stored_procedure_name': {'key': 'storedProcedureName', 'type': 'str'},
        'stored_procedure_parameters': {'key': 'storedProcedureParameters', 'type': '[StoredProcedureParameter]'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        table_name: Optional[str] = None,
        sql_query: Optional[str] = None,
        stored_procedure_name: Optional[str] = None,
        stored_procedure_parameters: Optional[List["StoredProcedureParameter"]] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword table_name:
        :paramtype table_name: str
        :keyword sql_query:
        :paramtype sql_query: str
        :keyword stored_procedure_name:
        :paramtype stored_procedure_name: str
        :keyword stored_procedure_parameters:
        :paramtype stored_procedure_parameters: list[~flow.models.StoredProcedureParameter]
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AzureDatabaseReference, self).__init__(**kwargs)
        self.table_name = table_name
        self.sql_query = sql_query
        self.stored_procedure_name = stored_procedure_name
        self.stored_procedure_parameters = stored_procedure_parameters
        self.aml_data_store_name = aml_data_store_name


class AzureDataLakeGen2Reference(msrest.serialization.Model):
    """AzureDataLakeGen2Reference.

    :ivar file_system_name:
    :vartype file_system_name: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'file_system_name': {'key': 'fileSystemName', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file_system_name: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file_system_name:
        :paramtype file_system_name: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AzureDataLakeGen2Reference, self).__init__(**kwargs)
        self.file_system_name = file_system_name
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class AzureDataLakeReference(msrest.serialization.Model):
    """AzureDataLakeReference.

    :ivar tenant:
    :vartype tenant: str
    :ivar subscription:
    :vartype subscription: str
    :ivar resource_group:
    :vartype resource_group: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'tenant': {'key': 'tenant', 'type': 'str'},
        'subscription': {'key': 'subscription', 'type': 'str'},
        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        tenant: Optional[str] = None,
        subscription: Optional[str] = None,
        resource_group: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword tenant:
        :paramtype tenant: str
        :keyword subscription:
        :paramtype subscription: str
        :keyword resource_group:
        :paramtype resource_group: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AzureDataLakeReference, self).__init__(**kwargs)
        self.tenant = tenant
        self.subscription = subscription
        self.resource_group = resource_group
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class AzureFilesReference(msrest.serialization.Model):
    """AzureFilesReference.

    :ivar share:
    :vartype share: str
    :ivar uri:
    :vartype uri: str
    :ivar account:
    :vartype account: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'share': {'key': 'share', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'account': {'key': 'account', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        share: Optional[str] = None,
        uri: Optional[str] = None,
        account: Optional[str] = None,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword share:
        :paramtype share: str
        :keyword uri:
        :paramtype uri: str
        :keyword account:
        :paramtype account: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(AzureFilesReference, self).__init__(**kwargs)
        self.share = share
        self.uri = uri
        self.account = account
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class AzureMLModuleVersionDescriptor(msrest.serialization.Model):
    """AzureMLModuleVersionDescriptor.

    :ivar module_version_id:
    :vartype module_version_id: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'module_version_id': {'key': 'moduleVersionId', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        module_version_id: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword module_version_id:
        :paramtype module_version_id: str
        :keyword version:
        :paramtype version: str
        """
        super(AzureMLModuleVersionDescriptor, self).__init__(**kwargs)
        self.module_version_id = module_version_id
        self.version = version


class AzureOpenAIDeploymentDto(msrest.serialization.Model):
    """AzureOpenAIDeploymentDto.

    :ivar name:
    :vartype name: str
    :ivar model_name:
    :vartype model_name: str
    :ivar model_version:
    :vartype model_version: str
    :ivar capabilities:
    :vartype capabilities: ~flow.models.AzureOpenAIModelCapabilities
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'model_name': {'key': 'modelName', 'type': 'str'},
        'model_version': {'key': 'modelVersion', 'type': 'str'},
        'capabilities': {'key': 'capabilities', 'type': 'AzureOpenAIModelCapabilities'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        model_name: Optional[str] = None,
        model_version: Optional[str] = None,
        capabilities: Optional["AzureOpenAIModelCapabilities"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword model_name:
        :paramtype model_name: str
        :keyword model_version:
        :paramtype model_version: str
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AzureOpenAIModelCapabilities
        """
        super(AzureOpenAIDeploymentDto, self).__init__(**kwargs)
        self.name = name
        self.model_name = model_name
        self.model_version = model_version
        self.capabilities = capabilities


class AzureOpenAIModelCapabilities(msrest.serialization.Model):
    """AzureOpenAIModelCapabilities.

    :ivar completion:
    :vartype completion: bool
    :ivar chat_completion:
    :vartype chat_completion: bool
    :ivar embeddings:
    :vartype embeddings: bool
    :ivar include: This is a dictionary.
    :vartype include: dict[str, list[any]]
    :ivar exclude: This is a dictionary.
    :vartype exclude: dict[str, list[any]]
    """

    _attribute_map = {
        'completion': {'key': 'completion', 'type': 'bool'},
        'chat_completion': {'key': 'chat_completion', 'type': 'bool'},
        'embeddings': {'key': 'embeddings', 'type': 'bool'},
        'include': {'key': 'include', 'type': '{[object]}'},
        'exclude': {'key': 'exclude', 'type': '{[object]}'},
    }

    def __init__(
        self,
        *,
        completion: Optional[bool] = None,
        chat_completion: Optional[bool] = None,
        embeddings: Optional[bool] = None,
        include: Optional[Dict[str, List[Any]]] = None,
        exclude: Optional[Dict[str, List[Any]]] = None,
        **kwargs
    ):
        """
        :keyword completion:
        :paramtype completion: bool
        :keyword chat_completion:
        :paramtype chat_completion: bool
        :keyword embeddings:
        :paramtype embeddings: bool
        :keyword include: This is a dictionary.
        :paramtype include: dict[str, list[any]]
        :keyword exclude: This is a dictionary.
        :paramtype exclude: dict[str, list[any]]
        """
        super(AzureOpenAIModelCapabilities, self).__init__(**kwargs)
        self.completion = completion
        self.chat_completion = chat_completion
        self.embeddings = embeddings
        self.include = include
        self.exclude = exclude


class BatchAiComputeInfo(msrest.serialization.Model):
    """BatchAiComputeInfo.

    :ivar batch_ai_subscription_id:
    :vartype batch_ai_subscription_id: str
    :ivar batch_ai_resource_group:
    :vartype batch_ai_resource_group: str
    :ivar batch_ai_workspace_name:
    :vartype batch_ai_workspace_name: str
    :ivar cluster_name:
    :vartype cluster_name: str
    :ivar native_shared_directory:
    :vartype native_shared_directory: str
    """

    _attribute_map = {
        'batch_ai_subscription_id': {'key': 'batchAiSubscriptionId', 'type': 'str'},
        'batch_ai_resource_group': {'key': 'batchAiResourceGroup', 'type': 'str'},
        'batch_ai_workspace_name': {'key': 'batchAiWorkspaceName', 'type': 'str'},
        'cluster_name': {'key': 'clusterName', 'type': 'str'},
        'native_shared_directory': {'key': 'nativeSharedDirectory', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        batch_ai_subscription_id: Optional[str] = None,
        batch_ai_resource_group: Optional[str] = None,
        batch_ai_workspace_name: Optional[str] = None,
        cluster_name: Optional[str] = None,
        native_shared_directory: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword batch_ai_subscription_id:
        :paramtype batch_ai_subscription_id: str
        :keyword batch_ai_resource_group:
        :paramtype batch_ai_resource_group: str
        :keyword batch_ai_workspace_name:
        :paramtype batch_ai_workspace_name: str
        :keyword cluster_name:
        :paramtype cluster_name: str
        :keyword native_shared_directory:
        :paramtype native_shared_directory: str
        """
        super(BatchAiComputeInfo, self).__init__(**kwargs)
        self.batch_ai_subscription_id = batch_ai_subscription_id
        self.batch_ai_resource_group = batch_ai_resource_group
        self.batch_ai_workspace_name = batch_ai_workspace_name
        self.cluster_name = cluster_name
        self.native_shared_directory = native_shared_directory


class BatchDataInput(msrest.serialization.Model):
    """BatchDataInput.

    :ivar data_uri:
    :vartype data_uri: str
    :ivar type:
    :vartype type: str
    :ivar input_file_format: Possible values include: "Jsonl", "Csv", "Tsv".
    :vartype input_file_format: str or ~flow.models.PromptFlowInputFileFormat
    """

    _attribute_map = {
        'data_uri': {'key': 'dataUri', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'input_file_format': {'key': 'inputFileFormat', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_uri: Optional[str] = None,
        type: Optional[str] = None,
        input_file_format: Optional[Union[str, "PromptFlowInputFileFormat"]] = None,
        **kwargs
    ):
        """
        :keyword data_uri:
        :paramtype data_uri: str
        :keyword type:
        :paramtype type: str
        :keyword input_file_format: Possible values include: "Jsonl", "Csv", "Tsv".
        :paramtype input_file_format: str or ~flow.models.PromptFlowInputFileFormat
        """
        super(BatchDataInput, self).__init__(**kwargs)
        self.data_uri = data_uri
        self.type = type
        self.input_file_format = input_file_format


class BatchExportComponentSpecResponse(msrest.serialization.Model):
    """BatchExportComponentSpecResponse.

    :ivar component_spec_meta_infos:
    :vartype component_spec_meta_infos: list[~flow.models.ComponentSpecMetaInfo]
    :ivar errors:
    :vartype errors: list[~flow.models.ErrorResponse]
    """

    _attribute_map = {
        'component_spec_meta_infos': {'key': 'componentSpecMetaInfos', 'type': '[ComponentSpecMetaInfo]'},
        'errors': {'key': 'errors', 'type': '[ErrorResponse]'},
    }

    def __init__(
        self,
        *,
        component_spec_meta_infos: Optional[List["ComponentSpecMetaInfo"]] = None,
        errors: Optional[List["ErrorResponse"]] = None,
        **kwargs
    ):
        """
        :keyword component_spec_meta_infos:
        :paramtype component_spec_meta_infos: list[~flow.models.ComponentSpecMetaInfo]
        :keyword errors:
        :paramtype errors: list[~flow.models.ErrorResponse]
        """
        super(BatchExportComponentSpecResponse, self).__init__(**kwargs)
        self.component_spec_meta_infos = component_spec_meta_infos
        self.errors = errors


class BatchExportRawComponentResponse(msrest.serialization.Model):
    """BatchExportRawComponentResponse.

    :ivar raw_component_dtos:
    :vartype raw_component_dtos: list[~flow.models.RawComponentDto]
    :ivar errors:
    :vartype errors: list[~flow.models.ErrorResponse]
    """

    _attribute_map = {
        'raw_component_dtos': {'key': 'rawComponentDtos', 'type': '[RawComponentDto]'},
        'errors': {'key': 'errors', 'type': '[ErrorResponse]'},
    }

    def __init__(
        self,
        *,
        raw_component_dtos: Optional[List["RawComponentDto"]] = None,
        errors: Optional[List["ErrorResponse"]] = None,
        **kwargs
    ):
        """
        :keyword raw_component_dtos:
        :paramtype raw_component_dtos: list[~flow.models.RawComponentDto]
        :keyword errors:
        :paramtype errors: list[~flow.models.ErrorResponse]
        """
        super(BatchExportRawComponentResponse, self).__init__(**kwargs)
        self.raw_component_dtos = raw_component_dtos
        self.errors = errors


class BatchGetComponentHashesRequest(msrest.serialization.Model):
    """BatchGetComponentHashesRequest.

    :ivar module_hash_version: Possible values include: "IdentifierHash", "IdentifierHashV2".
    :vartype module_hash_version: str or ~flow.models.AetherModuleHashVersion
    :ivar module_entities: Dictionary of :code:`<AetherModuleEntity>`.
    :vartype module_entities: dict[str, ~flow.models.AetherModuleEntity]
    """

    _attribute_map = {
        'module_hash_version': {'key': 'moduleHashVersion', 'type': 'str'},
        'module_entities': {'key': 'moduleEntities', 'type': '{AetherModuleEntity}'},
    }

    def __init__(
        self,
        *,
        module_hash_version: Optional[Union[str, "AetherModuleHashVersion"]] = None,
        module_entities: Optional[Dict[str, "AetherModuleEntity"]] = None,
        **kwargs
    ):
        """
        :keyword module_hash_version: Possible values include: "IdentifierHash", "IdentifierHashV2".
        :paramtype module_hash_version: str or ~flow.models.AetherModuleHashVersion
        :keyword module_entities: Dictionary of :code:`<AetherModuleEntity>`.
        :paramtype module_entities: dict[str, ~flow.models.AetherModuleEntity]
        """
        super(BatchGetComponentHashesRequest, self).__init__(**kwargs)
        self.module_hash_version = module_hash_version
        self.module_entities = module_entities


class BatchGetComponentRequest(msrest.serialization.Model):
    """BatchGetComponentRequest.

    :ivar version_ids:
    :vartype version_ids: list[str]
    :ivar name_and_versions:
    :vartype name_and_versions: list[~flow.models.ComponentNameMetaInfo]
    """

    _attribute_map = {
        'version_ids': {'key': 'versionIds', 'type': '[str]'},
        'name_and_versions': {'key': 'nameAndVersions', 'type': '[ComponentNameMetaInfo]'},
    }

    def __init__(
        self,
        *,
        version_ids: Optional[List[str]] = None,
        name_and_versions: Optional[List["ComponentNameMetaInfo"]] = None,
        **kwargs
    ):
        """
        :keyword version_ids:
        :paramtype version_ids: list[str]
        :keyword name_and_versions:
        :paramtype name_and_versions: list[~flow.models.ComponentNameMetaInfo]
        """
        super(BatchGetComponentRequest, self).__init__(**kwargs)
        self.version_ids = version_ids
        self.name_and_versions = name_and_versions


class Binding(msrest.serialization.Model):
    """Binding.

    :ivar binding_type:  The only acceptable values to pass in are None and "Basic". The default
     value is None.
    :vartype binding_type: str
    """

    _attribute_map = {
        'binding_type': {'key': 'bindingType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        binding_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword binding_type:  The only acceptable values to pass in are None and "Basic". The default
         value is None.
        :paramtype binding_type: str
        """
        super(Binding, self).__init__(**kwargs)
        self.binding_type = binding_type


class BindOptions(msrest.serialization.Model):
    """BindOptions.

    :ivar propagation:
    :vartype propagation: str
    """

    _attribute_map = {
        'propagation': {'key': 'propagation', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        propagation: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword propagation:
        :paramtype propagation: str
        """
        super(BindOptions, self).__init__(**kwargs)
        self.propagation = propagation


class BulkTestDto(msrest.serialization.Model):
    """BulkTestDto.

    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar runtime:
    :vartype runtime: str
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar evaluation_count:
    :vartype evaluation_count: int
    :ivar variant_count:
    :vartype variant_count: int
    :ivar flow_submit_run_settings:
    :vartype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.FlowInputDefinition]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.FlowOutputDefinition]
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    """

    _attribute_map = {
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'runtime': {'key': 'runtime', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'evaluation_count': {'key': 'evaluationCount', 'type': 'int'},
        'variant_count': {'key': 'variantCount', 'type': 'int'},
        'flow_submit_run_settings': {'key': 'flowSubmitRunSettings', 'type': 'FlowSubmitRunSettings'},
        'inputs': {'key': 'inputs', 'type': '{FlowInputDefinition}'},
        'outputs': {'key': 'outputs', 'type': '{FlowOutputDefinition}'},
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
    }

    def __init__(
        self,
        *,
        bulk_test_id: Optional[str] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        runtime: Optional[str] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        created_on: Optional[datetime.datetime] = None,
        evaluation_count: Optional[int] = None,
        variant_count: Optional[int] = None,
        flow_submit_run_settings: Optional["FlowSubmitRunSettings"] = None,
        inputs: Optional[Dict[str, "FlowInputDefinition"]] = None,
        outputs: Optional[Dict[str, "FlowOutputDefinition"]] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        **kwargs
    ):
        """
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword runtime:
        :paramtype runtime: str
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword evaluation_count:
        :paramtype evaluation_count: int
        :keyword variant_count:
        :paramtype variant_count: int
        :keyword flow_submit_run_settings:
        :paramtype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.FlowInputDefinition]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.FlowOutputDefinition]
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        """
        super(BulkTestDto, self).__init__(**kwargs)
        self.bulk_test_id = bulk_test_id
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.runtime = runtime
        self.created_by = created_by
        self.created_on = created_on
        self.evaluation_count = evaluation_count
        self.variant_count = variant_count
        self.flow_submit_run_settings = flow_submit_run_settings
        self.inputs = inputs
        self.outputs = outputs
        self.batch_inputs = batch_inputs
        self.batch_data_input = batch_data_input


class ChatGroupRole(msrest.serialization.Model):
    """ChatGroupRole.

    :ivar name:
    :vartype name: str
    :ivar role:
    :vartype role: str
    :ivar stop_signal:
    :vartype stop_signal: str
    :ivar path:
    :vartype path: str
    :ivar variant:
    :vartype variant: str
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar resources:
    :vartype resources: ~flow.models.SessionRuntimeResources
    :ivar inputs: Dictionary of :code:`<any>`.
    :vartype inputs: dict[str, any]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'role': {'key': 'role', 'type': 'str'},
        'stop_signal': {'key': 'stop_signal', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
        'variant': {'key': 'variant', 'type': 'str'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'environment_variables': {'key': 'environment_variables', 'type': '{str}'},
        'display_name': {'key': 'display_name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'resources': {'key': 'resources', 'type': 'SessionRuntimeResources'},
        'inputs': {'key': 'inputs', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        role: Optional[str] = None,
        stop_signal: Optional[str] = None,
        path: Optional[str] = None,
        variant: Optional[str] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        resources: Optional["SessionRuntimeResources"] = None,
        inputs: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword role:
        :paramtype role: str
        :keyword stop_signal:
        :paramtype stop_signal: str
        :keyword path:
        :paramtype path: str
        :keyword variant:
        :paramtype variant: str
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword resources:
        :paramtype resources: ~flow.models.SessionRuntimeResources
        :keyword inputs: Dictionary of :code:`<any>`.
        :paramtype inputs: dict[str, any]
        """
        super(ChatGroupRole, self).__init__(**kwargs)
        self.name = name
        self.role = role
        self.stop_signal = stop_signal
        self.path = path
        self.variant = variant
        self.connections = connections
        self.environment_variables = environment_variables
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.resources = resources
        self.inputs = inputs


class CloudError(msrest.serialization.Model):
    """CloudError.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar code:
    :vartype code: str
    :ivar message:
    :vartype message: str
    :ivar target:
    :vartype target: str
    :ivar details:
    :vartype details: list[~flow.models.CloudError]
    :ivar additional_info:
    :vartype additional_info: list[~flow.models.AdditionalErrorInfo]
    """

    _validation = {
        'details': {'readonly': True},
        'additional_info': {'readonly': True},
    }

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[CloudError]'},
        'additional_info': {'key': 'additionalInfo', 'type': '[AdditionalErrorInfo]'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword code:
        :paramtype code: str
        :keyword message:
        :paramtype message: str
        :keyword target:
        :paramtype target: str
        """
        super(CloudError, self).__init__(**kwargs)
        self.code = code
        self.message = message
        self.target = target
        self.details = None
        self.additional_info = None


class CloudPrioritySetting(msrest.serialization.Model):
    """CloudPrioritySetting.

    :ivar scope_priority:
    :vartype scope_priority: ~flow.models.PriorityConfiguration
    :ivar aml_compute_priority:
    :vartype aml_compute_priority: ~flow.models.PriorityConfiguration
    :ivar itp_priority:
    :vartype itp_priority: ~flow.models.PriorityConfiguration
    :ivar singularity_priority:
    :vartype singularity_priority: ~flow.models.PriorityConfiguration
    """

    _attribute_map = {
        'scope_priority': {'key': 'scopePriority', 'type': 'PriorityConfiguration'},
        'aml_compute_priority': {'key': 'AmlComputePriority', 'type': 'PriorityConfiguration'},
        'itp_priority': {'key': 'ItpPriority', 'type': 'PriorityConfiguration'},
        'singularity_priority': {'key': 'SingularityPriority', 'type': 'PriorityConfiguration'},
    }

    def __init__(
        self,
        *,
        scope_priority: Optional["PriorityConfiguration"] = None,
        aml_compute_priority: Optional["PriorityConfiguration"] = None,
        itp_priority: Optional["PriorityConfiguration"] = None,
        singularity_priority: Optional["PriorityConfiguration"] = None,
        **kwargs
    ):
        """
        :keyword scope_priority:
        :paramtype scope_priority: ~flow.models.PriorityConfiguration
        :keyword aml_compute_priority:
        :paramtype aml_compute_priority: ~flow.models.PriorityConfiguration
        :keyword itp_priority:
        :paramtype itp_priority: ~flow.models.PriorityConfiguration
        :keyword singularity_priority:
        :paramtype singularity_priority: ~flow.models.PriorityConfiguration
        """
        super(CloudPrioritySetting, self).__init__(**kwargs)
        self.scope_priority = scope_priority
        self.aml_compute_priority = aml_compute_priority
        self.itp_priority = itp_priority
        self.singularity_priority = singularity_priority


class CloudSettings(msrest.serialization.Model):
    """CloudSettings.

    :ivar linked_settings:
    :vartype linked_settings: list[~flow.models.ParameterAssignment]
    :ivar priority_config:
    :vartype priority_config: ~flow.models.PriorityConfiguration
    :ivar hdi_run_config:
    :vartype hdi_run_config: ~flow.models.HdiRunConfiguration
    :ivar sub_graph_config:
    :vartype sub_graph_config: ~flow.models.SubGraphConfiguration
    :ivar auto_ml_component_config:
    :vartype auto_ml_component_config: ~flow.models.AutoMLComponentConfiguration
    :ivar ap_cloud_config:
    :vartype ap_cloud_config: ~flow.models.APCloudConfiguration
    :ivar scope_cloud_config:
    :vartype scope_cloud_config: ~flow.models.ScopeCloudConfiguration
    :ivar es_cloud_config:
    :vartype es_cloud_config: ~flow.models.EsCloudConfiguration
    :ivar data_transfer_cloud_config:
    :vartype data_transfer_cloud_config: ~flow.models.DataTransferCloudConfiguration
    :ivar aml_spark_cloud_setting:
    :vartype aml_spark_cloud_setting: ~flow.models.AmlSparkCloudSetting
    :ivar fine_tuning_cloud_setting:
    :vartype fine_tuning_cloud_setting: ~flow.models.FineTuningCloudSetting
    :ivar data_transfer_v2_cloud_setting:
    :vartype data_transfer_v2_cloud_setting: ~flow.models.DataTransferV2CloudSetting
    """

    _attribute_map = {
        'linked_settings': {'key': 'linkedSettings', 'type': '[ParameterAssignment]'},
        'priority_config': {'key': 'priorityConfig', 'type': 'PriorityConfiguration'},
        'hdi_run_config': {'key': 'hdiRunConfig', 'type': 'HdiRunConfiguration'},
        'sub_graph_config': {'key': 'subGraphConfig', 'type': 'SubGraphConfiguration'},
        'auto_ml_component_config': {'key': 'autoMLComponentConfig', 'type': 'AutoMLComponentConfiguration'},
        'ap_cloud_config': {'key': 'apCloudConfig', 'type': 'APCloudConfiguration'},
        'scope_cloud_config': {'key': 'scopeCloudConfig', 'type': 'ScopeCloudConfiguration'},
        'es_cloud_config': {'key': 'esCloudConfig', 'type': 'EsCloudConfiguration'},
        'data_transfer_cloud_config': {'key': 'dataTransferCloudConfig', 'type': 'DataTransferCloudConfiguration'},
        'aml_spark_cloud_setting': {'key': 'amlSparkCloudSetting', 'type': 'AmlSparkCloudSetting'},
        'fine_tuning_cloud_setting': {'key': 'fineTuningCloudSetting', 'type': 'FineTuningCloudSetting'},
        'data_transfer_v2_cloud_setting': {'key': 'dataTransferV2CloudSetting', 'type': 'DataTransferV2CloudSetting'},
    }

    def __init__(
        self,
        *,
        linked_settings: Optional[List["ParameterAssignment"]] = None,
        priority_config: Optional["PriorityConfiguration"] = None,
        hdi_run_config: Optional["HdiRunConfiguration"] = None,
        sub_graph_config: Optional["SubGraphConfiguration"] = None,
        auto_ml_component_config: Optional["AutoMLComponentConfiguration"] = None,
        ap_cloud_config: Optional["APCloudConfiguration"] = None,
        scope_cloud_config: Optional["ScopeCloudConfiguration"] = None,
        es_cloud_config: Optional["EsCloudConfiguration"] = None,
        data_transfer_cloud_config: Optional["DataTransferCloudConfiguration"] = None,
        aml_spark_cloud_setting: Optional["AmlSparkCloudSetting"] = None,
        fine_tuning_cloud_setting: Optional["FineTuningCloudSetting"] = None,
        data_transfer_v2_cloud_setting: Optional["DataTransferV2CloudSetting"] = None,
        **kwargs
    ):
        """
        :keyword linked_settings:
        :paramtype linked_settings: list[~flow.models.ParameterAssignment]
        :keyword priority_config:
        :paramtype priority_config: ~flow.models.PriorityConfiguration
        :keyword hdi_run_config:
        :paramtype hdi_run_config: ~flow.models.HdiRunConfiguration
        :keyword sub_graph_config:
        :paramtype sub_graph_config: ~flow.models.SubGraphConfiguration
        :keyword auto_ml_component_config:
        :paramtype auto_ml_component_config: ~flow.models.AutoMLComponentConfiguration
        :keyword ap_cloud_config:
        :paramtype ap_cloud_config: ~flow.models.APCloudConfiguration
        :keyword scope_cloud_config:
        :paramtype scope_cloud_config: ~flow.models.ScopeCloudConfiguration
        :keyword es_cloud_config:
        :paramtype es_cloud_config: ~flow.models.EsCloudConfiguration
        :keyword data_transfer_cloud_config:
        :paramtype data_transfer_cloud_config: ~flow.models.DataTransferCloudConfiguration
        :keyword aml_spark_cloud_setting:
        :paramtype aml_spark_cloud_setting: ~flow.models.AmlSparkCloudSetting
        :keyword fine_tuning_cloud_setting:
        :paramtype fine_tuning_cloud_setting: ~flow.models.FineTuningCloudSetting
        :keyword data_transfer_v2_cloud_setting:
        :paramtype data_transfer_v2_cloud_setting: ~flow.models.DataTransferV2CloudSetting
        """
        super(CloudSettings, self).__init__(**kwargs)
        self.linked_settings = linked_settings
        self.priority_config = priority_config
        self.hdi_run_config = hdi_run_config
        self.sub_graph_config = sub_graph_config
        self.auto_ml_component_config = auto_ml_component_config
        self.ap_cloud_config = ap_cloud_config
        self.scope_cloud_config = scope_cloud_config
        self.es_cloud_config = es_cloud_config
        self.data_transfer_cloud_config = data_transfer_cloud_config
        self.aml_spark_cloud_setting = aml_spark_cloud_setting
        self.fine_tuning_cloud_setting = fine_tuning_cloud_setting
        self.data_transfer_v2_cloud_setting = data_transfer_v2_cloud_setting


class CollieRunSettings(msrest.serialization.Model):
    """CollieRunSettings.

    :ivar aml_compute_name:
    :vartype aml_compute_name: str
    :ivar node_count:
    :vartype node_count: int
    :ivar managed_identity_client_id:
    :vartype managed_identity_client_id: str
    """

    _attribute_map = {
        'aml_compute_name': {'key': 'amlComputeName', 'type': 'str'},
        'node_count': {'key': 'nodeCount', 'type': 'int'},
        'managed_identity_client_id': {'key': 'managedIdentityClientId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        aml_compute_name: Optional[str] = None,
        node_count: Optional[int] = None,
        managed_identity_client_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword aml_compute_name:
        :paramtype aml_compute_name: str
        :keyword node_count:
        :paramtype node_count: int
        :keyword managed_identity_client_id:
        :paramtype managed_identity_client_id: str
        """
        super(CollieRunSettings, self).__init__(**kwargs)
        self.aml_compute_name = aml_compute_name
        self.node_count = node_count
        self.managed_identity_client_id = managed_identity_client_id


class ColumnTransformer(msrest.serialization.Model):
    """ColumnTransformer.

    :ivar fields:
    :vartype fields: list[str]
    :ivar parameters: Anything.
    :vartype parameters: any
    """

    _attribute_map = {
        'fields': {'key': 'fields', 'type': '[str]'},
        'parameters': {'key': 'parameters', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        fields: Optional[List[str]] = None,
        parameters: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword fields:
        :paramtype fields: list[str]
        :keyword parameters: Anything.
        :paramtype parameters: any
        """
        super(ColumnTransformer, self).__init__(**kwargs)
        self.fields = fields
        self.parameters = parameters


class CommandJob(msrest.serialization.Model):
    """CommandJob.

    :ivar job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
     "AutoML", "Spark", "Base", "FineTuning".
    :vartype job_type: str or ~flow.models.JobType
    :ivar code_id:
    :vartype code_id: str
    :ivar command:
    :vartype command: str
    :ivar environment_id:
    :vartype environment_id: str
    :ivar input_data_bindings: Dictionary of :code:`<InputDataBinding>`.
    :vartype input_data_bindings: dict[str, ~flow.models.InputDataBinding]
    :ivar output_data_bindings: Dictionary of :code:`<OutputDataBinding>`.
    :vartype output_data_bindings: dict[str, ~flow.models.OutputDataBinding]
    :ivar distribution:
    :vartype distribution: ~flow.models.DistributionConfiguration
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar parameters: Dictionary of :code:`<any>`.
    :vartype parameters: dict[str, any]
    :ivar autologger_settings:
    :vartype autologger_settings: ~flow.models.MfeInternalAutologgerSettings
    :ivar limits:
    :vartype limits: ~flow.models.CommandJobLimits
    :ivar provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
     "InProgress".
    :vartype provisioning_state: str or ~flow.models.JobProvisioningState
    :ivar parent_job_name:
    :vartype parent_job_name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar status: Possible values include: "NotStarted", "Starting", "Provisioning", "Preparing",
     "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed", "Canceled",
     "NotResponding", "Paused", "Unknown", "Scheduled".
    :vartype status: str or ~flow.models.JobStatus
    :ivar interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
    :vartype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
    :ivar identity:
    :vartype identity: ~flow.models.MfeInternalIdentityConfiguration
    :ivar compute:
    :vartype compute: ~flow.models.ComputeConfiguration
    :ivar priority:
    :vartype priority: int
    :ivar output:
    :vartype output: ~flow.models.JobOutputArtifacts
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar schedule:
    :vartype schedule: ~flow.models.ScheduleBase
    :ivar component_id:
    :vartype component_id: str
    :ivar notification_setting:
    :vartype notification_setting: ~flow.models.NotificationSetting
    :ivar secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
    :vartype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _validation = {
        'command': {'min_length': 1},
    }

    _attribute_map = {
        'job_type': {'key': 'jobType', 'type': 'str'},
        'code_id': {'key': 'codeId', 'type': 'str'},
        'command': {'key': 'command', 'type': 'str'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'input_data_bindings': {'key': 'inputDataBindings', 'type': '{InputDataBinding}'},
        'output_data_bindings': {'key': 'outputDataBindings', 'type': '{OutputDataBinding}'},
        'distribution': {'key': 'distribution', 'type': 'DistributionConfiguration'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'parameters': {'key': 'parameters', 'type': '{object}'},
        'autologger_settings': {'key': 'autologgerSettings', 'type': 'MfeInternalAutologgerSettings'},
        'limits': {'key': 'limits', 'type': 'CommandJobLimits'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'interaction_endpoints': {'key': 'interactionEndpoints', 'type': '{JobEndpoint}'},
        'identity': {'key': 'identity', 'type': 'MfeInternalIdentityConfiguration'},
        'compute': {'key': 'compute', 'type': 'ComputeConfiguration'},
        'priority': {'key': 'priority', 'type': 'int'},
        'output': {'key': 'output', 'type': 'JobOutputArtifacts'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'schedule': {'key': 'schedule', 'type': 'ScheduleBase'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'secrets_configuration': {'key': 'secretsConfiguration', 'type': '{MfeInternalSecretConfiguration}'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        job_type: Optional[Union[str, "JobType"]] = None,
        code_id: Optional[str] = None,
        command: Optional[str] = None,
        environment_id: Optional[str] = None,
        input_data_bindings: Optional[Dict[str, "InputDataBinding"]] = None,
        output_data_bindings: Optional[Dict[str, "OutputDataBinding"]] = None,
        distribution: Optional["DistributionConfiguration"] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        parameters: Optional[Dict[str, Any]] = None,
        autologger_settings: Optional["MfeInternalAutologgerSettings"] = None,
        limits: Optional["CommandJobLimits"] = None,
        provisioning_state: Optional[Union[str, "JobProvisioningState"]] = None,
        parent_job_name: Optional[str] = None,
        display_name: Optional[str] = None,
        experiment_name: Optional[str] = None,
        status: Optional[Union[str, "JobStatus"]] = None,
        interaction_endpoints: Optional[Dict[str, "JobEndpoint"]] = None,
        identity: Optional["MfeInternalIdentityConfiguration"] = None,
        compute: Optional["ComputeConfiguration"] = None,
        priority: Optional[int] = None,
        output: Optional["JobOutputArtifacts"] = None,
        is_archived: Optional[bool] = None,
        schedule: Optional["ScheduleBase"] = None,
        component_id: Optional[str] = None,
        notification_setting: Optional["NotificationSetting"] = None,
        secrets_configuration: Optional[Dict[str, "MfeInternalSecretConfiguration"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
         "AutoML", "Spark", "Base", "FineTuning".
        :paramtype job_type: str or ~flow.models.JobType
        :keyword code_id:
        :paramtype code_id: str
        :keyword command:
        :paramtype command: str
        :keyword environment_id:
        :paramtype environment_id: str
        :keyword input_data_bindings: Dictionary of :code:`<InputDataBinding>`.
        :paramtype input_data_bindings: dict[str, ~flow.models.InputDataBinding]
        :keyword output_data_bindings: Dictionary of :code:`<OutputDataBinding>`.
        :paramtype output_data_bindings: dict[str, ~flow.models.OutputDataBinding]
        :keyword distribution:
        :paramtype distribution: ~flow.models.DistributionConfiguration
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword parameters: Dictionary of :code:`<any>`.
        :paramtype parameters: dict[str, any]
        :keyword autologger_settings:
        :paramtype autologger_settings: ~flow.models.MfeInternalAutologgerSettings
        :keyword limits:
        :paramtype limits: ~flow.models.CommandJobLimits
        :keyword provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
         "InProgress".
        :paramtype provisioning_state: str or ~flow.models.JobProvisioningState
        :keyword parent_job_name:
        :paramtype parent_job_name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword status: Possible values include: "NotStarted", "Starting", "Provisioning",
         "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed",
         "Canceled", "NotResponding", "Paused", "Unknown", "Scheduled".
        :paramtype status: str or ~flow.models.JobStatus
        :keyword interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
        :paramtype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
        :keyword identity:
        :paramtype identity: ~flow.models.MfeInternalIdentityConfiguration
        :keyword compute:
        :paramtype compute: ~flow.models.ComputeConfiguration
        :keyword priority:
        :paramtype priority: int
        :keyword output:
        :paramtype output: ~flow.models.JobOutputArtifacts
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword schedule:
        :paramtype schedule: ~flow.models.ScheduleBase
        :keyword component_id:
        :paramtype component_id: str
        :keyword notification_setting:
        :paramtype notification_setting: ~flow.models.NotificationSetting
        :keyword secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
        :paramtype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(CommandJob, self).__init__(**kwargs)
        self.job_type = job_type
        self.code_id = code_id
        self.command = command
        self.environment_id = environment_id
        self.input_data_bindings = input_data_bindings
        self.output_data_bindings = output_data_bindings
        self.distribution = distribution
        self.environment_variables = environment_variables
        self.parameters = parameters
        self.autologger_settings = autologger_settings
        self.limits = limits
        self.provisioning_state = provisioning_state
        self.parent_job_name = parent_job_name
        self.display_name = display_name
        self.experiment_name = experiment_name
        self.status = status
        self.interaction_endpoints = interaction_endpoints
        self.identity = identity
        self.compute = compute
        self.priority = priority
        self.output = output
        self.is_archived = is_archived
        self.schedule = schedule
        self.component_id = component_id
        self.notification_setting = notification_setting
        self.secrets_configuration = secrets_configuration
        self.description = description
        self.tags = tags
        self.properties = properties


class CommandJobLimits(msrest.serialization.Model):
    """CommandJobLimits.

    :ivar job_limits_type: Possible values include: "Command", "Sweep".
    :vartype job_limits_type: str or ~flow.models.JobLimitsType
    :ivar timeout:
    :vartype timeout: str
    """

    _attribute_map = {
        'job_limits_type': {'key': 'jobLimitsType', 'type': 'str'},
        'timeout': {'key': 'timeout', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        job_limits_type: Optional[Union[str, "JobLimitsType"]] = None,
        timeout: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword job_limits_type: Possible values include: "Command", "Sweep".
        :paramtype job_limits_type: str or ~flow.models.JobLimitsType
        :keyword timeout:
        :paramtype timeout: str
        """
        super(CommandJobLimits, self).__init__(**kwargs)
        self.job_limits_type = job_limits_type
        self.timeout = timeout


class CommandReturnCodeConfig(msrest.serialization.Model):
    """CommandReturnCodeConfig.

    :ivar return_code: Possible values include: "Zero", "ZeroOrGreater".
    :vartype return_code: str or ~flow.models.SuccessfulCommandReturnCode
    :ivar successful_return_codes:
    :vartype successful_return_codes: list[int]
    """

    _attribute_map = {
        'return_code': {'key': 'returnCode', 'type': 'str'},
        'successful_return_codes': {'key': 'successfulReturnCodes', 'type': '[int]'},
    }

    def __init__(
        self,
        *,
        return_code: Optional[Union[str, "SuccessfulCommandReturnCode"]] = None,
        successful_return_codes: Optional[List[int]] = None,
        **kwargs
    ):
        """
        :keyword return_code: Possible values include: "Zero", "ZeroOrGreater".
        :paramtype return_code: str or ~flow.models.SuccessfulCommandReturnCode
        :keyword successful_return_codes:
        :paramtype successful_return_codes: list[int]
        """
        super(CommandReturnCodeConfig, self).__init__(**kwargs)
        self.return_code = return_code
        self.successful_return_codes = successful_return_codes


class ComponentConfiguration(msrest.serialization.Model):
    """ComponentConfiguration.

    :ivar component_identifier:
    :vartype component_identifier: str
    """

    _attribute_map = {
        'component_identifier': {'key': 'componentIdentifier', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        component_identifier: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword component_identifier:
        :paramtype component_identifier: str
        """
        super(ComponentConfiguration, self).__init__(**kwargs)
        self.component_identifier = component_identifier


class ComponentInput(msrest.serialization.Model):
    """ComponentInput.

    :ivar name:
    :vartype name: str
    :ivar optional:
    :vartype optional: bool
    :ivar description:
    :vartype description: str
    :ivar type:
    :vartype type: str
    :ivar default:
    :vartype default: str
    :ivar enum:
    :vartype enum: list[str]
    :ivar min:
    :vartype min: str
    :ivar max:
    :vartype max: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'optional': {'key': 'optional', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'default': {'key': 'default', 'type': 'str'},
        'enum': {'key': 'enum', 'type': '[str]'},
        'min': {'key': 'min', 'type': 'str'},
        'max': {'key': 'max', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        optional: Optional[bool] = None,
        description: Optional[str] = None,
        type: Optional[str] = None,
        default: Optional[str] = None,
        enum: Optional[List[str]] = None,
        min: Optional[str] = None,
        max: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword optional:
        :paramtype optional: bool
        :keyword description:
        :paramtype description: str
        :keyword type:
        :paramtype type: str
        :keyword default:
        :paramtype default: str
        :keyword enum:
        :paramtype enum: list[str]
        :keyword min:
        :paramtype min: str
        :keyword max:
        :paramtype max: str
        """
        super(ComponentInput, self).__init__(**kwargs)
        self.name = name
        self.optional = optional
        self.description = description
        self.type = type
        self.default = default
        self.enum = enum
        self.min = min
        self.max = max


class ComponentJob(msrest.serialization.Model):
    """ComponentJob.

    :ivar compute:
    :vartype compute: ~flow.models.ComputeConfiguration
    :ivar component_id:
    :vartype component_id: str
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.ComponentJobInput]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.ComponentJobOutput]
    """

    _attribute_map = {
        'compute': {'key': 'compute', 'type': 'ComputeConfiguration'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{ComponentJobInput}'},
        'outputs': {'key': 'outputs', 'type': '{ComponentJobOutput}'},
    }

    def __init__(
        self,
        *,
        compute: Optional["ComputeConfiguration"] = None,
        component_id: Optional[str] = None,
        inputs: Optional[Dict[str, "ComponentJobInput"]] = None,
        outputs: Optional[Dict[str, "ComponentJobOutput"]] = None,
        **kwargs
    ):
        """
        :keyword compute:
        :paramtype compute: ~flow.models.ComputeConfiguration
        :keyword component_id:
        :paramtype component_id: str
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.ComponentJobInput]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.ComponentJobOutput]
        """
        super(ComponentJob, self).__init__(**kwargs)
        self.compute = compute
        self.component_id = component_id
        self.inputs = inputs
        self.outputs = outputs


class ComponentJobInput(msrest.serialization.Model):
    """ComponentJobInput.

    :ivar data:
    :vartype data: ~flow.models.InputData
    :ivar input_binding:
    :vartype input_binding: str
    """

    _attribute_map = {
        'data': {'key': 'data', 'type': 'InputData'},
        'input_binding': {'key': 'inputBinding', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data: Optional["InputData"] = None,
        input_binding: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data:
        :paramtype data: ~flow.models.InputData
        :keyword input_binding:
        :paramtype input_binding: str
        """
        super(ComponentJobInput, self).__init__(**kwargs)
        self.data = data
        self.input_binding = input_binding


class ComponentJobOutput(msrest.serialization.Model):
    """ComponentJobOutput.

    :ivar data:
    :vartype data: ~flow.models.MfeInternalOutputData
    :ivar output_binding:
    :vartype output_binding: str
    """

    _attribute_map = {
        'data': {'key': 'data', 'type': 'MfeInternalOutputData'},
        'output_binding': {'key': 'outputBinding', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data: Optional["MfeInternalOutputData"] = None,
        output_binding: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data:
        :paramtype data: ~flow.models.MfeInternalOutputData
        :keyword output_binding:
        :paramtype output_binding: str
        """
        super(ComponentJobOutput, self).__init__(**kwargs)
        self.data = data
        self.output_binding = output_binding


class ComponentNameAndDefaultVersion(msrest.serialization.Model):
    """ComponentNameAndDefaultVersion.

    :ivar component_name:
    :vartype component_name: str
    :ivar version:
    :vartype version: str
    :ivar feed_name:
    :vartype feed_name: str
    :ivar registry_name:
    :vartype registry_name: str
    """

    _attribute_map = {
        'component_name': {'key': 'componentName', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        component_name: Optional[str] = None,
        version: Optional[str] = None,
        feed_name: Optional[str] = None,
        registry_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword component_name:
        :paramtype component_name: str
        :keyword version:
        :paramtype version: str
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword registry_name:
        :paramtype registry_name: str
        """
        super(ComponentNameAndDefaultVersion, self).__init__(**kwargs)
        self.component_name = component_name
        self.version = version
        self.feed_name = feed_name
        self.registry_name = registry_name


class ComponentNameMetaInfo(msrest.serialization.Model):
    """ComponentNameMetaInfo.

    :ivar feed_name:
    :vartype feed_name: str
    :ivar component_name:
    :vartype component_name: str
    :ivar component_version:
    :vartype component_version: str
    :ivar registry_name:
    :vartype registry_name: str
    """

    _attribute_map = {
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'component_name': {'key': 'componentName', 'type': 'str'},
        'component_version': {'key': 'componentVersion', 'type': 'str'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        feed_name: Optional[str] = None,
        component_name: Optional[str] = None,
        component_version: Optional[str] = None,
        registry_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword component_name:
        :paramtype component_name: str
        :keyword component_version:
        :paramtype component_version: str
        :keyword registry_name:
        :paramtype registry_name: str
        """
        super(ComponentNameMetaInfo, self).__init__(**kwargs)
        self.feed_name = feed_name
        self.component_name = component_name
        self.component_version = component_version
        self.registry_name = registry_name


class ComponentOutput(msrest.serialization.Model):
    """ComponentOutput.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword type:
        :paramtype type: str
        """
        super(ComponentOutput, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.type = type


class ComponentPreflightResult(msrest.serialization.Model):
    """ComponentPreflightResult.

    :ivar error_details:
    :vartype error_details: list[~flow.models.RootError]
    """

    _attribute_map = {
        'error_details': {'key': 'errorDetails', 'type': '[RootError]'},
    }

    def __init__(
        self,
        *,
        error_details: Optional[List["RootError"]] = None,
        **kwargs
    ):
        """
        :keyword error_details:
        :paramtype error_details: list[~flow.models.RootError]
        """
        super(ComponentPreflightResult, self).__init__(**kwargs)
        self.error_details = error_details


class ComponentSpecMetaInfo(msrest.serialization.Model):
    """ComponentSpecMetaInfo.

    :ivar component_spec: Anything.
    :vartype component_spec: any
    :ivar component_version:
    :vartype component_version: str
    :ivar is_anonymous:
    :vartype is_anonymous: bool
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar component_name:
    :vartype component_name: str
    :ivar description:
    :vartype description: str
    :ivar is_archived:
    :vartype is_archived: bool
    """

    _attribute_map = {
        'component_spec': {'key': 'componentSpec', 'type': 'object'},
        'component_version': {'key': 'componentVersion', 'type': 'str'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'component_name': {'key': 'componentName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        component_spec: Optional[Any] = None,
        component_version: Optional[str] = None,
        is_anonymous: Optional[bool] = None,
        properties: Optional[Dict[str, str]] = None,
        tags: Optional[Dict[str, str]] = None,
        component_name: Optional[str] = None,
        description: Optional[str] = None,
        is_archived: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword component_spec: Anything.
        :paramtype component_spec: any
        :keyword component_version:
        :paramtype component_version: str
        :keyword is_anonymous:
        :paramtype is_anonymous: bool
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword component_name:
        :paramtype component_name: str
        :keyword description:
        :paramtype description: str
        :keyword is_archived:
        :paramtype is_archived: bool
        """
        super(ComponentSpecMetaInfo, self).__init__(**kwargs)
        self.component_spec = component_spec
        self.component_version = component_version
        self.is_anonymous = is_anonymous
        self.properties = properties
        self.tags = tags
        self.component_name = component_name
        self.description = description
        self.is_archived = is_archived


class ComponentUpdateRequest(msrest.serialization.Model):
    """ComponentUpdateRequest.

    :ivar original_module_entity:
    :vartype original_module_entity: ~flow.models.ModuleEntity
    :ivar update_module_entity:
    :vartype update_module_entity: ~flow.models.ModuleEntity
    :ivar module_name:
    :vartype module_name: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar overwrite_with_original_name_and_version:
    :vartype overwrite_with_original_name_and_version: bool
    :ivar snapshot_id:
    :vartype snapshot_id: str
    """

    _attribute_map = {
        'original_module_entity': {'key': 'originalModuleEntity', 'type': 'ModuleEntity'},
        'update_module_entity': {'key': 'updateModuleEntity', 'type': 'ModuleEntity'},
        'module_name': {'key': 'moduleName', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'overwrite_with_original_name_and_version': {'key': 'overwriteWithOriginalNameAndVersion', 'type': 'bool'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        original_module_entity: Optional["ModuleEntity"] = None,
        update_module_entity: Optional["ModuleEntity"] = None,
        module_name: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        overwrite_with_original_name_and_version: Optional[bool] = None,
        snapshot_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword original_module_entity:
        :paramtype original_module_entity: ~flow.models.ModuleEntity
        :keyword update_module_entity:
        :paramtype update_module_entity: ~flow.models.ModuleEntity
        :keyword module_name:
        :paramtype module_name: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword overwrite_with_original_name_and_version:
        :paramtype overwrite_with_original_name_and_version: bool
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        """
        super(ComponentUpdateRequest, self).__init__(**kwargs)
        self.original_module_entity = original_module_entity
        self.update_module_entity = update_module_entity
        self.module_name = module_name
        self.properties = properties
        self.overwrite_with_original_name_and_version = overwrite_with_original_name_and_version
        self.snapshot_id = snapshot_id


class ComponentValidationRequest(msrest.serialization.Model):
    """ComponentValidationRequest.

    :ivar component_identifier:
    :vartype component_identifier: str
    :ivar compute_identity:
    :vartype compute_identity: ~flow.models.ComputeIdentityDto
    :ivar execution_context_dto:
    :vartype execution_context_dto: ~flow.models.ExecutionContextDto
    :ivar environment_definition:
    :vartype environment_definition: ~flow.models.EnvironmentDefinitionDto
    :ivar data_port_dtos:
    :vartype data_port_dtos: list[~flow.models.DataPortDto]
    """

    _attribute_map = {
        'component_identifier': {'key': 'componentIdentifier', 'type': 'str'},
        'compute_identity': {'key': 'computeIdentity', 'type': 'ComputeIdentityDto'},
        'execution_context_dto': {'key': 'executionContextDto', 'type': 'ExecutionContextDto'},
        'environment_definition': {'key': 'environmentDefinition', 'type': 'EnvironmentDefinitionDto'},
        'data_port_dtos': {'key': 'dataPortDtos', 'type': '[DataPortDto]'},
    }

    def __init__(
        self,
        *,
        component_identifier: Optional[str] = None,
        compute_identity: Optional["ComputeIdentityDto"] = None,
        execution_context_dto: Optional["ExecutionContextDto"] = None,
        environment_definition: Optional["EnvironmentDefinitionDto"] = None,
        data_port_dtos: Optional[List["DataPortDto"]] = None,
        **kwargs
    ):
        """
        :keyword component_identifier:
        :paramtype component_identifier: str
        :keyword compute_identity:
        :paramtype compute_identity: ~flow.models.ComputeIdentityDto
        :keyword execution_context_dto:
        :paramtype execution_context_dto: ~flow.models.ExecutionContextDto
        :keyword environment_definition:
        :paramtype environment_definition: ~flow.models.EnvironmentDefinitionDto
        :keyword data_port_dtos:
        :paramtype data_port_dtos: list[~flow.models.DataPortDto]
        """
        super(ComponentValidationRequest, self).__init__(**kwargs)
        self.component_identifier = component_identifier
        self.compute_identity = compute_identity
        self.execution_context_dto = execution_context_dto
        self.environment_definition = environment_definition
        self.data_port_dtos = data_port_dtos


class ComponentValidationResponse(msrest.serialization.Model):
    """ComponentValidationResponse.

    :ivar status: Possible values include: "Succeeded", "Failed".
    :vartype status: str or ~flow.models.ValidationStatus
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'str'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
    }

    def __init__(
        self,
        *,
        status: Optional[Union[str, "ValidationStatus"]] = None,
        error: Optional["ErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword status: Possible values include: "Succeeded", "Failed".
        :paramtype status: str or ~flow.models.ValidationStatus
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        """
        super(ComponentValidationResponse, self).__init__(**kwargs)
        self.status = status
        self.error = error


class Compute(msrest.serialization.Model):
    """Compute.

    :ivar target:
    :vartype target: str
    :ivar target_type:
    :vartype target_type: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar gpu_count:
    :vartype gpu_count: int
    :ivar priority:
    :vartype priority: str
    :ivar region:
    :vartype region: str
    :ivar arm_id:
    :vartype arm_id: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'target': {'key': 'target', 'type': 'str'},
        'target_type': {'key': 'targetType', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'gpu_count': {'key': 'gpuCount', 'type': 'int'},
        'priority': {'key': 'priority', 'type': 'str'},
        'region': {'key': 'region', 'type': 'str'},
        'arm_id': {'key': 'armId', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        target: Optional[str] = None,
        target_type: Optional[str] = None,
        vm_size: Optional[str] = None,
        instance_type: Optional[str] = None,
        instance_count: Optional[int] = None,
        gpu_count: Optional[int] = None,
        priority: Optional[str] = None,
        region: Optional[str] = None,
        arm_id: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword target:
        :paramtype target: str
        :keyword target_type:
        :paramtype target_type: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword gpu_count:
        :paramtype gpu_count: int
        :keyword priority:
        :paramtype priority: str
        :keyword region:
        :paramtype region: str
        :keyword arm_id:
        :paramtype arm_id: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(Compute, self).__init__(**kwargs)
        self.target = target
        self.target_type = target_type
        self.vm_size = vm_size
        self.instance_type = instance_type
        self.instance_count = instance_count
        self.gpu_count = gpu_count
        self.priority = priority
        self.region = region
        self.arm_id = arm_id
        self.properties = properties


class ComputeConfiguration(msrest.serialization.Model):
    """ComputeConfiguration.

    :ivar target:
    :vartype target: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar max_instance_count:
    :vartype max_instance_count: int
    :ivar is_local:
    :vartype is_local: bool
    :ivar location:
    :vartype location: str
    :ivar is_clusterless:
    :vartype is_clusterless: bool
    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_priority:
    :vartype instance_priority: str
    :ivar job_priority:
    :vartype job_priority: int
    :ivar shm_size:
    :vartype shm_size: str
    :ivar docker_args:
    :vartype docker_args: str
    :ivar locations:
    :vartype locations: list[str]
    :ivar properties: Dictionary of :code:`<any>`.
    :vartype properties: dict[str, any]
    """

    _attribute_map = {
        'target': {'key': 'target', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'max_instance_count': {'key': 'maxInstanceCount', 'type': 'int'},
        'is_local': {'key': 'isLocal', 'type': 'bool'},
        'location': {'key': 'location', 'type': 'str'},
        'is_clusterless': {'key': 'isClusterless', 'type': 'bool'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_priority': {'key': 'instancePriority', 'type': 'str'},
        'job_priority': {'key': 'jobPriority', 'type': 'int'},
        'shm_size': {'key': 'shmSize', 'type': 'str'},
        'docker_args': {'key': 'dockerArgs', 'type': 'str'},
        'locations': {'key': 'locations', 'type': '[str]'},
        'properties': {'key': 'properties', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        target: Optional[str] = None,
        instance_count: Optional[int] = None,
        max_instance_count: Optional[int] = None,
        is_local: Optional[bool] = None,
        location: Optional[str] = None,
        is_clusterless: Optional[bool] = None,
        instance_type: Optional[str] = None,
        instance_priority: Optional[str] = None,
        job_priority: Optional[int] = None,
        shm_size: Optional[str] = None,
        docker_args: Optional[str] = None,
        locations: Optional[List[str]] = None,
        properties: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword target:
        :paramtype target: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword max_instance_count:
        :paramtype max_instance_count: int
        :keyword is_local:
        :paramtype is_local: bool
        :keyword location:
        :paramtype location: str
        :keyword is_clusterless:
        :paramtype is_clusterless: bool
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_priority:
        :paramtype instance_priority: str
        :keyword job_priority:
        :paramtype job_priority: int
        :keyword shm_size:
        :paramtype shm_size: str
        :keyword docker_args:
        :paramtype docker_args: str
        :keyword locations:
        :paramtype locations: list[str]
        :keyword properties: Dictionary of :code:`<any>`.
        :paramtype properties: dict[str, any]
        """
        super(ComputeConfiguration, self).__init__(**kwargs)
        self.target = target
        self.instance_count = instance_count
        self.max_instance_count = max_instance_count
        self.is_local = is_local
        self.location = location
        self.is_clusterless = is_clusterless
        self.instance_type = instance_type
        self.instance_priority = instance_priority
        self.job_priority = job_priority
        self.shm_size = shm_size
        self.docker_args = docker_args
        self.locations = locations
        self.properties = properties


class ComputeContract(msrest.serialization.Model):
    """ComputeContract.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: str
    :ivar location:
    :vartype location: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar identity:
    :vartype identity: ~flow.models.ComputeIdentityContract
    :ivar properties:
    :vartype properties: ~flow.models.ComputeProperties
    """

    _validation = {
        'type': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'identity': {'key': 'identity', 'type': 'ComputeIdentityContract'},
        'properties': {'key': 'properties', 'type': 'ComputeProperties'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        location: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        identity: Optional["ComputeIdentityContract"] = None,
        properties: Optional["ComputeProperties"] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword location:
        :paramtype location: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword identity:
        :paramtype identity: ~flow.models.ComputeIdentityContract
        :keyword properties:
        :paramtype properties: ~flow.models.ComputeProperties
        """
        super(ComputeContract, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.type = None
        self.location = location
        self.tags = tags
        self.identity = identity
        self.properties = properties


class ComputeIdentityContract(msrest.serialization.Model):
    """ComputeIdentityContract.

    :ivar type:
    :vartype type: str
    :ivar system_identity_url:
    :vartype system_identity_url: str
    :ivar principal_id:
    :vartype principal_id: str
    :ivar tenant_id:
    :vartype tenant_id: str
    :ivar client_id:
    :vartype client_id: str
    :ivar client_secret_url:
    :vartype client_secret_url: str
    :ivar user_assigned_identities: This is a dictionary.
    :vartype user_assigned_identities: dict[str, ~flow.models.ComputeRPUserAssignedIdentity]
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'system_identity_url': {'key': 'systemIdentityUrl', 'type': 'str'},
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'client_secret_url': {'key': 'clientSecretUrl', 'type': 'str'},
        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{ComputeRPUserAssignedIdentity}'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        system_identity_url: Optional[str] = None,
        principal_id: Optional[str] = None,
        tenant_id: Optional[str] = None,
        client_id: Optional[str] = None,
        client_secret_url: Optional[str] = None,
        user_assigned_identities: Optional[Dict[str, "ComputeRPUserAssignedIdentity"]] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword system_identity_url:
        :paramtype system_identity_url: str
        :keyword principal_id:
        :paramtype principal_id: str
        :keyword tenant_id:
        :paramtype tenant_id: str
        :keyword client_id:
        :paramtype client_id: str
        :keyword client_secret_url:
        :paramtype client_secret_url: str
        :keyword user_assigned_identities: This is a dictionary.
        :paramtype user_assigned_identities: dict[str, ~flow.models.ComputeRPUserAssignedIdentity]
        """
        super(ComputeIdentityContract, self).__init__(**kwargs)
        self.type = type
        self.system_identity_url = system_identity_url
        self.principal_id = principal_id
        self.tenant_id = tenant_id
        self.client_id = client_id
        self.client_secret_url = client_secret_url
        self.user_assigned_identities = user_assigned_identities


class ComputeIdentityDto(msrest.serialization.Model):
    """ComputeIdentityDto.

    :ivar compute_name:
    :vartype compute_name: str
    :ivar compute_target_type: Possible values include: "Local", "Remote", "HdiCluster",
     "ContainerInstance", "AmlCompute", "ComputeInstance", "Cmk8s", "SynapseSpark", "Kubernetes",
     "Aisc", "GlobalJobDispatcher", "Databricks", "MockedCompute".
    :vartype compute_target_type: str or ~flow.models.ComputeTargetType
    :ivar intellectual_property_publisher:
    :vartype intellectual_property_publisher: str
    """

    _attribute_map = {
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'compute_target_type': {'key': 'computeTargetType', 'type': 'str'},
        'intellectual_property_publisher': {'key': 'intellectualPropertyPublisher', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        compute_name: Optional[str] = None,
        compute_target_type: Optional[Union[str, "ComputeTargetType"]] = None,
        intellectual_property_publisher: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword compute_target_type: Possible values include: "Local", "Remote", "HdiCluster",
         "ContainerInstance", "AmlCompute", "ComputeInstance", "Cmk8s", "SynapseSpark", "Kubernetes",
         "Aisc", "GlobalJobDispatcher", "Databricks", "MockedCompute".
        :paramtype compute_target_type: str or ~flow.models.ComputeTargetType
        :keyword intellectual_property_publisher:
        :paramtype intellectual_property_publisher: str
        """
        super(ComputeIdentityDto, self).__init__(**kwargs)
        self.compute_name = compute_name
        self.compute_target_type = compute_target_type
        self.intellectual_property_publisher = intellectual_property_publisher


class ComputeInfo(msrest.serialization.Model):
    """ComputeInfo.

    :ivar name:
    :vartype name: str
    :ivar compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT", "AKSENDPOINT",
     "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE", "UNKNOWN".
    :vartype compute_type: str or ~flow.models.ComputeEnvironmentType
    :ivar is_ssl_enabled:
    :vartype is_ssl_enabled: bool
    :ivar is_gpu_type:
    :vartype is_gpu_type: bool
    :ivar cluster_purpose:
    :vartype cluster_purpose: str
    :ivar public_ip_address:
    :vartype public_ip_address: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'is_ssl_enabled': {'key': 'isSslEnabled', 'type': 'bool'},
        'is_gpu_type': {'key': 'isGpuType', 'type': 'bool'},
        'cluster_purpose': {'key': 'clusterPurpose', 'type': 'str'},
        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        compute_type: Optional[Union[str, "ComputeEnvironmentType"]] = None,
        is_ssl_enabled: Optional[bool] = None,
        is_gpu_type: Optional[bool] = None,
        cluster_purpose: Optional[str] = None,
        public_ip_address: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT",
         "AKSENDPOINT", "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE",
         "UNKNOWN".
        :paramtype compute_type: str or ~flow.models.ComputeEnvironmentType
        :keyword is_ssl_enabled:
        :paramtype is_ssl_enabled: bool
        :keyword is_gpu_type:
        :paramtype is_gpu_type: bool
        :keyword cluster_purpose:
        :paramtype cluster_purpose: str
        :keyword public_ip_address:
        :paramtype public_ip_address: str
        """
        super(ComputeInfo, self).__init__(**kwargs)
        self.name = name
        self.compute_type = compute_type
        self.is_ssl_enabled = is_ssl_enabled
        self.is_gpu_type = is_gpu_type
        self.cluster_purpose = cluster_purpose
        self.public_ip_address = public_ip_address


class ComputeProperties(msrest.serialization.Model):
    """ComputeProperties.

    All required parameters must be populated in order to send to Azure.

    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar modified_on:
    :vartype modified_on: ~datetime.datetime
    :ivar disable_local_auth:
    :vartype disable_local_auth: bool
    :ivar description:
    :vartype description: str
    :ivar resource_id:
    :vartype resource_id: str
    :ivar compute_type: Required.
    :vartype compute_type: str
    :ivar compute_location:
    :vartype compute_location: str
    :ivar provisioning_state: Possible values include: "Unknown", "Updating", "Creating",
     "Deleting", "Accepted", "Succeeded", "Failed", "Canceled".
    :vartype provisioning_state: str or ~flow.models.ProvisioningState
    :ivar provisioning_errors:
    :vartype provisioning_errors: list[~flow.models.ODataErrorResponse]
    :ivar provisioning_warnings: This is a dictionary.
    :vartype provisioning_warnings: dict[str, str]
    :ivar is_attached_compute:
    :vartype is_attached_compute: bool
    :ivar properties: Any object.
    :vartype properties: any
    :ivar status:
    :vartype status: ~flow.models.ComputeStatus
    :ivar warnings:
    :vartype warnings: list[~flow.models.ComputeWarning]
    """

    _validation = {
        'compute_type': {'required': True, 'min_length': 1},
    }

    _attribute_map = {
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'disable_local_auth': {'key': 'disableLocalAuth', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_location': {'key': 'computeLocation', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'provisioning_errors': {'key': 'provisioningErrors', 'type': '[ODataErrorResponse]'},
        'provisioning_warnings': {'key': 'provisioningWarnings', 'type': '{str}'},
        'is_attached_compute': {'key': 'isAttachedCompute', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': 'object'},
        'status': {'key': 'status', 'type': 'ComputeStatus'},
        'warnings': {'key': 'warnings', 'type': '[ComputeWarning]'},
    }

    def __init__(
        self,
        *,
        compute_type: str,
        created_on: Optional[datetime.datetime] = None,
        modified_on: Optional[datetime.datetime] = None,
        disable_local_auth: Optional[bool] = None,
        description: Optional[str] = None,
        resource_id: Optional[str] = None,
        compute_location: Optional[str] = None,
        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
        provisioning_errors: Optional[List["ODataErrorResponse"]] = None,
        provisioning_warnings: Optional[Dict[str, str]] = None,
        is_attached_compute: Optional[bool] = None,
        properties: Optional[Any] = None,
        status: Optional["ComputeStatus"] = None,
        warnings: Optional[List["ComputeWarning"]] = None,
        **kwargs
    ):
        """
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword modified_on:
        :paramtype modified_on: ~datetime.datetime
        :keyword disable_local_auth:
        :paramtype disable_local_auth: bool
        :keyword description:
        :paramtype description: str
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword compute_type: Required.
        :paramtype compute_type: str
        :keyword compute_location:
        :paramtype compute_location: str
        :keyword provisioning_state: Possible values include: "Unknown", "Updating", "Creating",
         "Deleting", "Accepted", "Succeeded", "Failed", "Canceled".
        :paramtype provisioning_state: str or ~flow.models.ProvisioningState
        :keyword provisioning_errors:
        :paramtype provisioning_errors: list[~flow.models.ODataErrorResponse]
        :keyword provisioning_warnings: This is a dictionary.
        :paramtype provisioning_warnings: dict[str, str]
        :keyword is_attached_compute:
        :paramtype is_attached_compute: bool
        :keyword properties: Any object.
        :paramtype properties: any
        :keyword status:
        :paramtype status: ~flow.models.ComputeStatus
        :keyword warnings:
        :paramtype warnings: list[~flow.models.ComputeWarning]
        """
        super(ComputeProperties, self).__init__(**kwargs)
        self.created_on = created_on
        self.modified_on = modified_on
        self.disable_local_auth = disable_local_auth
        self.description = description
        self.resource_id = resource_id
        self.compute_type = compute_type
        self.compute_location = compute_location
        self.provisioning_state = provisioning_state
        self.provisioning_errors = provisioning_errors
        self.provisioning_warnings = provisioning_warnings
        self.is_attached_compute = is_attached_compute
        self.properties = properties
        self.status = status
        self.warnings = warnings


class ComputeRequest(msrest.serialization.Model):
    """ComputeRequest.

    :ivar node_count:
    :vartype node_count: int
    :ivar gpu_count:
    :vartype gpu_count: int
    """

    _attribute_map = {
        'node_count': {'key': 'nodeCount', 'type': 'int'},
        'gpu_count': {'key': 'gpuCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        node_count: Optional[int] = None,
        gpu_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword node_count:
        :paramtype node_count: int
        :keyword gpu_count:
        :paramtype gpu_count: int
        """
        super(ComputeRequest, self).__init__(**kwargs)
        self.node_count = node_count
        self.gpu_count = gpu_count


class ComputeRPUserAssignedIdentity(msrest.serialization.Model):
    """ComputeRPUserAssignedIdentity.

    :ivar principal_id:
    :vartype principal_id: str
    :ivar tenant_id:
    :vartype tenant_id: str
    :ivar client_id:
    :vartype client_id: str
    :ivar client_secret_url:
    :vartype client_secret_url: str
    :ivar resource_id:
    :vartype resource_id: str
    """

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'client_secret_url': {'key': 'clientSecretUrl', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        principal_id: Optional[str] = None,
        tenant_id: Optional[str] = None,
        client_id: Optional[str] = None,
        client_secret_url: Optional[str] = None,
        resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword principal_id:
        :paramtype principal_id: str
        :keyword tenant_id:
        :paramtype tenant_id: str
        :keyword client_id:
        :paramtype client_id: str
        :keyword client_secret_url:
        :paramtype client_secret_url: str
        :keyword resource_id:
        :paramtype resource_id: str
        """
        super(ComputeRPUserAssignedIdentity, self).__init__(**kwargs)
        self.principal_id = principal_id
        self.tenant_id = tenant_id
        self.client_id = client_id
        self.client_secret_url = client_secret_url
        self.resource_id = resource_id


class ComputeSetting(msrest.serialization.Model):
    """ComputeSetting.

    :ivar name:
    :vartype name: str
    :ivar compute_type: Possible values include: "BatchAi", "MLC", "HdiCluster", "RemoteDocker",
     "Databricks", "Aisc".
    :vartype compute_type: str or ~flow.models.ComputeType
    :ivar batch_ai_compute_info:
    :vartype batch_ai_compute_info: ~flow.models.BatchAiComputeInfo
    :ivar remote_docker_compute_info:
    :vartype remote_docker_compute_info: ~flow.models.RemoteDockerComputeInfo
    :ivar hdi_cluster_compute_info:
    :vartype hdi_cluster_compute_info: ~flow.models.HdiClusterComputeInfo
    :ivar mlc_compute_info:
    :vartype mlc_compute_info: ~flow.models.MlcComputeInfo
    :ivar databricks_compute_info:
    :vartype databricks_compute_info: ~flow.models.DatabricksComputeInfo
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'batch_ai_compute_info': {'key': 'batchAiComputeInfo', 'type': 'BatchAiComputeInfo'},
        'remote_docker_compute_info': {'key': 'remoteDockerComputeInfo', 'type': 'RemoteDockerComputeInfo'},
        'hdi_cluster_compute_info': {'key': 'hdiClusterComputeInfo', 'type': 'HdiClusterComputeInfo'},
        'mlc_compute_info': {'key': 'mlcComputeInfo', 'type': 'MlcComputeInfo'},
        'databricks_compute_info': {'key': 'databricksComputeInfo', 'type': 'DatabricksComputeInfo'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        compute_type: Optional[Union[str, "ComputeType"]] = None,
        batch_ai_compute_info: Optional["BatchAiComputeInfo"] = None,
        remote_docker_compute_info: Optional["RemoteDockerComputeInfo"] = None,
        hdi_cluster_compute_info: Optional["HdiClusterComputeInfo"] = None,
        mlc_compute_info: Optional["MlcComputeInfo"] = None,
        databricks_compute_info: Optional["DatabricksComputeInfo"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword compute_type: Possible values include: "BatchAi", "MLC", "HdiCluster", "RemoteDocker",
         "Databricks", "Aisc".
        :paramtype compute_type: str or ~flow.models.ComputeType
        :keyword batch_ai_compute_info:
        :paramtype batch_ai_compute_info: ~flow.models.BatchAiComputeInfo
        :keyword remote_docker_compute_info:
        :paramtype remote_docker_compute_info: ~flow.models.RemoteDockerComputeInfo
        :keyword hdi_cluster_compute_info:
        :paramtype hdi_cluster_compute_info: ~flow.models.HdiClusterComputeInfo
        :keyword mlc_compute_info:
        :paramtype mlc_compute_info: ~flow.models.MlcComputeInfo
        :keyword databricks_compute_info:
        :paramtype databricks_compute_info: ~flow.models.DatabricksComputeInfo
        """
        super(ComputeSetting, self).__init__(**kwargs)
        self.name = name
        self.compute_type = compute_type
        self.batch_ai_compute_info = batch_ai_compute_info
        self.remote_docker_compute_info = remote_docker_compute_info
        self.hdi_cluster_compute_info = hdi_cluster_compute_info
        self.mlc_compute_info = mlc_compute_info
        self.databricks_compute_info = databricks_compute_info


class ComputeStatus(msrest.serialization.Model):
    """ComputeStatus.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar is_status_available:
    :vartype is_status_available: bool
    :ivar detailed_status: Anything.
    :vartype detailed_status: any
    :ivar error: Represents OData v4 error object.
    :vartype error: ~flow.models.ODataError
    """

    _validation = {
        'is_status_available': {'readonly': True},
    }

    _attribute_map = {
        'is_status_available': {'key': 'isStatusAvailable', 'type': 'bool'},
        'detailed_status': {'key': 'detailedStatus', 'type': 'object'},
        'error': {'key': 'error', 'type': 'ODataError'},
    }

    def __init__(
        self,
        *,
        detailed_status: Optional[Any] = None,
        error: Optional["ODataError"] = None,
        **kwargs
    ):
        """
        :keyword detailed_status: Anything.
        :paramtype detailed_status: any
        :keyword error: Represents OData v4 error object.
        :paramtype error: ~flow.models.ODataError
        """
        super(ComputeStatus, self).__init__(**kwargs)
        self.is_status_available = None
        self.detailed_status = detailed_status
        self.error = error


class ComputeStatusDetail(msrest.serialization.Model):
    """ComputeStatusDetail.

    :ivar provisioning_state:
    :vartype provisioning_state: str
    :ivar provisioning_error_message:
    :vartype provisioning_error_message: str
    """

    _attribute_map = {
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'provisioning_error_message': {'key': 'provisioningErrorMessage', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        provisioning_state: Optional[str] = None,
        provisioning_error_message: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword provisioning_state:
        :paramtype provisioning_state: str
        :keyword provisioning_error_message:
        :paramtype provisioning_error_message: str
        """
        super(ComputeStatusDetail, self).__init__(**kwargs)
        self.provisioning_state = provisioning_state
        self.provisioning_error_message = provisioning_error_message


class ComputeWarning(msrest.serialization.Model):
    """ComputeWarning.

    :ivar title:
    :vartype title: str
    :ivar message:
    :vartype message: str
    :ivar code:
    :vartype code: str
    :ivar severity: Possible values include: "Critical", "Error", "Warning", "Info".
    :vartype severity: str or ~flow.models.SeverityLevel
    """

    _attribute_map = {
        'title': {'key': 'title', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'code': {'key': 'code', 'type': 'str'},
        'severity': {'key': 'severity', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        title: Optional[str] = None,
        message: Optional[str] = None,
        code: Optional[str] = None,
        severity: Optional[Union[str, "SeverityLevel"]] = None,
        **kwargs
    ):
        """
        :keyword title:
        :paramtype title: str
        :keyword message:
        :paramtype message: str
        :keyword code:
        :paramtype code: str
        :keyword severity: Possible values include: "Critical", "Error", "Warning", "Info".
        :paramtype severity: str or ~flow.models.SeverityLevel
        """
        super(ComputeWarning, self).__init__(**kwargs)
        self.title = title
        self.message = message
        self.code = code
        self.severity = severity


class ConnectionConfigSpec(msrest.serialization.Model):
    """ConnectionConfigSpec.

    :ivar name:
    :vartype name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar config_value_type: Possible values include: "String", "Secret".
    :vartype config_value_type: str or ~flow.models.ConfigValueType
    :ivar description:
    :vartype description: str
    :ivar default_value:
    :vartype default_value: str
    :ivar enum_values:
    :vartype enum_values: list[str]
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar supported_auth_modes:
    :vartype supported_auth_modes: list[str or ~flow.models.ConnectionAuthMode]
    :ivar supported_auth_mode_mapping: This is a dictionary.
    :vartype supported_auth_mode_mapping: ~flow.models.ConnectionConfigSpecSupportedAuthModeMapping
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'config_value_type': {'key': 'configValueType', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'enum_values': {'key': 'enumValues', 'type': '[str]'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'supported_auth_modes': {'key': 'supportedAuthModes', 'type': '[str]'},
        'supported_auth_mode_mapping': {'key': 'supportedAuthModeMapping', 'type': 'ConnectionConfigSpecSupportedAuthModeMapping'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        display_name: Optional[str] = None,
        config_value_type: Optional[Union[str, "ConfigValueType"]] = None,
        description: Optional[str] = None,
        default_value: Optional[str] = None,
        enum_values: Optional[List[str]] = None,
        is_optional: Optional[bool] = None,
        supported_auth_modes: Optional[List[Union[str, "ConnectionAuthMode"]]] = None,
        supported_auth_mode_mapping: Optional["ConnectionConfigSpecSupportedAuthModeMapping"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword config_value_type: Possible values include: "String", "Secret".
        :paramtype config_value_type: str or ~flow.models.ConfigValueType
        :keyword description:
        :paramtype description: str
        :keyword default_value:
        :paramtype default_value: str
        :keyword enum_values:
        :paramtype enum_values: list[str]
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword supported_auth_modes:
        :paramtype supported_auth_modes: list[str or ~flow.models.ConnectionAuthMode]
        :keyword supported_auth_mode_mapping: This is a dictionary.
        :paramtype supported_auth_mode_mapping:
         ~flow.models.ConnectionConfigSpecSupportedAuthModeMapping
        """
        super(ConnectionConfigSpec, self).__init__(**kwargs)
        self.name = name
        self.display_name = display_name
        self.config_value_type = config_value_type
        self.description = description
        self.default_value = default_value
        self.enum_values = enum_values
        self.is_optional = is_optional
        self.supported_auth_modes = supported_auth_modes
        self.supported_auth_mode_mapping = supported_auth_mode_mapping


class ConnectionConfigSpecSupportedAuthModeMapping(msrest.serialization.Model):
    """This is a dictionary.

    :ivar key:
    :vartype key: str
    :ivar meid_token:
    :vartype meid_token: str
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
        'meid_token': {'key': 'meid_token', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        key: Optional[str] = None,
        meid_token: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        :keyword meid_token:
        :paramtype meid_token: str
        """
        super(ConnectionConfigSpecSupportedAuthModeMapping, self).__init__(**kwargs)
        self.key = key
        self.meid_token = meid_token


class ConnectionDto(msrest.serialization.Model):
    """ConnectionDto.

    :ivar connection_name:
    :vartype connection_name: str
    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar configs: This is a dictionary.
    :vartype configs: dict[str, str]
    :ivar custom_configs: This is a dictionary.
    :vartype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'connection_name': {'key': 'connectionName', 'type': 'str'},
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'configs': {'key': 'configs', 'type': '{str}'},
        'custom_configs': {'key': 'customConfigs', 'type': '{CustomConnectionConfig}'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        connection_name: Optional[str] = None,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        configs: Optional[Dict[str, str]] = None,
        custom_configs: Optional[Dict[str, "CustomConnectionConfig"]] = None,
        expiry_time: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword connection_name:
        :paramtype connection_name: str
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword configs: This is a dictionary.
        :paramtype configs: dict[str, str]
        :keyword custom_configs: This is a dictionary.
        :paramtype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(ConnectionDto, self).__init__(**kwargs)
        self.connection_name = connection_name
        self.connection_type = connection_type
        self.configs = configs
        self.custom_configs = custom_configs
        self.expiry_time = expiry_time
        self.owner = owner
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class ConnectionEntity(msrest.serialization.Model):
    """ConnectionEntity.

    :ivar connection_id:
    :vartype connection_id: str
    :ivar connection_name:
    :vartype connection_name: str
    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar connection_scope: Possible values include: "User", "WorkspaceShared".
    :vartype connection_scope: str or ~flow.models.ConnectionScope
    :ivar configs: This is a dictionary.
    :vartype configs: dict[str, str]
    :ivar custom_configs: This is a dictionary.
    :vartype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    :ivar secret_name:
    :vartype secret_name: str
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'connection_id': {'key': 'connectionId', 'type': 'str'},
        'connection_name': {'key': 'connectionName', 'type': 'str'},
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'connection_scope': {'key': 'connectionScope', 'type': 'str'},
        'configs': {'key': 'configs', 'type': '{str}'},
        'custom_configs': {'key': 'customConfigs', 'type': '{CustomConnectionConfig}'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
        'secret_name': {'key': 'secretName', 'type': 'str'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        connection_id: Optional[str] = None,
        connection_name: Optional[str] = None,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        connection_scope: Optional[Union[str, "ConnectionScope"]] = None,
        configs: Optional[Dict[str, str]] = None,
        custom_configs: Optional[Dict[str, "CustomConnectionConfig"]] = None,
        expiry_time: Optional[datetime.datetime] = None,
        secret_name: Optional[str] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword connection_id:
        :paramtype connection_id: str
        :keyword connection_name:
        :paramtype connection_name: str
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword connection_scope: Possible values include: "User", "WorkspaceShared".
        :paramtype connection_scope: str or ~flow.models.ConnectionScope
        :keyword configs: This is a dictionary.
        :paramtype configs: dict[str, str]
        :keyword custom_configs: This is a dictionary.
        :paramtype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        :keyword secret_name:
        :paramtype secret_name: str
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(ConnectionEntity, self).__init__(**kwargs)
        self.connection_id = connection_id
        self.connection_name = connection_name
        self.connection_type = connection_type
        self.connection_scope = connection_scope
        self.configs = configs
        self.custom_configs = custom_configs
        self.expiry_time = expiry_time
        self.secret_name = secret_name
        self.owner = owner
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class ConnectionOverrideSetting(msrest.serialization.Model):
    """ConnectionOverrideSetting.

    :ivar connection_source_type: Possible values include: "Node", "NodeInput".
    :vartype connection_source_type: str or ~flow.models.ConnectionSourceType
    :ivar node_name:
    :vartype node_name: str
    :ivar node_input_name:
    :vartype node_input_name: str
    :ivar node_deployment_name_input:
    :vartype node_deployment_name_input: str
    :ivar node_model_input:
    :vartype node_model_input: str
    :ivar connection_name:
    :vartype connection_name: str
    :ivar deployment_name:
    :vartype deployment_name: str
    :ivar model:
    :vartype model: str
    :ivar connection_types:
    :vartype connection_types: list[str or ~flow.models.ConnectionType]
    :ivar capabilities:
    :vartype capabilities: ~flow.models.AzureOpenAIModelCapabilities
    :ivar model_enum:
    :vartype model_enum: list[str]
    """

    _attribute_map = {
        'connection_source_type': {'key': 'connectionSourceType', 'type': 'str'},
        'node_name': {'key': 'nodeName', 'type': 'str'},
        'node_input_name': {'key': 'nodeInputName', 'type': 'str'},
        'node_deployment_name_input': {'key': 'nodeDeploymentNameInput', 'type': 'str'},
        'node_model_input': {'key': 'nodeModelInput', 'type': 'str'},
        'connection_name': {'key': 'connectionName', 'type': 'str'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'model': {'key': 'model', 'type': 'str'},
        'connection_types': {'key': 'connectionTypes', 'type': '[str]'},
        'capabilities': {'key': 'capabilities', 'type': 'AzureOpenAIModelCapabilities'},
        'model_enum': {'key': 'modelEnum', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        connection_source_type: Optional[Union[str, "ConnectionSourceType"]] = None,
        node_name: Optional[str] = None,
        node_input_name: Optional[str] = None,
        node_deployment_name_input: Optional[str] = None,
        node_model_input: Optional[str] = None,
        connection_name: Optional[str] = None,
        deployment_name: Optional[str] = None,
        model: Optional[str] = None,
        connection_types: Optional[List[Union[str, "ConnectionType"]]] = None,
        capabilities: Optional["AzureOpenAIModelCapabilities"] = None,
        model_enum: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword connection_source_type: Possible values include: "Node", "NodeInput".
        :paramtype connection_source_type: str or ~flow.models.ConnectionSourceType
        :keyword node_name:
        :paramtype node_name: str
        :keyword node_input_name:
        :paramtype node_input_name: str
        :keyword node_deployment_name_input:
        :paramtype node_deployment_name_input: str
        :keyword node_model_input:
        :paramtype node_model_input: str
        :keyword connection_name:
        :paramtype connection_name: str
        :keyword deployment_name:
        :paramtype deployment_name: str
        :keyword model:
        :paramtype model: str
        :keyword connection_types:
        :paramtype connection_types: list[str or ~flow.models.ConnectionType]
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AzureOpenAIModelCapabilities
        :keyword model_enum:
        :paramtype model_enum: list[str]
        """
        super(ConnectionOverrideSetting, self).__init__(**kwargs)
        self.connection_source_type = connection_source_type
        self.node_name = node_name
        self.node_input_name = node_input_name
        self.node_deployment_name_input = node_deployment_name_input
        self.node_model_input = node_model_input
        self.connection_name = connection_name
        self.deployment_name = deployment_name
        self.model = model
        self.connection_types = connection_types
        self.capabilities = capabilities
        self.model_enum = model_enum


class ConnectionSpec(msrest.serialization.Model):
    """ConnectionSpec.

    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar config_specs:
    :vartype config_specs: list[~flow.models.ConnectionConfigSpec]
    """

    _attribute_map = {
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'config_specs': {'key': 'configSpecs', 'type': '[ConnectionConfigSpec]'},
    }

    def __init__(
        self,
        *,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        config_specs: Optional[List["ConnectionConfigSpec"]] = None,
        **kwargs
    ):
        """
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword config_specs:
        :paramtype config_specs: list[~flow.models.ConnectionConfigSpec]
        """
        super(ConnectionSpec, self).__init__(**kwargs)
        self.connection_type = connection_type
        self.config_specs = config_specs


class ContainerInstanceConfiguration(msrest.serialization.Model):
    """ContainerInstanceConfiguration.

    :ivar region:
    :vartype region: str
    :ivar cpu_cores:
    :vartype cpu_cores: float
    :ivar memory_gb:
    :vartype memory_gb: float
    """

    _attribute_map = {
        'region': {'key': 'region', 'type': 'str'},
        'cpu_cores': {'key': 'cpuCores', 'type': 'float'},
        'memory_gb': {'key': 'memoryGb', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        region: Optional[str] = None,
        cpu_cores: Optional[float] = None,
        memory_gb: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword region:
        :paramtype region: str
        :keyword cpu_cores:
        :paramtype cpu_cores: float
        :keyword memory_gb:
        :paramtype memory_gb: float
        """
        super(ContainerInstanceConfiguration, self).__init__(**kwargs)
        self.region = region
        self.cpu_cores = cpu_cores
        self.memory_gb = memory_gb


class ContainerRegistry(msrest.serialization.Model):
    """ContainerRegistry.

    :ivar address:
    :vartype address: str
    :ivar username:
    :vartype username: str
    :ivar password:
    :vartype password: str
    :ivar credential_type:
    :vartype credential_type: str
    :ivar registry_identity:
    :vartype registry_identity: ~flow.models.RegistryIdentity
    """

    _attribute_map = {
        'address': {'key': 'address', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'credential_type': {'key': 'credentialType', 'type': 'str'},
        'registry_identity': {'key': 'registryIdentity', 'type': 'RegistryIdentity'},
    }

    def __init__(
        self,
        *,
        address: Optional[str] = None,
        username: Optional[str] = None,
        password: Optional[str] = None,
        credential_type: Optional[str] = None,
        registry_identity: Optional["RegistryIdentity"] = None,
        **kwargs
    ):
        """
        :keyword address:
        :paramtype address: str
        :keyword username:
        :paramtype username: str
        :keyword password:
        :paramtype password: str
        :keyword credential_type:
        :paramtype credential_type: str
        :keyword registry_identity:
        :paramtype registry_identity: ~flow.models.RegistryIdentity
        """
        super(ContainerRegistry, self).__init__(**kwargs)
        self.address = address
        self.username = username
        self.password = password
        self.credential_type = credential_type
        self.registry_identity = registry_identity


class ContainerResourceRequirements(msrest.serialization.Model):
    """ContainerResourceRequirements.

    :ivar cpu:
    :vartype cpu: float
    :ivar cpu_limit:
    :vartype cpu_limit: float
    :ivar memory_in_gb:
    :vartype memory_in_gb: float
    :ivar memory_in_gb_limit:
    :vartype memory_in_gb_limit: float
    :ivar gpu_enabled:
    :vartype gpu_enabled: bool
    :ivar gpu:
    :vartype gpu: int
    :ivar fpga:
    :vartype fpga: int
    """

    _attribute_map = {
        'cpu': {'key': 'cpu', 'type': 'float'},
        'cpu_limit': {'key': 'cpuLimit', 'type': 'float'},
        'memory_in_gb': {'key': 'memoryInGB', 'type': 'float'},
        'memory_in_gb_limit': {'key': 'memoryInGBLimit', 'type': 'float'},
        'gpu_enabled': {'key': 'gpuEnabled', 'type': 'bool'},
        'gpu': {'key': 'gpu', 'type': 'int'},
        'fpga': {'key': 'fpga', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        cpu: Optional[float] = None,
        cpu_limit: Optional[float] = None,
        memory_in_gb: Optional[float] = None,
        memory_in_gb_limit: Optional[float] = None,
        gpu_enabled: Optional[bool] = None,
        gpu: Optional[int] = None,
        fpga: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword cpu:
        :paramtype cpu: float
        :keyword cpu_limit:
        :paramtype cpu_limit: float
        :keyword memory_in_gb:
        :paramtype memory_in_gb: float
        :keyword memory_in_gb_limit:
        :paramtype memory_in_gb_limit: float
        :keyword gpu_enabled:
        :paramtype gpu_enabled: bool
        :keyword gpu:
        :paramtype gpu: int
        :keyword fpga:
        :paramtype fpga: int
        """
        super(ContainerResourceRequirements, self).__init__(**kwargs)
        self.cpu = cpu
        self.cpu_limit = cpu_limit
        self.memory_in_gb = memory_in_gb
        self.memory_in_gb_limit = memory_in_gb_limit
        self.gpu_enabled = gpu_enabled
        self.gpu = gpu
        self.fpga = fpga


class ControlInput(msrest.serialization.Model):
    """ControlInput.

    :ivar name:
    :vartype name: str
    :ivar default_value: Possible values include: "None", "False", "True", "Skipped".
    :vartype default_value: str or ~flow.models.ControlInputValue
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        default_value: Optional[Union[str, "ControlInputValue"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword default_value: Possible values include: "None", "False", "True", "Skipped".
        :paramtype default_value: str or ~flow.models.ControlInputValue
        """
        super(ControlInput, self).__init__(**kwargs)
        self.name = name
        self.default_value = default_value


class ControlOutput(msrest.serialization.Model):
    """ControlOutput.

    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        """
        super(ControlOutput, self).__init__(**kwargs)
        self.name = name


class CopyDataTask(msrest.serialization.Model):
    """CopyDataTask.

    :ivar data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
    :vartype data_copy_mode: str or ~flow.models.DataCopyMode
    """

    _attribute_map = {
        'data_copy_mode': {'key': 'DataCopyMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_copy_mode: Optional[Union[str, "DataCopyMode"]] = None,
        **kwargs
    ):
        """
        :keyword data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
        :paramtype data_copy_mode: str or ~flow.models.DataCopyMode
        """
        super(CopyDataTask, self).__init__(**kwargs)
        self.data_copy_mode = data_copy_mode


class CreatedBy(msrest.serialization.Model):
    """CreatedBy.

    :ivar user_object_id:
    :vartype user_object_id: str
    :ivar user_tenant_id:
    :vartype user_tenant_id: str
    :ivar user_name:
    :vartype user_name: str
    """

    _attribute_map = {
        'user_object_id': {'key': 'userObjectId', 'type': 'str'},
        'user_tenant_id': {'key': 'userTenantId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        user_object_id: Optional[str] = None,
        user_tenant_id: Optional[str] = None,
        user_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword user_object_id:
        :paramtype user_object_id: str
        :keyword user_tenant_id:
        :paramtype user_tenant_id: str
        :keyword user_name:
        :paramtype user_name: str
        """
        super(CreatedBy, self).__init__(**kwargs)
        self.user_object_id = user_object_id
        self.user_tenant_id = user_tenant_id
        self.user_name = user_name


class CreatedFromDto(msrest.serialization.Model):
    """CreatedFromDto.

    :ivar type:  The only acceptable values to pass in are None and "Notebook". The default value
     is None.
    :vartype type: str
    :ivar location_type:  The only acceptable values to pass in are None and "ArtifactId". The
     default value is None.
    :vartype location_type: str
    :ivar location:
    :vartype location: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'location_type': {'key': 'locationType', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        location_type: Optional[str] = None,
        location: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type:  The only acceptable values to pass in are None and "Notebook". The default
         value is None.
        :paramtype type: str
        :keyword location_type:  The only acceptable values to pass in are None and "ArtifactId". The
         default value is None.
        :paramtype location_type: str
        :keyword location:
        :paramtype location: str
        """
        super(CreatedFromDto, self).__init__(**kwargs)
        self.type = type
        self.location_type = location_type
        self.location = location


class CreateExistingBulkRunRequest(msrest.serialization.Model):
    """CreateExistingBulkRunRequest.

    :ivar run_id:
    :vartype run_id: str
    :ivar run_display_name:
    :vartype run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_experiment_name:
    :vartype run_experiment_name: str
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar node_variant:
    :vartype node_variant: str
    :ivar variant_run_id:
    :vartype variant_run_id: str
    :ivar baseline_run_id:
    :vartype baseline_run_id: str
    :ivar flow_definition_data_store_name:
    :vartype flow_definition_data_store_name: str
    :ivar flow_definition_blob_path:
    :vartype flow_definition_blob_path: str
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar end_time_utc:
    :vartype end_time_utc: ~datetime.datetime
    :ivar start_time_utc:
    :vartype start_time_utc: ~datetime.datetime
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'run_display_name': {'key': 'runDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_experiment_name': {'key': 'runExperimentName', 'type': 'str'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'node_variant': {'key': 'nodeVariant', 'type': 'str'},
        'variant_run_id': {'key': 'variantRunId', 'type': 'str'},
        'baseline_run_id': {'key': 'baselineRunId', 'type': 'str'},
        'flow_definition_data_store_name': {'key': 'flowDefinitionDataStoreName', 'type': 'str'},
        'flow_definition_blob_path': {'key': 'flowDefinitionBlobPath', 'type': 'str'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'end_time_utc': {'key': 'endTimeUtc', 'type': 'iso-8601'},
        'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_experiment_name: Optional[str] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        node_variant: Optional[str] = None,
        variant_run_id: Optional[str] = None,
        baseline_run_id: Optional[str] = None,
        flow_definition_data_store_name: Optional[str] = None,
        flow_definition_blob_path: Optional[str] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        end_time_utc: Optional[datetime.datetime] = None,
        start_time_utc: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword run_display_name:
        :paramtype run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_experiment_name:
        :paramtype run_experiment_name: str
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword node_variant:
        :paramtype node_variant: str
        :keyword variant_run_id:
        :paramtype variant_run_id: str
        :keyword baseline_run_id:
        :paramtype baseline_run_id: str
        :keyword flow_definition_data_store_name:
        :paramtype flow_definition_data_store_name: str
        :keyword flow_definition_blob_path:
        :paramtype flow_definition_blob_path: str
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword end_time_utc:
        :paramtype end_time_utc: ~datetime.datetime
        :keyword start_time_utc:
        :paramtype start_time_utc: ~datetime.datetime
        """
        super(CreateExistingBulkRunRequest, self).__init__(**kwargs)
        self.run_id = run_id
        self.run_display_name = run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_experiment_name = run_experiment_name
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.node_variant = node_variant
        self.variant_run_id = variant_run_id
        self.baseline_run_id = baseline_run_id
        self.flow_definition_data_store_name = flow_definition_data_store_name
        self.flow_definition_blob_path = flow_definition_blob_path
        self.run_status = run_status
        self.end_time_utc = end_time_utc
        self.start_time_utc = start_time_utc


class CreateExperimentTemplateRequest(msrest.serialization.Model):
    """CreateExperimentTemplateRequest.

    :ivar experiment_definition_source:
    :vartype experiment_definition_source: ~flow.models.ExperimentDefinitionSource
    """

    _attribute_map = {
        'experiment_definition_source': {'key': 'experimentDefinitionSource', 'type': 'ExperimentDefinitionSource'},
    }

    def __init__(
        self,
        *,
        experiment_definition_source: Optional["ExperimentDefinitionSource"] = None,
        **kwargs
    ):
        """
        :keyword experiment_definition_source:
        :paramtype experiment_definition_source: ~flow.models.ExperimentDefinitionSource
        """
        super(CreateExperimentTemplateRequest, self).__init__(**kwargs)
        self.experiment_definition_source = experiment_definition_source


class CreateFlowRequest(msrest.serialization.Model):
    """CreateFlowRequest.

    :ivar flow_name:
    :vartype flow_name: str
    :ivar description:
    :vartype description: str
    :ivar details:
    :vartype details: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar flow:
    :vartype flow: ~flow.models.Flow
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar flow_run_settings:
    :vartype flow_run_settings: ~flow.models.FlowRunSettings
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'details': {'key': 'details', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'flow': {'key': 'flow', 'type': 'Flow'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'flow_run_settings': {'key': 'flowRunSettings', 'type': 'FlowRunSettings'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        flow_name: Optional[str] = None,
        description: Optional[str] = None,
        details: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        flow: Optional["Flow"] = None,
        flow_definition_file_path: Optional[str] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        flow_run_settings: Optional["FlowRunSettings"] = None,
        is_archived: Optional[bool] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword description:
        :paramtype description: str
        :keyword details:
        :paramtype details: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword flow:
        :paramtype flow: ~flow.models.Flow
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword flow_run_settings:
        :paramtype flow_run_settings: ~flow.models.FlowRunSettings
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(CreateFlowRequest, self).__init__(**kwargs)
        self.flow_name = flow_name
        self.description = description
        self.details = details
        self.tags = tags
        self.flow = flow
        self.flow_definition_file_path = flow_definition_file_path
        self.flow_type = flow_type
        self.flow_run_settings = flow_run_settings
        self.is_archived = is_archived
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class CreateFlowRuntimeRequest(msrest.serialization.Model):
    """CreateFlowRuntimeRequest.

    :ivar runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
     "TrainingSession", "Local".
    :vartype runtime_type: str or ~flow.models.RuntimeType
    :ivar identity:
    :vartype identity: ~flow.models.ManagedServiceIdentity
    :ivar instance_type:
    :vartype instance_type: str
    :ivar from_existing_endpoint:
    :vartype from_existing_endpoint: bool
    :ivar from_existing_deployment:
    :vartype from_existing_deployment: bool
    :ivar endpoint_name:
    :vartype endpoint_name: str
    :ivar deployment_name:
    :vartype deployment_name: str
    :ivar compute_instance_name:
    :vartype compute_instance_name: str
    :ivar from_existing_custom_app:
    :vartype from_existing_custom_app: bool
    :ivar custom_app_name:
    :vartype custom_app_name: str
    :ivar runtime_description:
    :vartype runtime_description: str
    :ivar environment:
    :vartype environment: str
    :ivar instance_count:
    :vartype instance_count: int
    """

    _attribute_map = {
        'runtime_type': {'key': 'runtimeType', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'from_existing_endpoint': {'key': 'fromExistingEndpoint', 'type': 'bool'},
        'from_existing_deployment': {'key': 'fromExistingDeployment', 'type': 'bool'},
        'endpoint_name': {'key': 'endpointName', 'type': 'str'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'compute_instance_name': {'key': 'computeInstanceName', 'type': 'str'},
        'from_existing_custom_app': {'key': 'fromExistingCustomApp', 'type': 'bool'},
        'custom_app_name': {'key': 'customAppName', 'type': 'str'},
        'runtime_description': {'key': 'runtimeDescription', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        runtime_type: Optional[Union[str, "RuntimeType"]] = None,
        identity: Optional["ManagedServiceIdentity"] = None,
        instance_type: Optional[str] = None,
        from_existing_endpoint: Optional[bool] = None,
        from_existing_deployment: Optional[bool] = None,
        endpoint_name: Optional[str] = None,
        deployment_name: Optional[str] = None,
        compute_instance_name: Optional[str] = None,
        from_existing_custom_app: Optional[bool] = None,
        custom_app_name: Optional[str] = None,
        runtime_description: Optional[str] = None,
        environment: Optional[str] = None,
        instance_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
         "TrainingSession", "Local".
        :paramtype runtime_type: str or ~flow.models.RuntimeType
        :keyword identity:
        :paramtype identity: ~flow.models.ManagedServiceIdentity
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword from_existing_endpoint:
        :paramtype from_existing_endpoint: bool
        :keyword from_existing_deployment:
        :paramtype from_existing_deployment: bool
        :keyword endpoint_name:
        :paramtype endpoint_name: str
        :keyword deployment_name:
        :paramtype deployment_name: str
        :keyword compute_instance_name:
        :paramtype compute_instance_name: str
        :keyword from_existing_custom_app:
        :paramtype from_existing_custom_app: bool
        :keyword custom_app_name:
        :paramtype custom_app_name: str
        :keyword runtime_description:
        :paramtype runtime_description: str
        :keyword environment:
        :paramtype environment: str
        :keyword instance_count:
        :paramtype instance_count: int
        """
        super(CreateFlowRuntimeRequest, self).__init__(**kwargs)
        self.runtime_type = runtime_type
        self.identity = identity
        self.instance_type = instance_type
        self.from_existing_endpoint = from_existing_endpoint
        self.from_existing_deployment = from_existing_deployment
        self.endpoint_name = endpoint_name
        self.deployment_name = deployment_name
        self.compute_instance_name = compute_instance_name
        self.from_existing_custom_app = from_existing_custom_app
        self.custom_app_name = custom_app_name
        self.runtime_description = runtime_description
        self.environment = environment
        self.instance_count = instance_count


class CreateFlowSessionRequest(msrest.serialization.Model):
    """CreateFlowSessionRequest.

    :ivar python_pip_requirements:
    :vartype python_pip_requirements: list[str]
    :ivar base_image:
    :vartype base_image: str
    :ivar runtime_image:
    :vartype runtime_image: str
    :ivar action: Possible values include: "Install", "Reset", "Update", "Delete".
    :vartype action: str or ~flow.models.SetupFlowSessionAction
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'python_pip_requirements': {'key': 'pythonPipRequirements', 'type': '[str]'},
        'base_image': {'key': 'baseImage', 'type': 'str'},
        'runtime_image': {'key': 'runtimeImage', 'type': 'str'},
        'action': {'key': 'action', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        python_pip_requirements: Optional[List[str]] = None,
        base_image: Optional[str] = None,
        runtime_image: Optional[str] = None,
        action: Optional[Union[str, "SetupFlowSessionAction"]] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword python_pip_requirements:
        :paramtype python_pip_requirements: list[str]
        :keyword base_image:
        :paramtype base_image: str
        :keyword runtime_image:
        :paramtype runtime_image: str
        :keyword action: Possible values include: "Install", "Reset", "Update", "Delete".
        :paramtype action: str or ~flow.models.SetupFlowSessionAction
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(CreateFlowSessionRequest, self).__init__(**kwargs)
        self.python_pip_requirements = python_pip_requirements
        self.base_image = base_image
        self.runtime_image = runtime_image
        self.action = action
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class CreateInferencePipelineRequest(msrest.serialization.Model):
    """CreateInferencePipelineRequest.

    :ivar module_node_id:
    :vartype module_node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar training_pipeline_draft_name:
    :vartype training_pipeline_draft_name: str
    :ivar training_pipeline_run_display_name:
    :vartype training_pipeline_run_display_name: str
    :ivar name:
    :vartype name: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
     "ContainsDesignerBuildin".
    :vartype graph_components_mode: str or ~flow.models.GraphComponentsMode
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
    :vartype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'module_node_id': {'key': 'moduleNodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'training_pipeline_draft_name': {'key': 'trainingPipelineDraftName', 'type': 'str'},
        'training_pipeline_run_display_name': {'key': 'trainingPipelineRunDisplayName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'graph_components_mode': {'key': 'graphComponentsMode', 'type': 'str'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'flattened_sub_graphs': {'key': 'flattenedSubGraphs', 'type': '{PipelineSubDraft}'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        module_node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        training_pipeline_draft_name: Optional[str] = None,
        training_pipeline_run_display_name: Optional[str] = None,
        name: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        graph_components_mode: Optional[Union[str, "GraphComponentsMode"]] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        flattened_sub_graphs: Optional[Dict[str, "PipelineSubDraft"]] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword module_node_id:
        :paramtype module_node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword training_pipeline_draft_name:
        :paramtype training_pipeline_draft_name: str
        :keyword training_pipeline_run_display_name:
        :paramtype training_pipeline_run_display_name: str
        :keyword name:
        :paramtype name: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
         "ContainsDesignerBuildin".
        :paramtype graph_components_mode: str or ~flow.models.GraphComponentsMode
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
        :paramtype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(CreateInferencePipelineRequest, self).__init__(**kwargs)
        self.module_node_id = module_node_id
        self.port_name = port_name
        self.training_pipeline_draft_name = training_pipeline_draft_name
        self.training_pipeline_run_display_name = training_pipeline_run_display_name
        self.name = name
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.graph_components_mode = graph_components_mode
        self.sub_pipelines_info = sub_pipelines_info
        self.flattened_sub_graphs = flattened_sub_graphs
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class CreateOrUpdateConnectionRequest(msrest.serialization.Model):
    """CreateOrUpdateConnectionRequest.

    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar connection_scope: Possible values include: "User", "WorkspaceShared".
    :vartype connection_scope: str or ~flow.models.ConnectionScope
    :ivar configs: This is a dictionary.
    :vartype configs: dict[str, str]
    :ivar custom_configs: This is a dictionary.
    :vartype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'connection_scope': {'key': 'connectionScope', 'type': 'str'},
        'configs': {'key': 'configs', 'type': '{str}'},
        'custom_configs': {'key': 'customConfigs', 'type': '{CustomConnectionConfig}'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        connection_scope: Optional[Union[str, "ConnectionScope"]] = None,
        configs: Optional[Dict[str, str]] = None,
        custom_configs: Optional[Dict[str, "CustomConnectionConfig"]] = None,
        expiry_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword connection_scope: Possible values include: "User", "WorkspaceShared".
        :paramtype connection_scope: str or ~flow.models.ConnectionScope
        :keyword configs: This is a dictionary.
        :paramtype configs: dict[str, str]
        :keyword custom_configs: This is a dictionary.
        :paramtype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        """
        super(CreateOrUpdateConnectionRequest, self).__init__(**kwargs)
        self.connection_type = connection_type
        self.connection_scope = connection_scope
        self.configs = configs
        self.custom_configs = custom_configs
        self.expiry_time = expiry_time


class CreateOrUpdateConnectionRequestDto(msrest.serialization.Model):
    """CreateOrUpdateConnectionRequestDto.

    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar configs: This is a dictionary.
    :vartype configs: dict[str, str]
    :ivar custom_configs: This is a dictionary.
    :vartype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
    :ivar expiry_time:
    :vartype expiry_time: ~datetime.datetime
    """

    _attribute_map = {
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'configs': {'key': 'configs', 'type': '{str}'},
        'custom_configs': {'key': 'customConfigs', 'type': '{CustomConnectionConfig}'},
        'expiry_time': {'key': 'expiryTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        configs: Optional[Dict[str, str]] = None,
        custom_configs: Optional[Dict[str, "CustomConnectionConfig"]] = None,
        expiry_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword configs: This is a dictionary.
        :paramtype configs: dict[str, str]
        :keyword custom_configs: This is a dictionary.
        :paramtype custom_configs: dict[str, ~flow.models.CustomConnectionConfig]
        :keyword expiry_time:
        :paramtype expiry_time: ~datetime.datetime
        """
        super(CreateOrUpdateConnectionRequestDto, self).__init__(**kwargs)
        self.connection_type = connection_type
        self.configs = configs
        self.custom_configs = custom_configs
        self.expiry_time = expiry_time


class CreatePipelineDraftRequest(msrest.serialization.Model):
    """CreatePipelineDraftRequest.

    :ivar name:
    :vartype name: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
     "ContainsDesignerBuildin".
    :vartype graph_components_mode: str or ~flow.models.GraphComponentsMode
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
    :vartype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'graph_components_mode': {'key': 'graphComponentsMode', 'type': 'str'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'flattened_sub_graphs': {'key': 'flattenedSubGraphs', 'type': '{PipelineSubDraft}'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        graph_components_mode: Optional[Union[str, "GraphComponentsMode"]] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        flattened_sub_graphs: Optional[Dict[str, "PipelineSubDraft"]] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
         "ContainsDesignerBuildin".
        :paramtype graph_components_mode: str or ~flow.models.GraphComponentsMode
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
        :paramtype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(CreatePipelineDraftRequest, self).__init__(**kwargs)
        self.name = name
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.graph_components_mode = graph_components_mode
        self.sub_pipelines_info = sub_pipelines_info
        self.flattened_sub_graphs = flattened_sub_graphs
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class CreatePipelineJobScheduleDto(msrest.serialization.Model):
    """CreatePipelineJobScheduleDto.

    :ivar name:
    :vartype name: str
    :ivar pipeline_job_name:
    :vartype pipeline_job_name: str
    :ivar pipeline_job_runtime_settings:
    :vartype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
    :ivar display_name:
    :vartype display_name: str
    :ivar trigger_type: Possible values include: "Recurrence", "Cron".
    :vartype trigger_type: str or ~flow.models.TriggerType
    :ivar recurrence:
    :vartype recurrence: ~flow.models.Recurrence
    :ivar cron:
    :vartype cron: ~flow.models.Cron
    :ivar status: Possible values include: "Enabled", "Disabled".
    :vartype status: str or ~flow.models.ScheduleStatus
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'pipeline_job_name': {'key': 'pipelineJobName', 'type': 'str'},
        'pipeline_job_runtime_settings': {'key': 'pipelineJobRuntimeSettings', 'type': 'PipelineJobRuntimeBasicSettings'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'Recurrence'},
        'cron': {'key': 'cron', 'type': 'Cron'},
        'status': {'key': 'status', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        pipeline_job_name: Optional[str] = None,
        pipeline_job_runtime_settings: Optional["PipelineJobRuntimeBasicSettings"] = None,
        display_name: Optional[str] = None,
        trigger_type: Optional[Union[str, "TriggerType"]] = None,
        recurrence: Optional["Recurrence"] = None,
        cron: Optional["Cron"] = None,
        status: Optional[Union[str, "ScheduleStatus"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword pipeline_job_name:
        :paramtype pipeline_job_name: str
        :keyword pipeline_job_runtime_settings:
        :paramtype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
        :keyword display_name:
        :paramtype display_name: str
        :keyword trigger_type: Possible values include: "Recurrence", "Cron".
        :paramtype trigger_type: str or ~flow.models.TriggerType
        :keyword recurrence:
        :paramtype recurrence: ~flow.models.Recurrence
        :keyword cron:
        :paramtype cron: ~flow.models.Cron
        :keyword status: Possible values include: "Enabled", "Disabled".
        :paramtype status: str or ~flow.models.ScheduleStatus
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(CreatePipelineJobScheduleDto, self).__init__(**kwargs)
        self.name = name
        self.pipeline_job_name = pipeline_job_name
        self.pipeline_job_runtime_settings = pipeline_job_runtime_settings
        self.display_name = display_name
        self.trigger_type = trigger_type
        self.recurrence = recurrence
        self.cron = cron
        self.status = status
        self.description = description
        self.tags = tags
        self.properties = properties


class CreatePublishedPipelineRequest(msrest.serialization.Model):
    """CreatePublishedPipelineRequest.

    :ivar use_pipeline_endpoint:
    :vartype use_pipeline_endpoint: bool
    :ivar pipeline_name:
    :vartype pipeline_name: str
    :ivar pipeline_description:
    :vartype pipeline_description: str
    :ivar use_existing_pipeline_endpoint:
    :vartype use_existing_pipeline_endpoint: bool
    :ivar pipeline_endpoint_name:
    :vartype pipeline_endpoint_name: str
    :ivar pipeline_endpoint_description:
    :vartype pipeline_endpoint_description: str
    :ivar set_as_default_pipeline_for_endpoint:
    :vartype set_as_default_pipeline_for_endpoint: bool
    :ivar step_tags: This is a dictionary.
    :vartype step_tags: dict[str, str]
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar enable_notification:
    :vartype enable_notification: bool
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar display_name:
    :vartype display_name: str
    :ivar run_id:
    :vartype run_id: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'use_pipeline_endpoint': {'key': 'usePipelineEndpoint', 'type': 'bool'},
        'pipeline_name': {'key': 'pipelineName', 'type': 'str'},
        'pipeline_description': {'key': 'pipelineDescription', 'type': 'str'},
        'use_existing_pipeline_endpoint': {'key': 'useExistingPipelineEndpoint', 'type': 'bool'},
        'pipeline_endpoint_name': {'key': 'pipelineEndpointName', 'type': 'str'},
        'pipeline_endpoint_description': {'key': 'pipelineEndpointDescription', 'type': 'str'},
        'set_as_default_pipeline_for_endpoint': {'key': 'setAsDefaultPipelineForEndpoint', 'type': 'bool'},
        'step_tags': {'key': 'stepTags', 'type': '{str}'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'enable_notification': {'key': 'enableNotification', 'type': 'bool'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        use_pipeline_endpoint: Optional[bool] = None,
        pipeline_name: Optional[str] = None,
        pipeline_description: Optional[str] = None,
        use_existing_pipeline_endpoint: Optional[bool] = None,
        pipeline_endpoint_name: Optional[str] = None,
        pipeline_endpoint_description: Optional[str] = None,
        set_as_default_pipeline_for_endpoint: Optional[bool] = None,
        step_tags: Optional[Dict[str, str]] = None,
        experiment_name: Optional[str] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        enable_notification: Optional[bool] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        display_name: Optional[str] = None,
        run_id: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword use_pipeline_endpoint:
        :paramtype use_pipeline_endpoint: bool
        :keyword pipeline_name:
        :paramtype pipeline_name: str
        :keyword pipeline_description:
        :paramtype pipeline_description: str
        :keyword use_existing_pipeline_endpoint:
        :paramtype use_existing_pipeline_endpoint: bool
        :keyword pipeline_endpoint_name:
        :paramtype pipeline_endpoint_name: str
        :keyword pipeline_endpoint_description:
        :paramtype pipeline_endpoint_description: str
        :keyword set_as_default_pipeline_for_endpoint:
        :paramtype set_as_default_pipeline_for_endpoint: bool
        :keyword step_tags: This is a dictionary.
        :paramtype step_tags: dict[str, str]
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword enable_notification:
        :paramtype enable_notification: bool
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword display_name:
        :paramtype display_name: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(CreatePublishedPipelineRequest, self).__init__(**kwargs)
        self.use_pipeline_endpoint = use_pipeline_endpoint
        self.pipeline_name = pipeline_name
        self.pipeline_description = pipeline_description
        self.use_existing_pipeline_endpoint = use_existing_pipeline_endpoint
        self.pipeline_endpoint_name = pipeline_endpoint_name
        self.pipeline_endpoint_description = pipeline_endpoint_description
        self.set_as_default_pipeline_for_endpoint = set_as_default_pipeline_for_endpoint
        self.step_tags = step_tags
        self.experiment_name = experiment_name
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.enable_notification = enable_notification
        self.sub_pipelines_info = sub_pipelines_info
        self.display_name = display_name
        self.run_id = run_id
        self.parent_run_id = parent_run_id
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class CreateRealTimeEndpointRequest(msrest.serialization.Model):
    """CreateRealTimeEndpointRequest.

    :ivar name:
    :vartype name: str
    :ivar compute_info:
    :vartype compute_info: ~flow.models.ComputeInfo
    :ivar description:
    :vartype description: str
    :ivar linked_pipeline_draft_id:
    :vartype linked_pipeline_draft_id: str
    :ivar linked_pipeline_run_id:
    :vartype linked_pipeline_run_id: str
    :ivar aks_advance_settings:
    :vartype aks_advance_settings: ~flow.models.AKSAdvanceSettings
    :ivar aci_advance_settings:
    :vartype aci_advance_settings: ~flow.models.ACIAdvanceSettings
    :ivar linked_training_pipeline_run_id:
    :vartype linked_training_pipeline_run_id: str
    :ivar linked_experiment_name:
    :vartype linked_experiment_name: str
    :ivar graph_nodes_run_id_mapping: This is a dictionary.
    :vartype graph_nodes_run_id_mapping: dict[str, str]
    :ivar workflow:
    :vartype workflow: ~flow.models.PipelineGraph
    :ivar inputs:
    :vartype inputs: list[~flow.models.InputOutputPortMetadata]
    :ivar outputs:
    :vartype outputs: list[~flow.models.InputOutputPortMetadata]
    :ivar example_request:
    :vartype example_request: ~flow.models.ExampleRequest
    :ivar user_storage_connection_string:
    :vartype user_storage_connection_string: str
    :ivar user_storage_endpoint_uri:
    :vartype user_storage_endpoint_uri: str
    :ivar user_storage_workspace_sai_token:
    :vartype user_storage_workspace_sai_token: str
    :ivar user_storage_container_name:
    :vartype user_storage_container_name: str
    :ivar pipeline_run_id:
    :vartype pipeline_run_id: str
    :ivar root_pipeline_run_id:
    :vartype root_pipeline_run_id: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar experiment_id:
    :vartype experiment_id: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'compute_info': {'key': 'computeInfo', 'type': 'ComputeInfo'},
        'description': {'key': 'description', 'type': 'str'},
        'linked_pipeline_draft_id': {'key': 'linkedPipelineDraftId', 'type': 'str'},
        'linked_pipeline_run_id': {'key': 'linkedPipelineRunId', 'type': 'str'},
        'aks_advance_settings': {'key': 'aksAdvanceSettings', 'type': 'AKSAdvanceSettings'},
        'aci_advance_settings': {'key': 'aciAdvanceSettings', 'type': 'ACIAdvanceSettings'},
        'linked_training_pipeline_run_id': {'key': 'linkedTrainingPipelineRunId', 'type': 'str'},
        'linked_experiment_name': {'key': 'linkedExperimentName', 'type': 'str'},
        'graph_nodes_run_id_mapping': {'key': 'graphNodesRunIdMapping', 'type': '{str}'},
        'workflow': {'key': 'workflow', 'type': 'PipelineGraph'},
        'inputs': {'key': 'inputs', 'type': '[InputOutputPortMetadata]'},
        'outputs': {'key': 'outputs', 'type': '[InputOutputPortMetadata]'},
        'example_request': {'key': 'exampleRequest', 'type': 'ExampleRequest'},
        'user_storage_connection_string': {'key': 'userStorageConnectionString', 'type': 'str'},
        'user_storage_endpoint_uri': {'key': 'userStorageEndpointUri', 'type': 'str'},
        'user_storage_workspace_sai_token': {'key': 'userStorageWorkspaceSaiToken', 'type': 'str'},
        'user_storage_container_name': {'key': 'userStorageContainerName', 'type': 'str'},
        'pipeline_run_id': {'key': 'pipelineRunId', 'type': 'str'},
        'root_pipeline_run_id': {'key': 'rootPipelineRunId', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        compute_info: Optional["ComputeInfo"] = None,
        description: Optional[str] = None,
        linked_pipeline_draft_id: Optional[str] = None,
        linked_pipeline_run_id: Optional[str] = None,
        aks_advance_settings: Optional["AKSAdvanceSettings"] = None,
        aci_advance_settings: Optional["ACIAdvanceSettings"] = None,
        linked_training_pipeline_run_id: Optional[str] = None,
        linked_experiment_name: Optional[str] = None,
        graph_nodes_run_id_mapping: Optional[Dict[str, str]] = None,
        workflow: Optional["PipelineGraph"] = None,
        inputs: Optional[List["InputOutputPortMetadata"]] = None,
        outputs: Optional[List["InputOutputPortMetadata"]] = None,
        example_request: Optional["ExampleRequest"] = None,
        user_storage_connection_string: Optional[str] = None,
        user_storage_endpoint_uri: Optional[str] = None,
        user_storage_workspace_sai_token: Optional[str] = None,
        user_storage_container_name: Optional[str] = None,
        pipeline_run_id: Optional[str] = None,
        root_pipeline_run_id: Optional[str] = None,
        experiment_name: Optional[str] = None,
        experiment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword compute_info:
        :paramtype compute_info: ~flow.models.ComputeInfo
        :keyword description:
        :paramtype description: str
        :keyword linked_pipeline_draft_id:
        :paramtype linked_pipeline_draft_id: str
        :keyword linked_pipeline_run_id:
        :paramtype linked_pipeline_run_id: str
        :keyword aks_advance_settings:
        :paramtype aks_advance_settings: ~flow.models.AKSAdvanceSettings
        :keyword aci_advance_settings:
        :paramtype aci_advance_settings: ~flow.models.ACIAdvanceSettings
        :keyword linked_training_pipeline_run_id:
        :paramtype linked_training_pipeline_run_id: str
        :keyword linked_experiment_name:
        :paramtype linked_experiment_name: str
        :keyword graph_nodes_run_id_mapping: This is a dictionary.
        :paramtype graph_nodes_run_id_mapping: dict[str, str]
        :keyword workflow:
        :paramtype workflow: ~flow.models.PipelineGraph
        :keyword inputs:
        :paramtype inputs: list[~flow.models.InputOutputPortMetadata]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.InputOutputPortMetadata]
        :keyword example_request:
        :paramtype example_request: ~flow.models.ExampleRequest
        :keyword user_storage_connection_string:
        :paramtype user_storage_connection_string: str
        :keyword user_storage_endpoint_uri:
        :paramtype user_storage_endpoint_uri: str
        :keyword user_storage_workspace_sai_token:
        :paramtype user_storage_workspace_sai_token: str
        :keyword user_storage_container_name:
        :paramtype user_storage_container_name: str
        :keyword pipeline_run_id:
        :paramtype pipeline_run_id: str
        :keyword root_pipeline_run_id:
        :paramtype root_pipeline_run_id: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        """
        super(CreateRealTimeEndpointRequest, self).__init__(**kwargs)
        self.name = name
        self.compute_info = compute_info
        self.description = description
        self.linked_pipeline_draft_id = linked_pipeline_draft_id
        self.linked_pipeline_run_id = linked_pipeline_run_id
        self.aks_advance_settings = aks_advance_settings
        self.aci_advance_settings = aci_advance_settings
        self.linked_training_pipeline_run_id = linked_training_pipeline_run_id
        self.linked_experiment_name = linked_experiment_name
        self.graph_nodes_run_id_mapping = graph_nodes_run_id_mapping
        self.workflow = workflow
        self.inputs = inputs
        self.outputs = outputs
        self.example_request = example_request
        self.user_storage_connection_string = user_storage_connection_string
        self.user_storage_endpoint_uri = user_storage_endpoint_uri
        self.user_storage_workspace_sai_token = user_storage_workspace_sai_token
        self.user_storage_container_name = user_storage_container_name
        self.pipeline_run_id = pipeline_run_id
        self.root_pipeline_run_id = root_pipeline_run_id
        self.experiment_name = experiment_name
        self.experiment_id = experiment_id


class CreationContext(msrest.serialization.Model):
    """CreationContext.

    :ivar created_time:
    :vartype created_time: ~datetime.datetime
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar creation_source:
    :vartype creation_source: str
    """

    _attribute_map = {
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'creation_source': {'key': 'creationSource', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        created_time: Optional[datetime.datetime] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        creation_source: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword created_time:
        :paramtype created_time: ~datetime.datetime
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword creation_source:
        :paramtype creation_source: str
        """
        super(CreationContext, self).__init__(**kwargs)
        self.created_time = created_time
        self.created_by = created_by
        self.creation_source = creation_source


class Cron(msrest.serialization.Model):
    """Cron.

    :ivar expression:
    :vartype expression: str
    :ivar end_time:
    :vartype end_time: str
    :ivar start_time:
    :vartype start_time: str
    :ivar time_zone:
    :vartype time_zone: str
    """

    _attribute_map = {
        'expression': {'key': 'expression', 'type': 'str'},
        'end_time': {'key': 'endTime', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        expression: Optional[str] = None,
        end_time: Optional[str] = None,
        start_time: Optional[str] = None,
        time_zone: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword expression:
        :paramtype expression: str
        :keyword end_time:
        :paramtype end_time: str
        :keyword start_time:
        :paramtype start_time: str
        :keyword time_zone:
        :paramtype time_zone: str
        """
        super(Cron, self).__init__(**kwargs)
        self.expression = expression
        self.end_time = end_time
        self.start_time = start_time
        self.time_zone = time_zone


class CustomConnectionConfig(msrest.serialization.Model):
    """CustomConnectionConfig.

    :ivar config_value_type: Possible values include: "String", "Secret".
    :vartype config_value_type: str or ~flow.models.ConfigValueType
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'config_value_type': {'key': 'configValueType', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        config_value_type: Optional[Union[str, "ConfigValueType"]] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword config_value_type: Possible values include: "String", "Secret".
        :paramtype config_value_type: str or ~flow.models.ConfigValueType
        :keyword value:
        :paramtype value: str
        """
        super(CustomConnectionConfig, self).__init__(**kwargs)
        self.config_value_type = config_value_type
        self.value = value


class CustomReference(msrest.serialization.Model):
    """CustomReference.

    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(CustomReference, self).__init__(**kwargs)
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path


class Data(msrest.serialization.Model):
    """Data.

    :ivar data_location:
    :vartype data_location: ~flow.models.ExecutionDataLocation
    :ivar mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
    :vartype mechanism: str or ~flow.models.DeliveryMechanism
    :ivar environment_variable_name:
    :vartype environment_variable_name: str
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar options: Dictionary of :code:`<string>`.
    :vartype options: dict[str, str]
    """

    _attribute_map = {
        'data_location': {'key': 'dataLocation', 'type': 'ExecutionDataLocation'},
        'mechanism': {'key': 'mechanism', 'type': 'str'},
        'environment_variable_name': {'key': 'environmentVariableName', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'options': {'key': 'options', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        data_location: Optional["ExecutionDataLocation"] = None,
        mechanism: Optional[Union[str, "DeliveryMechanism"]] = None,
        environment_variable_name: Optional[str] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        options: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword data_location:
        :paramtype data_location: ~flow.models.ExecutionDataLocation
        :keyword mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
        :paramtype mechanism: str or ~flow.models.DeliveryMechanism
        :keyword environment_variable_name:
        :paramtype environment_variable_name: str
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword options: Dictionary of :code:`<string>`.
        :paramtype options: dict[str, str]
        """
        super(Data, self).__init__(**kwargs)
        self.data_location = data_location
        self.mechanism = mechanism
        self.environment_variable_name = environment_variable_name
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.options = options


class DatabaseSink(msrest.serialization.Model):
    """DatabaseSink.

    :ivar connection:
    :vartype connection: str
    :ivar table:
    :vartype table: str
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'table': {'key': 'table', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        table: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword table:
        :paramtype table: str
        """
        super(DatabaseSink, self).__init__(**kwargs)
        self.connection = connection
        self.table = table


class DatabaseSource(msrest.serialization.Model):
    """DatabaseSource.

    :ivar connection:
    :vartype connection: str
    :ivar query:
    :vartype query: str
    :ivar stored_procedure_name:
    :vartype stored_procedure_name: str
    :ivar stored_procedure_parameters:
    :vartype stored_procedure_parameters: list[~flow.models.StoredProcedureParameter]
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'query': {'key': 'query', 'type': 'str'},
        'stored_procedure_name': {'key': 'storedProcedureName', 'type': 'str'},
        'stored_procedure_parameters': {'key': 'storedProcedureParameters', 'type': '[StoredProcedureParameter]'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        query: Optional[str] = None,
        stored_procedure_name: Optional[str] = None,
        stored_procedure_parameters: Optional[List["StoredProcedureParameter"]] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword query:
        :paramtype query: str
        :keyword stored_procedure_name:
        :paramtype stored_procedure_name: str
        :keyword stored_procedure_parameters:
        :paramtype stored_procedure_parameters: list[~flow.models.StoredProcedureParameter]
        """
        super(DatabaseSource, self).__init__(**kwargs)
        self.connection = connection
        self.query = query
        self.stored_procedure_name = stored_procedure_name
        self.stored_procedure_parameters = stored_procedure_parameters


class DatabricksComputeInfo(msrest.serialization.Model):
    """DatabricksComputeInfo.

    :ivar existing_cluster_id:
    :vartype existing_cluster_id: str
    """

    _attribute_map = {
        'existing_cluster_id': {'key': 'existingClusterId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        existing_cluster_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword existing_cluster_id:
        :paramtype existing_cluster_id: str
        """
        super(DatabricksComputeInfo, self).__init__(**kwargs)
        self.existing_cluster_id = existing_cluster_id


class DatabricksConfiguration(msrest.serialization.Model):
    """DatabricksConfiguration.

    :ivar workers:
    :vartype workers: int
    :ivar minimum_worker_count:
    :vartype minimum_worker_count: int
    :ivar max_mum_worker_count:
    :vartype max_mum_worker_count: int
    :ivar spark_version:
    :vartype spark_version: str
    :ivar node_type_id:
    :vartype node_type_id: str
    :ivar spark_conf: Dictionary of :code:`<string>`.
    :vartype spark_conf: dict[str, str]
    :ivar spark_env_vars: Dictionary of :code:`<string>`.
    :vartype spark_env_vars: dict[str, str]
    :ivar cluster_log_conf_dbfs_path:
    :vartype cluster_log_conf_dbfs_path: str
    :ivar dbfs_init_scripts:
    :vartype dbfs_init_scripts: list[~flow.models.InitScriptInfoDto]
    :ivar instance_pool_id:
    :vartype instance_pool_id: str
    :ivar timeout_seconds:
    :vartype timeout_seconds: int
    :ivar notebook_task:
    :vartype notebook_task: ~flow.models.NoteBookTaskDto
    :ivar spark_python_task:
    :vartype spark_python_task: ~flow.models.SparkPythonTaskDto
    :ivar spark_jar_task:
    :vartype spark_jar_task: ~flow.models.SparkJarTaskDto
    :ivar spark_submit_task:
    :vartype spark_submit_task: ~flow.models.SparkSubmitTaskDto
    :ivar jar_libraries:
    :vartype jar_libraries: list[str]
    :ivar egg_libraries:
    :vartype egg_libraries: list[str]
    :ivar whl_libraries:
    :vartype whl_libraries: list[str]
    :ivar pypi_libraries:
    :vartype pypi_libraries: list[~flow.models.PythonPyPiOrRCranLibraryDto]
    :ivar r_cran_libraries:
    :vartype r_cran_libraries: list[~flow.models.PythonPyPiOrRCranLibraryDto]
    :ivar maven_libraries:
    :vartype maven_libraries: list[~flow.models.MavenLibraryDto]
    :ivar libraries:
    :vartype libraries: list[any]
    :ivar linked_adb_workspace_metadata:
    :vartype linked_adb_workspace_metadata: ~flow.models.LinkedADBWorkspaceMetadata
    :ivar databrick_resource_id:
    :vartype databrick_resource_id: str
    :ivar auto_scale:
    :vartype auto_scale: bool
    """

    _attribute_map = {
        'workers': {'key': 'workers', 'type': 'int'},
        'minimum_worker_count': {'key': 'minimumWorkerCount', 'type': 'int'},
        'max_mum_worker_count': {'key': 'maxMumWorkerCount', 'type': 'int'},
        'spark_version': {'key': 'sparkVersion', 'type': 'str'},
        'node_type_id': {'key': 'nodeTypeId', 'type': 'str'},
        'spark_conf': {'key': 'sparkConf', 'type': '{str}'},
        'spark_env_vars': {'key': 'sparkEnvVars', 'type': '{str}'},
        'cluster_log_conf_dbfs_path': {'key': 'clusterLogConfDbfsPath', 'type': 'str'},
        'dbfs_init_scripts': {'key': 'dbfsInitScripts', 'type': '[InitScriptInfoDto]'},
        'instance_pool_id': {'key': 'instancePoolId', 'type': 'str'},
        'timeout_seconds': {'key': 'timeoutSeconds', 'type': 'int'},
        'notebook_task': {'key': 'notebookTask', 'type': 'NoteBookTaskDto'},
        'spark_python_task': {'key': 'sparkPythonTask', 'type': 'SparkPythonTaskDto'},
        'spark_jar_task': {'key': 'sparkJarTask', 'type': 'SparkJarTaskDto'},
        'spark_submit_task': {'key': 'sparkSubmitTask', 'type': 'SparkSubmitTaskDto'},
        'jar_libraries': {'key': 'jarLibraries', 'type': '[str]'},
        'egg_libraries': {'key': 'eggLibraries', 'type': '[str]'},
        'whl_libraries': {'key': 'whlLibraries', 'type': '[str]'},
        'pypi_libraries': {'key': 'pypiLibraries', 'type': '[PythonPyPiOrRCranLibraryDto]'},
        'r_cran_libraries': {'key': 'rCranLibraries', 'type': '[PythonPyPiOrRCranLibraryDto]'},
        'maven_libraries': {'key': 'mavenLibraries', 'type': '[MavenLibraryDto]'},
        'libraries': {'key': 'libraries', 'type': '[object]'},
        'linked_adb_workspace_metadata': {'key': 'linkedADBWorkspaceMetadata', 'type': 'LinkedADBWorkspaceMetadata'},
        'databrick_resource_id': {'key': 'databrickResourceId', 'type': 'str'},
        'auto_scale': {'key': 'autoScale', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        workers: Optional[int] = None,
        minimum_worker_count: Optional[int] = None,
        max_mum_worker_count: Optional[int] = None,
        spark_version: Optional[str] = None,
        node_type_id: Optional[str] = None,
        spark_conf: Optional[Dict[str, str]] = None,
        spark_env_vars: Optional[Dict[str, str]] = None,
        cluster_log_conf_dbfs_path: Optional[str] = None,
        dbfs_init_scripts: Optional[List["InitScriptInfoDto"]] = None,
        instance_pool_id: Optional[str] = None,
        timeout_seconds: Optional[int] = None,
        notebook_task: Optional["NoteBookTaskDto"] = None,
        spark_python_task: Optional["SparkPythonTaskDto"] = None,
        spark_jar_task: Optional["SparkJarTaskDto"] = None,
        spark_submit_task: Optional["SparkSubmitTaskDto"] = None,
        jar_libraries: Optional[List[str]] = None,
        egg_libraries: Optional[List[str]] = None,
        whl_libraries: Optional[List[str]] = None,
        pypi_libraries: Optional[List["PythonPyPiOrRCranLibraryDto"]] = None,
        r_cran_libraries: Optional[List["PythonPyPiOrRCranLibraryDto"]] = None,
        maven_libraries: Optional[List["MavenLibraryDto"]] = None,
        libraries: Optional[List[Any]] = None,
        linked_adb_workspace_metadata: Optional["LinkedADBWorkspaceMetadata"] = None,
        databrick_resource_id: Optional[str] = None,
        auto_scale: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword workers:
        :paramtype workers: int
        :keyword minimum_worker_count:
        :paramtype minimum_worker_count: int
        :keyword max_mum_worker_count:
        :paramtype max_mum_worker_count: int
        :keyword spark_version:
        :paramtype spark_version: str
        :keyword node_type_id:
        :paramtype node_type_id: str
        :keyword spark_conf: Dictionary of :code:`<string>`.
        :paramtype spark_conf: dict[str, str]
        :keyword spark_env_vars: Dictionary of :code:`<string>`.
        :paramtype spark_env_vars: dict[str, str]
        :keyword cluster_log_conf_dbfs_path:
        :paramtype cluster_log_conf_dbfs_path: str
        :keyword dbfs_init_scripts:
        :paramtype dbfs_init_scripts: list[~flow.models.InitScriptInfoDto]
        :keyword instance_pool_id:
        :paramtype instance_pool_id: str
        :keyword timeout_seconds:
        :paramtype timeout_seconds: int
        :keyword notebook_task:
        :paramtype notebook_task: ~flow.models.NoteBookTaskDto
        :keyword spark_python_task:
        :paramtype spark_python_task: ~flow.models.SparkPythonTaskDto
        :keyword spark_jar_task:
        :paramtype spark_jar_task: ~flow.models.SparkJarTaskDto
        :keyword spark_submit_task:
        :paramtype spark_submit_task: ~flow.models.SparkSubmitTaskDto
        :keyword jar_libraries:
        :paramtype jar_libraries: list[str]
        :keyword egg_libraries:
        :paramtype egg_libraries: list[str]
        :keyword whl_libraries:
        :paramtype whl_libraries: list[str]
        :keyword pypi_libraries:
        :paramtype pypi_libraries: list[~flow.models.PythonPyPiOrRCranLibraryDto]
        :keyword r_cran_libraries:
        :paramtype r_cran_libraries: list[~flow.models.PythonPyPiOrRCranLibraryDto]
        :keyword maven_libraries:
        :paramtype maven_libraries: list[~flow.models.MavenLibraryDto]
        :keyword libraries:
        :paramtype libraries: list[any]
        :keyword linked_adb_workspace_metadata:
        :paramtype linked_adb_workspace_metadata: ~flow.models.LinkedADBWorkspaceMetadata
        :keyword databrick_resource_id:
        :paramtype databrick_resource_id: str
        :keyword auto_scale:
        :paramtype auto_scale: bool
        """
        super(DatabricksConfiguration, self).__init__(**kwargs)
        self.workers = workers
        self.minimum_worker_count = minimum_worker_count
        self.max_mum_worker_count = max_mum_worker_count
        self.spark_version = spark_version
        self.node_type_id = node_type_id
        self.spark_conf = spark_conf
        self.spark_env_vars = spark_env_vars
        self.cluster_log_conf_dbfs_path = cluster_log_conf_dbfs_path
        self.dbfs_init_scripts = dbfs_init_scripts
        self.instance_pool_id = instance_pool_id
        self.timeout_seconds = timeout_seconds
        self.notebook_task = notebook_task
        self.spark_python_task = spark_python_task
        self.spark_jar_task = spark_jar_task
        self.spark_submit_task = spark_submit_task
        self.jar_libraries = jar_libraries
        self.egg_libraries = egg_libraries
        self.whl_libraries = whl_libraries
        self.pypi_libraries = pypi_libraries
        self.r_cran_libraries = r_cran_libraries
        self.maven_libraries = maven_libraries
        self.libraries = libraries
        self.linked_adb_workspace_metadata = linked_adb_workspace_metadata
        self.databrick_resource_id = databrick_resource_id
        self.auto_scale = auto_scale


class DatacacheConfiguration(msrest.serialization.Model):
    """DatacacheConfiguration.

    :ivar datacache_id:
    :vartype datacache_id: str
    :ivar datacache_store:
    :vartype datacache_store: str
    :ivar dataset_id:
    :vartype dataset_id: str
    :ivar mode:  The only acceptable values to pass in are None and "Mount". The default value is
     None.
    :vartype mode: str
    :ivar replica:
    :vartype replica: int
    :ivar failure_fallback:
    :vartype failure_fallback: bool
    :ivar path_on_compute:
    :vartype path_on_compute: str
    """

    _attribute_map = {
        'datacache_id': {'key': 'datacacheId', 'type': 'str'},
        'datacache_store': {'key': 'datacacheStore', 'type': 'str'},
        'dataset_id': {'key': 'datasetId', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'replica': {'key': 'replica', 'type': 'int'},
        'failure_fallback': {'key': 'failureFallback', 'type': 'bool'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        datacache_id: Optional[str] = None,
        datacache_store: Optional[str] = None,
        dataset_id: Optional[str] = None,
        mode: Optional[str] = None,
        replica: Optional[int] = None,
        failure_fallback: Optional[bool] = None,
        path_on_compute: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword datacache_id:
        :paramtype datacache_id: str
        :keyword datacache_store:
        :paramtype datacache_store: str
        :keyword dataset_id:
        :paramtype dataset_id: str
        :keyword mode:  The only acceptable values to pass in are None and "Mount". The default value
         is None.
        :paramtype mode: str
        :keyword replica:
        :paramtype replica: int
        :keyword failure_fallback:
        :paramtype failure_fallback: bool
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        """
        super(DatacacheConfiguration, self).__init__(**kwargs)
        self.datacache_id = datacache_id
        self.datacache_store = datacache_store
        self.dataset_id = dataset_id
        self.mode = mode
        self.replica = replica
        self.failure_fallback = failure_fallback
        self.path_on_compute = path_on_compute


class DataInfo(msrest.serialization.Model):
    """DataInfo.

    :ivar feed_name:
    :vartype feed_name: str
    :ivar id:
    :vartype id: str
    :ivar data_source_type: Possible values include: "None", "PipelineDataSource", "AmlDataset",
     "GlobalDataset", "FeedModel", "FeedDataset", "AmlDataVersion", "AMLModelVersion".
    :vartype data_source_type: str or ~flow.models.DataSourceType
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar data_type_id:
    :vartype data_type_id: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar modified_date:
    :vartype modified_date: ~datetime.datetime
    :ivar registered_by:
    :vartype registered_by: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar created_by_studio:
    :vartype created_by_studio: bool
    :ivar data_reference_type: Possible values include: "None", "AzureBlob", "AzureDataLake",
     "AzureFiles", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS",
     "AzureMySqlDatabase", "Custom", "Hdfs".
    :vartype data_reference_type: str or ~flow.models.DataReferenceType
    :ivar dataset_type:
    :vartype dataset_type: str
    :ivar saved_dataset_id:
    :vartype saved_dataset_id: str
    :ivar dataset_version_id:
    :vartype dataset_version_id: str
    :ivar is_visible:
    :vartype is_visible: bool
    :ivar is_registered:
    :vartype is_registered: bool
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, any]
    :ivar connection_string:
    :vartype connection_string: str
    :ivar container_name:
    :vartype container_name: str
    :ivar data_storage_endpoint_uri:
    :vartype data_storage_endpoint_uri: str
    :ivar workspace_sai_token:
    :vartype workspace_sai_token: str
    :ivar aml_dataset_data_flow:
    :vartype aml_dataset_data_flow: str
    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar arm_id:
    :vartype arm_id: str
    :ivar asset_id:
    :vartype asset_id: str
    :ivar asset_uri:
    :vartype asset_uri: str
    :ivar asset_type:
    :vartype asset_type: str
    :ivar is_data_v2:
    :vartype is_data_v2: bool
    :ivar asset_scope_type: Possible values include: "Workspace", "Global", "All", "Feed".
    :vartype asset_scope_type: str or ~flow.models.AssetScopeTypes
    :ivar pipeline_run_id:
    :vartype pipeline_run_id: str
    :ivar module_node_id:
    :vartype module_node_id: str
    :ivar output_port_name:
    :vartype output_port_name: str
    """

    _attribute_map = {
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'data_source_type': {'key': 'dataSourceType', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'modified_date': {'key': 'modifiedDate', 'type': 'iso-8601'},
        'registered_by': {'key': 'registeredBy', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'created_by_studio': {'key': 'createdByStudio', 'type': 'bool'},
        'data_reference_type': {'key': 'dataReferenceType', 'type': 'str'},
        'dataset_type': {'key': 'datasetType', 'type': 'str'},
        'saved_dataset_id': {'key': 'savedDatasetId', 'type': 'str'},
        'dataset_version_id': {'key': 'datasetVersionId', 'type': 'str'},
        'is_visible': {'key': 'isVisible', 'type': 'bool'},
        'is_registered': {'key': 'isRegistered', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': '{object}'},
        'connection_string': {'key': 'connectionString', 'type': 'str'},
        'container_name': {'key': 'containerName', 'type': 'str'},
        'data_storage_endpoint_uri': {'key': 'dataStorageEndpointUri', 'type': 'str'},
        'workspace_sai_token': {'key': 'workspaceSaiToken', 'type': 'str'},
        'aml_dataset_data_flow': {'key': 'amlDatasetDataFlow', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'arm_id': {'key': 'armId', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'asset_uri': {'key': 'assetUri', 'type': 'str'},
        'asset_type': {'key': 'assetType', 'type': 'str'},
        'is_data_v2': {'key': 'isDataV2', 'type': 'bool'},
        'asset_scope_type': {'key': 'assetScopeType', 'type': 'str'},
        'pipeline_run_id': {'key': 'pipelineRunId', 'type': 'str'},
        'module_node_id': {'key': 'moduleNodeId', 'type': 'str'},
        'output_port_name': {'key': 'outputPortName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        feed_name: Optional[str] = None,
        id: Optional[str] = None,
        data_source_type: Optional[Union[str, "DataSourceType"]] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        data_type_id: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        modified_date: Optional[datetime.datetime] = None,
        registered_by: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        created_by_studio: Optional[bool] = None,
        data_reference_type: Optional[Union[str, "DataReferenceType"]] = None,
        dataset_type: Optional[str] = None,
        saved_dataset_id: Optional[str] = None,
        dataset_version_id: Optional[str] = None,
        is_visible: Optional[bool] = None,
        is_registered: Optional[bool] = None,
        properties: Optional[Dict[str, Any]] = None,
        connection_string: Optional[str] = None,
        container_name: Optional[str] = None,
        data_storage_endpoint_uri: Optional[str] = None,
        workspace_sai_token: Optional[str] = None,
        aml_dataset_data_flow: Optional[str] = None,
        system_data: Optional["SystemData"] = None,
        arm_id: Optional[str] = None,
        asset_id: Optional[str] = None,
        asset_uri: Optional[str] = None,
        asset_type: Optional[str] = None,
        is_data_v2: Optional[bool] = None,
        asset_scope_type: Optional[Union[str, "AssetScopeTypes"]] = None,
        pipeline_run_id: Optional[str] = None,
        module_node_id: Optional[str] = None,
        output_port_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword id:
        :paramtype id: str
        :keyword data_source_type: Possible values include: "None", "PipelineDataSource", "AmlDataset",
         "GlobalDataset", "FeedModel", "FeedDataset", "AmlDataVersion", "AMLModelVersion".
        :paramtype data_source_type: str or ~flow.models.DataSourceType
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword data_type_id:
        :paramtype data_type_id: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword modified_date:
        :paramtype modified_date: ~datetime.datetime
        :keyword registered_by:
        :paramtype registered_by: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword created_by_studio:
        :paramtype created_by_studio: bool
        :keyword data_reference_type: Possible values include: "None", "AzureBlob", "AzureDataLake",
         "AzureFiles", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS",
         "AzureMySqlDatabase", "Custom", "Hdfs".
        :paramtype data_reference_type: str or ~flow.models.DataReferenceType
        :keyword dataset_type:
        :paramtype dataset_type: str
        :keyword saved_dataset_id:
        :paramtype saved_dataset_id: str
        :keyword dataset_version_id:
        :paramtype dataset_version_id: str
        :keyword is_visible:
        :paramtype is_visible: bool
        :keyword is_registered:
        :paramtype is_registered: bool
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, any]
        :keyword connection_string:
        :paramtype connection_string: str
        :keyword container_name:
        :paramtype container_name: str
        :keyword data_storage_endpoint_uri:
        :paramtype data_storage_endpoint_uri: str
        :keyword workspace_sai_token:
        :paramtype workspace_sai_token: str
        :keyword aml_dataset_data_flow:
        :paramtype aml_dataset_data_flow: str
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword arm_id:
        :paramtype arm_id: str
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword asset_uri:
        :paramtype asset_uri: str
        :keyword asset_type:
        :paramtype asset_type: str
        :keyword is_data_v2:
        :paramtype is_data_v2: bool
        :keyword asset_scope_type: Possible values include: "Workspace", "Global", "All", "Feed".
        :paramtype asset_scope_type: str or ~flow.models.AssetScopeTypes
        :keyword pipeline_run_id:
        :paramtype pipeline_run_id: str
        :keyword module_node_id:
        :paramtype module_node_id: str
        :keyword output_port_name:
        :paramtype output_port_name: str
        """
        super(DataInfo, self).__init__(**kwargs)
        self.feed_name = feed_name
        self.id = id
        self.data_source_type = data_source_type
        self.name = name
        self.description = description
        self.data_type_id = data_type_id
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path
        self.created_date = created_date
        self.modified_date = modified_date
        self.registered_by = registered_by
        self.tags = tags
        self.created_by_studio = created_by_studio
        self.data_reference_type = data_reference_type
        self.dataset_type = dataset_type
        self.saved_dataset_id = saved_dataset_id
        self.dataset_version_id = dataset_version_id
        self.is_visible = is_visible
        self.is_registered = is_registered
        self.properties = properties
        self.connection_string = connection_string
        self.container_name = container_name
        self.data_storage_endpoint_uri = data_storage_endpoint_uri
        self.workspace_sai_token = workspace_sai_token
        self.aml_dataset_data_flow = aml_dataset_data_flow
        self.system_data = system_data
        self.arm_id = arm_id
        self.asset_id = asset_id
        self.asset_uri = asset_uri
        self.asset_type = asset_type
        self.is_data_v2 = is_data_v2
        self.asset_scope_type = asset_scope_type
        self.pipeline_run_id = pipeline_run_id
        self.module_node_id = module_node_id
        self.output_port_name = output_port_name


class DataLocation(msrest.serialization.Model):
    """DataLocation.

    :ivar storage_type: Possible values include: "None", "AzureBlob", "Artifact", "Snapshot",
     "SavedAmlDataset", "Asset".
    :vartype storage_type: str or ~flow.models.DataLocationStorageType
    :ivar storage_id:
    :vartype storage_id: str
    :ivar uri:
    :vartype uri: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_reference:
    :vartype data_reference: ~flow.models.DataReference
    :ivar aml_dataset:
    :vartype aml_dataset: ~flow.models.AmlDataset
    :ivar asset_definition:
    :vartype asset_definition: ~flow.models.AssetDefinition
    """

    _attribute_map = {
        'storage_type': {'key': 'storageType', 'type': 'str'},
        'storage_id': {'key': 'storageId', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_reference': {'key': 'dataReference', 'type': 'DataReference'},
        'aml_dataset': {'key': 'amlDataset', 'type': 'AmlDataset'},
        'asset_definition': {'key': 'assetDefinition', 'type': 'AssetDefinition'},
    }

    def __init__(
        self,
        *,
        storage_type: Optional[Union[str, "DataLocationStorageType"]] = None,
        storage_id: Optional[str] = None,
        uri: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_reference: Optional["DataReference"] = None,
        aml_dataset: Optional["AmlDataset"] = None,
        asset_definition: Optional["AssetDefinition"] = None,
        **kwargs
    ):
        """
        :keyword storage_type: Possible values include: "None", "AzureBlob", "Artifact", "Snapshot",
         "SavedAmlDataset", "Asset".
        :paramtype storage_type: str or ~flow.models.DataLocationStorageType
        :keyword storage_id:
        :paramtype storage_id: str
        :keyword uri:
        :paramtype uri: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_reference:
        :paramtype data_reference: ~flow.models.DataReference
        :keyword aml_dataset:
        :paramtype aml_dataset: ~flow.models.AmlDataset
        :keyword asset_definition:
        :paramtype asset_definition: ~flow.models.AssetDefinition
        """
        super(DataLocation, self).__init__(**kwargs)
        self.storage_type = storage_type
        self.storage_id = storage_id
        self.uri = uri
        self.data_store_name = data_store_name
        self.data_reference = data_reference
        self.aml_dataset = aml_dataset
        self.asset_definition = asset_definition


class DataPath(msrest.serialization.Model):
    """DataPath.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar sql_data_path:
    :vartype sql_data_path: ~flow.models.SqlDataPath
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'sql_data_path': {'key': 'sqlDataPath', 'type': 'SqlDataPath'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        sql_data_path: Optional["SqlDataPath"] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword sql_data_path:
        :paramtype sql_data_path: ~flow.models.SqlDataPath
        """
        super(DataPath, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.relative_path = relative_path
        self.sql_data_path = sql_data_path


class DataPathParameter(msrest.serialization.Model):
    """DataPathParameter.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar default_value:
    :vartype default_value: ~flow.models.LegacyDataPath
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar data_type_id:
    :vartype data_type_id: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'LegacyDataPath'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        default_value: Optional["LegacyDataPath"] = None,
        is_optional: Optional[bool] = None,
        data_type_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword default_value:
        :paramtype default_value: ~flow.models.LegacyDataPath
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword data_type_id:
        :paramtype data_type_id: str
        """
        super(DataPathParameter, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.default_value = default_value
        self.is_optional = is_optional
        self.data_type_id = data_type_id


class DataPortDto(msrest.serialization.Model):
    """DataPortDto.

    :ivar data_port_type: Possible values include: "Input", "Output".
    :vartype data_port_type: str or ~flow.models.DataPortType
    :ivar data_port_name:
    :vartype data_port_name: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_intellectual_property_access_mode: Possible values include: "ReadOnly",
     "ReadWrite".
    :vartype data_store_intellectual_property_access_mode: str or
     ~flow.models.IntellectualPropertyAccessMode
    :ivar data_store_intellectual_property_publisher:
    :vartype data_store_intellectual_property_publisher: str
    """

    _attribute_map = {
        'data_port_type': {'key': 'dataPortType', 'type': 'str'},
        'data_port_name': {'key': 'dataPortName', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_intellectual_property_access_mode': {'key': 'dataStoreIntellectualPropertyAccessMode', 'type': 'str'},
        'data_store_intellectual_property_publisher': {'key': 'dataStoreIntellectualPropertyPublisher', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_port_type: Optional[Union[str, "DataPortType"]] = None,
        data_port_name: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_store_intellectual_property_access_mode: Optional[Union[str, "IntellectualPropertyAccessMode"]] = None,
        data_store_intellectual_property_publisher: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_port_type: Possible values include: "Input", "Output".
        :paramtype data_port_type: str or ~flow.models.DataPortType
        :keyword data_port_name:
        :paramtype data_port_name: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_intellectual_property_access_mode: Possible values include: "ReadOnly",
         "ReadWrite".
        :paramtype data_store_intellectual_property_access_mode: str or
         ~flow.models.IntellectualPropertyAccessMode
        :keyword data_store_intellectual_property_publisher:
        :paramtype data_store_intellectual_property_publisher: str
        """
        super(DataPortDto, self).__init__(**kwargs)
        self.data_port_type = data_port_type
        self.data_port_name = data_port_name
        self.data_store_name = data_store_name
        self.data_store_intellectual_property_access_mode = data_store_intellectual_property_access_mode
        self.data_store_intellectual_property_publisher = data_store_intellectual_property_publisher


class DataReference(msrest.serialization.Model):
    """DataReference.

    :ivar type: Possible values include: "None", "AzureBlob", "AzureDataLake", "AzureFiles",
     "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS", "AzureMySqlDatabase",
     "Custom", "Hdfs".
    :vartype type: str or ~flow.models.DataReferenceType
    :ivar azure_blob_reference:
    :vartype azure_blob_reference: ~flow.models.AzureBlobReference
    :ivar azure_data_lake_reference:
    :vartype azure_data_lake_reference: ~flow.models.AzureDataLakeReference
    :ivar azure_files_reference:
    :vartype azure_files_reference: ~flow.models.AzureFilesReference
    :ivar azure_sql_database_reference:
    :vartype azure_sql_database_reference: ~flow.models.AzureDatabaseReference
    :ivar azure_postgres_database_reference:
    :vartype azure_postgres_database_reference: ~flow.models.AzureDatabaseReference
    :ivar azure_data_lake_gen2_reference:
    :vartype azure_data_lake_gen2_reference: ~flow.models.AzureDataLakeGen2Reference
    :ivar dbfs_reference:
    :vartype dbfs_reference: ~flow.models.DBFSReference
    :ivar azure_my_sql_database_reference:
    :vartype azure_my_sql_database_reference: ~flow.models.AzureDatabaseReference
    :ivar custom_reference:
    :vartype custom_reference: ~flow.models.CustomReference
    :ivar hdfs_reference:
    :vartype hdfs_reference: ~flow.models.HdfsReference
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'azure_blob_reference': {'key': 'azureBlobReference', 'type': 'AzureBlobReference'},
        'azure_data_lake_reference': {'key': 'azureDataLakeReference', 'type': 'AzureDataLakeReference'},
        'azure_files_reference': {'key': 'azureFilesReference', 'type': 'AzureFilesReference'},
        'azure_sql_database_reference': {'key': 'azureSqlDatabaseReference', 'type': 'AzureDatabaseReference'},
        'azure_postgres_database_reference': {'key': 'azurePostgresDatabaseReference', 'type': 'AzureDatabaseReference'},
        'azure_data_lake_gen2_reference': {'key': 'azureDataLakeGen2Reference', 'type': 'AzureDataLakeGen2Reference'},
        'dbfs_reference': {'key': 'dbfsReference', 'type': 'DBFSReference'},
        'azure_my_sql_database_reference': {'key': 'azureMySqlDatabaseReference', 'type': 'AzureDatabaseReference'},
        'custom_reference': {'key': 'customReference', 'type': 'CustomReference'},
        'hdfs_reference': {'key': 'hdfsReference', 'type': 'HdfsReference'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "DataReferenceType"]] = None,
        azure_blob_reference: Optional["AzureBlobReference"] = None,
        azure_data_lake_reference: Optional["AzureDataLakeReference"] = None,
        azure_files_reference: Optional["AzureFilesReference"] = None,
        azure_sql_database_reference: Optional["AzureDatabaseReference"] = None,
        azure_postgres_database_reference: Optional["AzureDatabaseReference"] = None,
        azure_data_lake_gen2_reference: Optional["AzureDataLakeGen2Reference"] = None,
        dbfs_reference: Optional["DBFSReference"] = None,
        azure_my_sql_database_reference: Optional["AzureDatabaseReference"] = None,
        custom_reference: Optional["CustomReference"] = None,
        hdfs_reference: Optional["HdfsReference"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "None", "AzureBlob", "AzureDataLake", "AzureFiles",
         "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS", "AzureMySqlDatabase",
         "Custom", "Hdfs".
        :paramtype type: str or ~flow.models.DataReferenceType
        :keyword azure_blob_reference:
        :paramtype azure_blob_reference: ~flow.models.AzureBlobReference
        :keyword azure_data_lake_reference:
        :paramtype azure_data_lake_reference: ~flow.models.AzureDataLakeReference
        :keyword azure_files_reference:
        :paramtype azure_files_reference: ~flow.models.AzureFilesReference
        :keyword azure_sql_database_reference:
        :paramtype azure_sql_database_reference: ~flow.models.AzureDatabaseReference
        :keyword azure_postgres_database_reference:
        :paramtype azure_postgres_database_reference: ~flow.models.AzureDatabaseReference
        :keyword azure_data_lake_gen2_reference:
        :paramtype azure_data_lake_gen2_reference: ~flow.models.AzureDataLakeGen2Reference
        :keyword dbfs_reference:
        :paramtype dbfs_reference: ~flow.models.DBFSReference
        :keyword azure_my_sql_database_reference:
        :paramtype azure_my_sql_database_reference: ~flow.models.AzureDatabaseReference
        :keyword custom_reference:
        :paramtype custom_reference: ~flow.models.CustomReference
        :keyword hdfs_reference:
        :paramtype hdfs_reference: ~flow.models.HdfsReference
        """
        super(DataReference, self).__init__(**kwargs)
        self.type = type
        self.azure_blob_reference = azure_blob_reference
        self.azure_data_lake_reference = azure_data_lake_reference
        self.azure_files_reference = azure_files_reference
        self.azure_sql_database_reference = azure_sql_database_reference
        self.azure_postgres_database_reference = azure_postgres_database_reference
        self.azure_data_lake_gen2_reference = azure_data_lake_gen2_reference
        self.dbfs_reference = dbfs_reference
        self.azure_my_sql_database_reference = azure_my_sql_database_reference
        self.custom_reference = custom_reference
        self.hdfs_reference = hdfs_reference


class DataReferenceConfiguration(msrest.serialization.Model):
    """DataReferenceConfiguration.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar mode: Possible values include: "Mount", "Download", "Upload".
    :vartype mode: str or ~flow.models.DataStoreMode
    :ivar path_on_data_store:
    :vartype path_on_data_store: str
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'path_on_data_store': {'key': 'pathOnDataStore', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        mode: Optional[Union[str, "DataStoreMode"]] = None,
        path_on_data_store: Optional[str] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword mode: Possible values include: "Mount", "Download", "Upload".
        :paramtype mode: str or ~flow.models.DataStoreMode
        :keyword path_on_data_store:
        :paramtype path_on_data_store: str
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        """
        super(DataReferenceConfiguration, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.mode = mode
        self.path_on_data_store = path_on_data_store
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite


class DataSetDefinition(msrest.serialization.Model):
    """DataSetDefinition.

    :ivar data_type_short_name:
    :vartype data_type_short_name: str
    :ivar parameter_name:
    :vartype parameter_name: str
    :ivar value:
    :vartype value: ~flow.models.DataSetDefinitionValue
    """

    _attribute_map = {
        'data_type_short_name': {'key': 'dataTypeShortName', 'type': 'str'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
        'value': {'key': 'value', 'type': 'DataSetDefinitionValue'},
    }

    def __init__(
        self,
        *,
        data_type_short_name: Optional[str] = None,
        parameter_name: Optional[str] = None,
        value: Optional["DataSetDefinitionValue"] = None,
        **kwargs
    ):
        """
        :keyword data_type_short_name:
        :paramtype data_type_short_name: str
        :keyword parameter_name:
        :paramtype parameter_name: str
        :keyword value:
        :paramtype value: ~flow.models.DataSetDefinitionValue
        """
        super(DataSetDefinition, self).__init__(**kwargs)
        self.data_type_short_name = data_type_short_name
        self.parameter_name = parameter_name
        self.value = value


class DataSetDefinitionValue(msrest.serialization.Model):
    """DataSetDefinitionValue.

    :ivar literal_value:
    :vartype literal_value: ~flow.models.DataPath
    :ivar data_set_reference:
    :vartype data_set_reference: ~flow.models.RegisteredDataSetReference
    :ivar saved_data_set_reference:
    :vartype saved_data_set_reference: ~flow.models.SavedDataSetReference
    :ivar asset_definition:
    :vartype asset_definition: ~flow.models.AssetDefinition
    """

    _attribute_map = {
        'literal_value': {'key': 'literalValue', 'type': 'DataPath'},
        'data_set_reference': {'key': 'dataSetReference', 'type': 'RegisteredDataSetReference'},
        'saved_data_set_reference': {'key': 'savedDataSetReference', 'type': 'SavedDataSetReference'},
        'asset_definition': {'key': 'assetDefinition', 'type': 'AssetDefinition'},
    }

    def __init__(
        self,
        *,
        literal_value: Optional["DataPath"] = None,
        data_set_reference: Optional["RegisteredDataSetReference"] = None,
        saved_data_set_reference: Optional["SavedDataSetReference"] = None,
        asset_definition: Optional["AssetDefinition"] = None,
        **kwargs
    ):
        """
        :keyword literal_value:
        :paramtype literal_value: ~flow.models.DataPath
        :keyword data_set_reference:
        :paramtype data_set_reference: ~flow.models.RegisteredDataSetReference
        :keyword saved_data_set_reference:
        :paramtype saved_data_set_reference: ~flow.models.SavedDataSetReference
        :keyword asset_definition:
        :paramtype asset_definition: ~flow.models.AssetDefinition
        """
        super(DataSetDefinitionValue, self).__init__(**kwargs)
        self.literal_value = literal_value
        self.data_set_reference = data_set_reference
        self.saved_data_set_reference = saved_data_set_reference
        self.asset_definition = asset_definition


class DatasetIdentifier(msrest.serialization.Model):
    """DatasetIdentifier.

    :ivar saved_id:
    :vartype saved_id: str
    :ivar registered_id:
    :vartype registered_id: str
    :ivar registered_version:
    :vartype registered_version: str
    """

    _attribute_map = {
        'saved_id': {'key': 'savedId', 'type': 'str'},
        'registered_id': {'key': 'registeredId', 'type': 'str'},
        'registered_version': {'key': 'registeredVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        saved_id: Optional[str] = None,
        registered_id: Optional[str] = None,
        registered_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword saved_id:
        :paramtype saved_id: str
        :keyword registered_id:
        :paramtype registered_id: str
        :keyword registered_version:
        :paramtype registered_version: str
        """
        super(DatasetIdentifier, self).__init__(**kwargs)
        self.saved_id = saved_id
        self.registered_id = registered_id
        self.registered_version = registered_version


class DatasetInputDetails(msrest.serialization.Model):
    """DatasetInputDetails.

    :ivar input_name:
    :vartype input_name: str
    :ivar mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
    :vartype mechanism: str or ~flow.models.DatasetDeliveryMechanism
    :ivar path_on_compute:
    :vartype path_on_compute: str
    """

    _attribute_map = {
        'input_name': {'key': 'inputName', 'type': 'str'},
        'mechanism': {'key': 'mechanism', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        input_name: Optional[str] = None,
        mechanism: Optional[Union[str, "DatasetDeliveryMechanism"]] = None,
        path_on_compute: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword input_name:
        :paramtype input_name: str
        :keyword mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
        :paramtype mechanism: str or ~flow.models.DatasetDeliveryMechanism
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        """
        super(DatasetInputDetails, self).__init__(**kwargs)
        self.input_name = input_name
        self.mechanism = mechanism
        self.path_on_compute = path_on_compute


class DatasetLineage(msrest.serialization.Model):
    """DatasetLineage.

    :ivar identifier:
    :vartype identifier: ~flow.models.DatasetIdentifier
    :ivar consumption_type: Possible values include: "RunInput", "Reference".
    :vartype consumption_type: str or ~flow.models.DatasetConsumptionType
    :ivar input_details:
    :vartype input_details: ~flow.models.DatasetInputDetails
    """

    _attribute_map = {
        'identifier': {'key': 'identifier', 'type': 'DatasetIdentifier'},
        'consumption_type': {'key': 'consumptionType', 'type': 'str'},
        'input_details': {'key': 'inputDetails', 'type': 'DatasetInputDetails'},
    }

    def __init__(
        self,
        *,
        identifier: Optional["DatasetIdentifier"] = None,
        consumption_type: Optional[Union[str, "DatasetConsumptionType"]] = None,
        input_details: Optional["DatasetInputDetails"] = None,
        **kwargs
    ):
        """
        :keyword identifier:
        :paramtype identifier: ~flow.models.DatasetIdentifier
        :keyword consumption_type: Possible values include: "RunInput", "Reference".
        :paramtype consumption_type: str or ~flow.models.DatasetConsumptionType
        :keyword input_details:
        :paramtype input_details: ~flow.models.DatasetInputDetails
        """
        super(DatasetLineage, self).__init__(**kwargs)
        self.identifier = identifier
        self.consumption_type = consumption_type
        self.input_details = input_details


class DatasetOutput(msrest.serialization.Model):
    """DatasetOutput.

    :ivar dataset_type: Possible values include: "File", "Tabular".
    :vartype dataset_type: str or ~flow.models.DatasetType
    :ivar dataset_registration:
    :vartype dataset_registration: ~flow.models.DatasetRegistration
    :ivar dataset_output_options:
    :vartype dataset_output_options: ~flow.models.DatasetOutputOptions
    """

    _attribute_map = {
        'dataset_type': {'key': 'datasetType', 'type': 'str'},
        'dataset_registration': {'key': 'datasetRegistration', 'type': 'DatasetRegistration'},
        'dataset_output_options': {'key': 'datasetOutputOptions', 'type': 'DatasetOutputOptions'},
    }

    def __init__(
        self,
        *,
        dataset_type: Optional[Union[str, "DatasetType"]] = None,
        dataset_registration: Optional["DatasetRegistration"] = None,
        dataset_output_options: Optional["DatasetOutputOptions"] = None,
        **kwargs
    ):
        """
        :keyword dataset_type: Possible values include: "File", "Tabular".
        :paramtype dataset_type: str or ~flow.models.DatasetType
        :keyword dataset_registration:
        :paramtype dataset_registration: ~flow.models.DatasetRegistration
        :keyword dataset_output_options:
        :paramtype dataset_output_options: ~flow.models.DatasetOutputOptions
        """
        super(DatasetOutput, self).__init__(**kwargs)
        self.dataset_type = dataset_type
        self.dataset_registration = dataset_registration
        self.dataset_output_options = dataset_output_options


class DatasetOutputDetails(msrest.serialization.Model):
    """DatasetOutputDetails.

    :ivar output_name:
    :vartype output_name: str
    """

    _attribute_map = {
        'output_name': {'key': 'outputName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        output_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword output_name:
        :paramtype output_name: str
        """
        super(DatasetOutputDetails, self).__init__(**kwargs)
        self.output_name = output_name


class DatasetOutputOptions(msrest.serialization.Model):
    """DatasetOutputOptions.

    :ivar source_globs:
    :vartype source_globs: ~flow.models.GlobsOptions
    :ivar path_on_datastore:
    :vartype path_on_datastore: str
    :ivar path_on_datastore_parameter_assignment:
    :vartype path_on_datastore_parameter_assignment: ~flow.models.ParameterAssignment
    """

    _attribute_map = {
        'source_globs': {'key': 'sourceGlobs', 'type': 'GlobsOptions'},
        'path_on_datastore': {'key': 'pathOnDatastore', 'type': 'str'},
        'path_on_datastore_parameter_assignment': {'key': 'PathOnDatastoreParameterAssignment', 'type': 'ParameterAssignment'},
    }

    def __init__(
        self,
        *,
        source_globs: Optional["GlobsOptions"] = None,
        path_on_datastore: Optional[str] = None,
        path_on_datastore_parameter_assignment: Optional["ParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword source_globs:
        :paramtype source_globs: ~flow.models.GlobsOptions
        :keyword path_on_datastore:
        :paramtype path_on_datastore: str
        :keyword path_on_datastore_parameter_assignment:
        :paramtype path_on_datastore_parameter_assignment: ~flow.models.ParameterAssignment
        """
        super(DatasetOutputOptions, self).__init__(**kwargs)
        self.source_globs = source_globs
        self.path_on_datastore = path_on_datastore
        self.path_on_datastore_parameter_assignment = path_on_datastore_parameter_assignment


class DataSetPathParameter(msrest.serialization.Model):
    """DataSetPathParameter.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar default_value:
    :vartype default_value: ~flow.models.DataSetDefinitionValue
    :ivar is_optional:
    :vartype is_optional: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'DataSetDefinitionValue'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        default_value: Optional["DataSetDefinitionValue"] = None,
        is_optional: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword default_value:
        :paramtype default_value: ~flow.models.DataSetDefinitionValue
        :keyword is_optional:
        :paramtype is_optional: bool
        """
        super(DataSetPathParameter, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.default_value = default_value
        self.is_optional = is_optional


class DatasetRegistration(msrest.serialization.Model):
    """DatasetRegistration.

    :ivar name:
    :vartype name: str
    :ivar create_new_version:
    :vartype create_new_version: bool
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'create_new_version': {'key': 'createNewVersion', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        create_new_version: Optional[bool] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword create_new_version:
        :paramtype create_new_version: bool
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(DatasetRegistration, self).__init__(**kwargs)
        self.name = name
        self.create_new_version = create_new_version
        self.description = description
        self.tags = tags
        self.additional_transformations = additional_transformations


class DatasetRegistrationOptions(msrest.serialization.Model):
    """DatasetRegistrationOptions.

    :ivar additional_transformation:
    :vartype additional_transformation: str
    """

    _attribute_map = {
        'additional_transformation': {'key': 'additionalTransformation', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        additional_transformation: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword additional_transformation:
        :paramtype additional_transformation: str
        """
        super(DatasetRegistrationOptions, self).__init__(**kwargs)
        self.additional_transformation = additional_transformation


class DataSettings(msrest.serialization.Model):
    """DataSettings.

    :ivar target_column_name:
    :vartype target_column_name: str
    :ivar weight_column_name:
    :vartype weight_column_name: str
    :ivar positive_label:
    :vartype positive_label: str
    :ivar validation_data:
    :vartype validation_data: ~flow.models.ValidationDataSettings
    :ivar test_data:
    :vartype test_data: ~flow.models.TestDataSettings
    """

    _attribute_map = {
        'target_column_name': {'key': 'targetColumnName', 'type': 'str'},
        'weight_column_name': {'key': 'weightColumnName', 'type': 'str'},
        'positive_label': {'key': 'positiveLabel', 'type': 'str'},
        'validation_data': {'key': 'validationData', 'type': 'ValidationDataSettings'},
        'test_data': {'key': 'testData', 'type': 'TestDataSettings'},
    }

    def __init__(
        self,
        *,
        target_column_name: Optional[str] = None,
        weight_column_name: Optional[str] = None,
        positive_label: Optional[str] = None,
        validation_data: Optional["ValidationDataSettings"] = None,
        test_data: Optional["TestDataSettings"] = None,
        **kwargs
    ):
        """
        :keyword target_column_name:
        :paramtype target_column_name: str
        :keyword weight_column_name:
        :paramtype weight_column_name: str
        :keyword positive_label:
        :paramtype positive_label: str
        :keyword validation_data:
        :paramtype validation_data: ~flow.models.ValidationDataSettings
        :keyword test_data:
        :paramtype test_data: ~flow.models.TestDataSettings
        """
        super(DataSettings, self).__init__(**kwargs)
        self.target_column_name = target_column_name
        self.weight_column_name = weight_column_name
        self.positive_label = positive_label
        self.validation_data = validation_data
        self.test_data = test_data


class DatastoreSetting(msrest.serialization.Model):
    """DatastoreSetting.

    :ivar data_store_name:
    :vartype data_store_name: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        """
        super(DatastoreSetting, self).__init__(**kwargs)
        self.data_store_name = data_store_name


class DataTransferCloudConfiguration(msrest.serialization.Model):
    """DataTransferCloudConfiguration.

    :ivar allow_overwrite:
    :vartype allow_overwrite: bool
    """

    _attribute_map = {
        'allow_overwrite': {'key': 'AllowOverwrite', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        allow_overwrite: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword allow_overwrite:
        :paramtype allow_overwrite: bool
        """
        super(DataTransferCloudConfiguration, self).__init__(**kwargs)
        self.allow_overwrite = allow_overwrite


class DataTransferSink(msrest.serialization.Model):
    """DataTransferSink.

    :ivar type: Possible values include: "DataBase", "FileSystem".
    :vartype type: str or ~flow.models.DataTransferStorageType
    :ivar file_system:
    :vartype file_system: ~flow.models.FileSystem
    :ivar database_sink:
    :vartype database_sink: ~flow.models.DatabaseSink
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'file_system': {'key': 'fileSystem', 'type': 'FileSystem'},
        'database_sink': {'key': 'databaseSink', 'type': 'DatabaseSink'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "DataTransferStorageType"]] = None,
        file_system: Optional["FileSystem"] = None,
        database_sink: Optional["DatabaseSink"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "DataBase", "FileSystem".
        :paramtype type: str or ~flow.models.DataTransferStorageType
        :keyword file_system:
        :paramtype file_system: ~flow.models.FileSystem
        :keyword database_sink:
        :paramtype database_sink: ~flow.models.DatabaseSink
        """
        super(DataTransferSink, self).__init__(**kwargs)
        self.type = type
        self.file_system = file_system
        self.database_sink = database_sink


class DataTransferSource(msrest.serialization.Model):
    """DataTransferSource.

    :ivar type: Possible values include: "DataBase", "FileSystem".
    :vartype type: str or ~flow.models.DataTransferStorageType
    :ivar file_system:
    :vartype file_system: ~flow.models.FileSystem
    :ivar database_source:
    :vartype database_source: ~flow.models.DatabaseSource
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'file_system': {'key': 'fileSystem', 'type': 'FileSystem'},
        'database_source': {'key': 'databaseSource', 'type': 'DatabaseSource'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "DataTransferStorageType"]] = None,
        file_system: Optional["FileSystem"] = None,
        database_source: Optional["DatabaseSource"] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "DataBase", "FileSystem".
        :paramtype type: str or ~flow.models.DataTransferStorageType
        :keyword file_system:
        :paramtype file_system: ~flow.models.FileSystem
        :keyword database_source:
        :paramtype database_source: ~flow.models.DatabaseSource
        """
        super(DataTransferSource, self).__init__(**kwargs)
        self.type = type
        self.file_system = file_system
        self.database_source = database_source


class DataTransferV2CloudSetting(msrest.serialization.Model):
    """DataTransferV2CloudSetting.

    :ivar task_type: Possible values include: "ImportData", "ExportData", "CopyData".
    :vartype task_type: str or ~flow.models.DataTransferTaskType
    :ivar compute_name:
    :vartype compute_name: str
    :ivar copy_data_task:
    :vartype copy_data_task: ~flow.models.CopyDataTask
    :ivar import_data_task:
    :vartype import_data_task: ~flow.models.ImportDataTask
    :ivar export_data_task:
    :vartype export_data_task: ~flow.models.ExportDataTask
    :ivar data_transfer_sources: This is a dictionary.
    :vartype data_transfer_sources: dict[str, ~flow.models.DataTransferSource]
    :ivar data_transfer_sinks: This is a dictionary.
    :vartype data_transfer_sinks: dict[str, ~flow.models.DataTransferSink]
    :ivar data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
    :vartype data_copy_mode: str or ~flow.models.DataCopyMode
    """

    _attribute_map = {
        'task_type': {'key': 'taskType', 'type': 'str'},
        'compute_name': {'key': 'ComputeName', 'type': 'str'},
        'copy_data_task': {'key': 'CopyDataTask', 'type': 'CopyDataTask'},
        'import_data_task': {'key': 'ImportDataTask', 'type': 'ImportDataTask'},
        'export_data_task': {'key': 'ExportDataTask', 'type': 'ExportDataTask'},
        'data_transfer_sources': {'key': 'DataTransferSources', 'type': '{DataTransferSource}'},
        'data_transfer_sinks': {'key': 'DataTransferSinks', 'type': '{DataTransferSink}'},
        'data_copy_mode': {'key': 'DataCopyMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        task_type: Optional[Union[str, "DataTransferTaskType"]] = None,
        compute_name: Optional[str] = None,
        copy_data_task: Optional["CopyDataTask"] = None,
        import_data_task: Optional["ImportDataTask"] = None,
        export_data_task: Optional["ExportDataTask"] = None,
        data_transfer_sources: Optional[Dict[str, "DataTransferSource"]] = None,
        data_transfer_sinks: Optional[Dict[str, "DataTransferSink"]] = None,
        data_copy_mode: Optional[Union[str, "DataCopyMode"]] = None,
        **kwargs
    ):
        """
        :keyword task_type: Possible values include: "ImportData", "ExportData", "CopyData".
        :paramtype task_type: str or ~flow.models.DataTransferTaskType
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword copy_data_task:
        :paramtype copy_data_task: ~flow.models.CopyDataTask
        :keyword import_data_task:
        :paramtype import_data_task: ~flow.models.ImportDataTask
        :keyword export_data_task:
        :paramtype export_data_task: ~flow.models.ExportDataTask
        :keyword data_transfer_sources: This is a dictionary.
        :paramtype data_transfer_sources: dict[str, ~flow.models.DataTransferSource]
        :keyword data_transfer_sinks: This is a dictionary.
        :paramtype data_transfer_sinks: dict[str, ~flow.models.DataTransferSink]
        :keyword data_copy_mode: Possible values include: "MergeWithOverwrite", "FailIfConflict".
        :paramtype data_copy_mode: str or ~flow.models.DataCopyMode
        """
        super(DataTransferV2CloudSetting, self).__init__(**kwargs)
        self.task_type = task_type
        self.compute_name = compute_name
        self.copy_data_task = copy_data_task
        self.import_data_task = import_data_task
        self.export_data_task = export_data_task
        self.data_transfer_sources = data_transfer_sources
        self.data_transfer_sinks = data_transfer_sinks
        self.data_copy_mode = data_copy_mode


class DataTypeCreationInfo(msrest.serialization.Model):
    """DataTypeCreationInfo.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar is_directory:
    :vartype is_directory: bool
    :ivar file_extension:
    :vartype file_extension: str
    :ivar parent_data_type_ids:
    :vartype parent_data_type_ids: list[str]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'is_directory': {'key': 'isDirectory', 'type': 'bool'},
        'file_extension': {'key': 'fileExtension', 'type': 'str'},
        'parent_data_type_ids': {'key': 'parentDataTypeIds', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        is_directory: Optional[bool] = None,
        file_extension: Optional[str] = None,
        parent_data_type_ids: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword is_directory:
        :paramtype is_directory: bool
        :keyword file_extension:
        :paramtype file_extension: str
        :keyword parent_data_type_ids:
        :paramtype parent_data_type_ids: list[str]
        """
        super(DataTypeCreationInfo, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.description = description
        self.is_directory = is_directory
        self.file_extension = file_extension
        self.parent_data_type_ids = parent_data_type_ids


class DBFSReference(msrest.serialization.Model):
    """DBFSReference.

    :ivar relative_path:
    :vartype relative_path: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    """

    _attribute_map = {
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        relative_path: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        """
        super(DBFSReference, self).__init__(**kwargs)
        self.relative_path = relative_path
        self.aml_data_store_name = aml_data_store_name


class DbfsStorageInfoDto(msrest.serialization.Model):
    """DbfsStorageInfoDto.

    :ivar destination:
    :vartype destination: str
    """

    _attribute_map = {
        'destination': {'key': 'destination', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        destination: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword destination:
        :paramtype destination: str
        """
        super(DbfsStorageInfoDto, self).__init__(**kwargs)
        self.destination = destination


class DebugInfoResponse(msrest.serialization.Model):
    """Internal debugging information not intended for external clients.

    :ivar type: The type.
    :vartype type: str
    :ivar message: The message.
    :vartype message: str
    :ivar stack_trace: The stack trace.
    :vartype stack_trace: str
    :ivar inner_exception: Internal debugging information not intended for external clients.
    :vartype inner_exception: ~flow.models.DebugInfoResponse
    :ivar data: This is a dictionary.
    :vartype data: dict[str, any]
    :ivar error_response: The error response.
    :vartype error_response: ~flow.models.ErrorResponse
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'stack_trace': {'key': 'stackTrace', 'type': 'str'},
        'inner_exception': {'key': 'innerException', 'type': 'DebugInfoResponse'},
        'data': {'key': 'data', 'type': '{object}'},
        'error_response': {'key': 'errorResponse', 'type': 'ErrorResponse'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        message: Optional[str] = None,
        stack_trace: Optional[str] = None,
        inner_exception: Optional["DebugInfoResponse"] = None,
        data: Optional[Dict[str, Any]] = None,
        error_response: Optional["ErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword type: The type.
        :paramtype type: str
        :keyword message: The message.
        :paramtype message: str
        :keyword stack_trace: The stack trace.
        :paramtype stack_trace: str
        :keyword inner_exception: Internal debugging information not intended for external clients.
        :paramtype inner_exception: ~flow.models.DebugInfoResponse
        :keyword data: This is a dictionary.
        :paramtype data: dict[str, any]
        :keyword error_response: The error response.
        :paramtype error_response: ~flow.models.ErrorResponse
        """
        super(DebugInfoResponse, self).__init__(**kwargs)
        self.type = type
        self.message = message
        self.stack_trace = stack_trace
        self.inner_exception = inner_exception
        self.data = data
        self.error_response = error_response


class DeployFlowRequest(msrest.serialization.Model):
    """DeployFlowRequest.

    :ivar source_resource_id:
    :vartype source_resource_id: str
    :ivar source_flow_run_id:
    :vartype source_flow_run_id: str
    :ivar source_flow_id:
    :vartype source_flow_id: str
    :ivar flow:
    :vartype flow: ~flow.models.Flow
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar flow_submit_run_settings:
    :vartype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
    :ivar output_names_included_in_endpoint_response:
    :vartype output_names_included_in_endpoint_response: list[str]
    :ivar endpoint_name:
    :vartype endpoint_name: str
    :ivar endpoint_description:
    :vartype endpoint_description: str
    :ivar auth_mode: Possible values include: "AMLToken", "Key", "AADToken".
    :vartype auth_mode: str or ~flow.models.EndpointAuthMode
    :ivar identity:
    :vartype identity: ~flow.models.ManagedServiceIdentity
    :ivar endpoint_tags: This is a dictionary.
    :vartype endpoint_tags: dict[str, str]
    :ivar enable_public_network_access:
    :vartype enable_public_network_access: bool
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar use_workspace_connection:
    :vartype use_workspace_connection: bool
    :ivar deployment_name:
    :vartype deployment_name: str
    :ivar environment:
    :vartype environment: str
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar deployment_tags: This is a dictionary.
    :vartype deployment_tags: dict[str, str]
    :ivar app_insights_enabled:
    :vartype app_insights_enabled: bool
    :ivar enable_model_data_collector:
    :vartype enable_model_data_collector: bool
    :ivar skip_update_traffic_to_full:
    :vartype skip_update_traffic_to_full: bool
    :ivar enable_streaming_response:
    :vartype enable_streaming_response: bool
    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar auto_grant_connection_permission:
    :vartype auto_grant_connection_permission: bool
    """

    _attribute_map = {
        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
        'source_flow_run_id': {'key': 'sourceFlowRunId', 'type': 'str'},
        'source_flow_id': {'key': 'sourceFlowId', 'type': 'str'},
        'flow': {'key': 'flow', 'type': 'Flow'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'flow_submit_run_settings': {'key': 'flowSubmitRunSettings', 'type': 'FlowSubmitRunSettings'},
        'output_names_included_in_endpoint_response': {'key': 'outputNamesIncludedInEndpointResponse', 'type': '[str]'},
        'endpoint_name': {'key': 'endpointName', 'type': 'str'},
        'endpoint_description': {'key': 'endpointDescription', 'type': 'str'},
        'auth_mode': {'key': 'authMode', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'endpoint_tags': {'key': 'endpointTags', 'type': '{str}'},
        'enable_public_network_access': {'key': 'enablePublicNetworkAccess', 'type': 'bool'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'use_workspace_connection': {'key': 'useWorkspaceConnection', 'type': 'bool'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'deployment_tags': {'key': 'deploymentTags', 'type': '{str}'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'enable_model_data_collector': {'key': 'enableModelDataCollector', 'type': 'bool'},
        'skip_update_traffic_to_full': {'key': 'skipUpdateTrafficToFull', 'type': 'bool'},
        'enable_streaming_response': {'key': 'enableStreamingResponse', 'type': 'bool'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'auto_grant_connection_permission': {'key': 'autoGrantConnectionPermission', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        source_resource_id: Optional[str] = None,
        source_flow_run_id: Optional[str] = None,
        source_flow_id: Optional[str] = None,
        flow: Optional["Flow"] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        flow_submit_run_settings: Optional["FlowSubmitRunSettings"] = None,
        output_names_included_in_endpoint_response: Optional[List[str]] = None,
        endpoint_name: Optional[str] = None,
        endpoint_description: Optional[str] = None,
        auth_mode: Optional[Union[str, "EndpointAuthMode"]] = None,
        identity: Optional["ManagedServiceIdentity"] = None,
        endpoint_tags: Optional[Dict[str, str]] = None,
        enable_public_network_access: Optional[bool] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        use_workspace_connection: Optional[bool] = None,
        deployment_name: Optional[str] = None,
        environment: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        deployment_tags: Optional[Dict[str, str]] = None,
        app_insights_enabled: Optional[bool] = None,
        enable_model_data_collector: Optional[bool] = None,
        skip_update_traffic_to_full: Optional[bool] = None,
        enable_streaming_response: Optional[bool] = None,
        instance_type: Optional[str] = None,
        instance_count: Optional[int] = None,
        auto_grant_connection_permission: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword source_resource_id:
        :paramtype source_resource_id: str
        :keyword source_flow_run_id:
        :paramtype source_flow_run_id: str
        :keyword source_flow_id:
        :paramtype source_flow_id: str
        :keyword flow:
        :paramtype flow: ~flow.models.Flow
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword flow_submit_run_settings:
        :paramtype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
        :keyword output_names_included_in_endpoint_response:
        :paramtype output_names_included_in_endpoint_response: list[str]
        :keyword endpoint_name:
        :paramtype endpoint_name: str
        :keyword endpoint_description:
        :paramtype endpoint_description: str
        :keyword auth_mode: Possible values include: "AMLToken", "Key", "AADToken".
        :paramtype auth_mode: str or ~flow.models.EndpointAuthMode
        :keyword identity:
        :paramtype identity: ~flow.models.ManagedServiceIdentity
        :keyword endpoint_tags: This is a dictionary.
        :paramtype endpoint_tags: dict[str, str]
        :keyword enable_public_network_access:
        :paramtype enable_public_network_access: bool
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword use_workspace_connection:
        :paramtype use_workspace_connection: bool
        :keyword deployment_name:
        :paramtype deployment_name: str
        :keyword environment:
        :paramtype environment: str
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword deployment_tags: This is a dictionary.
        :paramtype deployment_tags: dict[str, str]
        :keyword app_insights_enabled:
        :paramtype app_insights_enabled: bool
        :keyword enable_model_data_collector:
        :paramtype enable_model_data_collector: bool
        :keyword skip_update_traffic_to_full:
        :paramtype skip_update_traffic_to_full: bool
        :keyword enable_streaming_response:
        :paramtype enable_streaming_response: bool
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword auto_grant_connection_permission:
        :paramtype auto_grant_connection_permission: bool
        """
        super(DeployFlowRequest, self).__init__(**kwargs)
        self.source_resource_id = source_resource_id
        self.source_flow_run_id = source_flow_run_id
        self.source_flow_id = source_flow_id
        self.flow = flow
        self.flow_type = flow_type
        self.flow_submit_run_settings = flow_submit_run_settings
        self.output_names_included_in_endpoint_response = output_names_included_in_endpoint_response
        self.endpoint_name = endpoint_name
        self.endpoint_description = endpoint_description
        self.auth_mode = auth_mode
        self.identity = identity
        self.endpoint_tags = endpoint_tags
        self.enable_public_network_access = enable_public_network_access
        self.connection_overrides = connection_overrides
        self.use_workspace_connection = use_workspace_connection
        self.deployment_name = deployment_name
        self.environment = environment
        self.environment_variables = environment_variables
        self.deployment_tags = deployment_tags
        self.app_insights_enabled = app_insights_enabled
        self.enable_model_data_collector = enable_model_data_collector
        self.skip_update_traffic_to_full = skip_update_traffic_to_full
        self.enable_streaming_response = enable_streaming_response
        self.instance_type = instance_type
        self.instance_count = instance_count
        self.auto_grant_connection_permission = auto_grant_connection_permission


class DeploymentInfo(msrest.serialization.Model):
    """DeploymentInfo.

    :ivar operation_id:
    :vartype operation_id: str
    :ivar service_id:
    :vartype service_id: str
    :ivar service_name:
    :vartype service_name: str
    :ivar status_detail:
    :vartype status_detail: str
    """

    _attribute_map = {
        'operation_id': {'key': 'operationId', 'type': 'str'},
        'service_id': {'key': 'serviceId', 'type': 'str'},
        'service_name': {'key': 'serviceName', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        operation_id: Optional[str] = None,
        service_id: Optional[str] = None,
        service_name: Optional[str] = None,
        status_detail: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword operation_id:
        :paramtype operation_id: str
        :keyword service_id:
        :paramtype service_id: str
        :keyword service_name:
        :paramtype service_name: str
        :keyword status_detail:
        :paramtype status_detail: str
        """
        super(DeploymentInfo, self).__init__(**kwargs)
        self.operation_id = operation_id
        self.service_id = service_id
        self.service_name = service_name
        self.status_detail = status_detail


class DistributionConfiguration(msrest.serialization.Model):
    """DistributionConfiguration.

    :ivar distribution_type: Possible values include: "PyTorch", "TensorFlow", "Mpi", "Ray".
    :vartype distribution_type: str or ~flow.models.DistributionType
    """

    _attribute_map = {
        'distribution_type': {'key': 'distributionType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        distribution_type: Optional[Union[str, "DistributionType"]] = None,
        **kwargs
    ):
        """
        :keyword distribution_type: Possible values include: "PyTorch", "TensorFlow", "Mpi", "Ray".
        :paramtype distribution_type: str or ~flow.models.DistributionType
        """
        super(DistributionConfiguration, self).__init__(**kwargs)
        self.distribution_type = distribution_type


class DistributionParameter(msrest.serialization.Model):
    """DistributionParameter.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar description:
    :vartype description: str
    :ivar input_type: Possible values include: "Text", "Number".
    :vartype input_type: str or ~flow.models.DistributionParameterEnum
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'input_type': {'key': 'inputType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        description: Optional[str] = None,
        input_type: Optional[Union[str, "DistributionParameterEnum"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword description:
        :paramtype description: str
        :keyword input_type: Possible values include: "Text", "Number".
        :paramtype input_type: str or ~flow.models.DistributionParameterEnum
        """
        super(DistributionParameter, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.description = description
        self.input_type = input_type


class DockerBuildContext(msrest.serialization.Model):
    """DockerBuildContext.

    :ivar location_type: Possible values include: "Git", "StorageAccount".
    :vartype location_type: str or ~flow.models.BuildContextLocationType
    :ivar location:
    :vartype location: str
    :ivar dockerfile_path:
    :vartype dockerfile_path: str
    """

    _attribute_map = {
        'location_type': {'key': 'locationType', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'dockerfile_path': {'key': 'dockerfilePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        location_type: Optional[Union[str, "BuildContextLocationType"]] = None,
        location: Optional[str] = None,
        dockerfile_path: Optional[str] = "Dockerfile",
        **kwargs
    ):
        """
        :keyword location_type: Possible values include: "Git", "StorageAccount".
        :paramtype location_type: str or ~flow.models.BuildContextLocationType
        :keyword location:
        :paramtype location: str
        :keyword dockerfile_path:
        :paramtype dockerfile_path: str
        """
        super(DockerBuildContext, self).__init__(**kwargs)
        self.location_type = location_type
        self.location = location
        self.dockerfile_path = dockerfile_path


class DockerConfiguration(msrest.serialization.Model):
    """DockerConfiguration.

    :ivar use_docker:
    :vartype use_docker: bool
    :ivar shared_volumes:
    :vartype shared_volumes: bool
    :ivar arguments:
    :vartype arguments: list[str]
    """

    _attribute_map = {
        'use_docker': {'key': 'useDocker', 'type': 'bool'},
        'shared_volumes': {'key': 'sharedVolumes', 'type': 'bool'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        use_docker: Optional[bool] = None,
        shared_volumes: Optional[bool] = None,
        arguments: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword use_docker:
        :paramtype use_docker: bool
        :keyword shared_volumes:
        :paramtype shared_volumes: bool
        :keyword arguments:
        :paramtype arguments: list[str]
        """
        super(DockerConfiguration, self).__init__(**kwargs)
        self.use_docker = use_docker
        self.shared_volumes = shared_volumes
        self.arguments = arguments


class DockerImagePlatform(msrest.serialization.Model):
    """DockerImagePlatform.

    :ivar os:
    :vartype os: str
    :ivar architecture:
    :vartype architecture: str
    """

    _attribute_map = {
        'os': {'key': 'os', 'type': 'str'},
        'architecture': {'key': 'architecture', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        os: Optional[str] = None,
        architecture: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword os:
        :paramtype os: str
        :keyword architecture:
        :paramtype architecture: str
        """
        super(DockerImagePlatform, self).__init__(**kwargs)
        self.os = os
        self.architecture = architecture


class DockerSection(msrest.serialization.Model):
    """DockerSection.

    :ivar base_image:
    :vartype base_image: str
    :ivar platform:
    :vartype platform: ~flow.models.DockerImagePlatform
    :ivar base_dockerfile:
    :vartype base_dockerfile: str
    :ivar build_context:
    :vartype build_context: ~flow.models.DockerBuildContext
    :ivar base_image_registry:
    :vartype base_image_registry: ~flow.models.ContainerRegistry
    """

    _attribute_map = {
        'base_image': {'key': 'baseImage', 'type': 'str'},
        'platform': {'key': 'platform', 'type': 'DockerImagePlatform'},
        'base_dockerfile': {'key': 'baseDockerfile', 'type': 'str'},
        'build_context': {'key': 'buildContext', 'type': 'DockerBuildContext'},
        'base_image_registry': {'key': 'baseImageRegistry', 'type': 'ContainerRegistry'},
    }

    def __init__(
        self,
        *,
        base_image: Optional[str] = None,
        platform: Optional["DockerImagePlatform"] = None,
        base_dockerfile: Optional[str] = None,
        build_context: Optional["DockerBuildContext"] = None,
        base_image_registry: Optional["ContainerRegistry"] = None,
        **kwargs
    ):
        """
        :keyword base_image:
        :paramtype base_image: str
        :keyword platform:
        :paramtype platform: ~flow.models.DockerImagePlatform
        :keyword base_dockerfile:
        :paramtype base_dockerfile: str
        :keyword build_context:
        :paramtype build_context: ~flow.models.DockerBuildContext
        :keyword base_image_registry:
        :paramtype base_image_registry: ~flow.models.ContainerRegistry
        """
        super(DockerSection, self).__init__(**kwargs)
        self.base_image = base_image
        self.platform = platform
        self.base_dockerfile = base_dockerfile
        self.build_context = build_context
        self.base_image_registry = base_image_registry


class DockerSettingConfiguration(msrest.serialization.Model):
    """DockerSettingConfiguration.

    :ivar use_docker:
    :vartype use_docker: bool
    :ivar shared_volumes:
    :vartype shared_volumes: bool
    :ivar shm_size:
    :vartype shm_size: str
    :ivar arguments:
    :vartype arguments: list[str]
    """

    _attribute_map = {
        'use_docker': {'key': 'useDocker', 'type': 'bool'},
        'shared_volumes': {'key': 'sharedVolumes', 'type': 'bool'},
        'shm_size': {'key': 'shmSize', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        use_docker: Optional[bool] = None,
        shared_volumes: Optional[bool] = None,
        shm_size: Optional[str] = None,
        arguments: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword use_docker:
        :paramtype use_docker: bool
        :keyword shared_volumes:
        :paramtype shared_volumes: bool
        :keyword shm_size:
        :paramtype shm_size: str
        :keyword arguments:
        :paramtype arguments: list[str]
        """
        super(DockerSettingConfiguration, self).__init__(**kwargs)
        self.use_docker = use_docker
        self.shared_volumes = shared_volumes
        self.shm_size = shm_size
        self.arguments = arguments


class DoWhileControlFlowInfo(msrest.serialization.Model):
    """DoWhileControlFlowInfo.

    :ivar output_port_name_to_input_port_names_mapping: Dictionary of
     <components·1sqg750·schemas·dowhilecontrolflowinfo·properties·outputportnametoinputportnamesmapping·additionalproperties>.
    :vartype output_port_name_to_input_port_names_mapping: dict[str, list[str]]
    :ivar condition_output_port_name:
    :vartype condition_output_port_name: str
    :ivar run_settings:
    :vartype run_settings: ~flow.models.DoWhileControlFlowRunSettings
    """

    _attribute_map = {
        'output_port_name_to_input_port_names_mapping': {'key': 'outputPortNameToInputPortNamesMapping', 'type': '{[str]}'},
        'condition_output_port_name': {'key': 'conditionOutputPortName', 'type': 'str'},
        'run_settings': {'key': 'runSettings', 'type': 'DoWhileControlFlowRunSettings'},
    }

    def __init__(
        self,
        *,
        output_port_name_to_input_port_names_mapping: Optional[Dict[str, List[str]]] = None,
        condition_output_port_name: Optional[str] = None,
        run_settings: Optional["DoWhileControlFlowRunSettings"] = None,
        **kwargs
    ):
        """
        :keyword output_port_name_to_input_port_names_mapping: Dictionary of
         <components·1sqg750·schemas·dowhilecontrolflowinfo·properties·outputportnametoinputportnamesmapping·additionalproperties>.
        :paramtype output_port_name_to_input_port_names_mapping: dict[str, list[str]]
        :keyword condition_output_port_name:
        :paramtype condition_output_port_name: str
        :keyword run_settings:
        :paramtype run_settings: ~flow.models.DoWhileControlFlowRunSettings
        """
        super(DoWhileControlFlowInfo, self).__init__(**kwargs)
        self.output_port_name_to_input_port_names_mapping = output_port_name_to_input_port_names_mapping
        self.condition_output_port_name = condition_output_port_name
        self.run_settings = run_settings


class DoWhileControlFlowRunSettings(msrest.serialization.Model):
    """DoWhileControlFlowRunSettings.

    :ivar max_loop_iteration_count:
    :vartype max_loop_iteration_count: ~flow.models.ParameterAssignment
    """

    _attribute_map = {
        'max_loop_iteration_count': {'key': 'maxLoopIterationCount', 'type': 'ParameterAssignment'},
    }

    def __init__(
        self,
        *,
        max_loop_iteration_count: Optional["ParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword max_loop_iteration_count:
        :paramtype max_loop_iteration_count: ~flow.models.ParameterAssignment
        """
        super(DoWhileControlFlowRunSettings, self).__init__(**kwargs)
        self.max_loop_iteration_count = max_loop_iteration_count


class DownloadResourceInfo(msrest.serialization.Model):
    """DownloadResourceInfo.

    :ivar download_url:
    :vartype download_url: str
    :ivar size:
    :vartype size: long
    """

    _attribute_map = {
        'download_url': {'key': 'downloadUrl', 'type': 'str'},
        'size': {'key': 'size', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        download_url: Optional[str] = None,
        size: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword download_url:
        :paramtype download_url: str
        :keyword size:
        :paramtype size: long
        """
        super(DownloadResourceInfo, self).__init__(**kwargs)
        self.download_url = download_url
        self.size = size


class EndpointSetting(msrest.serialization.Model):
    """EndpointSetting.

    :ivar type:
    :vartype type: str
    :ivar port:
    :vartype port: int
    :ivar ssl_thumbprint:
    :vartype ssl_thumbprint: str
    :ivar endpoint:
    :vartype endpoint: str
    :ivar proxy_endpoint:
    :vartype proxy_endpoint: str
    :ivar status:
    :vartype status: str
    :ivar error_message:
    :vartype error_message: str
    :ivar enabled:
    :vartype enabled: bool
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar nodes:
    :vartype nodes: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'port': {'key': 'port', 'type': 'int'},
        'ssl_thumbprint': {'key': 'sslThumbprint', 'type': 'str'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'proxy_endpoint': {'key': 'proxyEndpoint', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'enabled': {'key': 'enabled', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'nodes': {'key': 'nodes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        port: Optional[int] = None,
        ssl_thumbprint: Optional[str] = None,
        endpoint: Optional[str] = None,
        proxy_endpoint: Optional[str] = None,
        status: Optional[str] = None,
        error_message: Optional[str] = None,
        enabled: Optional[bool] = None,
        properties: Optional[Dict[str, str]] = None,
        nodes: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword port:
        :paramtype port: int
        :keyword ssl_thumbprint:
        :paramtype ssl_thumbprint: str
        :keyword endpoint:
        :paramtype endpoint: str
        :keyword proxy_endpoint:
        :paramtype proxy_endpoint: str
        :keyword status:
        :paramtype status: str
        :keyword error_message:
        :paramtype error_message: str
        :keyword enabled:
        :paramtype enabled: bool
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword nodes:
        :paramtype nodes: str
        """
        super(EndpointSetting, self).__init__(**kwargs)
        self.type = type
        self.port = port
        self.ssl_thumbprint = ssl_thumbprint
        self.endpoint = endpoint
        self.proxy_endpoint = proxy_endpoint
        self.status = status
        self.error_message = error_message
        self.enabled = enabled
        self.properties = properties
        self.nodes = nodes


class EntityInterface(msrest.serialization.Model):
    """EntityInterface.

    :ivar parameters:
    :vartype parameters: list[~flow.models.Parameter]
    :ivar ports:
    :vartype ports: ~flow.models.NodePortInterface
    :ivar metadata_parameters:
    :vartype metadata_parameters: list[~flow.models.Parameter]
    :ivar data_path_parameters:
    :vartype data_path_parameters: list[~flow.models.DataPathParameter]
    :ivar data_path_parameter_list:
    :vartype data_path_parameter_list: list[~flow.models.DataSetPathParameter]
    :ivar asset_output_settings_parameter_list:
    :vartype asset_output_settings_parameter_list: list[~flow.models.AssetOutputSettingsParameter]
    """

    _attribute_map = {
        'parameters': {'key': 'parameters', 'type': '[Parameter]'},
        'ports': {'key': 'ports', 'type': 'NodePortInterface'},
        'metadata_parameters': {'key': 'metadataParameters', 'type': '[Parameter]'},
        'data_path_parameters': {'key': 'dataPathParameters', 'type': '[DataPathParameter]'},
        'data_path_parameter_list': {'key': 'dataPathParameterList', 'type': '[DataSetPathParameter]'},
        'asset_output_settings_parameter_list': {'key': 'AssetOutputSettingsParameterList', 'type': '[AssetOutputSettingsParameter]'},
    }

    def __init__(
        self,
        *,
        parameters: Optional[List["Parameter"]] = None,
        ports: Optional["NodePortInterface"] = None,
        metadata_parameters: Optional[List["Parameter"]] = None,
        data_path_parameters: Optional[List["DataPathParameter"]] = None,
        data_path_parameter_list: Optional[List["DataSetPathParameter"]] = None,
        asset_output_settings_parameter_list: Optional[List["AssetOutputSettingsParameter"]] = None,
        **kwargs
    ):
        """
        :keyword parameters:
        :paramtype parameters: list[~flow.models.Parameter]
        :keyword ports:
        :paramtype ports: ~flow.models.NodePortInterface
        :keyword metadata_parameters:
        :paramtype metadata_parameters: list[~flow.models.Parameter]
        :keyword data_path_parameters:
        :paramtype data_path_parameters: list[~flow.models.DataPathParameter]
        :keyword data_path_parameter_list:
        :paramtype data_path_parameter_list: list[~flow.models.DataSetPathParameter]
        :keyword asset_output_settings_parameter_list:
        :paramtype asset_output_settings_parameter_list:
         list[~flow.models.AssetOutputSettingsParameter]
        """
        super(EntityInterface, self).__init__(**kwargs)
        self.parameters = parameters
        self.ports = ports
        self.metadata_parameters = metadata_parameters
        self.data_path_parameters = data_path_parameters
        self.data_path_parameter_list = data_path_parameter_list
        self.asset_output_settings_parameter_list = asset_output_settings_parameter_list


class EntityUsage(msrest.serialization.Model):
    """EntityUsage.

    :ivar total_count:
    :vartype total_count: long
    """

    _attribute_map = {
        'total_count': {'key': 'totalCount', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        total_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword total_count:
        :paramtype total_count: long
        """
        super(EntityUsage, self).__init__(**kwargs)
        self.total_count = total_count


class EntrySetting(msrest.serialization.Model):
    """EntrySetting.

    :ivar file:
    :vartype file: str
    :ivar class_name:
    :vartype class_name: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        class_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword class_name:
        :paramtype class_name: str
        """
        super(EntrySetting, self).__init__(**kwargs)
        self.file = file
        self.class_name = class_name


class EnumParameterRule(msrest.serialization.Model):
    """EnumParameterRule.

    :ivar valid_values:
    :vartype valid_values: list[str]
    """

    _attribute_map = {
        'valid_values': {'key': 'validValues', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        valid_values: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword valid_values:
        :paramtype valid_values: list[str]
        """
        super(EnumParameterRule, self).__init__(**kwargs)
        self.valid_values = valid_values


class EnvironmentConfiguration(msrest.serialization.Model):
    """EnvironmentConfiguration.

    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar use_environment_definition:
    :vartype use_environment_definition: bool
    :ivar environment_definition_string:
    :vartype environment_definition_string: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'use_environment_definition': {'key': 'useEnvironmentDefinition', 'type': 'bool'},
        'environment_definition_string': {'key': 'environmentDefinitionString', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        version: Optional[str] = None,
        use_environment_definition: Optional[bool] = None,
        environment_definition_string: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword use_environment_definition:
        :paramtype use_environment_definition: bool
        :keyword environment_definition_string:
        :paramtype environment_definition_string: str
        """
        super(EnvironmentConfiguration, self).__init__(**kwargs)
        self.name = name
        self.version = version
        self.use_environment_definition = use_environment_definition
        self.environment_definition_string = environment_definition_string


class EnvironmentDefinition(msrest.serialization.Model):
    """EnvironmentDefinition.

    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar asset_id:
    :vartype asset_id: str
    :ivar auto_rebuild:
    :vartype auto_rebuild: bool
    :ivar python:
    :vartype python: ~flow.models.PythonSection
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar docker:
    :vartype docker: ~flow.models.DockerSection
    :ivar spark:
    :vartype spark: ~flow.models.SparkSection
    :ivar r:
    :vartype r: ~flow.models.RSection
    :ivar inferencing_stack_version:
    :vartype inferencing_stack_version: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'auto_rebuild': {'key': 'autoRebuild', 'type': 'bool'},
        'python': {'key': 'python', 'type': 'PythonSection'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'docker': {'key': 'docker', 'type': 'DockerSection'},
        'spark': {'key': 'spark', 'type': 'SparkSection'},
        'r': {'key': 'r', 'type': 'RSection'},
        'inferencing_stack_version': {'key': 'inferencingStackVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        version: Optional[str] = None,
        asset_id: Optional[str] = None,
        auto_rebuild: Optional[bool] = None,
        python: Optional["PythonSection"] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        docker: Optional["DockerSection"] = None,
        spark: Optional["SparkSection"] = None,
        r: Optional["RSection"] = None,
        inferencing_stack_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword auto_rebuild:
        :paramtype auto_rebuild: bool
        :keyword python:
        :paramtype python: ~flow.models.PythonSection
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword docker:
        :paramtype docker: ~flow.models.DockerSection
        :keyword spark:
        :paramtype spark: ~flow.models.SparkSection
        :keyword r:
        :paramtype r: ~flow.models.RSection
        :keyword inferencing_stack_version:
        :paramtype inferencing_stack_version: str
        """
        super(EnvironmentDefinition, self).__init__(**kwargs)
        self.name = name
        self.version = version
        self.asset_id = asset_id
        self.auto_rebuild = auto_rebuild
        self.python = python
        self.environment_variables = environment_variables
        self.docker = docker
        self.spark = spark
        self.r = r
        self.inferencing_stack_version = inferencing_stack_version


class EnvironmentDefinitionDto(msrest.serialization.Model):
    """EnvironmentDefinitionDto.

    :ivar environment_name:
    :vartype environment_name: str
    :ivar environment_version:
    :vartype environment_version: str
    :ivar intellectual_property_publisher:
    :vartype intellectual_property_publisher: str
    """

    _attribute_map = {
        'environment_name': {'key': 'environmentName', 'type': 'str'},
        'environment_version': {'key': 'environmentVersion', 'type': 'str'},
        'intellectual_property_publisher': {'key': 'intellectualPropertyPublisher', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        environment_name: Optional[str] = None,
        environment_version: Optional[str] = None,
        intellectual_property_publisher: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword environment_name:
        :paramtype environment_name: str
        :keyword environment_version:
        :paramtype environment_version: str
        :keyword intellectual_property_publisher:
        :paramtype intellectual_property_publisher: str
        """
        super(EnvironmentDefinitionDto, self).__init__(**kwargs)
        self.environment_name = environment_name
        self.environment_version = environment_version
        self.intellectual_property_publisher = intellectual_property_publisher


class EPRPipelineRunErrorClassificationRequest(msrest.serialization.Model):
    """EPRPipelineRunErrorClassificationRequest.

    :ivar root_run_id:
    :vartype root_run_id: str
    :ivar run_id:
    :vartype run_id: str
    :ivar task_result:
    :vartype task_result: str
    :ivar failure_type:
    :vartype failure_type: str
    :ivar failure_name:
    :vartype failure_name: str
    :ivar responsible_team:
    :vartype responsible_team: str
    """

    _attribute_map = {
        'root_run_id': {'key': 'rootRunId', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'task_result': {'key': 'taskResult', 'type': 'str'},
        'failure_type': {'key': 'failureType', 'type': 'str'},
        'failure_name': {'key': 'failureName', 'type': 'str'},
        'responsible_team': {'key': 'responsibleTeam', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        root_run_id: Optional[str] = None,
        run_id: Optional[str] = None,
        task_result: Optional[str] = None,
        failure_type: Optional[str] = None,
        failure_name: Optional[str] = None,
        responsible_team: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword root_run_id:
        :paramtype root_run_id: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword task_result:
        :paramtype task_result: str
        :keyword failure_type:
        :paramtype failure_type: str
        :keyword failure_name:
        :paramtype failure_name: str
        :keyword responsible_team:
        :paramtype responsible_team: str
        """
        super(EPRPipelineRunErrorClassificationRequest, self).__init__(**kwargs)
        self.root_run_id = root_run_id
        self.run_id = run_id
        self.task_result = task_result
        self.failure_type = failure_type
        self.failure_name = failure_name
        self.responsible_team = responsible_team


class ErrorAdditionalInfo(msrest.serialization.Model):
    """The resource management error additional info.

    :ivar type: The additional info type.
    :vartype type: str
    :ivar info: The additional info.
    :vartype info: any
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'info': {'key': 'info', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        info: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword type: The additional info type.
        :paramtype type: str
        :keyword info: The additional info.
        :paramtype info: any
        """
        super(ErrorAdditionalInfo, self).__init__(**kwargs)
        self.type = type
        self.info = info


class ErrorResponse(msrest.serialization.Model):
    """The error response.

    :ivar error: The root error.
    :vartype error: ~flow.models.RootError
    :ivar correlation: Dictionary containing correlation details for the error.
    :vartype correlation: dict[str, str]
    :ivar environment: The hosting environment.
    :vartype environment: str
    :ivar location: The Azure region.
    :vartype location: str
    :ivar time: The time in UTC.
    :vartype time: ~datetime.datetime
    :ivar component_name: Component name where error originated/encountered.
    :vartype component_name: str
    """

    _attribute_map = {
        'error': {'key': 'error', 'type': 'RootError'},
        'correlation': {'key': 'correlation', 'type': '{str}'},
        'environment': {'key': 'environment', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'time': {'key': 'time', 'type': 'iso-8601'},
        'component_name': {'key': 'componentName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        error: Optional["RootError"] = None,
        correlation: Optional[Dict[str, str]] = None,
        environment: Optional[str] = None,
        location: Optional[str] = None,
        time: Optional[datetime.datetime] = None,
        component_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword error: The root error.
        :paramtype error: ~flow.models.RootError
        :keyword correlation: Dictionary containing correlation details for the error.
        :paramtype correlation: dict[str, str]
        :keyword environment: The hosting environment.
        :paramtype environment: str
        :keyword location: The Azure region.
        :paramtype location: str
        :keyword time: The time in UTC.
        :paramtype time: ~datetime.datetime
        :keyword component_name: Component name where error originated/encountered.
        :paramtype component_name: str
        """
        super(ErrorResponse, self).__init__(**kwargs)
        self.error = error
        self.correlation = correlation
        self.environment = environment
        self.location = location
        self.time = time
        self.component_name = component_name


class EsCloudConfiguration(msrest.serialization.Model):
    """EsCloudConfiguration.

    :ivar enable_output_to_file_based_on_data_type_id:
    :vartype enable_output_to_file_based_on_data_type_id: bool
    :ivar environment:
    :vartype environment: ~flow.models.EnvironmentConfiguration
    :ivar hyper_drive_configuration:
    :vartype hyper_drive_configuration: ~flow.models.HyperDriveConfiguration
    :ivar k8_s_config:
    :vartype k8_s_config: ~flow.models.K8SConfiguration
    :ivar resource_config:
    :vartype resource_config: ~flow.models.AEVAResourceConfiguration
    :ivar torch_distributed_config:
    :vartype torch_distributed_config: ~flow.models.TorchDistributedConfiguration
    :ivar target_selector_config:
    :vartype target_selector_config: ~flow.models.TargetSelectorConfiguration
    :ivar docker_config:
    :vartype docker_config: ~flow.models.DockerSettingConfiguration
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar max_run_duration_seconds:
    :vartype max_run_duration_seconds: int
    :ivar identity:
    :vartype identity: ~flow.models.IdentitySetting
    :ivar application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
    :vartype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
    :ivar run_config:
    :vartype run_config: str
    """

    _attribute_map = {
        'enable_output_to_file_based_on_data_type_id': {'key': 'enableOutputToFileBasedOnDataTypeId', 'type': 'bool'},
        'environment': {'key': 'environment', 'type': 'EnvironmentConfiguration'},
        'hyper_drive_configuration': {'key': 'hyperDriveConfiguration', 'type': 'HyperDriveConfiguration'},
        'k8_s_config': {'key': 'k8sConfig', 'type': 'K8SConfiguration'},
        'resource_config': {'key': 'resourceConfig', 'type': 'AEVAResourceConfiguration'},
        'torch_distributed_config': {'key': 'torchDistributedConfig', 'type': 'TorchDistributedConfiguration'},
        'target_selector_config': {'key': 'targetSelectorConfig', 'type': 'TargetSelectorConfiguration'},
        'docker_config': {'key': 'dockerConfig', 'type': 'DockerSettingConfiguration'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'max_run_duration_seconds': {'key': 'maxRunDurationSeconds', 'type': 'int'},
        'identity': {'key': 'identity', 'type': 'IdentitySetting'},
        'application_endpoints': {'key': 'applicationEndpoints', 'type': '{ApplicationEndpointConfiguration}'},
        'run_config': {'key': 'runConfig', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        enable_output_to_file_based_on_data_type_id: Optional[bool] = None,
        environment: Optional["EnvironmentConfiguration"] = None,
        hyper_drive_configuration: Optional["HyperDriveConfiguration"] = None,
        k8_s_config: Optional["K8SConfiguration"] = None,
        resource_config: Optional["AEVAResourceConfiguration"] = None,
        torch_distributed_config: Optional["TorchDistributedConfiguration"] = None,
        target_selector_config: Optional["TargetSelectorConfiguration"] = None,
        docker_config: Optional["DockerSettingConfiguration"] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        max_run_duration_seconds: Optional[int] = None,
        identity: Optional["IdentitySetting"] = None,
        application_endpoints: Optional[Dict[str, "ApplicationEndpointConfiguration"]] = None,
        run_config: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword enable_output_to_file_based_on_data_type_id:
        :paramtype enable_output_to_file_based_on_data_type_id: bool
        :keyword environment:
        :paramtype environment: ~flow.models.EnvironmentConfiguration
        :keyword hyper_drive_configuration:
        :paramtype hyper_drive_configuration: ~flow.models.HyperDriveConfiguration
        :keyword k8_s_config:
        :paramtype k8_s_config: ~flow.models.K8SConfiguration
        :keyword resource_config:
        :paramtype resource_config: ~flow.models.AEVAResourceConfiguration
        :keyword torch_distributed_config:
        :paramtype torch_distributed_config: ~flow.models.TorchDistributedConfiguration
        :keyword target_selector_config:
        :paramtype target_selector_config: ~flow.models.TargetSelectorConfiguration
        :keyword docker_config:
        :paramtype docker_config: ~flow.models.DockerSettingConfiguration
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword max_run_duration_seconds:
        :paramtype max_run_duration_seconds: int
        :keyword identity:
        :paramtype identity: ~flow.models.IdentitySetting
        :keyword application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
        :paramtype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
        :keyword run_config:
        :paramtype run_config: str
        """
        super(EsCloudConfiguration, self).__init__(**kwargs)
        self.enable_output_to_file_based_on_data_type_id = enable_output_to_file_based_on_data_type_id
        self.environment = environment
        self.hyper_drive_configuration = hyper_drive_configuration
        self.k8_s_config = k8_s_config
        self.resource_config = resource_config
        self.torch_distributed_config = torch_distributed_config
        self.target_selector_config = target_selector_config
        self.docker_config = docker_config
        self.environment_variables = environment_variables
        self.max_run_duration_seconds = max_run_duration_seconds
        self.identity = identity
        self.application_endpoints = application_endpoints
        self.run_config = run_config


class EvaluationFlowRunSettings(msrest.serialization.Model):
    """EvaluationFlowRunSettings.

    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar upstream_variant_run_variants: This is a dictionary.
    :vartype upstream_variant_run_variants: dict[str, ~flow.models.VariantIdentifier]
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar input_universal_link:
    :vartype input_universal_link: str
    :ivar data_inputs: This is a dictionary.
    :vartype data_inputs: dict[str, str]
    :ivar flow_run_output_directory:
    :vartype flow_run_output_directory: str
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'upstream_variant_run_variants': {'key': 'upstreamVariantRunVariants', 'type': '{VariantIdentifier}'},
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'input_universal_link': {'key': 'inputUniversalLink', 'type': 'str'},
        'data_inputs': {'key': 'dataInputs', 'type': '{str}'},
        'flow_run_output_directory': {'key': 'flowRunOutputDirectory', 'type': 'str'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        flow_run_id: Optional[str] = None,
        upstream_variant_run_variants: Optional[Dict[str, "VariantIdentifier"]] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        input_universal_link: Optional[str] = None,
        data_inputs: Optional[Dict[str, str]] = None,
        flow_run_output_directory: Optional[str] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword upstream_variant_run_variants: This is a dictionary.
        :paramtype upstream_variant_run_variants: dict[str, ~flow.models.VariantIdentifier]
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword input_universal_link:
        :paramtype input_universal_link: str
        :keyword data_inputs: This is a dictionary.
        :paramtype data_inputs: dict[str, str]
        :keyword flow_run_output_directory:
        :paramtype flow_run_output_directory: str
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(EvaluationFlowRunSettings, self).__init__(**kwargs)
        self.flow_run_id = flow_run_id
        self.upstream_variant_run_variants = upstream_variant_run_variants
        self.batch_inputs = batch_inputs
        self.input_universal_link = input_universal_link
        self.data_inputs = data_inputs
        self.flow_run_output_directory = flow_run_output_directory
        self.connection_overrides = connection_overrides
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class ExampleRequest(msrest.serialization.Model):
    """ExampleRequest.

    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, list[list[any]]]
    :ivar global_parameters: This is a dictionary.
    :vartype global_parameters: dict[str, any]
    """

    _attribute_map = {
        'inputs': {'key': 'inputs', 'type': '{[[object]]}'},
        'global_parameters': {'key': 'globalParameters', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        inputs: Optional[Dict[str, List[List[Any]]]] = None,
        global_parameters: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, list[list[any]]]
        :keyword global_parameters: This is a dictionary.
        :paramtype global_parameters: dict[str, any]
        """
        super(ExampleRequest, self).__init__(**kwargs)
        self.inputs = inputs
        self.global_parameters = global_parameters


class ExecutionContextDto(msrest.serialization.Model):
    """ExecutionContextDto.

    :ivar executable:
    :vartype executable: str
    :ivar user_code:
    :vartype user_code: str
    :ivar arguments:
    :vartype arguments: str
    """

    _attribute_map = {
        'executable': {'key': 'executable', 'type': 'str'},
        'user_code': {'key': 'userCode', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        executable: Optional[str] = None,
        user_code: Optional[str] = None,
        arguments: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword executable:
        :paramtype executable: str
        :keyword user_code:
        :paramtype user_code: str
        :keyword arguments:
        :paramtype arguments: str
        """
        super(ExecutionContextDto, self).__init__(**kwargs)
        self.executable = executable
        self.user_code = user_code
        self.arguments = arguments


class ExecutionDataLocation(msrest.serialization.Model):
    """ExecutionDataLocation.

    :ivar dataset:
    :vartype dataset: ~flow.models.RunDatasetReference
    :ivar data_path:
    :vartype data_path: ~flow.models.ExecutionDataPath
    :ivar uri:
    :vartype uri: ~flow.models.UriReference
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'dataset': {'key': 'dataset', 'type': 'RunDatasetReference'},
        'data_path': {'key': 'dataPath', 'type': 'ExecutionDataPath'},
        'uri': {'key': 'uri', 'type': 'UriReference'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        dataset: Optional["RunDatasetReference"] = None,
        data_path: Optional["ExecutionDataPath"] = None,
        uri: Optional["UriReference"] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword dataset:
        :paramtype dataset: ~flow.models.RunDatasetReference
        :keyword data_path:
        :paramtype data_path: ~flow.models.ExecutionDataPath
        :keyword uri:
        :paramtype uri: ~flow.models.UriReference
        :keyword type:
        :paramtype type: str
        """
        super(ExecutionDataLocation, self).__init__(**kwargs)
        self.dataset = dataset
        self.data_path = data_path
        self.uri = uri
        self.type = type


class ExecutionDataPath(msrest.serialization.Model):
    """ExecutionDataPath.

    :ivar datastore_name:
    :vartype datastore_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'datastore_name': {'key': 'datastoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        datastore_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword datastore_name:
        :paramtype datastore_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(ExecutionDataPath, self).__init__(**kwargs)
        self.datastore_name = datastore_name
        self.relative_path = relative_path


class ExecutionGlobsOptions(msrest.serialization.Model):
    """ExecutionGlobsOptions.

    :ivar glob_patterns:
    :vartype glob_patterns: list[str]
    """

    _attribute_map = {
        'glob_patterns': {'key': 'globPatterns', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        glob_patterns: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword glob_patterns:
        :paramtype glob_patterns: list[str]
        """
        super(ExecutionGlobsOptions, self).__init__(**kwargs)
        self.glob_patterns = glob_patterns


class ExperimentAnnotations(msrest.serialization.Model):
    """ExperimentAnnotations.

    :ivar node_runs: This is a dictionary.
    :vartype node_runs: dict[str, str]
    :ivar nodes:
    :vartype nodes: list[~flow.models.ExperimentNode]
    :ivar data:
    :vartype data: list[~flow.models.ExperimentData]
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar archived:
    :vartype archived: bool
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'node_runs': {'key': 'nodeRuns', 'type': '{str}'},
        'nodes': {'key': 'nodes', 'type': '[ExperimentNode]'},
        'data': {'key': 'data', 'type': '[ExperimentData]'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'archived': {'key': 'archived', 'type': 'bool'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        node_runs: Optional[Dict[str, str]] = None,
        nodes: Optional[List["ExperimentNode"]] = None,
        data: Optional[List["ExperimentData"]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        archived: Optional[bool] = None,
        tags: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword node_runs: This is a dictionary.
        :paramtype node_runs: dict[str, str]
        :keyword nodes:
        :paramtype nodes: list[~flow.models.ExperimentNode]
        :keyword data:
        :paramtype data: list[~flow.models.ExperimentData]
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword archived:
        :paramtype archived: bool
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        """
        super(ExperimentAnnotations, self).__init__(**kwargs)
        self.node_runs = node_runs
        self.nodes = nodes
        self.data = data
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.name = name
        self.description = description
        self.archived = archived
        self.tags = tags


class ExperimentComputeMetaInfo(msrest.serialization.Model):
    """ExperimentComputeMetaInfo.

    :ivar current_node_count:
    :vartype current_node_count: int
    :ivar target_node_count:
    :vartype target_node_count: int
    :ivar max_node_count:
    :vartype max_node_count: int
    :ivar min_node_count:
    :vartype min_node_count: int
    :ivar idle_node_count:
    :vartype idle_node_count: int
    :ivar running_node_count:
    :vartype running_node_count: int
    :ivar preparing_node_count:
    :vartype preparing_node_count: int
    :ivar unusable_node_count:
    :vartype unusable_node_count: int
    :ivar leaving_node_count:
    :vartype leaving_node_count: int
    :ivar preempted_node_count:
    :vartype preempted_node_count: int
    :ivar vm_size:
    :vartype vm_size: str
    :ivar location:
    :vartype location: str
    :ivar provisioning_state:
    :vartype provisioning_state: str
    :ivar state:
    :vartype state: str
    :ivar os_type:
    :vartype os_type: str
    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar created_by_studio:
    :vartype created_by_studio: bool
    :ivar is_gpu_type:
    :vartype is_gpu_type: bool
    :ivar resource_id:
    :vartype resource_id: str
    :ivar compute_type:
    :vartype compute_type: str
    """

    _attribute_map = {
        'current_node_count': {'key': 'currentNodeCount', 'type': 'int'},
        'target_node_count': {'key': 'targetNodeCount', 'type': 'int'},
        'max_node_count': {'key': 'maxNodeCount', 'type': 'int'},
        'min_node_count': {'key': 'minNodeCount', 'type': 'int'},
        'idle_node_count': {'key': 'idleNodeCount', 'type': 'int'},
        'running_node_count': {'key': 'runningNodeCount', 'type': 'int'},
        'preparing_node_count': {'key': 'preparingNodeCount', 'type': 'int'},
        'unusable_node_count': {'key': 'unusableNodeCount', 'type': 'int'},
        'leaving_node_count': {'key': 'leavingNodeCount', 'type': 'int'},
        'preempted_node_count': {'key': 'preemptedNodeCount', 'type': 'int'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'created_by_studio': {'key': 'createdByStudio', 'type': 'bool'},
        'is_gpu_type': {'key': 'isGpuType', 'type': 'bool'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        current_node_count: Optional[int] = None,
        target_node_count: Optional[int] = None,
        max_node_count: Optional[int] = None,
        min_node_count: Optional[int] = None,
        idle_node_count: Optional[int] = None,
        running_node_count: Optional[int] = None,
        preparing_node_count: Optional[int] = None,
        unusable_node_count: Optional[int] = None,
        leaving_node_count: Optional[int] = None,
        preempted_node_count: Optional[int] = None,
        vm_size: Optional[str] = None,
        location: Optional[str] = None,
        provisioning_state: Optional[str] = None,
        state: Optional[str] = None,
        os_type: Optional[str] = None,
        id: Optional[str] = None,
        name: Optional[str] = None,
        created_by_studio: Optional[bool] = None,
        is_gpu_type: Optional[bool] = None,
        resource_id: Optional[str] = None,
        compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword current_node_count:
        :paramtype current_node_count: int
        :keyword target_node_count:
        :paramtype target_node_count: int
        :keyword max_node_count:
        :paramtype max_node_count: int
        :keyword min_node_count:
        :paramtype min_node_count: int
        :keyword idle_node_count:
        :paramtype idle_node_count: int
        :keyword running_node_count:
        :paramtype running_node_count: int
        :keyword preparing_node_count:
        :paramtype preparing_node_count: int
        :keyword unusable_node_count:
        :paramtype unusable_node_count: int
        :keyword leaving_node_count:
        :paramtype leaving_node_count: int
        :keyword preempted_node_count:
        :paramtype preempted_node_count: int
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword location:
        :paramtype location: str
        :keyword provisioning_state:
        :paramtype provisioning_state: str
        :keyword state:
        :paramtype state: str
        :keyword os_type:
        :paramtype os_type: str
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword created_by_studio:
        :paramtype created_by_studio: bool
        :keyword is_gpu_type:
        :paramtype is_gpu_type: bool
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword compute_type:
        :paramtype compute_type: str
        """
        super(ExperimentComputeMetaInfo, self).__init__(**kwargs)
        self.current_node_count = current_node_count
        self.target_node_count = target_node_count
        self.max_node_count = max_node_count
        self.min_node_count = min_node_count
        self.idle_node_count = idle_node_count
        self.running_node_count = running_node_count
        self.preparing_node_count = preparing_node_count
        self.unusable_node_count = unusable_node_count
        self.leaving_node_count = leaving_node_count
        self.preempted_node_count = preempted_node_count
        self.vm_size = vm_size
        self.location = location
        self.provisioning_state = provisioning_state
        self.state = state
        self.os_type = os_type
        self.id = id
        self.name = name
        self.created_by_studio = created_by_studio
        self.is_gpu_type = is_gpu_type
        self.resource_id = resource_id
        self.compute_type = compute_type


class ExperimentData(msrest.serialization.Model):
    """ExperimentData.

    :ivar name:
    :vartype name: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword path:
        :paramtype path: str
        """
        super(ExperimentData, self).__init__(**kwargs)
        self.name = name
        self.path = path


class ExperimentDefinition(msrest.serialization.Model):
    """ExperimentDefinition.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar inputs:
    :vartype inputs: list[~flow.models.FlowInputDefinition]
    :ivar data:
    :vartype data: list[~flow.models.ExperimentData]
    :ivar nodes:
    :vartype nodes: list[~flow.models.ExperimentNode]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '[FlowInputDefinition]'},
        'data': {'key': 'data', 'type': '[ExperimentData]'},
        'nodes': {'key': 'nodes', 'type': '[ExperimentNode]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        inputs: Optional[List["FlowInputDefinition"]] = None,
        data: Optional[List["ExperimentData"]] = None,
        nodes: Optional[List["ExperimentNode"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword inputs:
        :paramtype inputs: list[~flow.models.FlowInputDefinition]
        :keyword data:
        :paramtype data: list[~flow.models.ExperimentData]
        :keyword nodes:
        :paramtype nodes: list[~flow.models.ExperimentNode]
        """
        super(ExperimentDefinition, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.inputs = inputs
        self.data = data
        self.nodes = nodes


class ExperimentDefinitionSource(msrest.serialization.Model):
    """ExperimentDefinitionSource.

    :ivar source_type: Possible values include: "DataUri", "Definition".
    :vartype source_type: str or ~flow.models.ExperimentDefinitionSourceType
    :ivar experiment_definition_data_uri:
    :vartype experiment_definition_data_uri: str
    :ivar experiment_definition:
    :vartype experiment_definition: ~flow.models.ExperimentDefinition
    """

    _attribute_map = {
        'source_type': {'key': 'sourceType', 'type': 'str'},
        'experiment_definition_data_uri': {'key': 'experimentDefinitionDataUri', 'type': 'str'},
        'experiment_definition': {'key': 'experimentDefinition', 'type': 'ExperimentDefinition'},
    }

    def __init__(
        self,
        *,
        source_type: Optional[Union[str, "ExperimentDefinitionSourceType"]] = None,
        experiment_definition_data_uri: Optional[str] = None,
        experiment_definition: Optional["ExperimentDefinition"] = None,
        **kwargs
    ):
        """
        :keyword source_type: Possible values include: "DataUri", "Definition".
        :paramtype source_type: str or ~flow.models.ExperimentDefinitionSourceType
        :keyword experiment_definition_data_uri:
        :paramtype experiment_definition_data_uri: str
        :keyword experiment_definition:
        :paramtype experiment_definition: ~flow.models.ExperimentDefinition
        """
        super(ExperimentDefinitionSource, self).__init__(**kwargs)
        self.source_type = source_type
        self.experiment_definition_data_uri = experiment_definition_data_uri
        self.experiment_definition = experiment_definition


class ExperimentIndexEntity(msrest.serialization.Model):
    """ExperimentIndexEntity.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar schema_id:
    :vartype schema_id: str
    :ivar entity_id:
    :vartype entity_id: str
    :ivar kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
    :vartype kind: str or ~flow.models.EntityKind
    :ivar annotations:
    :vartype annotations: ~flow.models.ExperimentAnnotations
    :ivar properties:
    :vartype properties: ~flow.models.ExperimentProperties
    :ivar internal: Any object.
    :vartype internal: any
    :ivar update_sequence:
    :vartype update_sequence: long
    :ivar type:
    :vartype type: str
    :ivar version:
    :vartype version: str
    :ivar entity_container_id:
    :vartype entity_container_id: str
    :ivar entity_object_id:
    :vartype entity_object_id: str
    :ivar resource_type:
    :vartype resource_type: str
    :ivar relationships:
    :vartype relationships: list[~flow.models.Relationship]
    :ivar asset_id:
    :vartype asset_id: str
    :ivar usage:
    :vartype usage: ~flow.models.EntityUsage
    :ivar is_a_fragment:
    :vartype is_a_fragment: bool
    :ivar fragment_id:
    :vartype fragment_id: str
    """

    _validation = {
        'version': {'readonly': True},
        'entity_container_id': {'readonly': True},
        'entity_object_id': {'readonly': True},
        'resource_type': {'readonly': True},
    }

    _attribute_map = {
        'schema_id': {'key': 'schemaId', 'type': 'str'},
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'kind': {'key': 'kind', 'type': 'str'},
        'annotations': {'key': 'annotations', 'type': 'ExperimentAnnotations'},
        'properties': {'key': 'properties', 'type': 'ExperimentProperties'},
        'internal': {'key': 'internal', 'type': 'object'},
        'update_sequence': {'key': 'updateSequence', 'type': 'long'},
        'type': {'key': 'type', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'entity_container_id': {'key': 'entityContainerId', 'type': 'str'},
        'entity_object_id': {'key': 'entityObjectId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'relationships': {'key': 'relationships', 'type': '[Relationship]'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'usage': {'key': 'usage', 'type': 'EntityUsage'},
        'is_a_fragment': {'key': 'isAFragment', 'type': 'bool'},
        'fragment_id': {'key': 'fragmentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        schema_id: Optional[str] = None,
        entity_id: Optional[str] = None,
        kind: Optional[Union[str, "EntityKind"]] = None,
        annotations: Optional["ExperimentAnnotations"] = None,
        properties: Optional["ExperimentProperties"] = None,
        internal: Optional[Any] = None,
        update_sequence: Optional[int] = None,
        type: Optional[str] = None,
        relationships: Optional[List["Relationship"]] = None,
        asset_id: Optional[str] = None,
        usage: Optional["EntityUsage"] = None,
        is_a_fragment: Optional[bool] = None,
        fragment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword schema_id:
        :paramtype schema_id: str
        :keyword entity_id:
        :paramtype entity_id: str
        :keyword kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
        :paramtype kind: str or ~flow.models.EntityKind
        :keyword annotations:
        :paramtype annotations: ~flow.models.ExperimentAnnotations
        :keyword properties:
        :paramtype properties: ~flow.models.ExperimentProperties
        :keyword internal: Any object.
        :paramtype internal: any
        :keyword update_sequence:
        :paramtype update_sequence: long
        :keyword type:
        :paramtype type: str
        :keyword relationships:
        :paramtype relationships: list[~flow.models.Relationship]
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword usage:
        :paramtype usage: ~flow.models.EntityUsage
        :keyword is_a_fragment:
        :paramtype is_a_fragment: bool
        :keyword fragment_id:
        :paramtype fragment_id: str
        """
        super(ExperimentIndexEntity, self).__init__(**kwargs)
        self.schema_id = schema_id
        self.entity_id = entity_id
        self.kind = kind
        self.annotations = annotations
        self.properties = properties
        self.internal = internal
        self.update_sequence = update_sequence
        self.type = type
        self.version = None
        self.entity_container_id = None
        self.entity_object_id = None
        self.resource_type = None
        self.relationships = relationships
        self.asset_id = asset_id
        self.usage = usage
        self.is_a_fragment = is_a_fragment
        self.fragment_id = fragment_id


class ExperimentInfo(msrest.serialization.Model):
    """ExperimentInfo.

    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar experiment_id:
    :vartype experiment_id: str
    """

    _attribute_map = {
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        experiment_name: Optional[str] = None,
        experiment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        """
        super(ExperimentInfo, self).__init__(**kwargs)
        self.experiment_name = experiment_name
        self.experiment_id = experiment_id


class ExperimentNode(msrest.serialization.Model):
    """ExperimentNode.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "Flow", "ChatGroup", "Command".
    :vartype type: str or ~flow.models.ExperimentNodeType
    :ivar max_turns:
    :vartype max_turns: int
    :ivar roles:
    :vartype roles: list[~flow.models.ChatGroupRole]
    :ivar command:
    :vartype command: str
    :ivar code:
    :vartype code: str
    :ivar environment:
    :vartype environment: str
    :ivar outputs: Dictionary of :code:`<ExperimentNodeOutput>`.
    :vartype outputs: dict[str, ~flow.models.ExperimentNodeOutput]
    :ivar path:
    :vartype path: str
    :ivar variant:
    :vartype variant: str
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar resources:
    :vartype resources: ~flow.models.SessionRuntimeResources
    :ivar inputs: Dictionary of :code:`<any>`.
    :vartype inputs: dict[str, any]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'max_turns': {'key': 'max_turns', 'type': 'int'},
        'roles': {'key': 'roles', 'type': '[ChatGroupRole]'},
        'command': {'key': 'command', 'type': 'str'},
        'code': {'key': 'code', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'outputs': {'key': 'outputs', 'type': '{ExperimentNodeOutput}'},
        'path': {'key': 'path', 'type': 'str'},
        'variant': {'key': 'variant', 'type': 'str'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'environment_variables': {'key': 'environment_variables', 'type': '{str}'},
        'display_name': {'key': 'display_name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'resources': {'key': 'resources', 'type': 'SessionRuntimeResources'},
        'inputs': {'key': 'inputs', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ExperimentNodeType"]] = None,
        max_turns: Optional[int] = None,
        roles: Optional[List["ChatGroupRole"]] = None,
        command: Optional[str] = None,
        code: Optional[str] = None,
        environment: Optional[str] = None,
        outputs: Optional[Dict[str, "ExperimentNodeOutput"]] = None,
        path: Optional[str] = None,
        variant: Optional[str] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        resources: Optional["SessionRuntimeResources"] = None,
        inputs: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "Flow", "ChatGroup", "Command".
        :paramtype type: str or ~flow.models.ExperimentNodeType
        :keyword max_turns:
        :paramtype max_turns: int
        :keyword roles:
        :paramtype roles: list[~flow.models.ChatGroupRole]
        :keyword command:
        :paramtype command: str
        :keyword code:
        :paramtype code: str
        :keyword environment:
        :paramtype environment: str
        :keyword outputs: Dictionary of :code:`<ExperimentNodeOutput>`.
        :paramtype outputs: dict[str, ~flow.models.ExperimentNodeOutput]
        :keyword path:
        :paramtype path: str
        :keyword variant:
        :paramtype variant: str
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword resources:
        :paramtype resources: ~flow.models.SessionRuntimeResources
        :keyword inputs: Dictionary of :code:`<any>`.
        :paramtype inputs: dict[str, any]
        """
        super(ExperimentNode, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.max_turns = max_turns
        self.roles = roles
        self.command = command
        self.code = code
        self.environment = environment
        self.outputs = outputs
        self.path = path
        self.variant = variant
        self.connections = connections
        self.environment_variables = environment_variables
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.resources = resources
        self.inputs = inputs


class ExperimentNodeOutput(msrest.serialization.Model):
    """ExperimentNodeOutput.

    :ivar type:
    :vartype type: str
    :ivar mode:
    :vartype mode: str
    :ivar uri:
    :vartype uri: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        mode: Optional[str] = None,
        uri: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword mode:
        :paramtype mode: str
        :keyword uri:
        :paramtype uri: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(ExperimentNodeOutput, self).__init__(**kwargs)
        self.type = type
        self.mode = mode
        self.uri = uri
        self.name = name
        self.version = version


class ExperimentNodeRunSettings(msrest.serialization.Model):
    """ExperimentNodeRunSettings.

    :ivar resume:
    :vartype resume: bool
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'resume': {'key': 'resume', 'type': 'bool'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        resume: Optional[bool] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword resume:
        :paramtype resume: bool
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(ExperimentNodeRunSettings, self).__init__(**kwargs)
        self.resume = resume
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class ExperimentProperties(msrest.serialization.Model):
    """ExperimentProperties.

    :ivar id:
    :vartype id: str
    :ivar experiment_template_id:
    :vartype experiment_template_id: str
    :ivar creation_context:
    :vartype creation_context: ~flow.models.CreationContext
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'experiment_template_id': {'key': 'experimentTemplateId', 'type': 'str'},
        'creation_context': {'key': 'creationContext', 'type': 'CreationContext'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        experiment_template_id: Optional[str] = None,
        creation_context: Optional["CreationContext"] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword experiment_template_id:
        :paramtype experiment_template_id: str
        :keyword creation_context:
        :paramtype creation_context: ~flow.models.CreationContext
        """
        super(ExperimentProperties, self).__init__(**kwargs)
        self.id = id
        self.experiment_template_id = experiment_template_id
        self.creation_context = creation_context


class ExperimentTemplateAnnotations(msrest.serialization.Model):
    """ExperimentTemplateAnnotations.

    :ivar nodes:
    :vartype nodes: list[~flow.models.ExperimentNode]
    :ivar data:
    :vartype data: list[~flow.models.ExperimentData]
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar archived:
    :vartype archived: bool
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'nodes': {'key': 'nodes', 'type': '[ExperimentNode]'},
        'data': {'key': 'data', 'type': '[ExperimentData]'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'archived': {'key': 'archived', 'type': 'bool'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        nodes: Optional[List["ExperimentNode"]] = None,
        data: Optional[List["ExperimentData"]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        archived: Optional[bool] = None,
        tags: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword nodes:
        :paramtype nodes: list[~flow.models.ExperimentNode]
        :keyword data:
        :paramtype data: list[~flow.models.ExperimentData]
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword archived:
        :paramtype archived: bool
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        """
        super(ExperimentTemplateAnnotations, self).__init__(**kwargs)
        self.nodes = nodes
        self.data = data
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.name = name
        self.description = description
        self.archived = archived
        self.tags = tags


class ExperimentTemplateDto(msrest.serialization.Model):
    """ExperimentTemplateDto.

    :ivar id:
    :vartype id: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar inputs:
    :vartype inputs: list[~flow.models.FlowInputDefinition]
    :ivar data:
    :vartype data: list[~flow.models.ExperimentData]
    :ivar nodes:
    :vartype nodes: list[~flow.models.ExperimentNode]
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '[FlowInputDefinition]'},
        'data': {'key': 'data', 'type': '[ExperimentData]'},
        'nodes': {'key': 'nodes', 'type': '[ExperimentNode]'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        inputs: Optional[List["FlowInputDefinition"]] = None,
        data: Optional[List["ExperimentData"]] = None,
        nodes: Optional[List["ExperimentNode"]] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword inputs:
        :paramtype inputs: list[~flow.models.FlowInputDefinition]
        :keyword data:
        :paramtype data: list[~flow.models.ExperimentData]
        :keyword nodes:
        :paramtype nodes: list[~flow.models.ExperimentNode]
        """
        super(ExperimentTemplateDto, self).__init__(**kwargs)
        self.id = id
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.name = name
        self.description = description
        self.inputs = inputs
        self.data = data
        self.nodes = nodes


class ExperimentTemplateIndexEntity(msrest.serialization.Model):
    """ExperimentTemplateIndexEntity.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar schema_id:
    :vartype schema_id: str
    :ivar entity_id:
    :vartype entity_id: str
    :ivar kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
    :vartype kind: str or ~flow.models.EntityKind
    :ivar annotations:
    :vartype annotations: ~flow.models.ExperimentTemplateAnnotations
    :ivar properties:
    :vartype properties: ~flow.models.ExperimentTemplateProperties
    :ivar internal: Any object.
    :vartype internal: any
    :ivar update_sequence:
    :vartype update_sequence: long
    :ivar type:
    :vartype type: str
    :ivar version:
    :vartype version: str
    :ivar entity_container_id:
    :vartype entity_container_id: str
    :ivar entity_object_id:
    :vartype entity_object_id: str
    :ivar resource_type:
    :vartype resource_type: str
    :ivar relationships:
    :vartype relationships: list[~flow.models.Relationship]
    :ivar asset_id:
    :vartype asset_id: str
    :ivar usage:
    :vartype usage: ~flow.models.EntityUsage
    :ivar is_a_fragment:
    :vartype is_a_fragment: bool
    :ivar fragment_id:
    :vartype fragment_id: str
    """

    _validation = {
        'version': {'readonly': True},
        'entity_container_id': {'readonly': True},
        'entity_object_id': {'readonly': True},
        'resource_type': {'readonly': True},
    }

    _attribute_map = {
        'schema_id': {'key': 'schemaId', 'type': 'str'},
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'kind': {'key': 'kind', 'type': 'str'},
        'annotations': {'key': 'annotations', 'type': 'ExperimentTemplateAnnotations'},
        'properties': {'key': 'properties', 'type': 'ExperimentTemplateProperties'},
        'internal': {'key': 'internal', 'type': 'object'},
        'update_sequence': {'key': 'updateSequence', 'type': 'long'},
        'type': {'key': 'type', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'entity_container_id': {'key': 'entityContainerId', 'type': 'str'},
        'entity_object_id': {'key': 'entityObjectId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'relationships': {'key': 'relationships', 'type': '[Relationship]'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'usage': {'key': 'usage', 'type': 'EntityUsage'},
        'is_a_fragment': {'key': 'isAFragment', 'type': 'bool'},
        'fragment_id': {'key': 'fragmentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        schema_id: Optional[str] = None,
        entity_id: Optional[str] = None,
        kind: Optional[Union[str, "EntityKind"]] = None,
        annotations: Optional["ExperimentTemplateAnnotations"] = None,
        properties: Optional["ExperimentTemplateProperties"] = None,
        internal: Optional[Any] = None,
        update_sequence: Optional[int] = None,
        type: Optional[str] = None,
        relationships: Optional[List["Relationship"]] = None,
        asset_id: Optional[str] = None,
        usage: Optional["EntityUsage"] = None,
        is_a_fragment: Optional[bool] = None,
        fragment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword schema_id:
        :paramtype schema_id: str
        :keyword entity_id:
        :paramtype entity_id: str
        :keyword kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
        :paramtype kind: str or ~flow.models.EntityKind
        :keyword annotations:
        :paramtype annotations: ~flow.models.ExperimentTemplateAnnotations
        :keyword properties:
        :paramtype properties: ~flow.models.ExperimentTemplateProperties
        :keyword internal: Any object.
        :paramtype internal: any
        :keyword update_sequence:
        :paramtype update_sequence: long
        :keyword type:
        :paramtype type: str
        :keyword relationships:
        :paramtype relationships: list[~flow.models.Relationship]
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword usage:
        :paramtype usage: ~flow.models.EntityUsage
        :keyword is_a_fragment:
        :paramtype is_a_fragment: bool
        :keyword fragment_id:
        :paramtype fragment_id: str
        """
        super(ExperimentTemplateIndexEntity, self).__init__(**kwargs)
        self.schema_id = schema_id
        self.entity_id = entity_id
        self.kind = kind
        self.annotations = annotations
        self.properties = properties
        self.internal = internal
        self.update_sequence = update_sequence
        self.type = type
        self.version = None
        self.entity_container_id = None
        self.entity_object_id = None
        self.resource_type = None
        self.relationships = relationships
        self.asset_id = asset_id
        self.usage = usage
        self.is_a_fragment = is_a_fragment
        self.fragment_id = fragment_id


class ExperimentTemplateProperties(msrest.serialization.Model):
    """ExperimentTemplateProperties.

    :ivar id:
    :vartype id: str
    :ivar creation_context:
    :vartype creation_context: ~flow.models.CreationContext
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'creation_context': {'key': 'creationContext', 'type': 'CreationContext'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        creation_context: Optional["CreationContext"] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword creation_context:
        :paramtype creation_context: ~flow.models.CreationContext
        """
        super(ExperimentTemplateProperties, self).__init__(**kwargs)
        self.id = id
        self.creation_context = creation_context


class ExportComponentMetaInfo(msrest.serialization.Model):
    """ExportComponentMetaInfo.

    :ivar module_entity:
    :vartype module_entity: ~flow.models.ModuleEntity
    :ivar module_version:
    :vartype module_version: str
    :ivar is_anonymous:
    :vartype is_anonymous: bool
    """

    _attribute_map = {
        'module_entity': {'key': 'moduleEntity', 'type': 'ModuleEntity'},
        'module_version': {'key': 'moduleVersion', 'type': 'str'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        module_entity: Optional["ModuleEntity"] = None,
        module_version: Optional[str] = None,
        is_anonymous: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword module_entity:
        :paramtype module_entity: ~flow.models.ModuleEntity
        :keyword module_version:
        :paramtype module_version: str
        :keyword is_anonymous:
        :paramtype is_anonymous: bool
        """
        super(ExportComponentMetaInfo, self).__init__(**kwargs)
        self.module_entity = module_entity
        self.module_version = module_version
        self.is_anonymous = is_anonymous


class ExportDataTask(msrest.serialization.Model):
    """ExportDataTask.

    :ivar data_transfer_sink:
    :vartype data_transfer_sink: ~flow.models.DataTransferSink
    """

    _attribute_map = {
        'data_transfer_sink': {'key': 'DataTransferSink', 'type': 'DataTransferSink'},
    }

    def __init__(
        self,
        *,
        data_transfer_sink: Optional["DataTransferSink"] = None,
        **kwargs
    ):
        """
        :keyword data_transfer_sink:
        :paramtype data_transfer_sink: ~flow.models.DataTransferSink
        """
        super(ExportDataTask, self).__init__(**kwargs)
        self.data_transfer_sink = data_transfer_sink


class FeaturizationSettings(msrest.serialization.Model):
    """FeaturizationSettings.

    :ivar mode: Possible values include: "Auto", "Custom", "Off".
    :vartype mode: str or ~flow.models.FeaturizationMode
    :ivar blocked_transformers:
    :vartype blocked_transformers: list[str]
    :ivar column_purposes: Dictionary of :code:`<string>`.
    :vartype column_purposes: dict[str, str]
    :ivar drop_columns:
    :vartype drop_columns: list[str]
    :ivar transformer_params: Dictionary of
     <components·1gi3krm·schemas·featurizationsettings·properties·transformerparams·additionalproperties>.
    :vartype transformer_params: dict[str, list[~flow.models.ColumnTransformer]]
    :ivar dataset_language:
    :vartype dataset_language: str
    :ivar enable_dnn_featurization:
    :vartype enable_dnn_featurization: bool
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'blocked_transformers': {'key': 'blockedTransformers', 'type': '[str]'},
        'column_purposes': {'key': 'columnPurposes', 'type': '{str}'},
        'drop_columns': {'key': 'dropColumns', 'type': '[str]'},
        'transformer_params': {'key': 'transformerParams', 'type': '{[ColumnTransformer]}'},
        'dataset_language': {'key': 'datasetLanguage', 'type': 'str'},
        'enable_dnn_featurization': {'key': 'enableDnnFeaturization', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "FeaturizationMode"]] = None,
        blocked_transformers: Optional[List[str]] = None,
        column_purposes: Optional[Dict[str, str]] = None,
        drop_columns: Optional[List[str]] = None,
        transformer_params: Optional[Dict[str, List["ColumnTransformer"]]] = None,
        dataset_language: Optional[str] = None,
        enable_dnn_featurization: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom", "Off".
        :paramtype mode: str or ~flow.models.FeaturizationMode
        :keyword blocked_transformers:
        :paramtype blocked_transformers: list[str]
        :keyword column_purposes: Dictionary of :code:`<string>`.
        :paramtype column_purposes: dict[str, str]
        :keyword drop_columns:
        :paramtype drop_columns: list[str]
        :keyword transformer_params: Dictionary of
         <components·1gi3krm·schemas·featurizationsettings·properties·transformerparams·additionalproperties>.
        :paramtype transformer_params: dict[str, list[~flow.models.ColumnTransformer]]
        :keyword dataset_language:
        :paramtype dataset_language: str
        :keyword enable_dnn_featurization:
        :paramtype enable_dnn_featurization: bool
        """
        super(FeaturizationSettings, self).__init__(**kwargs)
        self.mode = mode
        self.blocked_transformers = blocked_transformers
        self.column_purposes = column_purposes
        self.drop_columns = drop_columns
        self.transformer_params = transformer_params
        self.dataset_language = dataset_language
        self.enable_dnn_featurization = enable_dnn_featurization


class FeedDto(msrest.serialization.Model):
    """FeedDto.

    :ivar name:
    :vartype name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar sharing_scopes:
    :vartype sharing_scopes: list[~flow.models.SharingScope]
    :ivar supported_asset_types:
    :vartype supported_asset_types: ~flow.models.FeedDtoSupportedAssetTypes
    :ivar regional_workspace_storage: This is a dictionary.
    :vartype regional_workspace_storage: dict[str, list[str]]
    :ivar intellectual_property_publisher:
    :vartype intellectual_property_publisher: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'sharing_scopes': {'key': 'sharingScopes', 'type': '[SharingScope]'},
        'supported_asset_types': {'key': 'supportedAssetTypes', 'type': 'FeedDtoSupportedAssetTypes'},
        'regional_workspace_storage': {'key': 'regionalWorkspaceStorage', 'type': '{[str]}'},
        'intellectual_property_publisher': {'key': 'intellectualPropertyPublisher', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        sharing_scopes: Optional[List["SharingScope"]] = None,
        supported_asset_types: Optional["FeedDtoSupportedAssetTypes"] = None,
        regional_workspace_storage: Optional[Dict[str, List[str]]] = None,
        intellectual_property_publisher: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword sharing_scopes:
        :paramtype sharing_scopes: list[~flow.models.SharingScope]
        :keyword supported_asset_types:
        :paramtype supported_asset_types: ~flow.models.FeedDtoSupportedAssetTypes
        :keyword regional_workspace_storage: This is a dictionary.
        :paramtype regional_workspace_storage: dict[str, list[str]]
        :keyword intellectual_property_publisher:
        :paramtype intellectual_property_publisher: str
        """
        super(FeedDto, self).__init__(**kwargs)
        self.name = name
        self.display_name = display_name
        self.description = description
        self.sharing_scopes = sharing_scopes
        self.supported_asset_types = supported_asset_types
        self.regional_workspace_storage = regional_workspace_storage
        self.intellectual_property_publisher = intellectual_property_publisher


class FeedDtoSupportedAssetTypes(msrest.serialization.Model):
    """FeedDtoSupportedAssetTypes.

    :ivar component:
    :vartype component: ~flow.models.AssetTypeMetaInfo
    :ivar model:
    :vartype model: ~flow.models.AssetTypeMetaInfo
    :ivar environment:
    :vartype environment: ~flow.models.AssetTypeMetaInfo
    :ivar dataset:
    :vartype dataset: ~flow.models.AssetTypeMetaInfo
    :ivar data_store:
    :vartype data_store: ~flow.models.AssetTypeMetaInfo
    :ivar sample_graph:
    :vartype sample_graph: ~flow.models.AssetTypeMetaInfo
    :ivar flow_tool:
    :vartype flow_tool: ~flow.models.AssetTypeMetaInfo
    :ivar flow_tool_setting:
    :vartype flow_tool_setting: ~flow.models.AssetTypeMetaInfo
    :ivar flow_connection:
    :vartype flow_connection: ~flow.models.AssetTypeMetaInfo
    :ivar flow_sample:
    :vartype flow_sample: ~flow.models.AssetTypeMetaInfo
    :ivar flow_runtime_spec:
    :vartype flow_runtime_spec: ~flow.models.AssetTypeMetaInfo
    """

    _attribute_map = {
        'component': {'key': 'Component', 'type': 'AssetTypeMetaInfo'},
        'model': {'key': 'Model', 'type': 'AssetTypeMetaInfo'},
        'environment': {'key': 'Environment', 'type': 'AssetTypeMetaInfo'},
        'dataset': {'key': 'Dataset', 'type': 'AssetTypeMetaInfo'},
        'data_store': {'key': 'DataStore', 'type': 'AssetTypeMetaInfo'},
        'sample_graph': {'key': 'SampleGraph', 'type': 'AssetTypeMetaInfo'},
        'flow_tool': {'key': 'FlowTool', 'type': 'AssetTypeMetaInfo'},
        'flow_tool_setting': {'key': 'FlowToolSetting', 'type': 'AssetTypeMetaInfo'},
        'flow_connection': {'key': 'FlowConnection', 'type': 'AssetTypeMetaInfo'},
        'flow_sample': {'key': 'FlowSample', 'type': 'AssetTypeMetaInfo'},
        'flow_runtime_spec': {'key': 'FlowRuntimeSpec', 'type': 'AssetTypeMetaInfo'},
    }

    def __init__(
        self,
        *,
        component: Optional["AssetTypeMetaInfo"] = None,
        model: Optional["AssetTypeMetaInfo"] = None,
        environment: Optional["AssetTypeMetaInfo"] = None,
        dataset: Optional["AssetTypeMetaInfo"] = None,
        data_store: Optional["AssetTypeMetaInfo"] = None,
        sample_graph: Optional["AssetTypeMetaInfo"] = None,
        flow_tool: Optional["AssetTypeMetaInfo"] = None,
        flow_tool_setting: Optional["AssetTypeMetaInfo"] = None,
        flow_connection: Optional["AssetTypeMetaInfo"] = None,
        flow_sample: Optional["AssetTypeMetaInfo"] = None,
        flow_runtime_spec: Optional["AssetTypeMetaInfo"] = None,
        **kwargs
    ):
        """
        :keyword component:
        :paramtype component: ~flow.models.AssetTypeMetaInfo
        :keyword model:
        :paramtype model: ~flow.models.AssetTypeMetaInfo
        :keyword environment:
        :paramtype environment: ~flow.models.AssetTypeMetaInfo
        :keyword dataset:
        :paramtype dataset: ~flow.models.AssetTypeMetaInfo
        :keyword data_store:
        :paramtype data_store: ~flow.models.AssetTypeMetaInfo
        :keyword sample_graph:
        :paramtype sample_graph: ~flow.models.AssetTypeMetaInfo
        :keyword flow_tool:
        :paramtype flow_tool: ~flow.models.AssetTypeMetaInfo
        :keyword flow_tool_setting:
        :paramtype flow_tool_setting: ~flow.models.AssetTypeMetaInfo
        :keyword flow_connection:
        :paramtype flow_connection: ~flow.models.AssetTypeMetaInfo
        :keyword flow_sample:
        :paramtype flow_sample: ~flow.models.AssetTypeMetaInfo
        :keyword flow_runtime_spec:
        :paramtype flow_runtime_spec: ~flow.models.AssetTypeMetaInfo
        """
        super(FeedDtoSupportedAssetTypes, self).__init__(**kwargs)
        self.component = component
        self.model = model
        self.environment = environment
        self.dataset = dataset
        self.data_store = data_store
        self.sample_graph = sample_graph
        self.flow_tool = flow_tool
        self.flow_tool_setting = flow_tool_setting
        self.flow_connection = flow_connection
        self.flow_sample = flow_sample
        self.flow_runtime_spec = flow_runtime_spec


class FileSystem(msrest.serialization.Model):
    """FileSystem.

    :ivar connection:
    :vartype connection: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'connection': {'key': 'connection', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        connection: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword connection:
        :paramtype connection: str
        :keyword path:
        :paramtype path: str
        """
        super(FileSystem, self).__init__(**kwargs)
        self.connection = connection
        self.path = path


class FilterBy(msrest.serialization.Model):
    """FilterBy.

    :ivar input_name:
    :vartype input_name: str
    :ivar values: This is a dictionary.
    :vartype values: dict[str, ~flow.models.FilterValue]
    :ivar filter_attribute:
    :vartype filter_attribute: str
    """

    _attribute_map = {
        'input_name': {'key': 'input_name', 'type': 'str'},
        'values': {'key': 'values', 'type': '{FilterValue}'},
        'filter_attribute': {'key': 'filter_attribute', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        input_name: Optional[str] = None,
        values: Optional[Dict[str, "FilterValue"]] = None,
        filter_attribute: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword input_name:
        :paramtype input_name: str
        :keyword values: This is a dictionary.
        :paramtype values: dict[str, ~flow.models.FilterValue]
        :keyword filter_attribute:
        :paramtype filter_attribute: str
        """
        super(FilterBy, self).__init__(**kwargs)
        self.input_name = input_name
        self.values = values
        self.filter_attribute = filter_attribute


class FilterValue(msrest.serialization.Model):
    """FilterValue.

    :ivar capabilities:
    :vartype capabilities: ~flow.models.AzureOpenAIModelCapabilities
    :ivar enum:
    :vartype enum: list[any]
    """

    _attribute_map = {
        'capabilities': {'key': 'capabilities', 'type': 'AzureOpenAIModelCapabilities'},
        'enum': {'key': 'enum', 'type': '[object]'},
    }

    def __init__(
        self,
        *,
        capabilities: Optional["AzureOpenAIModelCapabilities"] = None,
        enum: Optional[List[Any]] = None,
        **kwargs
    ):
        """
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AzureOpenAIModelCapabilities
        :keyword enum:
        :paramtype enum: list[any]
        """
        super(FilterValue, self).__init__(**kwargs)
        self.capabilities = capabilities
        self.enum = enum


class FineTuningCloudSetting(msrest.serialization.Model):
    """FineTuningCloudSetting.

    :ivar entry:
    :vartype entry: ~flow.models.EntrySetting
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar inline_environment_definition_string:
    :vartype inline_environment_definition_string: str
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar compute:
    :vartype compute: str
    :ivar resources:
    :vartype resources: ~flow.models.ResourcesSetting
    :ivar identity:
    :vartype identity: ~flow.models.IdentitySetting
    """

    _attribute_map = {
        'entry': {'key': 'entry', 'type': 'EntrySetting'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'inline_environment_definition_string': {'key': 'inlineEnvironmentDefinitionString', 'type': 'str'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'compute': {'key': 'compute', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'ResourcesSetting'},
        'identity': {'key': 'identity', 'type': 'IdentitySetting'},
    }

    def __init__(
        self,
        *,
        entry: Optional["EntrySetting"] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        environment_asset_id: Optional[str] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        inline_environment_definition_string: Optional[str] = None,
        conf: Optional[Dict[str, str]] = None,
        compute: Optional[str] = None,
        resources: Optional["ResourcesSetting"] = None,
        identity: Optional["IdentitySetting"] = None,
        **kwargs
    ):
        """
        :keyword entry:
        :paramtype entry: ~flow.models.EntrySetting
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword inline_environment_definition_string:
        :paramtype inline_environment_definition_string: str
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword compute:
        :paramtype compute: str
        :keyword resources:
        :paramtype resources: ~flow.models.ResourcesSetting
        :keyword identity:
        :paramtype identity: ~flow.models.IdentitySetting
        """
        super(FineTuningCloudSetting, self).__init__(**kwargs)
        self.entry = entry
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.environment_asset_id = environment_asset_id
        self.environment_variables = environment_variables
        self.inline_environment_definition_string = inline_environment_definition_string
        self.conf = conf
        self.compute = compute
        self.resources = resources
        self.identity = identity


class Flow(msrest.serialization.Model):
    """Flow.

    :ivar source_resource_id:
    :vartype source_resource_id: str
    :ivar flow_graph:
    :vartype flow_graph: ~flow.models.FlowGraph
    :ivar node_variants: This is a dictionary.
    :vartype node_variants: dict[str, ~flow.models.NodeVariant]
    :ivar flow_graph_layout:
    :vartype flow_graph_layout: ~flow.models.FlowGraphLayout
    :ivar bulk_test_data: This is a dictionary.
    :vartype bulk_test_data: dict[str, str]
    :ivar evaluation_flows: This is a dictionary.
    :vartype evaluation_flows: dict[str, ~flow.models.FlowGraphReference]
    """

    _attribute_map = {
        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
        'flow_graph': {'key': 'flowGraph', 'type': 'FlowGraph'},
        'node_variants': {'key': 'nodeVariants', 'type': '{NodeVariant}'},
        'flow_graph_layout': {'key': 'flowGraphLayout', 'type': 'FlowGraphLayout'},
        'bulk_test_data': {'key': 'bulkTestData', 'type': '{str}'},
        'evaluation_flows': {'key': 'evaluationFlows', 'type': '{FlowGraphReference}'},
    }

    def __init__(
        self,
        *,
        source_resource_id: Optional[str] = None,
        flow_graph: Optional["FlowGraph"] = None,
        node_variants: Optional[Dict[str, "NodeVariant"]] = None,
        flow_graph_layout: Optional["FlowGraphLayout"] = None,
        bulk_test_data: Optional[Dict[str, str]] = None,
        evaluation_flows: Optional[Dict[str, "FlowGraphReference"]] = None,
        **kwargs
    ):
        """
        :keyword source_resource_id:
        :paramtype source_resource_id: str
        :keyword flow_graph:
        :paramtype flow_graph: ~flow.models.FlowGraph
        :keyword node_variants: This is a dictionary.
        :paramtype node_variants: dict[str, ~flow.models.NodeVariant]
        :keyword flow_graph_layout:
        :paramtype flow_graph_layout: ~flow.models.FlowGraphLayout
        :keyword bulk_test_data: This is a dictionary.
        :paramtype bulk_test_data: dict[str, str]
        :keyword evaluation_flows: This is a dictionary.
        :paramtype evaluation_flows: dict[str, ~flow.models.FlowGraphReference]
        """
        super(Flow, self).__init__(**kwargs)
        self.source_resource_id = source_resource_id
        self.flow_graph = flow_graph
        self.node_variants = node_variants
        self.flow_graph_layout = flow_graph_layout
        self.bulk_test_data = bulk_test_data
        self.evaluation_flows = evaluation_flows


class FlowAnnotations(msrest.serialization.Model):
    """FlowAnnotations.

    :ivar flow_name:
    :vartype flow_name: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar archived:
    :vartype archived: bool
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'archived': {'key': 'archived', 'type': 'bool'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        flow_name: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        is_archived: Optional[bool] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        archived: Optional[bool] = None,
        tags: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword archived:
        :paramtype archived: bool
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        """
        super(FlowAnnotations, self).__init__(**kwargs)
        self.flow_name = flow_name
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.is_archived = is_archived
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.name = name
        self.description = description
        self.archived = archived
        self.tags = tags


class FlowBaseDto(msrest.serialization.Model):
    """FlowBaseDto.

    :ivar flow_id:
    :vartype flow_id: str
    :ivar flow_name:
    :vartype flow_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar flow_resource_id:
    :vartype flow_resource_id: str
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    :ivar flow_diagnostics:
    :vartype flow_diagnostics: ~flow.models.FlowDiagnostics
    """

    _attribute_map = {
        'flow_id': {'key': 'flowId', 'type': 'str'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'flow_resource_id': {'key': 'flowResourceId', 'type': 'str'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
        'flow_diagnostics': {'key': 'flowDiagnostics', 'type': 'FlowDiagnostics'},
    }

    def __init__(
        self,
        *,
        flow_id: Optional[str] = None,
        flow_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        experiment_id: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        flow_resource_id: Optional[str] = None,
        is_archived: Optional[bool] = None,
        flow_definition_file_path: Optional[str] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        flow_diagnostics: Optional["FlowDiagnostics"] = None,
        **kwargs
    ):
        """
        :keyword flow_id:
        :paramtype flow_id: str
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword flow_resource_id:
        :paramtype flow_resource_id: str
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        :keyword flow_diagnostics:
        :paramtype flow_diagnostics: ~flow.models.FlowDiagnostics
        """
        super(FlowBaseDto, self).__init__(**kwargs)
        self.flow_id = flow_id
        self.flow_name = flow_name
        self.description = description
        self.tags = tags
        self.flow_type = flow_type
        self.experiment_id = experiment_id
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.flow_resource_id = flow_resource_id
        self.is_archived = is_archived
        self.flow_definition_file_path = flow_definition_file_path
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.enable_multi_container = enable_multi_container
        self.flow_diagnostics = flow_diagnostics


class FlowDiagnostics(msrest.serialization.Model):
    """FlowDiagnostics.

    :ivar datastore:
    :vartype datastore: str
    :ivar artifact_origin:
    :vartype artifact_origin: str
    :ivar container:
    :vartype container: str
    :ivar session_log_relative_path:
    :vartype session_log_relative_path: str
    :ivar session_artifact_id:
    :vartype session_artifact_id: str
    """

    _attribute_map = {
        'datastore': {'key': 'datastore', 'type': 'str'},
        'artifact_origin': {'key': 'artifactOrigin', 'type': 'str'},
        'container': {'key': 'container', 'type': 'str'},
        'session_log_relative_path': {'key': 'sessionLogRelativePath', 'type': 'str'},
        'session_artifact_id': {'key': 'sessionArtifactId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        datastore: Optional[str] = None,
        artifact_origin: Optional[str] = None,
        container: Optional[str] = None,
        session_log_relative_path: Optional[str] = None,
        session_artifact_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword datastore:
        :paramtype datastore: str
        :keyword artifact_origin:
        :paramtype artifact_origin: str
        :keyword container:
        :paramtype container: str
        :keyword session_log_relative_path:
        :paramtype session_log_relative_path: str
        :keyword session_artifact_id:
        :paramtype session_artifact_id: str
        """
        super(FlowDiagnostics, self).__init__(**kwargs)
        self.datastore = datastore
        self.artifact_origin = artifact_origin
        self.container = container
        self.session_log_relative_path = session_log_relative_path
        self.session_artifact_id = session_artifact_id


class FlowDto(msrest.serialization.Model):
    """FlowDto.

    :ivar timestamp:
    :vartype timestamp: ~datetime.datetime
    :ivar e_tag: Any object.
    :vartype e_tag: any
    :ivar flow:
    :vartype flow: ~flow.models.Flow
    :ivar flow_run_settings:
    :vartype flow_run_settings: ~flow.models.FlowRunSettings
    :ivar flow_run_result:
    :vartype flow_run_result: ~flow.models.FlowRunResult
    :ivar flow_test_mode: Possible values include: "Sync", "Async".
    :vartype flow_test_mode: str or ~flow.models.FlowTestMode
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar studio_portal_endpoint:
    :vartype studio_portal_endpoint: str
    :ivar flow_id:
    :vartype flow_id: str
    :ivar flow_name:
    :vartype flow_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    :ivar flow_resource_id:
    :vartype flow_resource_id: str
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    :ivar flow_diagnostics:
    :vartype flow_diagnostics: ~flow.models.FlowDiagnostics
    """

    _attribute_map = {
        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
        'e_tag': {'key': 'eTag', 'type': 'object'},
        'flow': {'key': 'flow', 'type': 'Flow'},
        'flow_run_settings': {'key': 'flowRunSettings', 'type': 'FlowRunSettings'},
        'flow_run_result': {'key': 'flowRunResult', 'type': 'FlowRunResult'},
        'flow_test_mode': {'key': 'flowTestMode', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'studio_portal_endpoint': {'key': 'studioPortalEndpoint', 'type': 'str'},
        'flow_id': {'key': 'flowId', 'type': 'str'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
        'flow_resource_id': {'key': 'flowResourceId', 'type': 'str'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
        'flow_diagnostics': {'key': 'flowDiagnostics', 'type': 'FlowDiagnostics'},
    }

    def __init__(
        self,
        *,
        timestamp: Optional[datetime.datetime] = None,
        e_tag: Optional[Any] = None,
        flow: Optional["Flow"] = None,
        flow_run_settings: Optional["FlowRunSettings"] = None,
        flow_run_result: Optional["FlowRunResult"] = None,
        flow_test_mode: Optional[Union[str, "FlowTestMode"]] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        studio_portal_endpoint: Optional[str] = None,
        flow_id: Optional[str] = None,
        flow_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        experiment_id: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        flow_resource_id: Optional[str] = None,
        is_archived: Optional[bool] = None,
        flow_definition_file_path: Optional[str] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        flow_diagnostics: Optional["FlowDiagnostics"] = None,
        **kwargs
    ):
        """
        :keyword timestamp:
        :paramtype timestamp: ~datetime.datetime
        :keyword e_tag: Any object.
        :paramtype e_tag: any
        :keyword flow:
        :paramtype flow: ~flow.models.Flow
        :keyword flow_run_settings:
        :paramtype flow_run_settings: ~flow.models.FlowRunSettings
        :keyword flow_run_result:
        :paramtype flow_run_result: ~flow.models.FlowRunResult
        :keyword flow_test_mode: Possible values include: "Sync", "Async".
        :paramtype flow_test_mode: str or ~flow.models.FlowTestMode
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword studio_portal_endpoint:
        :paramtype studio_portal_endpoint: str
        :keyword flow_id:
        :paramtype flow_id: str
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        :keyword flow_resource_id:
        :paramtype flow_resource_id: str
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        :keyword flow_diagnostics:
        :paramtype flow_diagnostics: ~flow.models.FlowDiagnostics
        """
        super(FlowDto, self).__init__(**kwargs)
        self.timestamp = timestamp
        self.e_tag = e_tag
        self.flow = flow
        self.flow_run_settings = flow_run_settings
        self.flow_run_result = flow_run_result
        self.flow_test_mode = flow_test_mode
        self.flow_test_infos = flow_test_infos
        self.studio_portal_endpoint = studio_portal_endpoint
        self.flow_id = flow_id
        self.flow_name = flow_name
        self.description = description
        self.tags = tags
        self.flow_type = flow_type
        self.experiment_id = experiment_id
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.owner = owner
        self.flow_resource_id = flow_resource_id
        self.is_archived = is_archived
        self.flow_definition_file_path = flow_definition_file_path
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.enable_multi_container = enable_multi_container
        self.flow_diagnostics = flow_diagnostics


class FlowEnvironment(msrest.serialization.Model):
    """FlowEnvironment.

    :ivar image:
    :vartype image: str
    :ivar python_requirements_txt:
    :vartype python_requirements_txt: str
    :ivar runtime_image:
    :vartype runtime_image: str
    """

    _attribute_map = {
        'image': {'key': 'image', 'type': 'str'},
        'python_requirements_txt': {'key': 'python_requirements_txt', 'type': 'str'},
        'runtime_image': {'key': 'runtime_image', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        image: Optional[str] = None,
        python_requirements_txt: Optional[str] = None,
        runtime_image: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword image:
        :paramtype image: str
        :keyword python_requirements_txt:
        :paramtype python_requirements_txt: str
        :keyword runtime_image:
        :paramtype runtime_image: str
        """
        super(FlowEnvironment, self).__init__(**kwargs)
        self.image = image
        self.python_requirements_txt = python_requirements_txt
        self.runtime_image = runtime_image


class FlowFeature(msrest.serialization.Model):
    """FlowFeature.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar state:
    :vartype state: ~flow.models.FlowFeatureState
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'state': {'key': 'state', 'type': 'FlowFeatureState'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        state: Optional["FlowFeatureState"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword state:
        :paramtype state: ~flow.models.FlowFeatureState
        """
        super(FlowFeature, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.state = state


class FlowFeatureState(msrest.serialization.Model):
    """FlowFeatureState.

    :ivar runtime: Possible values include: "Ready", "E2ETest".
    :vartype runtime: str or ~flow.models.FlowFeatureStateEnum
    :ivar executor: Possible values include: "Ready", "E2ETest".
    :vartype executor: str or ~flow.models.FlowFeatureStateEnum
    :ivar pfs: Possible values include: "Ready", "E2ETest".
    :vartype pfs: str or ~flow.models.FlowFeatureStateEnum
    """

    _attribute_map = {
        'runtime': {'key': 'Runtime', 'type': 'str'},
        'executor': {'key': 'Executor', 'type': 'str'},
        'pfs': {'key': 'PFS', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        runtime: Optional[Union[str, "FlowFeatureStateEnum"]] = None,
        executor: Optional[Union[str, "FlowFeatureStateEnum"]] = None,
        pfs: Optional[Union[str, "FlowFeatureStateEnum"]] = None,
        **kwargs
    ):
        """
        :keyword runtime: Possible values include: "Ready", "E2ETest".
        :paramtype runtime: str or ~flow.models.FlowFeatureStateEnum
        :keyword executor: Possible values include: "Ready", "E2ETest".
        :paramtype executor: str or ~flow.models.FlowFeatureStateEnum
        :keyword pfs: Possible values include: "Ready", "E2ETest".
        :paramtype pfs: str or ~flow.models.FlowFeatureStateEnum
        """
        super(FlowFeatureState, self).__init__(**kwargs)
        self.runtime = runtime
        self.executor = executor
        self.pfs = pfs


class FlowGraph(msrest.serialization.Model):
    """FlowGraph.

    :ivar nodes:
    :vartype nodes: list[~flow.models.Node]
    :ivar tools:
    :vartype tools: list[~flow.models.Tool]
    :ivar codes: This is a dictionary.
    :vartype codes: dict[str, str]
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.FlowInputDefinition]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.FlowOutputDefinition]
    """

    _attribute_map = {
        'nodes': {'key': 'nodes', 'type': '[Node]'},
        'tools': {'key': 'tools', 'type': '[Tool]'},
        'codes': {'key': 'codes', 'type': '{str}'},
        'inputs': {'key': 'inputs', 'type': '{FlowInputDefinition}'},
        'outputs': {'key': 'outputs', 'type': '{FlowOutputDefinition}'},
    }

    def __init__(
        self,
        *,
        nodes: Optional[List["Node"]] = None,
        tools: Optional[List["Tool"]] = None,
        codes: Optional[Dict[str, str]] = None,
        inputs: Optional[Dict[str, "FlowInputDefinition"]] = None,
        outputs: Optional[Dict[str, "FlowOutputDefinition"]] = None,
        **kwargs
    ):
        """
        :keyword nodes:
        :paramtype nodes: list[~flow.models.Node]
        :keyword tools:
        :paramtype tools: list[~flow.models.Tool]
        :keyword codes: This is a dictionary.
        :paramtype codes: dict[str, str]
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.FlowInputDefinition]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.FlowOutputDefinition]
        """
        super(FlowGraph, self).__init__(**kwargs)
        self.nodes = nodes
        self.tools = tools
        self.codes = codes
        self.inputs = inputs
        self.outputs = outputs


class FlowGraphAnnotationNode(msrest.serialization.Model):
    """FlowGraphAnnotationNode.

    :ivar id:
    :vartype id: str
    :ivar content:
    :vartype content: str
    :ivar mentioned_node_names:
    :vartype mentioned_node_names: list[str]
    :ivar structured_content:
    :vartype structured_content: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'content': {'key': 'content', 'type': 'str'},
        'mentioned_node_names': {'key': 'mentionedNodeNames', 'type': '[str]'},
        'structured_content': {'key': 'structuredContent', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        content: Optional[str] = None,
        mentioned_node_names: Optional[List[str]] = None,
        structured_content: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword content:
        :paramtype content: str
        :keyword mentioned_node_names:
        :paramtype mentioned_node_names: list[str]
        :keyword structured_content:
        :paramtype structured_content: str
        """
        super(FlowGraphAnnotationNode, self).__init__(**kwargs)
        self.id = id
        self.content = content
        self.mentioned_node_names = mentioned_node_names
        self.structured_content = structured_content


class FlowGraphLayout(msrest.serialization.Model):
    """FlowGraphLayout.

    :ivar node_layouts: This is a dictionary.
    :vartype node_layouts: dict[str, ~flow.models.FlowNodeLayout]
    :ivar extended_data:
    :vartype extended_data: str
    :ivar annotation_nodes:
    :vartype annotation_nodes: list[~flow.models.FlowGraphAnnotationNode]
    :ivar orientation: Possible values include: "Horizontal", "Vertical".
    :vartype orientation: str or ~flow.models.Orientation
    """

    _attribute_map = {
        'node_layouts': {'key': 'nodeLayouts', 'type': '{FlowNodeLayout}'},
        'extended_data': {'key': 'extendedData', 'type': 'str'},
        'annotation_nodes': {'key': 'annotationNodes', 'type': '[FlowGraphAnnotationNode]'},
        'orientation': {'key': 'orientation', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_layouts: Optional[Dict[str, "FlowNodeLayout"]] = None,
        extended_data: Optional[str] = None,
        annotation_nodes: Optional[List["FlowGraphAnnotationNode"]] = None,
        orientation: Optional[Union[str, "Orientation"]] = None,
        **kwargs
    ):
        """
        :keyword node_layouts: This is a dictionary.
        :paramtype node_layouts: dict[str, ~flow.models.FlowNodeLayout]
        :keyword extended_data:
        :paramtype extended_data: str
        :keyword annotation_nodes:
        :paramtype annotation_nodes: list[~flow.models.FlowGraphAnnotationNode]
        :keyword orientation: Possible values include: "Horizontal", "Vertical".
        :paramtype orientation: str or ~flow.models.Orientation
        """
        super(FlowGraphLayout, self).__init__(**kwargs)
        self.node_layouts = node_layouts
        self.extended_data = extended_data
        self.annotation_nodes = annotation_nodes
        self.orientation = orientation


class FlowGraphReference(msrest.serialization.Model):
    """FlowGraphReference.

    :ivar flow_graph:
    :vartype flow_graph: ~flow.models.FlowGraph
    :ivar reference_resource_id:
    :vartype reference_resource_id: str
    :ivar variant:
    :vartype variant: ~flow.models.VariantIdentifier
    """

    _attribute_map = {
        'flow_graph': {'key': 'flowGraph', 'type': 'FlowGraph'},
        'reference_resource_id': {'key': 'referenceResourceId', 'type': 'str'},
        'variant': {'key': 'variant', 'type': 'VariantIdentifier'},
    }

    def __init__(
        self,
        *,
        flow_graph: Optional["FlowGraph"] = None,
        reference_resource_id: Optional[str] = None,
        variant: Optional["VariantIdentifier"] = None,
        **kwargs
    ):
        """
        :keyword flow_graph:
        :paramtype flow_graph: ~flow.models.FlowGraph
        :keyword reference_resource_id:
        :paramtype reference_resource_id: str
        :keyword variant:
        :paramtype variant: ~flow.models.VariantIdentifier
        """
        super(FlowGraphReference, self).__init__(**kwargs)
        self.flow_graph = flow_graph
        self.reference_resource_id = reference_resource_id
        self.variant = variant


class FlowIndexEntity(msrest.serialization.Model):
    """FlowIndexEntity.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar schema_id:
    :vartype schema_id: str
    :ivar entity_id:
    :vartype entity_id: str
    :ivar kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
    :vartype kind: str or ~flow.models.EntityKind
    :ivar annotations:
    :vartype annotations: ~flow.models.FlowAnnotations
    :ivar properties:
    :vartype properties: ~flow.models.FlowProperties
    :ivar internal: Any object.
    :vartype internal: any
    :ivar update_sequence:
    :vartype update_sequence: long
    :ivar type:
    :vartype type: str
    :ivar version:
    :vartype version: str
    :ivar entity_container_id:
    :vartype entity_container_id: str
    :ivar entity_object_id:
    :vartype entity_object_id: str
    :ivar resource_type:
    :vartype resource_type: str
    :ivar relationships:
    :vartype relationships: list[~flow.models.Relationship]
    :ivar asset_id:
    :vartype asset_id: str
    :ivar usage:
    :vartype usage: ~flow.models.EntityUsage
    :ivar is_a_fragment:
    :vartype is_a_fragment: bool
    :ivar fragment_id:
    :vartype fragment_id: str
    """

    _validation = {
        'version': {'readonly': True},
        'entity_container_id': {'readonly': True},
        'entity_object_id': {'readonly': True},
        'resource_type': {'readonly': True},
    }

    _attribute_map = {
        'schema_id': {'key': 'schemaId', 'type': 'str'},
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'kind': {'key': 'kind', 'type': 'str'},
        'annotations': {'key': 'annotations', 'type': 'FlowAnnotations'},
        'properties': {'key': 'properties', 'type': 'FlowProperties'},
        'internal': {'key': 'internal', 'type': 'object'},
        'update_sequence': {'key': 'updateSequence', 'type': 'long'},
        'type': {'key': 'type', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'entity_container_id': {'key': 'entityContainerId', 'type': 'str'},
        'entity_object_id': {'key': 'entityObjectId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'relationships': {'key': 'relationships', 'type': '[Relationship]'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'usage': {'key': 'usage', 'type': 'EntityUsage'},
        'is_a_fragment': {'key': 'isAFragment', 'type': 'bool'},
        'fragment_id': {'key': 'fragmentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        schema_id: Optional[str] = None,
        entity_id: Optional[str] = None,
        kind: Optional[Union[str, "EntityKind"]] = None,
        annotations: Optional["FlowAnnotations"] = None,
        properties: Optional["FlowProperties"] = None,
        internal: Optional[Any] = None,
        update_sequence: Optional[int] = None,
        type: Optional[str] = None,
        relationships: Optional[List["Relationship"]] = None,
        asset_id: Optional[str] = None,
        usage: Optional["EntityUsage"] = None,
        is_a_fragment: Optional[bool] = None,
        fragment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword schema_id:
        :paramtype schema_id: str
        :keyword entity_id:
        :paramtype entity_id: str
        :keyword kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
        :paramtype kind: str or ~flow.models.EntityKind
        :keyword annotations:
        :paramtype annotations: ~flow.models.FlowAnnotations
        :keyword properties:
        :paramtype properties: ~flow.models.FlowProperties
        :keyword internal: Any object.
        :paramtype internal: any
        :keyword update_sequence:
        :paramtype update_sequence: long
        :keyword type:
        :paramtype type: str
        :keyword relationships:
        :paramtype relationships: list[~flow.models.Relationship]
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword usage:
        :paramtype usage: ~flow.models.EntityUsage
        :keyword is_a_fragment:
        :paramtype is_a_fragment: bool
        :keyword fragment_id:
        :paramtype fragment_id: str
        """
        super(FlowIndexEntity, self).__init__(**kwargs)
        self.schema_id = schema_id
        self.entity_id = entity_id
        self.kind = kind
        self.annotations = annotations
        self.properties = properties
        self.internal = internal
        self.update_sequence = update_sequence
        self.type = type
        self.version = None
        self.entity_container_id = None
        self.entity_object_id = None
        self.resource_type = None
        self.relationships = relationships
        self.asset_id = asset_id
        self.usage = usage
        self.is_a_fragment = is_a_fragment
        self.fragment_id = fragment_id


class FlowInputDefinition(msrest.serialization.Model):
    """FlowInputDefinition.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "int", "double", "bool", "string", "secret",
     "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
     "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
     "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
     "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
     "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
     "assistant_definition", "ServerlessConnection", "AIServicesConnection".
    :vartype type: str or ~flow.models.ValueType
    :ivar default: Anything.
    :vartype default: any
    :ivar description:
    :vartype description: str
    :ivar is_chat_input:
    :vartype is_chat_input: bool
    :ivar is_chat_history:
    :vartype is_chat_history: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'default': {'key': 'default', 'type': 'object'},
        'description': {'key': 'description', 'type': 'str'},
        'is_chat_input': {'key': 'is_chat_input', 'type': 'bool'},
        'is_chat_history': {'key': 'is_chat_history', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ValueType"]] = None,
        default: Optional[Any] = None,
        description: Optional[str] = None,
        is_chat_input: Optional[bool] = None,
        is_chat_history: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "int", "double", "bool", "string", "secret",
         "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
         "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
         "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
         "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
         "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
         "assistant_definition", "ServerlessConnection", "AIServicesConnection".
        :paramtype type: str or ~flow.models.ValueType
        :keyword default: Anything.
        :paramtype default: any
        :keyword description:
        :paramtype description: str
        :keyword is_chat_input:
        :paramtype is_chat_input: bool
        :keyword is_chat_history:
        :paramtype is_chat_history: bool
        """
        super(FlowInputDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.default = default
        self.description = description
        self.is_chat_input = is_chat_input
        self.is_chat_history = is_chat_history


class FlowNode(msrest.serialization.Model):
    """FlowNode.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
     "csharp", "typescript".
    :vartype type: str or ~flow.models.ToolType
    :ivar source:
    :vartype source: ~flow.models.NodeSource
    :ivar inputs: Dictionary of :code:`<any>`.
    :vartype inputs: dict[str, any]
    :ivar activate:
    :vartype activate: ~flow.models.Activate
    :ivar use_variants:
    :vartype use_variants: bool
    :ivar comment:
    :vartype comment: str
    :ivar api:
    :vartype api: str
    :ivar provider:
    :vartype provider: str
    :ivar connection:
    :vartype connection: str
    :ivar module:
    :vartype module: str
    :ivar aggregation:
    :vartype aggregation: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'source': {'key': 'source', 'type': 'NodeSource'},
        'inputs': {'key': 'inputs', 'type': '{object}'},
        'activate': {'key': 'activate', 'type': 'Activate'},
        'use_variants': {'key': 'use_variants', 'type': 'bool'},
        'comment': {'key': 'comment', 'type': 'str'},
        'api': {'key': 'api', 'type': 'str'},
        'provider': {'key': 'provider', 'type': 'str'},
        'connection': {'key': 'connection', 'type': 'str'},
        'module': {'key': 'module', 'type': 'str'},
        'aggregation': {'key': 'aggregation', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ToolType"]] = None,
        source: Optional["NodeSource"] = None,
        inputs: Optional[Dict[str, Any]] = None,
        activate: Optional["Activate"] = None,
        use_variants: Optional[bool] = None,
        comment: Optional[str] = None,
        api: Optional[str] = None,
        provider: Optional[str] = None,
        connection: Optional[str] = None,
        module: Optional[str] = None,
        aggregation: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
         "csharp", "typescript".
        :paramtype type: str or ~flow.models.ToolType
        :keyword source:
        :paramtype source: ~flow.models.NodeSource
        :keyword inputs: Dictionary of :code:`<any>`.
        :paramtype inputs: dict[str, any]
        :keyword activate:
        :paramtype activate: ~flow.models.Activate
        :keyword use_variants:
        :paramtype use_variants: bool
        :keyword comment:
        :paramtype comment: str
        :keyword api:
        :paramtype api: str
        :keyword provider:
        :paramtype provider: str
        :keyword connection:
        :paramtype connection: str
        :keyword module:
        :paramtype module: str
        :keyword aggregation:
        :paramtype aggregation: bool
        """
        super(FlowNode, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.source = source
        self.inputs = inputs
        self.activate = activate
        self.use_variants = use_variants
        self.comment = comment
        self.api = api
        self.provider = provider
        self.connection = connection
        self.module = module
        self.aggregation = aggregation


class FlowNodeLayout(msrest.serialization.Model):
    """FlowNodeLayout.

    :ivar x:
    :vartype x: float
    :ivar y:
    :vartype y: float
    :ivar width:
    :vartype width: float
    :ivar height:
    :vartype height: float
    :ivar index:
    :vartype index: int
    :ivar extended_data:
    :vartype extended_data: str
    """

    _attribute_map = {
        'x': {'key': 'x', 'type': 'float'},
        'y': {'key': 'y', 'type': 'float'},
        'width': {'key': 'width', 'type': 'float'},
        'height': {'key': 'height', 'type': 'float'},
        'index': {'key': 'index', 'type': 'int'},
        'extended_data': {'key': 'extendedData', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        x: Optional[float] = None,
        y: Optional[float] = None,
        width: Optional[float] = None,
        height: Optional[float] = None,
        index: Optional[int] = None,
        extended_data: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword x:
        :paramtype x: float
        :keyword y:
        :paramtype y: float
        :keyword width:
        :paramtype width: float
        :keyword height:
        :paramtype height: float
        :keyword index:
        :paramtype index: int
        :keyword extended_data:
        :paramtype extended_data: str
        """
        super(FlowNodeLayout, self).__init__(**kwargs)
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.index = index
        self.extended_data = extended_data


class FlowNodeVariant(msrest.serialization.Model):
    """FlowNodeVariant.

    :ivar default_variant_id:
    :vartype default_variant_id: str
    :ivar variants: This is a dictionary.
    :vartype variants: dict[str, ~flow.models.FlowVariantNode]
    """

    _attribute_map = {
        'default_variant_id': {'key': 'default_variant_id', 'type': 'str'},
        'variants': {'key': 'variants', 'type': '{FlowVariantNode}'},
    }

    def __init__(
        self,
        *,
        default_variant_id: Optional[str] = None,
        variants: Optional[Dict[str, "FlowVariantNode"]] = None,
        **kwargs
    ):
        """
        :keyword default_variant_id:
        :paramtype default_variant_id: str
        :keyword variants: This is a dictionary.
        :paramtype variants: dict[str, ~flow.models.FlowVariantNode]
        """
        super(FlowNodeVariant, self).__init__(**kwargs)
        self.default_variant_id = default_variant_id
        self.variants = variants


class FlowOutputDefinition(msrest.serialization.Model):
    """FlowOutputDefinition.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "int", "double", "bool", "string", "secret",
     "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
     "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
     "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
     "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
     "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
     "assistant_definition", "ServerlessConnection", "AIServicesConnection".
    :vartype type: str or ~flow.models.ValueType
    :ivar description:
    :vartype description: str
    :ivar reference:
    :vartype reference: str
    :ivar evaluation_only:
    :vartype evaluation_only: bool
    :ivar is_chat_output:
    :vartype is_chat_output: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'reference': {'key': 'reference', 'type': 'str'},
        'evaluation_only': {'key': 'evaluation_only', 'type': 'bool'},
        'is_chat_output': {'key': 'is_chat_output', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ValueType"]] = None,
        description: Optional[str] = None,
        reference: Optional[str] = None,
        evaluation_only: Optional[bool] = None,
        is_chat_output: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "int", "double", "bool", "string", "secret",
         "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
         "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
         "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
         "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
         "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
         "assistant_definition", "ServerlessConnection", "AIServicesConnection".
        :paramtype type: str or ~flow.models.ValueType
        :keyword description:
        :paramtype description: str
        :keyword reference:
        :paramtype reference: str
        :keyword evaluation_only:
        :paramtype evaluation_only: bool
        :keyword is_chat_output:
        :paramtype is_chat_output: bool
        """
        super(FlowOutputDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.description = description
        self.reference = reference
        self.evaluation_only = evaluation_only
        self.is_chat_output = is_chat_output


class FlowProperties(msrest.serialization.Model):
    """FlowProperties.

    :ivar flow_id:
    :vartype flow_id: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar creation_context:
    :vartype creation_context: ~flow.models.CreationContext
    """

    _attribute_map = {
        'flow_id': {'key': 'flowId', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'creation_context': {'key': 'creationContext', 'type': 'CreationContext'},
    }

    def __init__(
        self,
        *,
        flow_id: Optional[str] = None,
        experiment_id: Optional[str] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        flow_definition_file_path: Optional[str] = None,
        creation_context: Optional["CreationContext"] = None,
        **kwargs
    ):
        """
        :keyword flow_id:
        :paramtype flow_id: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword creation_context:
        :paramtype creation_context: ~flow.models.CreationContext
        """
        super(FlowProperties, self).__init__(**kwargs)
        self.flow_id = flow_id
        self.experiment_id = experiment_id
        self.flow_type = flow_type
        self.flow_definition_file_path = flow_definition_file_path
        self.creation_context = creation_context


class FlowRunBasePath(msrest.serialization.Model):
    """FlowRunBasePath.

    :ivar output_datastore_name:
    :vartype output_datastore_name: str
    :ivar base_path:
    :vartype base_path: str
    """

    _attribute_map = {
        'output_datastore_name': {'key': 'outputDatastoreName', 'type': 'str'},
        'base_path': {'key': 'basePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        output_datastore_name: Optional[str] = None,
        base_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword output_datastore_name:
        :paramtype output_datastore_name: str
        :keyword base_path:
        :paramtype base_path: str
        """
        super(FlowRunBasePath, self).__init__(**kwargs)
        self.output_datastore_name = output_datastore_name
        self.base_path = base_path


class FlowRunInfo(msrest.serialization.Model):
    """FlowRunInfo.

    :ivar flow_graph:
    :vartype flow_graph: ~flow.models.FlowGraph
    :ivar flow_graph_layout:
    :vartype flow_graph_layout: ~flow.models.FlowGraphLayout
    :ivar flow_name:
    :vartype flow_name: str
    :ivar flow_run_resource_id:
    :vartype flow_run_resource_id: str
    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
     "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
    :vartype flow_run_type: str or ~flow.models.FlowRunTypeEnum
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar output_datastore_name:
    :vartype output_datastore_name: str
    :ivar child_run_base_path:
    :vartype child_run_base_path: str
    :ivar working_directory:
    :vartype working_directory: str
    :ivar flow_dag_file_relative_path:
    :vartype flow_dag_file_relative_path: str
    :ivar flow_snapshot_id:
    :vartype flow_snapshot_id: str
    :ivar session_id:
    :vartype session_id: str
    :ivar studio_portal_endpoint:
    :vartype studio_portal_endpoint: str
    :ivar studio_portal_trace_endpoint:
    :vartype studio_portal_trace_endpoint: str
    """

    _attribute_map = {
        'flow_graph': {'key': 'flowGraph', 'type': 'FlowGraph'},
        'flow_graph_layout': {'key': 'flowGraphLayout', 'type': 'FlowGraphLayout'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'flow_run_resource_id': {'key': 'flowRunResourceId', 'type': 'str'},
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'batch_inputs': {'key': 'batchInputs', 'type': '[{object}]'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'flow_run_type': {'key': 'flowRunType', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'output_datastore_name': {'key': 'outputDatastoreName', 'type': 'str'},
        'child_run_base_path': {'key': 'childRunBasePath', 'type': 'str'},
        'working_directory': {'key': 'workingDirectory', 'type': 'str'},
        'flow_dag_file_relative_path': {'key': 'flowDagFileRelativePath', 'type': 'str'},
        'flow_snapshot_id': {'key': 'flowSnapshotId', 'type': 'str'},
        'session_id': {'key': 'sessionId', 'type': 'str'},
        'studio_portal_endpoint': {'key': 'studioPortalEndpoint', 'type': 'str'},
        'studio_portal_trace_endpoint': {'key': 'studioPortalTraceEndpoint', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        flow_graph: Optional["FlowGraph"] = None,
        flow_graph_layout: Optional["FlowGraphLayout"] = None,
        flow_name: Optional[str] = None,
        flow_run_resource_id: Optional[str] = None,
        flow_run_id: Optional[str] = None,
        flow_run_display_name: Optional[str] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        flow_run_type: Optional[Union[str, "FlowRunTypeEnum"]] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        runtime_name: Optional[str] = None,
        bulk_test_id: Optional[str] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        created_on: Optional[datetime.datetime] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        output_datastore_name: Optional[str] = None,
        child_run_base_path: Optional[str] = None,
        working_directory: Optional[str] = None,
        flow_dag_file_relative_path: Optional[str] = None,
        flow_snapshot_id: Optional[str] = None,
        session_id: Optional[str] = None,
        studio_portal_endpoint: Optional[str] = None,
        studio_portal_trace_endpoint: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword flow_graph:
        :paramtype flow_graph: ~flow.models.FlowGraph
        :keyword flow_graph_layout:
        :paramtype flow_graph_layout: ~flow.models.FlowGraphLayout
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword flow_run_resource_id:
        :paramtype flow_run_resource_id: str
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
         "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
        :paramtype flow_run_type: str or ~flow.models.FlowRunTypeEnum
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword output_datastore_name:
        :paramtype output_datastore_name: str
        :keyword child_run_base_path:
        :paramtype child_run_base_path: str
        :keyword working_directory:
        :paramtype working_directory: str
        :keyword flow_dag_file_relative_path:
        :paramtype flow_dag_file_relative_path: str
        :keyword flow_snapshot_id:
        :paramtype flow_snapshot_id: str
        :keyword session_id:
        :paramtype session_id: str
        :keyword studio_portal_endpoint:
        :paramtype studio_portal_endpoint: str
        :keyword studio_portal_trace_endpoint:
        :paramtype studio_portal_trace_endpoint: str
        """
        super(FlowRunInfo, self).__init__(**kwargs)
        self.flow_graph = flow_graph
        self.flow_graph_layout = flow_graph_layout
        self.flow_name = flow_name
        self.flow_run_resource_id = flow_run_resource_id
        self.flow_run_id = flow_run_id
        self.flow_run_display_name = flow_run_display_name
        self.batch_inputs = batch_inputs
        self.batch_data_input = batch_data_input
        self.flow_run_type = flow_run_type
        self.flow_type = flow_type
        self.runtime_name = runtime_name
        self.bulk_test_id = bulk_test_id
        self.created_by = created_by
        self.created_on = created_on
        self.inputs_mapping = inputs_mapping
        self.output_datastore_name = output_datastore_name
        self.child_run_base_path = child_run_base_path
        self.working_directory = working_directory
        self.flow_dag_file_relative_path = flow_dag_file_relative_path
        self.flow_snapshot_id = flow_snapshot_id
        self.session_id = session_id
        self.studio_portal_endpoint = studio_portal_endpoint
        self.studio_portal_trace_endpoint = studio_portal_trace_endpoint


class FlowRunResult(msrest.serialization.Model):
    """FlowRunResult.

    :ivar flow_runs:
    :vartype flow_runs: list[any]
    :ivar node_runs:
    :vartype node_runs: list[any]
    :ivar error_response: The error response.
    :vartype error_response: ~flow.models.ErrorResponse
    :ivar flow_name:
    :vartype flow_name: str
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar flow_graph:
    :vartype flow_graph: ~flow.models.FlowGraph
    :ivar flow_graph_layout:
    :vartype flow_graph_layout: ~flow.models.FlowGraphLayout
    :ivar flow_run_resource_id:
    :vartype flow_run_resource_id: str
    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
     "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
    :vartype flow_run_type: str or ~flow.models.FlowRunTypeEnum
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar aml_compute_name:
    :vartype aml_compute_name: str
    :ivar flow_run_logs: Dictionary of :code:`<string>`.
    :vartype flow_run_logs: dict[str, str]
    :ivar created_run_ids:
    :vartype created_run_ids: list[str]
    :ivar flow_test_mode: Possible values include: "Sync", "Async".
    :vartype flow_test_mode: str or ~flow.models.FlowTestMode
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar working_directory:
    :vartype working_directory: str
    :ivar flow_dag_file_relative_path:
    :vartype flow_dag_file_relative_path: str
    :ivar flow_snapshot_id:
    :vartype flow_snapshot_id: str
    :ivar variant_run_to_evaluation_runs_id_mapping: Dictionary of
     <components·1k1eaeg·schemas·flowrunresult·properties·variantruntoevaluationrunsidmapping·additionalproperties>.
    :vartype variant_run_to_evaluation_runs_id_mapping: dict[str, list[str]]
    """

    _attribute_map = {
        'flow_runs': {'key': 'flow_runs', 'type': '[object]'},
        'node_runs': {'key': 'node_runs', 'type': '[object]'},
        'error_response': {'key': 'errorResponse', 'type': 'ErrorResponse'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'flow_graph': {'key': 'flowGraph', 'type': 'FlowGraph'},
        'flow_graph_layout': {'key': 'flowGraphLayout', 'type': 'FlowGraphLayout'},
        'flow_run_resource_id': {'key': 'flowRunResourceId', 'type': 'str'},
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'batch_inputs': {'key': 'batchInputs', 'type': '[{object}]'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'flow_run_type': {'key': 'flowRunType', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'aml_compute_name': {'key': 'amlComputeName', 'type': 'str'},
        'flow_run_logs': {'key': 'flowRunLogs', 'type': '{str}'},
        'created_run_ids': {'key': 'createdRunIds', 'type': '[str]'},
        'flow_test_mode': {'key': 'flowTestMode', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'working_directory': {'key': 'workingDirectory', 'type': 'str'},
        'flow_dag_file_relative_path': {'key': 'flowDagFileRelativePath', 'type': 'str'},
        'flow_snapshot_id': {'key': 'flowSnapshotId', 'type': 'str'},
        'variant_run_to_evaluation_runs_id_mapping': {'key': 'variantRunToEvaluationRunsIdMapping', 'type': '{[str]}'},
    }

    def __init__(
        self,
        *,
        flow_runs: Optional[List[Any]] = None,
        node_runs: Optional[List[Any]] = None,
        error_response: Optional["ErrorResponse"] = None,
        flow_name: Optional[str] = None,
        flow_run_display_name: Optional[str] = None,
        flow_run_id: Optional[str] = None,
        flow_graph: Optional["FlowGraph"] = None,
        flow_graph_layout: Optional["FlowGraphLayout"] = None,
        flow_run_resource_id: Optional[str] = None,
        bulk_test_id: Optional[str] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        created_on: Optional[datetime.datetime] = None,
        flow_run_type: Optional[Union[str, "FlowRunTypeEnum"]] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        runtime_name: Optional[str] = None,
        aml_compute_name: Optional[str] = None,
        flow_run_logs: Optional[Dict[str, str]] = None,
        created_run_ids: Optional[List[str]] = None,
        flow_test_mode: Optional[Union[str, "FlowTestMode"]] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        working_directory: Optional[str] = None,
        flow_dag_file_relative_path: Optional[str] = None,
        flow_snapshot_id: Optional[str] = None,
        variant_run_to_evaluation_runs_id_mapping: Optional[Dict[str, List[str]]] = None,
        **kwargs
    ):
        """
        :keyword flow_runs:
        :paramtype flow_runs: list[any]
        :keyword node_runs:
        :paramtype node_runs: list[any]
        :keyword error_response: The error response.
        :paramtype error_response: ~flow.models.ErrorResponse
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword flow_graph:
        :paramtype flow_graph: ~flow.models.FlowGraph
        :keyword flow_graph_layout:
        :paramtype flow_graph_layout: ~flow.models.FlowGraphLayout
        :keyword flow_run_resource_id:
        :paramtype flow_run_resource_id: str
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
         "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
        :paramtype flow_run_type: str or ~flow.models.FlowRunTypeEnum
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword aml_compute_name:
        :paramtype aml_compute_name: str
        :keyword flow_run_logs: Dictionary of :code:`<string>`.
        :paramtype flow_run_logs: dict[str, str]
        :keyword created_run_ids:
        :paramtype created_run_ids: list[str]
        :keyword flow_test_mode: Possible values include: "Sync", "Async".
        :paramtype flow_test_mode: str or ~flow.models.FlowTestMode
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword working_directory:
        :paramtype working_directory: str
        :keyword flow_dag_file_relative_path:
        :paramtype flow_dag_file_relative_path: str
        :keyword flow_snapshot_id:
        :paramtype flow_snapshot_id: str
        :keyword variant_run_to_evaluation_runs_id_mapping: Dictionary of
         <components·1k1eaeg·schemas·flowrunresult·properties·variantruntoevaluationrunsidmapping·additionalproperties>.
        :paramtype variant_run_to_evaluation_runs_id_mapping: dict[str, list[str]]
        """
        super(FlowRunResult, self).__init__(**kwargs)
        self.flow_runs = flow_runs
        self.node_runs = node_runs
        self.error_response = error_response
        self.flow_name = flow_name
        self.flow_run_display_name = flow_run_display_name
        self.flow_run_id = flow_run_id
        self.flow_graph = flow_graph
        self.flow_graph_layout = flow_graph_layout
        self.flow_run_resource_id = flow_run_resource_id
        self.bulk_test_id = bulk_test_id
        self.batch_inputs = batch_inputs
        self.batch_data_input = batch_data_input
        self.created_by = created_by
        self.created_on = created_on
        self.flow_run_type = flow_run_type
        self.flow_type = flow_type
        self.runtime_name = runtime_name
        self.aml_compute_name = aml_compute_name
        self.flow_run_logs = flow_run_logs
        self.created_run_ids = created_run_ids
        self.flow_test_mode = flow_test_mode
        self.flow_test_infos = flow_test_infos
        self.working_directory = working_directory
        self.flow_dag_file_relative_path = flow_dag_file_relative_path
        self.flow_snapshot_id = flow_snapshot_id
        self.variant_run_to_evaluation_runs_id_mapping = variant_run_to_evaluation_runs_id_mapping


class FlowRunSettings(msrest.serialization.Model):
    """FlowRunSettings.

    :ivar run_mode: Possible values include: "Flow", "SingleNode", "FromNode", "BulkTest", "Eval",
     "PairwiseEval", "ExperimentTest", "ExperimentEval", "ChatGroup", "ChatGroupRole", "Command".
    :vartype run_mode: str or ~flow.models.FlowRunMode
    :ivar tuning_node_names:
    :vartype tuning_node_names: list[str]
    :ivar tuning_node_settings: This is a dictionary.
    :vartype tuning_node_settings: dict[str, ~flow.models.TuningNodeSetting]
    :ivar baseline_variant_id:
    :vartype baseline_variant_id: str
    :ivar default_variant_id:
    :vartype default_variant_id: str
    :ivar variants: This is a dictionary.
    :vartype variants: dict[str, list[~flow.models.Node]]
    :ivar node_name:
    :vartype node_name: str
    :ivar is_default_variant:
    :vartype is_default_variant: bool
    :ivar node_variant_id:
    :vartype node_variant_id: str
    :ivar node_output_paths: Dictionary of :code:`<string>`.
    :vartype node_output_paths: dict[str, str]
    :ivar base_flow_run_id:
    :vartype base_flow_run_id: str
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar evaluation_flow_run_settings: This is a dictionary.
    :vartype evaluation_flow_run_settings: dict[str, ~flow.models.EvaluationFlowRunSettings]
    :ivar bulk_test_flow_id:
    :vartype bulk_test_flow_id: str
    :ivar bulk_test_flow_run_ids:
    :vartype bulk_test_flow_run_ids: list[str]
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar input_universal_link:
    :vartype input_universal_link: str
    :ivar data_inputs: This is a dictionary.
    :vartype data_inputs: dict[str, str]
    :ivar flow_run_output_directory:
    :vartype flow_run_output_directory: str
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'run_mode': {'key': 'runMode', 'type': 'str'},
        'tuning_node_names': {'key': 'tuningNodeNames', 'type': '[str]'},
        'tuning_node_settings': {'key': 'tuningNodeSettings', 'type': '{TuningNodeSetting}'},
        'baseline_variant_id': {'key': 'baselineVariantId', 'type': 'str'},
        'default_variant_id': {'key': 'defaultVariantId', 'type': 'str'},
        'variants': {'key': 'variants', 'type': '{[Node]}'},
        'node_name': {'key': 'nodeName', 'type': 'str'},
        'is_default_variant': {'key': 'isDefaultVariant', 'type': 'bool'},
        'node_variant_id': {'key': 'nodeVariantId', 'type': 'str'},
        'node_output_paths': {'key': 'nodeOutputPaths', 'type': '{str}'},
        'base_flow_run_id': {'key': 'baseFlowRunId', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'evaluation_flow_run_settings': {'key': 'evaluationFlowRunSettings', 'type': '{EvaluationFlowRunSettings}'},
        'bulk_test_flow_id': {'key': 'bulkTestFlowId', 'type': 'str'},
        'bulk_test_flow_run_ids': {'key': 'bulkTestFlowRunIds', 'type': '[str]'},
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'input_universal_link': {'key': 'inputUniversalLink', 'type': 'str'},
        'data_inputs': {'key': 'dataInputs', 'type': '{str}'},
        'flow_run_output_directory': {'key': 'flowRunOutputDirectory', 'type': 'str'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        run_mode: Optional[Union[str, "FlowRunMode"]] = None,
        tuning_node_names: Optional[List[str]] = None,
        tuning_node_settings: Optional[Dict[str, "TuningNodeSetting"]] = None,
        baseline_variant_id: Optional[str] = None,
        default_variant_id: Optional[str] = None,
        variants: Optional[Dict[str, List["Node"]]] = None,
        node_name: Optional[str] = None,
        is_default_variant: Optional[bool] = None,
        node_variant_id: Optional[str] = None,
        node_output_paths: Optional[Dict[str, str]] = None,
        base_flow_run_id: Optional[str] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        bulk_test_id: Optional[str] = None,
        evaluation_flow_run_settings: Optional[Dict[str, "EvaluationFlowRunSettings"]] = None,
        bulk_test_flow_id: Optional[str] = None,
        bulk_test_flow_run_ids: Optional[List[str]] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        input_universal_link: Optional[str] = None,
        data_inputs: Optional[Dict[str, str]] = None,
        flow_run_output_directory: Optional[str] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword run_mode: Possible values include: "Flow", "SingleNode", "FromNode", "BulkTest",
         "Eval", "PairwiseEval", "ExperimentTest", "ExperimentEval", "ChatGroup", "ChatGroupRole",
         "Command".
        :paramtype run_mode: str or ~flow.models.FlowRunMode
        :keyword tuning_node_names:
        :paramtype tuning_node_names: list[str]
        :keyword tuning_node_settings: This is a dictionary.
        :paramtype tuning_node_settings: dict[str, ~flow.models.TuningNodeSetting]
        :keyword baseline_variant_id:
        :paramtype baseline_variant_id: str
        :keyword default_variant_id:
        :paramtype default_variant_id: str
        :keyword variants: This is a dictionary.
        :paramtype variants: dict[str, list[~flow.models.Node]]
        :keyword node_name:
        :paramtype node_name: str
        :keyword is_default_variant:
        :paramtype is_default_variant: bool
        :keyword node_variant_id:
        :paramtype node_variant_id: str
        :keyword node_output_paths: Dictionary of :code:`<string>`.
        :paramtype node_output_paths: dict[str, str]
        :keyword base_flow_run_id:
        :paramtype base_flow_run_id: str
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword evaluation_flow_run_settings: This is a dictionary.
        :paramtype evaluation_flow_run_settings: dict[str, ~flow.models.EvaluationFlowRunSettings]
        :keyword bulk_test_flow_id:
        :paramtype bulk_test_flow_id: str
        :keyword bulk_test_flow_run_ids:
        :paramtype bulk_test_flow_run_ids: list[str]
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword input_universal_link:
        :paramtype input_universal_link: str
        :keyword data_inputs: This is a dictionary.
        :paramtype data_inputs: dict[str, str]
        :keyword flow_run_output_directory:
        :paramtype flow_run_output_directory: str
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(FlowRunSettings, self).__init__(**kwargs)
        self.run_mode = run_mode
        self.tuning_node_names = tuning_node_names
        self.tuning_node_settings = tuning_node_settings
        self.baseline_variant_id = baseline_variant_id
        self.default_variant_id = default_variant_id
        self.variants = variants
        self.node_name = node_name
        self.is_default_variant = is_default_variant
        self.node_variant_id = node_variant_id
        self.node_output_paths = node_output_paths
        self.base_flow_run_id = base_flow_run_id
        self.flow_test_infos = flow_test_infos
        self.bulk_test_id = bulk_test_id
        self.evaluation_flow_run_settings = evaluation_flow_run_settings
        self.bulk_test_flow_id = bulk_test_flow_id
        self.bulk_test_flow_run_ids = bulk_test_flow_run_ids
        self.batch_inputs = batch_inputs
        self.input_universal_link = input_universal_link
        self.data_inputs = data_inputs
        self.flow_run_output_directory = flow_run_output_directory
        self.connection_overrides = connection_overrides
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class FlowRunSettingsBase(msrest.serialization.Model):
    """FlowRunSettingsBase.

    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar input_universal_link:
    :vartype input_universal_link: str
    :ivar data_inputs: This is a dictionary.
    :vartype data_inputs: dict[str, str]
    :ivar flow_run_output_directory:
    :vartype flow_run_output_directory: str
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'input_universal_link': {'key': 'inputUniversalLink', 'type': 'str'},
        'data_inputs': {'key': 'dataInputs', 'type': '{str}'},
        'flow_run_output_directory': {'key': 'flowRunOutputDirectory', 'type': 'str'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        input_universal_link: Optional[str] = None,
        data_inputs: Optional[Dict[str, str]] = None,
        flow_run_output_directory: Optional[str] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword input_universal_link:
        :paramtype input_universal_link: str
        :keyword data_inputs: This is a dictionary.
        :paramtype data_inputs: dict[str, str]
        :keyword flow_run_output_directory:
        :paramtype flow_run_output_directory: str
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(FlowRunSettingsBase, self).__init__(**kwargs)
        self.batch_inputs = batch_inputs
        self.input_universal_link = input_universal_link
        self.data_inputs = data_inputs
        self.flow_run_output_directory = flow_run_output_directory
        self.connection_overrides = connection_overrides
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class FlowRunStatusResponse(msrest.serialization.Model):
    """FlowRunStatusResponse.

    :ivar flow_run_status: Possible values include: "Started", "Completed", "Failed", "Cancelled",
     "NotStarted", "Running", "Queued", "Paused", "Unapproved", "Starting", "Preparing",
     "CancelRequested", "Pausing", "Finalizing", "Canceled", "Bypassed", "Unavailable".
    :vartype flow_run_status: str or ~flow.models.FlowRunStatusEnum
    :ivar last_checked_time:
    :vartype last_checked_time: ~datetime.datetime
    :ivar flow_run_created_time:
    :vartype flow_run_created_time: ~datetime.datetime
    """

    _attribute_map = {
        'flow_run_status': {'key': 'flowRunStatus', 'type': 'str'},
        'last_checked_time': {'key': 'lastCheckedTime', 'type': 'iso-8601'},
        'flow_run_created_time': {'key': 'flowRunCreatedTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        flow_run_status: Optional[Union[str, "FlowRunStatusEnum"]] = None,
        last_checked_time: Optional[datetime.datetime] = None,
        flow_run_created_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword flow_run_status: Possible values include: "Started", "Completed", "Failed",
         "Cancelled", "NotStarted", "Running", "Queued", "Paused", "Unapproved", "Starting",
         "Preparing", "CancelRequested", "Pausing", "Finalizing", "Canceled", "Bypassed", "Unavailable".
        :paramtype flow_run_status: str or ~flow.models.FlowRunStatusEnum
        :keyword last_checked_time:
        :paramtype last_checked_time: ~datetime.datetime
        :keyword flow_run_created_time:
        :paramtype flow_run_created_time: ~datetime.datetime
        """
        super(FlowRunStatusResponse, self).__init__(**kwargs)
        self.flow_run_status = flow_run_status
        self.last_checked_time = last_checked_time
        self.flow_run_created_time = flow_run_created_time


class FlowRuntimeCapability(msrest.serialization.Model):
    """FlowRuntimeCapability.

    :ivar flow_features:
    :vartype flow_features: list[~flow.models.FlowFeature]
    """

    _attribute_map = {
        'flow_features': {'key': 'flowFeatures', 'type': '[FlowFeature]'},
    }

    def __init__(
        self,
        *,
        flow_features: Optional[List["FlowFeature"]] = None,
        **kwargs
    ):
        """
        :keyword flow_features:
        :paramtype flow_features: list[~flow.models.FlowFeature]
        """
        super(FlowRuntimeCapability, self).__init__(**kwargs)
        self.flow_features = flow_features


class FlowRuntimeDto(msrest.serialization.Model):
    """FlowRuntimeDto.

    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar runtime_description:
    :vartype runtime_description: str
    :ivar runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
     "TrainingSession", "Local".
    :vartype runtime_type: str or ~flow.models.RuntimeType
    :ivar environment:
    :vartype environment: str
    :ivar status: Possible values include: "Unavailable", "Failed", "NotExist", "Starting",
     "Stopping".
    :vartype status: str or ~flow.models.RuntimeStatusEnum
    :ivar status_message:
    :vartype status_message: str
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar from_existing_endpoint:
    :vartype from_existing_endpoint: bool
    :ivar endpoint_name:
    :vartype endpoint_name: str
    :ivar from_existing_deployment:
    :vartype from_existing_deployment: bool
    :ivar deployment_name:
    :vartype deployment_name: str
    :ivar identity:
    :vartype identity: ~flow.models.ManagedServiceIdentity
    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar compute_instance_name:
    :vartype compute_instance_name: str
    :ivar docker_image:
    :vartype docker_image: str
    :ivar published_port:
    :vartype published_port: int
    :ivar target_port:
    :vartype target_port: int
    :ivar from_existing_custom_app:
    :vartype from_existing_custom_app: bool
    :ivar custom_app_name:
    :vartype custom_app_name: str
    :ivar assigned_to:
    :vartype assigned_to: ~flow.models.AssignedUser
    :ivar endpoint_url:
    :vartype endpoint_url: str
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar modified_on:
    :vartype modified_on: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    """

    _attribute_map = {
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'runtime_description': {'key': 'runtimeDescription', 'type': 'str'},
        'runtime_type': {'key': 'runtimeType', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'status_message': {'key': 'statusMessage', 'type': 'str'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'from_existing_endpoint': {'key': 'fromExistingEndpoint', 'type': 'bool'},
        'endpoint_name': {'key': 'endpointName', 'type': 'str'},
        'from_existing_deployment': {'key': 'fromExistingDeployment', 'type': 'bool'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'compute_instance_name': {'key': 'computeInstanceName', 'type': 'str'},
        'docker_image': {'key': 'dockerImage', 'type': 'str'},
        'published_port': {'key': 'publishedPort', 'type': 'int'},
        'target_port': {'key': 'targetPort', 'type': 'int'},
        'from_existing_custom_app': {'key': 'fromExistingCustomApp', 'type': 'bool'},
        'custom_app_name': {'key': 'customAppName', 'type': 'str'},
        'assigned_to': {'key': 'assignedTo', 'type': 'AssignedUser'},
        'endpoint_url': {'key': 'endpointUrl', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
    }

    def __init__(
        self,
        *,
        runtime_name: Optional[str] = None,
        runtime_description: Optional[str] = None,
        runtime_type: Optional[Union[str, "RuntimeType"]] = None,
        environment: Optional[str] = None,
        status: Optional[Union[str, "RuntimeStatusEnum"]] = None,
        status_message: Optional[str] = None,
        error: Optional["ErrorResponse"] = None,
        from_existing_endpoint: Optional[bool] = None,
        endpoint_name: Optional[str] = None,
        from_existing_deployment: Optional[bool] = None,
        deployment_name: Optional[str] = None,
        identity: Optional["ManagedServiceIdentity"] = None,
        instance_type: Optional[str] = None,
        instance_count: Optional[int] = None,
        compute_instance_name: Optional[str] = None,
        docker_image: Optional[str] = None,
        published_port: Optional[int] = None,
        target_port: Optional[int] = None,
        from_existing_custom_app: Optional[bool] = None,
        custom_app_name: Optional[str] = None,
        assigned_to: Optional["AssignedUser"] = None,
        endpoint_url: Optional[str] = None,
        created_on: Optional[datetime.datetime] = None,
        modified_on: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        **kwargs
    ):
        """
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword runtime_description:
        :paramtype runtime_description: str
        :keyword runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
         "TrainingSession", "Local".
        :paramtype runtime_type: str or ~flow.models.RuntimeType
        :keyword environment:
        :paramtype environment: str
        :keyword status: Possible values include: "Unavailable", "Failed", "NotExist", "Starting",
         "Stopping".
        :paramtype status: str or ~flow.models.RuntimeStatusEnum
        :keyword status_message:
        :paramtype status_message: str
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword from_existing_endpoint:
        :paramtype from_existing_endpoint: bool
        :keyword endpoint_name:
        :paramtype endpoint_name: str
        :keyword from_existing_deployment:
        :paramtype from_existing_deployment: bool
        :keyword deployment_name:
        :paramtype deployment_name: str
        :keyword identity:
        :paramtype identity: ~flow.models.ManagedServiceIdentity
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword compute_instance_name:
        :paramtype compute_instance_name: str
        :keyword docker_image:
        :paramtype docker_image: str
        :keyword published_port:
        :paramtype published_port: int
        :keyword target_port:
        :paramtype target_port: int
        :keyword from_existing_custom_app:
        :paramtype from_existing_custom_app: bool
        :keyword custom_app_name:
        :paramtype custom_app_name: str
        :keyword assigned_to:
        :paramtype assigned_to: ~flow.models.AssignedUser
        :keyword endpoint_url:
        :paramtype endpoint_url: str
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword modified_on:
        :paramtype modified_on: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        """
        super(FlowRuntimeDto, self).__init__(**kwargs)
        self.runtime_name = runtime_name
        self.runtime_description = runtime_description
        self.runtime_type = runtime_type
        self.environment = environment
        self.status = status
        self.status_message = status_message
        self.error = error
        self.from_existing_endpoint = from_existing_endpoint
        self.endpoint_name = endpoint_name
        self.from_existing_deployment = from_existing_deployment
        self.deployment_name = deployment_name
        self.identity = identity
        self.instance_type = instance_type
        self.instance_count = instance_count
        self.compute_instance_name = compute_instance_name
        self.docker_image = docker_image
        self.published_port = published_port
        self.target_port = target_port
        self.from_existing_custom_app = from_existing_custom_app
        self.custom_app_name = custom_app_name
        self.assigned_to = assigned_to
        self.endpoint_url = endpoint_url
        self.created_on = created_on
        self.modified_on = modified_on
        self.owner = owner


class FlowSessionDto(msrest.serialization.Model):
    """FlowSessionDto.

    :ivar session_id:
    :vartype session_id: str
    :ivar base_image:
    :vartype base_image: str
    :ivar packages:
    :vartype packages: list[str]
    :ivar runtime_image:
    :vartype runtime_image: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar compute_name:
    :vartype compute_name: str
    :ivar flow_features:
    :vartype flow_features: list[~flow.models.FlowFeature]
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar runtime_description:
    :vartype runtime_description: str
    :ivar runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
     "TrainingSession", "Local".
    :vartype runtime_type: str or ~flow.models.RuntimeType
    :ivar environment:
    :vartype environment: str
    :ivar status: Possible values include: "Unavailable", "Failed", "NotExist", "Starting",
     "Stopping".
    :vartype status: str or ~flow.models.RuntimeStatusEnum
    :ivar status_message:
    :vartype status_message: str
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar from_existing_endpoint:
    :vartype from_existing_endpoint: bool
    :ivar endpoint_name:
    :vartype endpoint_name: str
    :ivar from_existing_deployment:
    :vartype from_existing_deployment: bool
    :ivar deployment_name:
    :vartype deployment_name: str
    :ivar identity:
    :vartype identity: ~flow.models.ManagedServiceIdentity
    :ivar instance_type:
    :vartype instance_type: str
    :ivar instance_count:
    :vartype instance_count: int
    :ivar compute_instance_name:
    :vartype compute_instance_name: str
    :ivar docker_image:
    :vartype docker_image: str
    :ivar published_port:
    :vartype published_port: int
    :ivar target_port:
    :vartype target_port: int
    :ivar from_existing_custom_app:
    :vartype from_existing_custom_app: bool
    :ivar custom_app_name:
    :vartype custom_app_name: str
    :ivar assigned_to:
    :vartype assigned_to: ~flow.models.AssignedUser
    :ivar endpoint_url:
    :vartype endpoint_url: str
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar modified_on:
    :vartype modified_on: ~datetime.datetime
    :ivar owner:
    :vartype owner: ~flow.models.SchemaContractsCreatedBy
    """

    _attribute_map = {
        'session_id': {'key': 'sessionId', 'type': 'str'},
        'base_image': {'key': 'baseImage', 'type': 'str'},
        'packages': {'key': 'packages', 'type': '[str]'},
        'runtime_image': {'key': 'runtimeImage', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'flow_features': {'key': 'flowFeatures', 'type': '[FlowFeature]'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'runtime_description': {'key': 'runtimeDescription', 'type': 'str'},
        'runtime_type': {'key': 'runtimeType', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'status_message': {'key': 'statusMessage', 'type': 'str'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'from_existing_endpoint': {'key': 'fromExistingEndpoint', 'type': 'bool'},
        'endpoint_name': {'key': 'endpointName', 'type': 'str'},
        'from_existing_deployment': {'key': 'fromExistingDeployment', 'type': 'bool'},
        'deployment_name': {'key': 'deploymentName', 'type': 'str'},
        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
        'compute_instance_name': {'key': 'computeInstanceName', 'type': 'str'},
        'docker_image': {'key': 'dockerImage', 'type': 'str'},
        'published_port': {'key': 'publishedPort', 'type': 'int'},
        'target_port': {'key': 'targetPort', 'type': 'int'},
        'from_existing_custom_app': {'key': 'fromExistingCustomApp', 'type': 'bool'},
        'custom_app_name': {'key': 'customAppName', 'type': 'str'},
        'assigned_to': {'key': 'assignedTo', 'type': 'AssignedUser'},
        'endpoint_url': {'key': 'endpointUrl', 'type': 'str'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'modified_on': {'key': 'modifiedOn', 'type': 'iso-8601'},
        'owner': {'key': 'owner', 'type': 'SchemaContractsCreatedBy'},
    }

    def __init__(
        self,
        *,
        session_id: Optional[str] = None,
        base_image: Optional[str] = None,
        packages: Optional[List[str]] = None,
        runtime_image: Optional[str] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        compute_name: Optional[str] = None,
        flow_features: Optional[List["FlowFeature"]] = None,
        enable_multi_container: Optional[bool] = None,
        runtime_name: Optional[str] = None,
        runtime_description: Optional[str] = None,
        runtime_type: Optional[Union[str, "RuntimeType"]] = None,
        environment: Optional[str] = None,
        status: Optional[Union[str, "RuntimeStatusEnum"]] = None,
        status_message: Optional[str] = None,
        error: Optional["ErrorResponse"] = None,
        from_existing_endpoint: Optional[bool] = None,
        endpoint_name: Optional[str] = None,
        from_existing_deployment: Optional[bool] = None,
        deployment_name: Optional[str] = None,
        identity: Optional["ManagedServiceIdentity"] = None,
        instance_type: Optional[str] = None,
        instance_count: Optional[int] = None,
        compute_instance_name: Optional[str] = None,
        docker_image: Optional[str] = None,
        published_port: Optional[int] = None,
        target_port: Optional[int] = None,
        from_existing_custom_app: Optional[bool] = None,
        custom_app_name: Optional[str] = None,
        assigned_to: Optional["AssignedUser"] = None,
        endpoint_url: Optional[str] = None,
        created_on: Optional[datetime.datetime] = None,
        modified_on: Optional[datetime.datetime] = None,
        owner: Optional["SchemaContractsCreatedBy"] = None,
        **kwargs
    ):
        """
        :keyword session_id:
        :paramtype session_id: str
        :keyword base_image:
        :paramtype base_image: str
        :keyword packages:
        :paramtype packages: list[str]
        :keyword runtime_image:
        :paramtype runtime_image: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword flow_features:
        :paramtype flow_features: list[~flow.models.FlowFeature]
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword runtime_description:
        :paramtype runtime_description: str
        :keyword runtime_type: Possible values include: "ManagedOnlineEndpoint", "ComputeInstance",
         "TrainingSession", "Local".
        :paramtype runtime_type: str or ~flow.models.RuntimeType
        :keyword environment:
        :paramtype environment: str
        :keyword status: Possible values include: "Unavailable", "Failed", "NotExist", "Starting",
         "Stopping".
        :paramtype status: str or ~flow.models.RuntimeStatusEnum
        :keyword status_message:
        :paramtype status_message: str
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword from_existing_endpoint:
        :paramtype from_existing_endpoint: bool
        :keyword endpoint_name:
        :paramtype endpoint_name: str
        :keyword from_existing_deployment:
        :paramtype from_existing_deployment: bool
        :keyword deployment_name:
        :paramtype deployment_name: str
        :keyword identity:
        :paramtype identity: ~flow.models.ManagedServiceIdentity
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword instance_count:
        :paramtype instance_count: int
        :keyword compute_instance_name:
        :paramtype compute_instance_name: str
        :keyword docker_image:
        :paramtype docker_image: str
        :keyword published_port:
        :paramtype published_port: int
        :keyword target_port:
        :paramtype target_port: int
        :keyword from_existing_custom_app:
        :paramtype from_existing_custom_app: bool
        :keyword custom_app_name:
        :paramtype custom_app_name: str
        :keyword assigned_to:
        :paramtype assigned_to: ~flow.models.AssignedUser
        :keyword endpoint_url:
        :paramtype endpoint_url: str
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword modified_on:
        :paramtype modified_on: ~datetime.datetime
        :keyword owner:
        :paramtype owner: ~flow.models.SchemaContractsCreatedBy
        """
        super(FlowSessionDto, self).__init__(**kwargs)
        self.session_id = session_id
        self.base_image = base_image
        self.packages = packages
        self.runtime_image = runtime_image
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.compute_name = compute_name
        self.flow_features = flow_features
        self.enable_multi_container = enable_multi_container
        self.runtime_name = runtime_name
        self.runtime_description = runtime_description
        self.runtime_type = runtime_type
        self.environment = environment
        self.status = status
        self.status_message = status_message
        self.error = error
        self.from_existing_endpoint = from_existing_endpoint
        self.endpoint_name = endpoint_name
        self.from_existing_deployment = from_existing_deployment
        self.deployment_name = deployment_name
        self.identity = identity
        self.instance_type = instance_type
        self.instance_count = instance_count
        self.compute_instance_name = compute_instance_name
        self.docker_image = docker_image
        self.published_port = published_port
        self.target_port = target_port
        self.from_existing_custom_app = from_existing_custom_app
        self.custom_app_name = custom_app_name
        self.assigned_to = assigned_to
        self.endpoint_url = endpoint_url
        self.created_on = created_on
        self.modified_on = modified_on
        self.owner = owner


class FlowSnapshot(msrest.serialization.Model):
    """FlowSnapshot.

    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.FlowInputDefinition]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.FlowOutputDefinition]
    :ivar nodes:
    :vartype nodes: list[~flow.models.FlowNode]
    :ivar node_variants: This is a dictionary.
    :vartype node_variants: dict[str, ~flow.models.FlowNodeVariant]
    :ivar environment:
    :vartype environment: ~flow.models.FlowEnvironment
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, any]
    :ivar language: Possible values include: "Python", "CSharp", "TypeScript", "JavaScript".
    :vartype language: str or ~flow.models.FlowLanguage
    :ivar message_format: Possible values include: "basic", "openai-vision".
    :vartype message_format: str or ~flow.models.FlowMessageFormatType
    """

    _attribute_map = {
        'inputs': {'key': 'inputs', 'type': '{FlowInputDefinition}'},
        'outputs': {'key': 'outputs', 'type': '{FlowOutputDefinition}'},
        'nodes': {'key': 'nodes', 'type': '[FlowNode]'},
        'node_variants': {'key': 'node_variants', 'type': '{FlowNodeVariant}'},
        'environment': {'key': 'environment', 'type': 'FlowEnvironment'},
        'environment_variables': {'key': 'environment_variables', 'type': '{object}'},
        'language': {'key': 'language', 'type': 'str'},
        'message_format': {'key': 'message_format', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        inputs: Optional[Dict[str, "FlowInputDefinition"]] = None,
        outputs: Optional[Dict[str, "FlowOutputDefinition"]] = None,
        nodes: Optional[List["FlowNode"]] = None,
        node_variants: Optional[Dict[str, "FlowNodeVariant"]] = None,
        environment: Optional["FlowEnvironment"] = None,
        environment_variables: Optional[Dict[str, Any]] = None,
        language: Optional[Union[str, "FlowLanguage"]] = None,
        message_format: Optional[Union[str, "FlowMessageFormatType"]] = None,
        **kwargs
    ):
        """
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.FlowInputDefinition]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.FlowOutputDefinition]
        :keyword nodes:
        :paramtype nodes: list[~flow.models.FlowNode]
        :keyword node_variants: This is a dictionary.
        :paramtype node_variants: dict[str, ~flow.models.FlowNodeVariant]
        :keyword environment:
        :paramtype environment: ~flow.models.FlowEnvironment
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, any]
        :keyword language: Possible values include: "Python", "CSharp", "TypeScript", "JavaScript".
        :paramtype language: str or ~flow.models.FlowLanguage
        :keyword message_format: Possible values include: "basic", "openai-vision".
        :paramtype message_format: str or ~flow.models.FlowMessageFormatType
        """
        super(FlowSnapshot, self).__init__(**kwargs)
        self.inputs = inputs
        self.outputs = outputs
        self.nodes = nodes
        self.node_variants = node_variants
        self.environment = environment
        self.environment_variables = environment_variables
        self.language = language
        self.message_format = message_format


class FlowSubmitRunSettings(msrest.serialization.Model):
    """FlowSubmitRunSettings.

    :ivar node_inputs: This is a dictionary.
    :vartype node_inputs: dict[str, any]
    :ivar run_mode: Possible values include: "Flow", "SingleNode", "FromNode", "BulkTest", "Eval",
     "PairwiseEval", "ExperimentTest", "ExperimentEval", "ChatGroup", "ChatGroupRole", "Command".
    :vartype run_mode: str or ~flow.models.FlowRunMode
    :ivar tuning_node_names:
    :vartype tuning_node_names: list[str]
    :ivar tuning_node_settings: This is a dictionary.
    :vartype tuning_node_settings: dict[str, ~flow.models.TuningNodeSetting]
    :ivar baseline_variant_id:
    :vartype baseline_variant_id: str
    :ivar default_variant_id:
    :vartype default_variant_id: str
    :ivar variants: This is a dictionary.
    :vartype variants: dict[str, list[~flow.models.Node]]
    :ivar node_name:
    :vartype node_name: str
    :ivar is_default_variant:
    :vartype is_default_variant: bool
    :ivar node_variant_id:
    :vartype node_variant_id: str
    :ivar node_output_paths: Dictionary of :code:`<string>`.
    :vartype node_output_paths: dict[str, str]
    :ivar base_flow_run_id:
    :vartype base_flow_run_id: str
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar evaluation_flow_run_settings: This is a dictionary.
    :vartype evaluation_flow_run_settings: dict[str, ~flow.models.EvaluationFlowRunSettings]
    :ivar bulk_test_flow_id:
    :vartype bulk_test_flow_id: str
    :ivar bulk_test_flow_run_ids:
    :vartype bulk_test_flow_run_ids: list[str]
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar input_universal_link:
    :vartype input_universal_link: str
    :ivar data_inputs: This is a dictionary.
    :vartype data_inputs: dict[str, str]
    :ivar flow_run_output_directory:
    :vartype flow_run_output_directory: str
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'node_inputs': {'key': 'nodeInputs', 'type': '{object}'},
        'run_mode': {'key': 'runMode', 'type': 'str'},
        'tuning_node_names': {'key': 'tuningNodeNames', 'type': '[str]'},
        'tuning_node_settings': {'key': 'tuningNodeSettings', 'type': '{TuningNodeSetting}'},
        'baseline_variant_id': {'key': 'baselineVariantId', 'type': 'str'},
        'default_variant_id': {'key': 'defaultVariantId', 'type': 'str'},
        'variants': {'key': 'variants', 'type': '{[Node]}'},
        'node_name': {'key': 'nodeName', 'type': 'str'},
        'is_default_variant': {'key': 'isDefaultVariant', 'type': 'bool'},
        'node_variant_id': {'key': 'nodeVariantId', 'type': 'str'},
        'node_output_paths': {'key': 'nodeOutputPaths', 'type': '{str}'},
        'base_flow_run_id': {'key': 'baseFlowRunId', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'evaluation_flow_run_settings': {'key': 'evaluationFlowRunSettings', 'type': '{EvaluationFlowRunSettings}'},
        'bulk_test_flow_id': {'key': 'bulkTestFlowId', 'type': 'str'},
        'bulk_test_flow_run_ids': {'key': 'bulkTestFlowRunIds', 'type': '[str]'},
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'input_universal_link': {'key': 'inputUniversalLink', 'type': 'str'},
        'data_inputs': {'key': 'dataInputs', 'type': '{str}'},
        'flow_run_output_directory': {'key': 'flowRunOutputDirectory', 'type': 'str'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        node_inputs: Optional[Dict[str, Any]] = None,
        run_mode: Optional[Union[str, "FlowRunMode"]] = None,
        tuning_node_names: Optional[List[str]] = None,
        tuning_node_settings: Optional[Dict[str, "TuningNodeSetting"]] = None,
        baseline_variant_id: Optional[str] = None,
        default_variant_id: Optional[str] = None,
        variants: Optional[Dict[str, List["Node"]]] = None,
        node_name: Optional[str] = None,
        is_default_variant: Optional[bool] = None,
        node_variant_id: Optional[str] = None,
        node_output_paths: Optional[Dict[str, str]] = None,
        base_flow_run_id: Optional[str] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        bulk_test_id: Optional[str] = None,
        evaluation_flow_run_settings: Optional[Dict[str, "EvaluationFlowRunSettings"]] = None,
        bulk_test_flow_id: Optional[str] = None,
        bulk_test_flow_run_ids: Optional[List[str]] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        input_universal_link: Optional[str] = None,
        data_inputs: Optional[Dict[str, str]] = None,
        flow_run_output_directory: Optional[str] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword node_inputs: This is a dictionary.
        :paramtype node_inputs: dict[str, any]
        :keyword run_mode: Possible values include: "Flow", "SingleNode", "FromNode", "BulkTest",
         "Eval", "PairwiseEval", "ExperimentTest", "ExperimentEval", "ChatGroup", "ChatGroupRole",
         "Command".
        :paramtype run_mode: str or ~flow.models.FlowRunMode
        :keyword tuning_node_names:
        :paramtype tuning_node_names: list[str]
        :keyword tuning_node_settings: This is a dictionary.
        :paramtype tuning_node_settings: dict[str, ~flow.models.TuningNodeSetting]
        :keyword baseline_variant_id:
        :paramtype baseline_variant_id: str
        :keyword default_variant_id:
        :paramtype default_variant_id: str
        :keyword variants: This is a dictionary.
        :paramtype variants: dict[str, list[~flow.models.Node]]
        :keyword node_name:
        :paramtype node_name: str
        :keyword is_default_variant:
        :paramtype is_default_variant: bool
        :keyword node_variant_id:
        :paramtype node_variant_id: str
        :keyword node_output_paths: Dictionary of :code:`<string>`.
        :paramtype node_output_paths: dict[str, str]
        :keyword base_flow_run_id:
        :paramtype base_flow_run_id: str
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword evaluation_flow_run_settings: This is a dictionary.
        :paramtype evaluation_flow_run_settings: dict[str, ~flow.models.EvaluationFlowRunSettings]
        :keyword bulk_test_flow_id:
        :paramtype bulk_test_flow_id: str
        :keyword bulk_test_flow_run_ids:
        :paramtype bulk_test_flow_run_ids: list[str]
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword input_universal_link:
        :paramtype input_universal_link: str
        :keyword data_inputs: This is a dictionary.
        :paramtype data_inputs: dict[str, str]
        :keyword flow_run_output_directory:
        :paramtype flow_run_output_directory: str
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(FlowSubmitRunSettings, self).__init__(**kwargs)
        self.node_inputs = node_inputs
        self.run_mode = run_mode
        self.tuning_node_names = tuning_node_names
        self.tuning_node_settings = tuning_node_settings
        self.baseline_variant_id = baseline_variant_id
        self.default_variant_id = default_variant_id
        self.variants = variants
        self.node_name = node_name
        self.is_default_variant = is_default_variant
        self.node_variant_id = node_variant_id
        self.node_output_paths = node_output_paths
        self.base_flow_run_id = base_flow_run_id
        self.flow_test_infos = flow_test_infos
        self.bulk_test_id = bulk_test_id
        self.evaluation_flow_run_settings = evaluation_flow_run_settings
        self.bulk_test_flow_id = bulk_test_flow_id
        self.bulk_test_flow_run_ids = bulk_test_flow_run_ids
        self.batch_inputs = batch_inputs
        self.input_universal_link = input_universal_link
        self.data_inputs = data_inputs
        self.flow_run_output_directory = flow_run_output_directory
        self.connection_overrides = connection_overrides
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class FlowTestInfo(msrest.serialization.Model):
    """FlowTestInfo.

    :ivar variant_id:
    :vartype variant_id: str
    :ivar tuning_node_name:
    :vartype tuning_node_name: str
    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar flow_test_storage_setting:
    :vartype flow_test_storage_setting: ~flow.models.FlowTestStorageSetting
    :ivar flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
     "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
    :vartype flow_run_type: str or ~flow.models.FlowRunTypeEnum
    :ivar variant_run_id:
    :vartype variant_run_id: str
    :ivar evaluation_name:
    :vartype evaluation_name: str
    :ivar output_universal_link:
    :vartype output_universal_link: str
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    """

    _attribute_map = {
        'variant_id': {'key': 'variantId', 'type': 'str'},
        'tuning_node_name': {'key': 'tuningNodeName', 'type': 'str'},
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'flow_test_storage_setting': {'key': 'flowTestStorageSetting', 'type': 'FlowTestStorageSetting'},
        'flow_run_type': {'key': 'flowRunType', 'type': 'str'},
        'variant_run_id': {'key': 'variantRunId', 'type': 'str'},
        'evaluation_name': {'key': 'evaluationName', 'type': 'str'},
        'output_universal_link': {'key': 'outputUniversalLink', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        variant_id: Optional[str] = None,
        tuning_node_name: Optional[str] = None,
        flow_run_id: Optional[str] = None,
        flow_test_storage_setting: Optional["FlowTestStorageSetting"] = None,
        flow_run_type: Optional[Union[str, "FlowRunTypeEnum"]] = None,
        variant_run_id: Optional[str] = None,
        evaluation_name: Optional[str] = None,
        output_universal_link: Optional[str] = None,
        experiment_node_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword variant_id:
        :paramtype variant_id: str
        :keyword tuning_node_name:
        :paramtype tuning_node_name: str
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword flow_test_storage_setting:
        :paramtype flow_test_storage_setting: ~flow.models.FlowTestStorageSetting
        :keyword flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
         "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
        :paramtype flow_run_type: str or ~flow.models.FlowRunTypeEnum
        :keyword variant_run_id:
        :paramtype variant_run_id: str
        :keyword evaluation_name:
        :paramtype evaluation_name: str
        :keyword output_universal_link:
        :paramtype output_universal_link: str
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        """
        super(FlowTestInfo, self).__init__(**kwargs)
        self.variant_id = variant_id
        self.tuning_node_name = tuning_node_name
        self.flow_run_id = flow_run_id
        self.flow_test_storage_setting = flow_test_storage_setting
        self.flow_run_type = flow_run_type
        self.variant_run_id = variant_run_id
        self.evaluation_name = evaluation_name
        self.output_universal_link = output_universal_link
        self.experiment_node_name = experiment_node_name


class FlowTestStorageSetting(msrest.serialization.Model):
    """FlowTestStorageSetting.

    :ivar storage_account_name:
    :vartype storage_account_name: str
    :ivar blob_container_name:
    :vartype blob_container_name: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar output_datastore_name:
    :vartype output_datastore_name: str
    """

    _attribute_map = {
        'storage_account_name': {'key': 'storageAccountName', 'type': 'str'},
        'blob_container_name': {'key': 'blobContainerName', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'output_datastore_name': {'key': 'outputDatastoreName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        storage_account_name: Optional[str] = None,
        blob_container_name: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        output_datastore_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword storage_account_name:
        :paramtype storage_account_name: str
        :keyword blob_container_name:
        :paramtype blob_container_name: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword output_datastore_name:
        :paramtype output_datastore_name: str
        """
        super(FlowTestStorageSetting, self).__init__(**kwargs)
        self.storage_account_name = storage_account_name
        self.blob_container_name = blob_container_name
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.output_datastore_name = output_datastore_name


class FlowToolsDto(msrest.serialization.Model):
    """FlowToolsDto.

    :ivar package: This is a dictionary.
    :vartype package: dict[str, ~flow.models.Tool]
    :ivar code: This is a dictionary.
    :vartype code: dict[str, ~flow.models.Tool]
    :ivar errors: This is a dictionary.
    :vartype errors: dict[str, ~flow.models.ErrorResponse]
    """

    _attribute_map = {
        'package': {'key': 'package', 'type': '{Tool}'},
        'code': {'key': 'code', 'type': '{Tool}'},
        'errors': {'key': 'errors', 'type': '{ErrorResponse}'},
    }

    def __init__(
        self,
        *,
        package: Optional[Dict[str, "Tool"]] = None,
        code: Optional[Dict[str, "Tool"]] = None,
        errors: Optional[Dict[str, "ErrorResponse"]] = None,
        **kwargs
    ):
        """
        :keyword package: This is a dictionary.
        :paramtype package: dict[str, ~flow.models.Tool]
        :keyword code: This is a dictionary.
        :paramtype code: dict[str, ~flow.models.Tool]
        :keyword errors: This is a dictionary.
        :paramtype errors: dict[str, ~flow.models.ErrorResponse]
        """
        super(FlowToolsDto, self).__init__(**kwargs)
        self.package = package
        self.code = code
        self.errors = errors


class FlowToolSettingParameter(msrest.serialization.Model):
    """FlowToolSettingParameter.

    :ivar type:
    :vartype type: list[str or ~flow.models.ValueType]
    :ivar default:
    :vartype default: str
    :ivar advanced:
    :vartype advanced: bool
    :ivar enum:
    :vartype enum: list[any]
    :ivar model_list:
    :vartype model_list: list[str]
    :ivar capabilities:
    :vartype capabilities: ~flow.models.AzureOpenAIModelCapabilities
    :ivar allow_manual_entry:
    :vartype allow_manual_entry: bool
    :ivar ui_hints: This is a dictionary.
    :vartype ui_hints: dict[str, any]
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': '[str]'},
        'default': {'key': 'default', 'type': 'str'},
        'advanced': {'key': 'advanced', 'type': 'bool'},
        'enum': {'key': 'enum', 'type': '[object]'},
        'model_list': {'key': 'model_list', 'type': '[str]'},
        'capabilities': {'key': 'capabilities', 'type': 'AzureOpenAIModelCapabilities'},
        'allow_manual_entry': {'key': 'allow_manual_entry', 'type': 'bool'},
        'ui_hints': {'key': 'ui_hints', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        type: Optional[List[Union[str, "ValueType"]]] = None,
        default: Optional[str] = None,
        advanced: Optional[bool] = None,
        enum: Optional[List[Any]] = None,
        model_list: Optional[List[str]] = None,
        capabilities: Optional["AzureOpenAIModelCapabilities"] = None,
        allow_manual_entry: Optional[bool] = None,
        ui_hints: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: list[str or ~flow.models.ValueType]
        :keyword default:
        :paramtype default: str
        :keyword advanced:
        :paramtype advanced: bool
        :keyword enum:
        :paramtype enum: list[any]
        :keyword model_list:
        :paramtype model_list: list[str]
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AzureOpenAIModelCapabilities
        :keyword allow_manual_entry:
        :paramtype allow_manual_entry: bool
        :keyword ui_hints: This is a dictionary.
        :paramtype ui_hints: dict[str, any]
        """
        super(FlowToolSettingParameter, self).__init__(**kwargs)
        self.type = type
        self.default = default
        self.advanced = advanced
        self.enum = enum
        self.model_list = model_list
        self.capabilities = capabilities
        self.allow_manual_entry = allow_manual_entry
        self.ui_hints = ui_hints


class FlowVariantNode(msrest.serialization.Model):
    """FlowVariantNode.

    :ivar node:
    :vartype node: ~flow.models.FlowNode
    :ivar description:
    :vartype description: str
    """

    _attribute_map = {
        'node': {'key': 'node', 'type': 'FlowNode'},
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node: Optional["FlowNode"] = None,
        description: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node:
        :paramtype node: ~flow.models.FlowNode
        :keyword description:
        :paramtype description: str
        """
        super(FlowVariantNode, self).__init__(**kwargs)
        self.node = node
        self.description = description


class ForecastHorizon(msrest.serialization.Model):
    """ForecastHorizon.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.ForecastHorizonMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "ForecastHorizonMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.ForecastHorizonMode
        :keyword value:
        :paramtype value: int
        """
        super(ForecastHorizon, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class ForecastingSettings(msrest.serialization.Model):
    """ForecastingSettings.

    :ivar country_or_region_for_holidays:
    :vartype country_or_region_for_holidays: str
    :ivar time_column_name:
    :vartype time_column_name: str
    :ivar target_lags:
    :vartype target_lags: ~flow.models.TargetLags
    :ivar target_rolling_window_size:
    :vartype target_rolling_window_size: ~flow.models.TargetRollingWindowSize
    :ivar forecast_horizon:
    :vartype forecast_horizon: ~flow.models.ForecastHorizon
    :ivar time_series_id_column_names:
    :vartype time_series_id_column_names: list[str]
    :ivar frequency:
    :vartype frequency: str
    :ivar feature_lags:
    :vartype feature_lags: str
    :ivar seasonality:
    :vartype seasonality: ~flow.models.Seasonality
    :ivar short_series_handling_config: Possible values include: "Auto", "Pad", "Drop".
    :vartype short_series_handling_config: str or ~flow.models.ShortSeriesHandlingConfiguration
    :ivar use_stl: Possible values include: "Season", "SeasonTrend".
    :vartype use_stl: str or ~flow.models.UseStl
    :ivar target_aggregate_function: Possible values include: "Sum", "Max", "Min", "Mean".
    :vartype target_aggregate_function: str or ~flow.models.TargetAggregationFunction
    :ivar cv_step_size:
    :vartype cv_step_size: int
    :ivar features_unknown_at_forecast_time:
    :vartype features_unknown_at_forecast_time: list[str]
    """

    _attribute_map = {
        'country_or_region_for_holidays': {'key': 'countryOrRegionForHolidays', 'type': 'str'},
        'time_column_name': {'key': 'timeColumnName', 'type': 'str'},
        'target_lags': {'key': 'targetLags', 'type': 'TargetLags'},
        'target_rolling_window_size': {'key': 'targetRollingWindowSize', 'type': 'TargetRollingWindowSize'},
        'forecast_horizon': {'key': 'forecastHorizon', 'type': 'ForecastHorizon'},
        'time_series_id_column_names': {'key': 'timeSeriesIdColumnNames', 'type': '[str]'},
        'frequency': {'key': 'frequency', 'type': 'str'},
        'feature_lags': {'key': 'featureLags', 'type': 'str'},
        'seasonality': {'key': 'seasonality', 'type': 'Seasonality'},
        'short_series_handling_config': {'key': 'shortSeriesHandlingConfig', 'type': 'str'},
        'use_stl': {'key': 'useStl', 'type': 'str'},
        'target_aggregate_function': {'key': 'targetAggregateFunction', 'type': 'str'},
        'cv_step_size': {'key': 'cvStepSize', 'type': 'int'},
        'features_unknown_at_forecast_time': {'key': 'featuresUnknownAtForecastTime', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        country_or_region_for_holidays: Optional[str] = None,
        time_column_name: Optional[str] = None,
        target_lags: Optional["TargetLags"] = None,
        target_rolling_window_size: Optional["TargetRollingWindowSize"] = None,
        forecast_horizon: Optional["ForecastHorizon"] = None,
        time_series_id_column_names: Optional[List[str]] = None,
        frequency: Optional[str] = None,
        feature_lags: Optional[str] = None,
        seasonality: Optional["Seasonality"] = None,
        short_series_handling_config: Optional[Union[str, "ShortSeriesHandlingConfiguration"]] = None,
        use_stl: Optional[Union[str, "UseStl"]] = None,
        target_aggregate_function: Optional[Union[str, "TargetAggregationFunction"]] = None,
        cv_step_size: Optional[int] = None,
        features_unknown_at_forecast_time: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword country_or_region_for_holidays:
        :paramtype country_or_region_for_holidays: str
        :keyword time_column_name:
        :paramtype time_column_name: str
        :keyword target_lags:
        :paramtype target_lags: ~flow.models.TargetLags
        :keyword target_rolling_window_size:
        :paramtype target_rolling_window_size: ~flow.models.TargetRollingWindowSize
        :keyword forecast_horizon:
        :paramtype forecast_horizon: ~flow.models.ForecastHorizon
        :keyword time_series_id_column_names:
        :paramtype time_series_id_column_names: list[str]
        :keyword frequency:
        :paramtype frequency: str
        :keyword feature_lags:
        :paramtype feature_lags: str
        :keyword seasonality:
        :paramtype seasonality: ~flow.models.Seasonality
        :keyword short_series_handling_config: Possible values include: "Auto", "Pad", "Drop".
        :paramtype short_series_handling_config: str or ~flow.models.ShortSeriesHandlingConfiguration
        :keyword use_stl: Possible values include: "Season", "SeasonTrend".
        :paramtype use_stl: str or ~flow.models.UseStl
        :keyword target_aggregate_function: Possible values include: "Sum", "Max", "Min", "Mean".
        :paramtype target_aggregate_function: str or ~flow.models.TargetAggregationFunction
        :keyword cv_step_size:
        :paramtype cv_step_size: int
        :keyword features_unknown_at_forecast_time:
        :paramtype features_unknown_at_forecast_time: list[str]
        """
        super(ForecastingSettings, self).__init__(**kwargs)
        self.country_or_region_for_holidays = country_or_region_for_holidays
        self.time_column_name = time_column_name
        self.target_lags = target_lags
        self.target_rolling_window_size = target_rolling_window_size
        self.forecast_horizon = forecast_horizon
        self.time_series_id_column_names = time_series_id_column_names
        self.frequency = frequency
        self.feature_lags = feature_lags
        self.seasonality = seasonality
        self.short_series_handling_config = short_series_handling_config
        self.use_stl = use_stl
        self.target_aggregate_function = target_aggregate_function
        self.cv_step_size = cv_step_size
        self.features_unknown_at_forecast_time = features_unknown_at_forecast_time


class GeneralSettings(msrest.serialization.Model):
    """GeneralSettings.

    :ivar primary_metric: Possible values include: "AUCWeighted", "Accuracy", "NormMacroRecall",
     "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted", "SpearmanCorrelation",
     "NormalizedRootMeanSquaredError", "R2Score", "NormalizedMeanAbsoluteError",
     "NormalizedRootMeanSquaredLogError", "MeanAveragePrecision", "Iou".
    :vartype primary_metric: str or ~flow.models.PrimaryMetrics
    :ivar task_type: Possible values include: "Classification", "Regression", "Forecasting",
     "ImageClassification", "ImageClassificationMultilabel", "ImageObjectDetection",
     "ImageInstanceSegmentation", "TextClassification", "TextMultiLabeling", "TextNER",
     "TextClassificationMultilabel".
    :vartype task_type: str or ~flow.models.TaskType
    :ivar log_verbosity: Possible values include: "NotSet", "Debug", "Info", "Warning", "Error",
     "Critical".
    :vartype log_verbosity: str or ~flow.models.LogVerbosity
    """

    _attribute_map = {
        'primary_metric': {'key': 'primaryMetric', 'type': 'str'},
        'task_type': {'key': 'taskType', 'type': 'str'},
        'log_verbosity': {'key': 'logVerbosity', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        primary_metric: Optional[Union[str, "PrimaryMetrics"]] = None,
        task_type: Optional[Union[str, "TaskType"]] = None,
        log_verbosity: Optional[Union[str, "LogVerbosity"]] = None,
        **kwargs
    ):
        """
        :keyword primary_metric: Possible values include: "AUCWeighted", "Accuracy", "NormMacroRecall",
         "AveragePrecisionScoreWeighted", "PrecisionScoreWeighted", "SpearmanCorrelation",
         "NormalizedRootMeanSquaredError", "R2Score", "NormalizedMeanAbsoluteError",
         "NormalizedRootMeanSquaredLogError", "MeanAveragePrecision", "Iou".
        :paramtype primary_metric: str or ~flow.models.PrimaryMetrics
        :keyword task_type: Possible values include: "Classification", "Regression", "Forecasting",
         "ImageClassification", "ImageClassificationMultilabel", "ImageObjectDetection",
         "ImageInstanceSegmentation", "TextClassification", "TextMultiLabeling", "TextNER",
         "TextClassificationMultilabel".
        :paramtype task_type: str or ~flow.models.TaskType
        :keyword log_verbosity: Possible values include: "NotSet", "Debug", "Info", "Warning", "Error",
         "Critical".
        :paramtype log_verbosity: str or ~flow.models.LogVerbosity
        """
        super(GeneralSettings, self).__init__(**kwargs)
        self.primary_metric = primary_metric
        self.task_type = task_type
        self.log_verbosity = log_verbosity


class GeneratePipelineComponentRequest(msrest.serialization.Model):
    """GeneratePipelineComponentRequest.

    :ivar name:
    :vartype name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous", "Step",
     "Draft", "Feed", "Registry", "SystemAutoCreated".
    :vartype module_scope: str or ~flow.models.ModuleScope
    :ivar is_deterministic:
    :vartype is_deterministic: bool
    :ivar category:
    :vartype category: str
    :ivar version:
    :vartype version: str
    :ivar set_as_default_version:
    :vartype set_as_default_version: bool
    :ivar registry_name:
    :vartype registry_name: str
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'module_scope': {'key': 'moduleScope', 'type': 'str'},
        'is_deterministic': {'key': 'isDeterministic', 'type': 'bool'},
        'category': {'key': 'category', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'set_as_default_version': {'key': 'setAsDefaultVersion', 'type': 'bool'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        display_name: Optional[str] = None,
        module_scope: Optional[Union[str, "ModuleScope"]] = None,
        is_deterministic: Optional[bool] = None,
        category: Optional[str] = None,
        version: Optional[str] = None,
        set_as_default_version: Optional[bool] = None,
        registry_name: Optional[str] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous",
         "Step", "Draft", "Feed", "Registry", "SystemAutoCreated".
        :paramtype module_scope: str or ~flow.models.ModuleScope
        :keyword is_deterministic:
        :paramtype is_deterministic: bool
        :keyword category:
        :paramtype category: str
        :keyword version:
        :paramtype version: str
        :keyword set_as_default_version:
        :paramtype set_as_default_version: bool
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(GeneratePipelineComponentRequest, self).__init__(**kwargs)
        self.name = name
        self.display_name = display_name
        self.module_scope = module_scope
        self.is_deterministic = is_deterministic
        self.category = category
        self.version = version
        self.set_as_default_version = set_as_default_version
        self.registry_name = registry_name
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class GenerateToolMetaRequest(msrest.serialization.Model):
    """GenerateToolMetaRequest.

    :ivar tools: This is a dictionary.
    :vartype tools: dict[str, ~flow.models.ToolSourceMeta]
    :ivar working_dir:
    :vartype working_dir: str
    """

    _attribute_map = {
        'tools': {'key': 'tools', 'type': '{ToolSourceMeta}'},
        'working_dir': {'key': 'working_dir', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        tools: Optional[Dict[str, "ToolSourceMeta"]] = None,
        working_dir: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword tools: This is a dictionary.
        :paramtype tools: dict[str, ~flow.models.ToolSourceMeta]
        :keyword working_dir:
        :paramtype working_dir: str
        """
        super(GenerateToolMetaRequest, self).__init__(**kwargs)
        self.tools = tools
        self.working_dir = working_dir


class GetRunDataResultDto(msrest.serialization.Model):
    """GetRunDataResultDto.

    :ivar run_metadata:
    :vartype run_metadata: ~flow.models.RunDto
    :ivar run_definition: Anything.
    :vartype run_definition: any
    :ivar job_specification: Anything.
    :vartype job_specification: any
    :ivar system_settings: Dictionary of :code:`<string>`.
    :vartype system_settings: dict[str, str]
    """

    _attribute_map = {
        'run_metadata': {'key': 'runMetadata', 'type': 'RunDto'},
        'run_definition': {'key': 'runDefinition', 'type': 'object'},
        'job_specification': {'key': 'jobSpecification', 'type': 'object'},
        'system_settings': {'key': 'systemSettings', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        run_metadata: Optional["RunDto"] = None,
        run_definition: Optional[Any] = None,
        job_specification: Optional[Any] = None,
        system_settings: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword run_metadata:
        :paramtype run_metadata: ~flow.models.RunDto
        :keyword run_definition: Anything.
        :paramtype run_definition: any
        :keyword job_specification: Anything.
        :paramtype job_specification: any
        :keyword system_settings: Dictionary of :code:`<string>`.
        :paramtype system_settings: dict[str, str]
        """
        super(GetRunDataResultDto, self).__init__(**kwargs)
        self.run_metadata = run_metadata
        self.run_definition = run_definition
        self.job_specification = job_specification
        self.system_settings = system_settings


class GetTrainingSessionDto(msrest.serialization.Model):
    """GetTrainingSessionDto.

    :ivar properties:
    :vartype properties: ~flow.models.SessionProperties
    :ivar compute:
    :vartype compute: ~flow.models.ComputeContract
    """

    _attribute_map = {
        'properties': {'key': 'properties', 'type': 'SessionProperties'},
        'compute': {'key': 'compute', 'type': 'ComputeContract'},
    }

    def __init__(
        self,
        *,
        properties: Optional["SessionProperties"] = None,
        compute: Optional["ComputeContract"] = None,
        **kwargs
    ):
        """
        :keyword properties:
        :paramtype properties: ~flow.models.SessionProperties
        :keyword compute:
        :paramtype compute: ~flow.models.ComputeContract
        """
        super(GetTrainingSessionDto, self).__init__(**kwargs)
        self.properties = properties
        self.compute = compute


class GlobalJobDispatcherConfiguration(msrest.serialization.Model):
    """GlobalJobDispatcherConfiguration.

    :ivar vm_size:
    :vartype vm_size: list[str]
    :ivar compute_type: Possible values include: "AmlCompute", "AmlK8s".
    :vartype compute_type: str or ~flow.models.GlobalJobDispatcherSupportedComputeType
    :ivar region:
    :vartype region: list[str]
    :ivar my_resource_only:
    :vartype my_resource_only: bool
    :ivar redispatch_allowed:
    :vartype redispatch_allowed: bool
    :ivar low_priority_vm_tolerant:
    :vartype low_priority_vm_tolerant: bool
    :ivar vc_list:
    :vartype vc_list: list[str]
    :ivar plan_id:
    :vartype plan_id: str
    :ivar plan_region_id:
    :vartype plan_region_id: str
    :ivar vc_block_list:
    :vartype vc_block_list: list[str]
    :ivar cluster_block_list:
    :vartype cluster_block_list: list[str]
    """

    _attribute_map = {
        'vm_size': {'key': 'vmSize', 'type': '[str]'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'region': {'key': 'region', 'type': '[str]'},
        'my_resource_only': {'key': 'myResourceOnly', 'type': 'bool'},
        'redispatch_allowed': {'key': 'redispatchAllowed', 'type': 'bool'},
        'low_priority_vm_tolerant': {'key': 'lowPriorityVMTolerant', 'type': 'bool'},
        'vc_list': {'key': 'vcList', 'type': '[str]'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'plan_region_id': {'key': 'planRegionId', 'type': 'str'},
        'vc_block_list': {'key': 'vcBlockList', 'type': '[str]'},
        'cluster_block_list': {'key': 'clusterBlockList', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        vm_size: Optional[List[str]] = None,
        compute_type: Optional[Union[str, "GlobalJobDispatcherSupportedComputeType"]] = None,
        region: Optional[List[str]] = None,
        my_resource_only: Optional[bool] = None,
        redispatch_allowed: Optional[bool] = None,
        low_priority_vm_tolerant: Optional[bool] = None,
        vc_list: Optional[List[str]] = None,
        plan_id: Optional[str] = None,
        plan_region_id: Optional[str] = None,
        vc_block_list: Optional[List[str]] = None,
        cluster_block_list: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword vm_size:
        :paramtype vm_size: list[str]
        :keyword compute_type: Possible values include: "AmlCompute", "AmlK8s".
        :paramtype compute_type: str or ~flow.models.GlobalJobDispatcherSupportedComputeType
        :keyword region:
        :paramtype region: list[str]
        :keyword my_resource_only:
        :paramtype my_resource_only: bool
        :keyword redispatch_allowed:
        :paramtype redispatch_allowed: bool
        :keyword low_priority_vm_tolerant:
        :paramtype low_priority_vm_tolerant: bool
        :keyword vc_list:
        :paramtype vc_list: list[str]
        :keyword plan_id:
        :paramtype plan_id: str
        :keyword plan_region_id:
        :paramtype plan_region_id: str
        :keyword vc_block_list:
        :paramtype vc_block_list: list[str]
        :keyword cluster_block_list:
        :paramtype cluster_block_list: list[str]
        """
        super(GlobalJobDispatcherConfiguration, self).__init__(**kwargs)
        self.vm_size = vm_size
        self.compute_type = compute_type
        self.region = region
        self.my_resource_only = my_resource_only
        self.redispatch_allowed = redispatch_allowed
        self.low_priority_vm_tolerant = low_priority_vm_tolerant
        self.vc_list = vc_list
        self.plan_id = plan_id
        self.plan_region_id = plan_region_id
        self.vc_block_list = vc_block_list
        self.cluster_block_list = cluster_block_list


class GlobsOptions(msrest.serialization.Model):
    """GlobsOptions.

    :ivar glob_patterns:
    :vartype glob_patterns: list[str]
    """

    _attribute_map = {
        'glob_patterns': {'key': 'globPatterns', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        glob_patterns: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword glob_patterns:
        :paramtype glob_patterns: list[str]
        """
        super(GlobsOptions, self).__init__(**kwargs)
        self.glob_patterns = glob_patterns


class GraphAnnotationNode(msrest.serialization.Model):
    """GraphAnnotationNode.

    :ivar id:
    :vartype id: str
    :ivar content:
    :vartype content: str
    :ivar mentioned_node_names:
    :vartype mentioned_node_names: list[str]
    :ivar structured_content:
    :vartype structured_content: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'content': {'key': 'content', 'type': 'str'},
        'mentioned_node_names': {'key': 'mentionedNodeNames', 'type': '[str]'},
        'structured_content': {'key': 'structuredContent', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        content: Optional[str] = None,
        mentioned_node_names: Optional[List[str]] = None,
        structured_content: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword content:
        :paramtype content: str
        :keyword mentioned_node_names:
        :paramtype mentioned_node_names: list[str]
        :keyword structured_content:
        :paramtype structured_content: str
        """
        super(GraphAnnotationNode, self).__init__(**kwargs)
        self.id = id
        self.content = content
        self.mentioned_node_names = mentioned_node_names
        self.structured_content = structured_content


class GraphControlNode(msrest.serialization.Model):
    """GraphControlNode.

    :ivar id:
    :vartype id: str
    :ivar control_type:  The only acceptable values to pass in are None and "IfElse". The default
     value is None.
    :vartype control_type: str
    :ivar control_parameter:
    :vartype control_parameter: ~flow.models.ParameterAssignment
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'control_type': {'key': 'controlType', 'type': 'str'},
        'control_parameter': {'key': 'controlParameter', 'type': 'ParameterAssignment'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        control_type: Optional[str] = None,
        control_parameter: Optional["ParameterAssignment"] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword control_type:  The only acceptable values to pass in are None and "IfElse". The
         default value is None.
        :paramtype control_type: str
        :keyword control_parameter:
        :paramtype control_parameter: ~flow.models.ParameterAssignment
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(GraphControlNode, self).__init__(**kwargs)
        self.id = id
        self.control_type = control_type
        self.control_parameter = control_parameter
        self.run_attribution = run_attribution


class GraphControlReferenceNode(msrest.serialization.Model):
    """GraphControlReferenceNode.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar comment:
    :vartype comment: str
    :ivar control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
    :vartype control_flow_type: str or ~flow.models.ControlFlowType
    :ivar reference_node_id:
    :vartype reference_node_id: str
    :ivar do_while_control_flow_info:
    :vartype do_while_control_flow_info: ~flow.models.DoWhileControlFlowInfo
    :ivar parallel_for_control_flow_info:
    :vartype parallel_for_control_flow_info: ~flow.models.ParallelForControlFlowInfo
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'control_flow_type': {'key': 'controlFlowType', 'type': 'str'},
        'reference_node_id': {'key': 'referenceNodeId', 'type': 'str'},
        'do_while_control_flow_info': {'key': 'doWhileControlFlowInfo', 'type': 'DoWhileControlFlowInfo'},
        'parallel_for_control_flow_info': {'key': 'parallelForControlFlowInfo', 'type': 'ParallelForControlFlowInfo'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        comment: Optional[str] = None,
        control_flow_type: Optional[Union[str, "ControlFlowType"]] = None,
        reference_node_id: Optional[str] = None,
        do_while_control_flow_info: Optional["DoWhileControlFlowInfo"] = None,
        parallel_for_control_flow_info: Optional["ParallelForControlFlowInfo"] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword comment:
        :paramtype comment: str
        :keyword control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
        :paramtype control_flow_type: str or ~flow.models.ControlFlowType
        :keyword reference_node_id:
        :paramtype reference_node_id: str
        :keyword do_while_control_flow_info:
        :paramtype do_while_control_flow_info: ~flow.models.DoWhileControlFlowInfo
        :keyword parallel_for_control_flow_info:
        :paramtype parallel_for_control_flow_info: ~flow.models.ParallelForControlFlowInfo
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(GraphControlReferenceNode, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.comment = comment
        self.control_flow_type = control_flow_type
        self.reference_node_id = reference_node_id
        self.do_while_control_flow_info = do_while_control_flow_info
        self.parallel_for_control_flow_info = parallel_for_control_flow_info
        self.run_attribution = run_attribution


class GraphDatasetNode(msrest.serialization.Model):
    """GraphDatasetNode.

    :ivar id:
    :vartype id: str
    :ivar dataset_id:
    :vartype dataset_id: str
    :ivar data_path_parameter_name:
    :vartype data_path_parameter_name: str
    :ivar data_set_definition:
    :vartype data_set_definition: ~flow.models.DataSetDefinition
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'dataset_id': {'key': 'datasetId', 'type': 'str'},
        'data_path_parameter_name': {'key': 'dataPathParameterName', 'type': 'str'},
        'data_set_definition': {'key': 'dataSetDefinition', 'type': 'DataSetDefinition'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        dataset_id: Optional[str] = None,
        data_path_parameter_name: Optional[str] = None,
        data_set_definition: Optional["DataSetDefinition"] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword dataset_id:
        :paramtype dataset_id: str
        :keyword data_path_parameter_name:
        :paramtype data_path_parameter_name: str
        :keyword data_set_definition:
        :paramtype data_set_definition: ~flow.models.DataSetDefinition
        """
        super(GraphDatasetNode, self).__init__(**kwargs)
        self.id = id
        self.dataset_id = dataset_id
        self.data_path_parameter_name = data_path_parameter_name
        self.data_set_definition = data_set_definition


class GraphDraftEntity(msrest.serialization.Model):
    """GraphDraftEntity.

    :ivar module_nodes:
    :vartype module_nodes: list[~flow.models.GraphModuleNode]
    :ivar dataset_nodes:
    :vartype dataset_nodes: list[~flow.models.GraphDatasetNode]
    :ivar sub_graph_nodes:
    :vartype sub_graph_nodes: list[~flow.models.GraphReferenceNode]
    :ivar control_reference_nodes:
    :vartype control_reference_nodes: list[~flow.models.GraphControlReferenceNode]
    :ivar control_nodes:
    :vartype control_nodes: list[~flow.models.GraphControlNode]
    :ivar edges:
    :vartype edges: list[~flow.models.GraphEdge]
    :ivar entity_interface:
    :vartype entity_interface: ~flow.models.EntityInterface
    :ivar graph_layout:
    :vartype graph_layout: ~flow.models.GraphLayout
    :ivar created_by:
    :vartype created_by: ~flow.models.CreatedBy
    :ivar last_updated_by:
    :vartype last_updated_by: ~flow.models.CreatedBy
    :ivar default_compute:
    :vartype default_compute: ~flow.models.ComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.DatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.CloudPrioritySetting
    :ivar extended_properties: This is a dictionary.
    :vartype extended_properties: dict[str, str]
    :ivar parent_sub_graph_module_ids:
    :vartype parent_sub_graph_module_ids: list[str]
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'module_nodes': {'key': 'moduleNodes', 'type': '[GraphModuleNode]'},
        'dataset_nodes': {'key': 'datasetNodes', 'type': '[GraphDatasetNode]'},
        'sub_graph_nodes': {'key': 'subGraphNodes', 'type': '[GraphReferenceNode]'},
        'control_reference_nodes': {'key': 'controlReferenceNodes', 'type': '[GraphControlReferenceNode]'},
        'control_nodes': {'key': 'controlNodes', 'type': '[GraphControlNode]'},
        'edges': {'key': 'edges', 'type': '[GraphEdge]'},
        'entity_interface': {'key': 'entityInterface', 'type': 'EntityInterface'},
        'graph_layout': {'key': 'graphLayout', 'type': 'GraphLayout'},
        'created_by': {'key': 'createdBy', 'type': 'CreatedBy'},
        'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'CreatedBy'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'default_cloud_priority': {'key': 'defaultCloudPriority', 'type': 'CloudPrioritySetting'},
        'extended_properties': {'key': 'extendedProperties', 'type': '{str}'},
        'parent_sub_graph_module_ids': {'key': 'parentSubGraphModuleIds', 'type': '[str]'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        module_nodes: Optional[List["GraphModuleNode"]] = None,
        dataset_nodes: Optional[List["GraphDatasetNode"]] = None,
        sub_graph_nodes: Optional[List["GraphReferenceNode"]] = None,
        control_reference_nodes: Optional[List["GraphControlReferenceNode"]] = None,
        control_nodes: Optional[List["GraphControlNode"]] = None,
        edges: Optional[List["GraphEdge"]] = None,
        entity_interface: Optional["EntityInterface"] = None,
        graph_layout: Optional["GraphLayout"] = None,
        created_by: Optional["CreatedBy"] = None,
        last_updated_by: Optional["CreatedBy"] = None,
        default_compute: Optional["ComputeSetting"] = None,
        default_datastore: Optional["DatastoreSetting"] = None,
        default_cloud_priority: Optional["CloudPrioritySetting"] = None,
        extended_properties: Optional[Dict[str, str]] = None,
        parent_sub_graph_module_ids: Optional[List[str]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword module_nodes:
        :paramtype module_nodes: list[~flow.models.GraphModuleNode]
        :keyword dataset_nodes:
        :paramtype dataset_nodes: list[~flow.models.GraphDatasetNode]
        :keyword sub_graph_nodes:
        :paramtype sub_graph_nodes: list[~flow.models.GraphReferenceNode]
        :keyword control_reference_nodes:
        :paramtype control_reference_nodes: list[~flow.models.GraphControlReferenceNode]
        :keyword control_nodes:
        :paramtype control_nodes: list[~flow.models.GraphControlNode]
        :keyword edges:
        :paramtype edges: list[~flow.models.GraphEdge]
        :keyword entity_interface:
        :paramtype entity_interface: ~flow.models.EntityInterface
        :keyword graph_layout:
        :paramtype graph_layout: ~flow.models.GraphLayout
        :keyword created_by:
        :paramtype created_by: ~flow.models.CreatedBy
        :keyword last_updated_by:
        :paramtype last_updated_by: ~flow.models.CreatedBy
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.ComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.DatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.CloudPrioritySetting
        :keyword extended_properties: This is a dictionary.
        :paramtype extended_properties: dict[str, str]
        :keyword parent_sub_graph_module_ids:
        :paramtype parent_sub_graph_module_ids: list[str]
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(GraphDraftEntity, self).__init__(**kwargs)
        self.module_nodes = module_nodes
        self.dataset_nodes = dataset_nodes
        self.sub_graph_nodes = sub_graph_nodes
        self.control_reference_nodes = control_reference_nodes
        self.control_nodes = control_nodes
        self.edges = edges
        self.entity_interface = entity_interface
        self.graph_layout = graph_layout
        self.created_by = created_by
        self.last_updated_by = last_updated_by
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.default_cloud_priority = default_cloud_priority
        self.extended_properties = extended_properties
        self.parent_sub_graph_module_ids = parent_sub_graph_module_ids
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class GraphEdge(msrest.serialization.Model):
    """GraphEdge.

    :ivar source_output_port:
    :vartype source_output_port: ~flow.models.PortInfo
    :ivar destination_input_port:
    :vartype destination_input_port: ~flow.models.PortInfo
    """

    _attribute_map = {
        'source_output_port': {'key': 'sourceOutputPort', 'type': 'PortInfo'},
        'destination_input_port': {'key': 'destinationInputPort', 'type': 'PortInfo'},
    }

    def __init__(
        self,
        *,
        source_output_port: Optional["PortInfo"] = None,
        destination_input_port: Optional["PortInfo"] = None,
        **kwargs
    ):
        """
        :keyword source_output_port:
        :paramtype source_output_port: ~flow.models.PortInfo
        :keyword destination_input_port:
        :paramtype destination_input_port: ~flow.models.PortInfo
        """
        super(GraphEdge, self).__init__(**kwargs)
        self.source_output_port = source_output_port
        self.destination_input_port = destination_input_port


class GraphLayout(msrest.serialization.Model):
    """GraphLayout.

    :ivar node_layouts: This is a dictionary.
    :vartype node_layouts: dict[str, ~flow.models.NodeLayout]
    :ivar extended_data:
    :vartype extended_data: str
    :ivar annotation_nodes:
    :vartype annotation_nodes: list[~flow.models.GraphAnnotationNode]
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'node_layouts': {'key': 'nodeLayouts', 'type': '{NodeLayout}'},
        'extended_data': {'key': 'extendedData', 'type': 'str'},
        'annotation_nodes': {'key': 'annotationNodes', 'type': '[GraphAnnotationNode]'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        node_layouts: Optional[Dict[str, "NodeLayout"]] = None,
        extended_data: Optional[str] = None,
        annotation_nodes: Optional[List["GraphAnnotationNode"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword node_layouts: This is a dictionary.
        :paramtype node_layouts: dict[str, ~flow.models.NodeLayout]
        :keyword extended_data:
        :paramtype extended_data: str
        :keyword annotation_nodes:
        :paramtype annotation_nodes: list[~flow.models.GraphAnnotationNode]
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(GraphLayout, self).__init__(**kwargs)
        self.node_layouts = node_layouts
        self.extended_data = extended_data
        self.annotation_nodes = annotation_nodes
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class GraphLayoutCreationInfo(msrest.serialization.Model):
    """GraphLayoutCreationInfo.

    :ivar node_layouts: This is a dictionary.
    :vartype node_layouts: dict[str, ~flow.models.NodeLayout]
    :ivar extended_data:
    :vartype extended_data: str
    :ivar annotation_nodes:
    :vartype annotation_nodes: list[~flow.models.GraphAnnotationNode]
    """

    _attribute_map = {
        'node_layouts': {'key': 'nodeLayouts', 'type': '{NodeLayout}'},
        'extended_data': {'key': 'extendedData', 'type': 'str'},
        'annotation_nodes': {'key': 'annotationNodes', 'type': '[GraphAnnotationNode]'},
    }

    def __init__(
        self,
        *,
        node_layouts: Optional[Dict[str, "NodeLayout"]] = None,
        extended_data: Optional[str] = None,
        annotation_nodes: Optional[List["GraphAnnotationNode"]] = None,
        **kwargs
    ):
        """
        :keyword node_layouts: This is a dictionary.
        :paramtype node_layouts: dict[str, ~flow.models.NodeLayout]
        :keyword extended_data:
        :paramtype extended_data: str
        :keyword annotation_nodes:
        :paramtype annotation_nodes: list[~flow.models.GraphAnnotationNode]
        """
        super(GraphLayoutCreationInfo, self).__init__(**kwargs)
        self.node_layouts = node_layouts
        self.extended_data = extended_data
        self.annotation_nodes = annotation_nodes


class GraphModuleNode(msrest.serialization.Model):
    """GraphModuleNode.

    :ivar module_type: Possible values include: "None", "BatchInferencing".
    :vartype module_type: str or ~flow.models.ModuleType
    :ivar runconfig:
    :vartype runconfig: str
    :ivar id:
    :vartype id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar comment:
    :vartype comment: str
    :ivar name:
    :vartype name: str
    :ivar module_parameters:
    :vartype module_parameters: list[~flow.models.ParameterAssignment]
    :ivar module_metadata_parameters:
    :vartype module_metadata_parameters: list[~flow.models.ParameterAssignment]
    :ivar module_output_settings:
    :vartype module_output_settings: list[~flow.models.OutputSetting]
    :ivar module_input_settings:
    :vartype module_input_settings: list[~flow.models.InputSetting]
    :ivar use_graph_default_compute:
    :vartype use_graph_default_compute: bool
    :ivar use_graph_default_datastore:
    :vartype use_graph_default_datastore: bool
    :ivar regenerate_output:
    :vartype regenerate_output: bool
    :ivar control_inputs:
    :vartype control_inputs: list[~flow.models.ControlInput]
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.CloudSettings
    :ivar execution_phase: Possible values include: "Execution", "Initialization", "Finalization".
    :vartype execution_phase: str or ~flow.models.ExecutionPhase
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'module_type': {'key': 'moduleType', 'type': 'str'},
        'runconfig': {'key': 'runconfig', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'module_parameters': {'key': 'moduleParameters', 'type': '[ParameterAssignment]'},
        'module_metadata_parameters': {'key': 'moduleMetadataParameters', 'type': '[ParameterAssignment]'},
        'module_output_settings': {'key': 'moduleOutputSettings', 'type': '[OutputSetting]'},
        'module_input_settings': {'key': 'moduleInputSettings', 'type': '[InputSetting]'},
        'use_graph_default_compute': {'key': 'useGraphDefaultCompute', 'type': 'bool'},
        'use_graph_default_datastore': {'key': 'useGraphDefaultDatastore', 'type': 'bool'},
        'regenerate_output': {'key': 'regenerateOutput', 'type': 'bool'},
        'control_inputs': {'key': 'controlInputs', 'type': '[ControlInput]'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'CloudSettings'},
        'execution_phase': {'key': 'executionPhase', 'type': 'str'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        module_type: Optional[Union[str, "ModuleType"]] = None,
        runconfig: Optional[str] = None,
        id: Optional[str] = None,
        module_id: Optional[str] = None,
        comment: Optional[str] = None,
        name: Optional[str] = None,
        module_parameters: Optional[List["ParameterAssignment"]] = None,
        module_metadata_parameters: Optional[List["ParameterAssignment"]] = None,
        module_output_settings: Optional[List["OutputSetting"]] = None,
        module_input_settings: Optional[List["InputSetting"]] = None,
        use_graph_default_compute: Optional[bool] = None,
        use_graph_default_datastore: Optional[bool] = None,
        regenerate_output: Optional[bool] = None,
        control_inputs: Optional[List["ControlInput"]] = None,
        cloud_settings: Optional["CloudSettings"] = None,
        execution_phase: Optional[Union[str, "ExecutionPhase"]] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword module_type: Possible values include: "None", "BatchInferencing".
        :paramtype module_type: str or ~flow.models.ModuleType
        :keyword runconfig:
        :paramtype runconfig: str
        :keyword id:
        :paramtype id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword comment:
        :paramtype comment: str
        :keyword name:
        :paramtype name: str
        :keyword module_parameters:
        :paramtype module_parameters: list[~flow.models.ParameterAssignment]
        :keyword module_metadata_parameters:
        :paramtype module_metadata_parameters: list[~flow.models.ParameterAssignment]
        :keyword module_output_settings:
        :paramtype module_output_settings: list[~flow.models.OutputSetting]
        :keyword module_input_settings:
        :paramtype module_input_settings: list[~flow.models.InputSetting]
        :keyword use_graph_default_compute:
        :paramtype use_graph_default_compute: bool
        :keyword use_graph_default_datastore:
        :paramtype use_graph_default_datastore: bool
        :keyword regenerate_output:
        :paramtype regenerate_output: bool
        :keyword control_inputs:
        :paramtype control_inputs: list[~flow.models.ControlInput]
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.CloudSettings
        :keyword execution_phase: Possible values include: "Execution", "Initialization",
         "Finalization".
        :paramtype execution_phase: str or ~flow.models.ExecutionPhase
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(GraphModuleNode, self).__init__(**kwargs)
        self.module_type = module_type
        self.runconfig = runconfig
        self.id = id
        self.module_id = module_id
        self.comment = comment
        self.name = name
        self.module_parameters = module_parameters
        self.module_metadata_parameters = module_metadata_parameters
        self.module_output_settings = module_output_settings
        self.module_input_settings = module_input_settings
        self.use_graph_default_compute = use_graph_default_compute
        self.use_graph_default_datastore = use_graph_default_datastore
        self.regenerate_output = regenerate_output
        self.control_inputs = control_inputs
        self.cloud_settings = cloud_settings
        self.execution_phase = execution_phase
        self.run_attribution = run_attribution


class GraphModuleNodeRunSetting(msrest.serialization.Model):
    """GraphModuleNodeRunSetting.

    :ivar node_id:
    :vartype node_id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar step_type:
    :vartype step_type: str
    :ivar run_settings:
    :vartype run_settings: list[~flow.models.RunSettingParameterAssignment]
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'step_type': {'key': 'stepType', 'type': 'str'},
        'run_settings': {'key': 'runSettings', 'type': '[RunSettingParameterAssignment]'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        module_id: Optional[str] = None,
        step_type: Optional[str] = None,
        run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword step_type:
        :paramtype step_type: str
        :keyword run_settings:
        :paramtype run_settings: list[~flow.models.RunSettingParameterAssignment]
        """
        super(GraphModuleNodeRunSetting, self).__init__(**kwargs)
        self.node_id = node_id
        self.module_id = module_id
        self.step_type = step_type
        self.run_settings = run_settings


class GraphModuleNodeUIInputSetting(msrest.serialization.Model):
    """GraphModuleNodeUIInputSetting.

    :ivar node_id:
    :vartype node_id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar module_input_settings:
    :vartype module_input_settings: list[~flow.models.UIInputSetting]
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'module_input_settings': {'key': 'moduleInputSettings', 'type': '[UIInputSetting]'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        module_id: Optional[str] = None,
        module_input_settings: Optional[List["UIInputSetting"]] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword module_input_settings:
        :paramtype module_input_settings: list[~flow.models.UIInputSetting]
        """
        super(GraphModuleNodeUIInputSetting, self).__init__(**kwargs)
        self.node_id = node_id
        self.module_id = module_id
        self.module_input_settings = module_input_settings


class GraphNodeStatusInfo(msrest.serialization.Model):
    """GraphNodeStatusInfo.

    :ivar status: Possible values include: "NotStarted", "Queued", "Running", "Failed", "Finished",
     "Canceled", "PartiallyExecuted", "Bypassed".
    :vartype status: str or ~flow.models.TaskStatusCode
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar is_bypassed:
    :vartype is_bypassed: bool
    :ivar has_failed_child_run:
    :vartype has_failed_child_run: bool
    :ivar partially_executed:
    :vartype partially_executed: bool
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar aether_start_time:
    :vartype aether_start_time: ~datetime.datetime
    :ivar aether_end_time:
    :vartype aether_end_time: ~datetime.datetime
    :ivar aether_creation_time:
    :vartype aether_creation_time: ~datetime.datetime
    :ivar run_history_start_time:
    :vartype run_history_start_time: ~datetime.datetime
    :ivar run_history_end_time:
    :vartype run_history_end_time: ~datetime.datetime
    :ivar run_history_creation_time:
    :vartype run_history_creation_time: ~datetime.datetime
    :ivar reuse_info:
    :vartype reuse_info: ~flow.models.TaskReuseInfo
    :ivar control_flow_info:
    :vartype control_flow_info: ~flow.models.TaskControlFlowInfo
    :ivar status_code: Possible values include: "NotStarted", "Queued", "Running", "Failed",
     "Finished", "Canceled", "PartiallyExecuted", "Bypassed".
    :vartype status_code: str or ~flow.models.TaskStatusCode
    :ivar status_detail:
    :vartype status_detail: str
    :ivar creation_time:
    :vartype creation_time: ~datetime.datetime
    :ivar schedule_time:
    :vartype schedule_time: ~datetime.datetime
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar request_id:
    :vartype request_id: str
    :ivar run_id:
    :vartype run_id: str
    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar real_time_log_path:
    :vartype real_time_log_path: str
    :ivar has_warnings:
    :vartype has_warnings: bool
    :ivar composite_node_id:
    :vartype composite_node_id: str
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'str'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'is_bypassed': {'key': 'isBypassed', 'type': 'bool'},
        'has_failed_child_run': {'key': 'hasFailedChildRun', 'type': 'bool'},
        'partially_executed': {'key': 'partiallyExecuted', 'type': 'bool'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'aether_start_time': {'key': 'aetherStartTime', 'type': 'iso-8601'},
        'aether_end_time': {'key': 'aetherEndTime', 'type': 'iso-8601'},
        'aether_creation_time': {'key': 'aetherCreationTime', 'type': 'iso-8601'},
        'run_history_start_time': {'key': 'runHistoryStartTime', 'type': 'iso-8601'},
        'run_history_end_time': {'key': 'runHistoryEndTime', 'type': 'iso-8601'},
        'run_history_creation_time': {'key': 'runHistoryCreationTime', 'type': 'iso-8601'},
        'reuse_info': {'key': 'reuseInfo', 'type': 'TaskReuseInfo'},
        'control_flow_info': {'key': 'controlFlowInfo', 'type': 'TaskControlFlowInfo'},
        'status_code': {'key': 'statusCode', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'creation_time': {'key': 'creationTime', 'type': 'iso-8601'},
        'schedule_time': {'key': 'scheduleTime', 'type': 'iso-8601'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'request_id': {'key': 'requestId', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'real_time_log_path': {'key': 'realTimeLogPath', 'type': 'str'},
        'has_warnings': {'key': 'hasWarnings', 'type': 'bool'},
        'composite_node_id': {'key': 'compositeNodeId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        status: Optional[Union[str, "TaskStatusCode"]] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        is_bypassed: Optional[bool] = None,
        has_failed_child_run: Optional[bool] = None,
        partially_executed: Optional[bool] = None,
        properties: Optional[Dict[str, str]] = None,
        aether_start_time: Optional[datetime.datetime] = None,
        aether_end_time: Optional[datetime.datetime] = None,
        aether_creation_time: Optional[datetime.datetime] = None,
        run_history_start_time: Optional[datetime.datetime] = None,
        run_history_end_time: Optional[datetime.datetime] = None,
        run_history_creation_time: Optional[datetime.datetime] = None,
        reuse_info: Optional["TaskReuseInfo"] = None,
        control_flow_info: Optional["TaskControlFlowInfo"] = None,
        status_code: Optional[Union[str, "TaskStatusCode"]] = None,
        status_detail: Optional[str] = None,
        creation_time: Optional[datetime.datetime] = None,
        schedule_time: Optional[datetime.datetime] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        request_id: Optional[str] = None,
        run_id: Optional[str] = None,
        data_container_id: Optional[str] = None,
        real_time_log_path: Optional[str] = None,
        has_warnings: Optional[bool] = None,
        composite_node_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword status: Possible values include: "NotStarted", "Queued", "Running", "Failed",
         "Finished", "Canceled", "PartiallyExecuted", "Bypassed".
        :paramtype status: str or ~flow.models.TaskStatusCode
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword is_bypassed:
        :paramtype is_bypassed: bool
        :keyword has_failed_child_run:
        :paramtype has_failed_child_run: bool
        :keyword partially_executed:
        :paramtype partially_executed: bool
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword aether_start_time:
        :paramtype aether_start_time: ~datetime.datetime
        :keyword aether_end_time:
        :paramtype aether_end_time: ~datetime.datetime
        :keyword aether_creation_time:
        :paramtype aether_creation_time: ~datetime.datetime
        :keyword run_history_start_time:
        :paramtype run_history_start_time: ~datetime.datetime
        :keyword run_history_end_time:
        :paramtype run_history_end_time: ~datetime.datetime
        :keyword run_history_creation_time:
        :paramtype run_history_creation_time: ~datetime.datetime
        :keyword reuse_info:
        :paramtype reuse_info: ~flow.models.TaskReuseInfo
        :keyword control_flow_info:
        :paramtype control_flow_info: ~flow.models.TaskControlFlowInfo
        :keyword status_code: Possible values include: "NotStarted", "Queued", "Running", "Failed",
         "Finished", "Canceled", "PartiallyExecuted", "Bypassed".
        :paramtype status_code: str or ~flow.models.TaskStatusCode
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword creation_time:
        :paramtype creation_time: ~datetime.datetime
        :keyword schedule_time:
        :paramtype schedule_time: ~datetime.datetime
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword request_id:
        :paramtype request_id: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword real_time_log_path:
        :paramtype real_time_log_path: str
        :keyword has_warnings:
        :paramtype has_warnings: bool
        :keyword composite_node_id:
        :paramtype composite_node_id: str
        """
        super(GraphNodeStatusInfo, self).__init__(**kwargs)
        self.status = status
        self.run_status = run_status
        self.is_bypassed = is_bypassed
        self.has_failed_child_run = has_failed_child_run
        self.partially_executed = partially_executed
        self.properties = properties
        self.aether_start_time = aether_start_time
        self.aether_end_time = aether_end_time
        self.aether_creation_time = aether_creation_time
        self.run_history_start_time = run_history_start_time
        self.run_history_end_time = run_history_end_time
        self.run_history_creation_time = run_history_creation_time
        self.reuse_info = reuse_info
        self.control_flow_info = control_flow_info
        self.status_code = status_code
        self.status_detail = status_detail
        self.creation_time = creation_time
        self.schedule_time = schedule_time
        self.start_time = start_time
        self.end_time = end_time
        self.request_id = request_id
        self.run_id = run_id
        self.data_container_id = data_container_id
        self.real_time_log_path = real_time_log_path
        self.has_warnings = has_warnings
        self.composite_node_id = composite_node_id


class GraphReferenceNode(msrest.serialization.Model):
    """GraphReferenceNode.

    :ivar graph_id:
    :vartype graph_id: str
    :ivar default_compute:
    :vartype default_compute: ~flow.models.ComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.DatastoreSetting
    :ivar id:
    :vartype id: str
    :ivar module_id:
    :vartype module_id: str
    :ivar comment:
    :vartype comment: str
    :ivar name:
    :vartype name: str
    :ivar module_parameters:
    :vartype module_parameters: list[~flow.models.ParameterAssignment]
    :ivar module_metadata_parameters:
    :vartype module_metadata_parameters: list[~flow.models.ParameterAssignment]
    :ivar module_output_settings:
    :vartype module_output_settings: list[~flow.models.OutputSetting]
    :ivar module_input_settings:
    :vartype module_input_settings: list[~flow.models.InputSetting]
    :ivar use_graph_default_compute:
    :vartype use_graph_default_compute: bool
    :ivar use_graph_default_datastore:
    :vartype use_graph_default_datastore: bool
    :ivar regenerate_output:
    :vartype regenerate_output: bool
    :ivar control_inputs:
    :vartype control_inputs: list[~flow.models.ControlInput]
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.CloudSettings
    :ivar execution_phase: Possible values include: "Execution", "Initialization", "Finalization".
    :vartype execution_phase: str or ~flow.models.ExecutionPhase
    :ivar run_attribution:
    :vartype run_attribution: str
    """

    _attribute_map = {
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'id': {'key': 'id', 'type': 'str'},
        'module_id': {'key': 'moduleId', 'type': 'str'},
        'comment': {'key': 'comment', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'module_parameters': {'key': 'moduleParameters', 'type': '[ParameterAssignment]'},
        'module_metadata_parameters': {'key': 'moduleMetadataParameters', 'type': '[ParameterAssignment]'},
        'module_output_settings': {'key': 'moduleOutputSettings', 'type': '[OutputSetting]'},
        'module_input_settings': {'key': 'moduleInputSettings', 'type': '[InputSetting]'},
        'use_graph_default_compute': {'key': 'useGraphDefaultCompute', 'type': 'bool'},
        'use_graph_default_datastore': {'key': 'useGraphDefaultDatastore', 'type': 'bool'},
        'regenerate_output': {'key': 'regenerateOutput', 'type': 'bool'},
        'control_inputs': {'key': 'controlInputs', 'type': '[ControlInput]'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'CloudSettings'},
        'execution_phase': {'key': 'executionPhase', 'type': 'str'},
        'run_attribution': {'key': 'runAttribution', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        graph_id: Optional[str] = None,
        default_compute: Optional["ComputeSetting"] = None,
        default_datastore: Optional["DatastoreSetting"] = None,
        id: Optional[str] = None,
        module_id: Optional[str] = None,
        comment: Optional[str] = None,
        name: Optional[str] = None,
        module_parameters: Optional[List["ParameterAssignment"]] = None,
        module_metadata_parameters: Optional[List["ParameterAssignment"]] = None,
        module_output_settings: Optional[List["OutputSetting"]] = None,
        module_input_settings: Optional[List["InputSetting"]] = None,
        use_graph_default_compute: Optional[bool] = None,
        use_graph_default_datastore: Optional[bool] = None,
        regenerate_output: Optional[bool] = None,
        control_inputs: Optional[List["ControlInput"]] = None,
        cloud_settings: Optional["CloudSettings"] = None,
        execution_phase: Optional[Union[str, "ExecutionPhase"]] = None,
        run_attribution: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.ComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.DatastoreSetting
        :keyword id:
        :paramtype id: str
        :keyword module_id:
        :paramtype module_id: str
        :keyword comment:
        :paramtype comment: str
        :keyword name:
        :paramtype name: str
        :keyword module_parameters:
        :paramtype module_parameters: list[~flow.models.ParameterAssignment]
        :keyword module_metadata_parameters:
        :paramtype module_metadata_parameters: list[~flow.models.ParameterAssignment]
        :keyword module_output_settings:
        :paramtype module_output_settings: list[~flow.models.OutputSetting]
        :keyword module_input_settings:
        :paramtype module_input_settings: list[~flow.models.InputSetting]
        :keyword use_graph_default_compute:
        :paramtype use_graph_default_compute: bool
        :keyword use_graph_default_datastore:
        :paramtype use_graph_default_datastore: bool
        :keyword regenerate_output:
        :paramtype regenerate_output: bool
        :keyword control_inputs:
        :paramtype control_inputs: list[~flow.models.ControlInput]
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.CloudSettings
        :keyword execution_phase: Possible values include: "Execution", "Initialization",
         "Finalization".
        :paramtype execution_phase: str or ~flow.models.ExecutionPhase
        :keyword run_attribution:
        :paramtype run_attribution: str
        """
        super(GraphReferenceNode, self).__init__(**kwargs)
        self.graph_id = graph_id
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.id = id
        self.module_id = module_id
        self.comment = comment
        self.name = name
        self.module_parameters = module_parameters
        self.module_metadata_parameters = module_metadata_parameters
        self.module_output_settings = module_output_settings
        self.module_input_settings = module_input_settings
        self.use_graph_default_compute = use_graph_default_compute
        self.use_graph_default_datastore = use_graph_default_datastore
        self.regenerate_output = regenerate_output
        self.control_inputs = control_inputs
        self.cloud_settings = cloud_settings
        self.execution_phase = execution_phase
        self.run_attribution = run_attribution


class GroupDefinition(msrest.serialization.Model):
    """GroupDefinition.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar inputs:
    :vartype inputs: list[str]
    :ivar ui_hints: This is a dictionary.
    :vartype ui_hints: dict[str, any]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '[str]'},
        'ui_hints': {'key': 'ui_hints', 'type': '{object}'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        inputs: Optional[List[str]] = None,
        ui_hints: Optional[Dict[str, Any]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword inputs:
        :paramtype inputs: list[str]
        :keyword ui_hints: This is a dictionary.
        :paramtype ui_hints: dict[str, any]
        """
        super(GroupDefinition, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.inputs = inputs
        self.ui_hints = ui_hints


class HdfsReference(msrest.serialization.Model):
    """HdfsReference.

    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(HdfsReference, self).__init__(**kwargs)
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path


class HdiClusterComputeInfo(msrest.serialization.Model):
    """HdiClusterComputeInfo.

    :ivar address:
    :vartype address: str
    :ivar username:
    :vartype username: str
    :ivar password:
    :vartype password: str
    :ivar private_key:
    :vartype private_key: str
    """

    _attribute_map = {
        'address': {'key': 'address', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'private_key': {'key': 'privateKey', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        address: Optional[str] = None,
        username: Optional[str] = None,
        password: Optional[str] = None,
        private_key: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword address:
        :paramtype address: str
        :keyword username:
        :paramtype username: str
        :keyword password:
        :paramtype password: str
        :keyword private_key:
        :paramtype private_key: str
        """
        super(HdiClusterComputeInfo, self).__init__(**kwargs)
        self.address = address
        self.username = username
        self.password = password
        self.private_key = private_key


class HdiConfiguration(msrest.serialization.Model):
    """HdiConfiguration.

    :ivar yarn_deploy_mode: Possible values include: "None", "Client", "Cluster".
    :vartype yarn_deploy_mode: str or ~flow.models.YarnDeployMode
    """

    _attribute_map = {
        'yarn_deploy_mode': {'key': 'yarnDeployMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        yarn_deploy_mode: Optional[Union[str, "YarnDeployMode"]] = None,
        **kwargs
    ):
        """
        :keyword yarn_deploy_mode: Possible values include: "None", "Client", "Cluster".
        :paramtype yarn_deploy_mode: str or ~flow.models.YarnDeployMode
        """
        super(HdiConfiguration, self).__init__(**kwargs)
        self.yarn_deploy_mode = yarn_deploy_mode


class HdiRunConfiguration(msrest.serialization.Model):
    """HdiRunConfiguration.

    :ivar file:
    :vartype file: str
    :ivar class_name:
    :vartype class_name: str
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar compute_name:
    :vartype compute_name: str
    :ivar queue:
    :vartype queue: str
    :ivar driver_memory:
    :vartype driver_memory: str
    :ivar driver_cores:
    :vartype driver_cores: int
    :ivar executor_memory:
    :vartype executor_memory: str
    :ivar executor_cores:
    :vartype executor_cores: int
    :ivar number_executors:
    :vartype number_executors: int
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'queue': {'key': 'queue', 'type': 'str'},
        'driver_memory': {'key': 'driverMemory', 'type': 'str'},
        'driver_cores': {'key': 'driverCores', 'type': 'int'},
        'executor_memory': {'key': 'executorMemory', 'type': 'str'},
        'executor_cores': {'key': 'executorCores', 'type': 'int'},
        'number_executors': {'key': 'numberExecutors', 'type': 'int'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        class_name: Optional[str] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        compute_name: Optional[str] = None,
        queue: Optional[str] = None,
        driver_memory: Optional[str] = None,
        driver_cores: Optional[int] = None,
        executor_memory: Optional[str] = None,
        executor_cores: Optional[int] = None,
        number_executors: Optional[int] = None,
        conf: Optional[Dict[str, str]] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword class_name:
        :paramtype class_name: str
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword queue:
        :paramtype queue: str
        :keyword driver_memory:
        :paramtype driver_memory: str
        :keyword driver_cores:
        :paramtype driver_cores: int
        :keyword executor_memory:
        :paramtype executor_memory: str
        :keyword executor_cores:
        :paramtype executor_cores: int
        :keyword number_executors:
        :paramtype number_executors: int
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword name:
        :paramtype name: str
        """
        super(HdiRunConfiguration, self).__init__(**kwargs)
        self.file = file
        self.class_name = class_name
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.compute_name = compute_name
        self.queue = queue
        self.driver_memory = driver_memory
        self.driver_cores = driver_cores
        self.executor_memory = executor_memory
        self.executor_cores = executor_cores
        self.number_executors = number_executors
        self.conf = conf
        self.name = name


class HistoryConfiguration(msrest.serialization.Model):
    """HistoryConfiguration.

    :ivar output_collection:
    :vartype output_collection: bool
    :ivar directories_to_watch:
    :vartype directories_to_watch: list[str]
    :ivar enable_m_lflow_tracking:
    :vartype enable_m_lflow_tracking: bool
    """

    _attribute_map = {
        'output_collection': {'key': 'outputCollection', 'type': 'bool'},
        'directories_to_watch': {'key': 'directoriesToWatch', 'type': '[str]'},
        'enable_m_lflow_tracking': {'key': 'enableMLflowTracking', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        output_collection: Optional[bool] = True,
        directories_to_watch: Optional[List[str]] = ['logs'],
        enable_m_lflow_tracking: Optional[bool] = True,
        **kwargs
    ):
        """
        :keyword output_collection:
        :paramtype output_collection: bool
        :keyword directories_to_watch:
        :paramtype directories_to_watch: list[str]
        :keyword enable_m_lflow_tracking:
        :paramtype enable_m_lflow_tracking: bool
        """
        super(HistoryConfiguration, self).__init__(**kwargs)
        self.output_collection = output_collection
        self.directories_to_watch = directories_to_watch
        self.enable_m_lflow_tracking = enable_m_lflow_tracking


class HyperDriveConfiguration(msrest.serialization.Model):
    """HyperDriveConfiguration.

    :ivar hyper_drive_run_config:
    :vartype hyper_drive_run_config: str
    :ivar primary_metric_goal:
    :vartype primary_metric_goal: str
    :ivar primary_metric_name:
    :vartype primary_metric_name: str
    :ivar arguments:
    :vartype arguments: list[~flow.models.ArgumentAssignment]
    """

    _attribute_map = {
        'hyper_drive_run_config': {'key': 'hyperDriveRunConfig', 'type': 'str'},
        'primary_metric_goal': {'key': 'primaryMetricGoal', 'type': 'str'},
        'primary_metric_name': {'key': 'primaryMetricName', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[ArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        hyper_drive_run_config: Optional[str] = None,
        primary_metric_goal: Optional[str] = None,
        primary_metric_name: Optional[str] = None,
        arguments: Optional[List["ArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword hyper_drive_run_config:
        :paramtype hyper_drive_run_config: str
        :keyword primary_metric_goal:
        :paramtype primary_metric_goal: str
        :keyword primary_metric_name:
        :paramtype primary_metric_name: str
        :keyword arguments:
        :paramtype arguments: list[~flow.models.ArgumentAssignment]
        """
        super(HyperDriveConfiguration, self).__init__(**kwargs)
        self.hyper_drive_run_config = hyper_drive_run_config
        self.primary_metric_goal = primary_metric_goal
        self.primary_metric_name = primary_metric_name
        self.arguments = arguments


class ICheckableLongRunningOperationResponse(msrest.serialization.Model):
    """ICheckableLongRunningOperationResponse.

    :ivar completion_result: Any object.
    :vartype completion_result: any
    :ivar location:
    :vartype location: str
    :ivar operation_result:
    :vartype operation_result: str
    """

    _attribute_map = {
        'completion_result': {'key': 'completionResult', 'type': 'object'},
        'location': {'key': 'location', 'type': 'str'},
        'operation_result': {'key': 'operationResult', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        completion_result: Optional[Any] = None,
        location: Optional[str] = None,
        operation_result: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword completion_result: Any object.
        :paramtype completion_result: any
        :keyword location:
        :paramtype location: str
        :keyword operation_result:
        :paramtype operation_result: str
        """
        super(ICheckableLongRunningOperationResponse, self).__init__(**kwargs)
        self.completion_result = completion_result
        self.location = location
        self.operation_result = operation_result


class IdentityConfiguration(msrest.serialization.Model):
    """IdentityConfiguration.

    :ivar type: Possible values include: "Managed", "ServicePrincipal", "AMLToken".
    :vartype type: str or ~flow.models.IdentityType
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar secret:
    :vartype secret: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'secret': {'key': 'secret', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "IdentityType"]] = None,
        properties: Optional[Dict[str, str]] = None,
        secret: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "Managed", "ServicePrincipal", "AMLToken".
        :paramtype type: str or ~flow.models.IdentityType
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword secret:
        :paramtype secret: str
        """
        super(IdentityConfiguration, self).__init__(**kwargs)
        self.type = type
        self.properties = properties
        self.secret = secret


class IdentitySetting(msrest.serialization.Model):
    """IdentitySetting.

    :ivar type: Possible values include: "UserIdentity", "Managed", "AMLToken".
    :vartype type: str or ~flow.models.AEVAIdentityType
    :ivar client_id:
    :vartype client_id: str
    :ivar object_id:
    :vartype object_id: str
    :ivar msi_resource_id:
    :vartype msi_resource_id: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
        'object_id': {'key': 'objectId', 'type': 'str'},
        'msi_resource_id': {'key': 'msiResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "AEVAIdentityType"]] = None,
        client_id: Optional[str] = None,
        object_id: Optional[str] = None,
        msi_resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "UserIdentity", "Managed", "AMLToken".
        :paramtype type: str or ~flow.models.AEVAIdentityType
        :keyword client_id:
        :paramtype client_id: str
        :keyword object_id:
        :paramtype object_id: str
        :keyword msi_resource_id:
        :paramtype msi_resource_id: str
        """
        super(IdentitySetting, self).__init__(**kwargs)
        self.type = type
        self.client_id = client_id
        self.object_id = object_id
        self.msi_resource_id = msi_resource_id


class ImportDataTask(msrest.serialization.Model):
    """ImportDataTask.

    :ivar data_transfer_source:
    :vartype data_transfer_source: ~flow.models.DataTransferSource
    """

    _attribute_map = {
        'data_transfer_source': {'key': 'DataTransferSource', 'type': 'DataTransferSource'},
    }

    def __init__(
        self,
        *,
        data_transfer_source: Optional["DataTransferSource"] = None,
        **kwargs
    ):
        """
        :keyword data_transfer_source:
        :paramtype data_transfer_source: ~flow.models.DataTransferSource
        """
        super(ImportDataTask, self).__init__(**kwargs)
        self.data_transfer_source = data_transfer_source


class IndexedErrorResponse(msrest.serialization.Model):
    """IndexedErrorResponse.

    :ivar code:
    :vartype code: str
    :ivar error_code_hierarchy:
    :vartype error_code_hierarchy: str
    :ivar message:
    :vartype message: str
    :ivar time:
    :vartype time: ~datetime.datetime
    :ivar component_name:
    :vartype component_name: str
    :ivar severity:
    :vartype severity: int
    :ivar details_uri:
    :vartype details_uri: str
    :ivar reference_code:
    :vartype reference_code: str
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'error_code_hierarchy': {'key': 'errorCodeHierarchy', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'time': {'key': 'time', 'type': 'iso-8601'},
        'component_name': {'key': 'componentName', 'type': 'str'},
        'severity': {'key': 'severity', 'type': 'int'},
        'details_uri': {'key': 'detailsUri', 'type': 'str'},
        'reference_code': {'key': 'referenceCode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        error_code_hierarchy: Optional[str] = None,
        message: Optional[str] = None,
        time: Optional[datetime.datetime] = None,
        component_name: Optional[str] = None,
        severity: Optional[int] = None,
        details_uri: Optional[str] = None,
        reference_code: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword code:
        :paramtype code: str
        :keyword error_code_hierarchy:
        :paramtype error_code_hierarchy: str
        :keyword message:
        :paramtype message: str
        :keyword time:
        :paramtype time: ~datetime.datetime
        :keyword component_name:
        :paramtype component_name: str
        :keyword severity:
        :paramtype severity: int
        :keyword details_uri:
        :paramtype details_uri: str
        :keyword reference_code:
        :paramtype reference_code: str
        """
        super(IndexedErrorResponse, self).__init__(**kwargs)
        self.code = code
        self.error_code_hierarchy = error_code_hierarchy
        self.message = message
        self.time = time
        self.component_name = component_name
        self.severity = severity
        self.details_uri = details_uri
        self.reference_code = reference_code


class InitScriptInfoDto(msrest.serialization.Model):
    """InitScriptInfoDto.

    :ivar dbfs:
    :vartype dbfs: ~flow.models.DbfsStorageInfoDto
    """

    _attribute_map = {
        'dbfs': {'key': 'dbfs', 'type': 'DbfsStorageInfoDto'},
    }

    def __init__(
        self,
        *,
        dbfs: Optional["DbfsStorageInfoDto"] = None,
        **kwargs
    ):
        """
        :keyword dbfs:
        :paramtype dbfs: ~flow.models.DbfsStorageInfoDto
        """
        super(InitScriptInfoDto, self).__init__(**kwargs)
        self.dbfs = dbfs


class InnerErrorDetails(msrest.serialization.Model):
    """InnerErrorDetails.

    :ivar code:
    :vartype code: str
    :ivar message:
    :vartype message: str
    :ivar target:
    :vartype target: str
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword code:
        :paramtype code: str
        :keyword message:
        :paramtype message: str
        :keyword target:
        :paramtype target: str
        """
        super(InnerErrorDetails, self).__init__(**kwargs)
        self.code = code
        self.message = message
        self.target = target


class InnerErrorResponse(msrest.serialization.Model):
    """A nested structure of errors.

    :ivar code: The error code.
    :vartype code: str
    :ivar inner_error: A nested structure of errors.
    :vartype inner_error: ~flow.models.InnerErrorResponse
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'inner_error': {'key': 'innerError', 'type': 'InnerErrorResponse'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        inner_error: Optional["InnerErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword code: The error code.
        :paramtype code: str
        :keyword inner_error: A nested structure of errors.
        :paramtype inner_error: ~flow.models.InnerErrorResponse
        """
        super(InnerErrorResponse, self).__init__(**kwargs)
        self.code = code
        self.inner_error = inner_error


class InputAsset(msrest.serialization.Model):
    """InputAsset.

    :ivar asset:
    :vartype asset: ~flow.models.Asset
    :ivar mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
    :vartype mechanism: str or ~flow.models.DeliveryMechanism
    :ivar environment_variable_name:
    :vartype environment_variable_name: str
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar options: Dictionary of :code:`<string>`.
    :vartype options: dict[str, str]
    """

    _attribute_map = {
        'asset': {'key': 'asset', 'type': 'Asset'},
        'mechanism': {'key': 'mechanism', 'type': 'str'},
        'environment_variable_name': {'key': 'environmentVariableName', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'options': {'key': 'options', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        asset: Optional["Asset"] = None,
        mechanism: Optional[Union[str, "DeliveryMechanism"]] = None,
        environment_variable_name: Optional[str] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        options: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword asset:
        :paramtype asset: ~flow.models.Asset
        :keyword mechanism: Possible values include: "Direct", "Mount", "Download", "Hdfs".
        :paramtype mechanism: str or ~flow.models.DeliveryMechanism
        :keyword environment_variable_name:
        :paramtype environment_variable_name: str
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword options: Dictionary of :code:`<string>`.
        :paramtype options: dict[str, str]
        """
        super(InputAsset, self).__init__(**kwargs)
        self.asset = asset
        self.mechanism = mechanism
        self.environment_variable_name = environment_variable_name
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.options = options


class InputData(msrest.serialization.Model):
    """InputData.

    :ivar dataset_id:
    :vartype dataset_id: str
    :ivar mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
     "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~flow.models.DataBindingMode
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'dataset_id': {'key': 'datasetId', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        dataset_id: Optional[str] = None,
        mode: Optional[Union[str, "DataBindingMode"]] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword dataset_id:
        :paramtype dataset_id: str
        :keyword mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
         "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~flow.models.DataBindingMode
        :keyword value:
        :paramtype value: str
        """
        super(InputData, self).__init__(**kwargs)
        self.dataset_id = dataset_id
        self.mode = mode
        self.value = value


class InputDataBinding(msrest.serialization.Model):
    """InputDataBinding.

    :ivar data_id:
    :vartype data_id: str
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
     "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~flow.models.DataBindingMode
    :ivar description:
    :vartype description: str
    :ivar uri:
    :vartype uri: ~flow.models.MfeInternalUriReference
    :ivar value:
    :vartype value: str
    :ivar asset_uri:
    :vartype asset_uri: str
    :ivar job_input_type: Possible values include: "Dataset", "Uri", "Literal", "UriFile",
     "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
    :vartype job_input_type: str or ~flow.models.JobInputType
    """

    _attribute_map = {
        'data_id': {'key': 'dataId', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'MfeInternalUriReference'},
        'value': {'key': 'value', 'type': 'str'},
        'asset_uri': {'key': 'assetUri', 'type': 'str'},
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_id: Optional[str] = None,
        path_on_compute: Optional[str] = None,
        mode: Optional[Union[str, "DataBindingMode"]] = None,
        description: Optional[str] = None,
        uri: Optional["MfeInternalUriReference"] = None,
        value: Optional[str] = None,
        asset_uri: Optional[str] = None,
        job_input_type: Optional[Union[str, "JobInputType"]] = None,
        **kwargs
    ):
        """
        :keyword data_id:
        :paramtype data_id: str
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
         "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~flow.models.DataBindingMode
        :keyword description:
        :paramtype description: str
        :keyword uri:
        :paramtype uri: ~flow.models.MfeInternalUriReference
        :keyword value:
        :paramtype value: str
        :keyword asset_uri:
        :paramtype asset_uri: str
        :keyword job_input_type: Possible values include: "Dataset", "Uri", "Literal", "UriFile",
         "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
        :paramtype job_input_type: str or ~flow.models.JobInputType
        """
        super(InputDataBinding, self).__init__(**kwargs)
        self.data_id = data_id
        self.path_on_compute = path_on_compute
        self.mode = mode
        self.description = description
        self.uri = uri
        self.value = value
        self.asset_uri = asset_uri
        self.job_input_type = job_input_type


class InputDefinition(msrest.serialization.Model):
    """InputDefinition.

    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: list[str or ~flow.models.ValueType]
    :ivar default: Anything.
    :vartype default: any
    :ivar description:
    :vartype description: str
    :ivar enum:
    :vartype enum: list[any]
    :ivar enabled_by:
    :vartype enabled_by: str
    :ivar enabled_by_type:
    :vartype enabled_by_type: list[str or ~flow.models.ValueType]
    :ivar enabled_by_value:
    :vartype enabled_by_value: list[any]
    :ivar model_list:
    :vartype model_list: list[str]
    :ivar capabilities:
    :vartype capabilities: ~flow.models.AzureOpenAIModelCapabilities
    :ivar dynamic_list:
    :vartype dynamic_list: ~flow.models.ToolInputDynamicList
    :ivar allow_manual_entry:
    :vartype allow_manual_entry: bool
    :ivar is_multi_select:
    :vartype is_multi_select: bool
    :ivar generated_by:
    :vartype generated_by: ~flow.models.ToolInputGeneratedBy
    :ivar input_type: Possible values include: "default", "uionly_hidden".
    :vartype input_type: str or ~flow.models.InputType
    :ivar advanced:
    :vartype advanced: bool
    :ivar ui_hints: This is a dictionary.
    :vartype ui_hints: dict[str, any]
    :ivar filter_by:
    :vartype filter_by: ~flow.models.FilterBy
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': '[str]'},
        'default': {'key': 'default', 'type': 'object'},
        'description': {'key': 'description', 'type': 'str'},
        'enum': {'key': 'enum', 'type': '[object]'},
        'enabled_by': {'key': 'enabled_by', 'type': 'str'},
        'enabled_by_type': {'key': 'enabled_by_type', 'type': '[str]'},
        'enabled_by_value': {'key': 'enabled_by_value', 'type': '[object]'},
        'model_list': {'key': 'model_list', 'type': '[str]'},
        'capabilities': {'key': 'capabilities', 'type': 'AzureOpenAIModelCapabilities'},
        'dynamic_list': {'key': 'dynamic_list', 'type': 'ToolInputDynamicList'},
        'allow_manual_entry': {'key': 'allow_manual_entry', 'type': 'bool'},
        'is_multi_select': {'key': 'is_multi_select', 'type': 'bool'},
        'generated_by': {'key': 'generated_by', 'type': 'ToolInputGeneratedBy'},
        'input_type': {'key': 'input_type', 'type': 'str'},
        'advanced': {'key': 'advanced', 'type': 'bool'},
        'ui_hints': {'key': 'ui_hints', 'type': '{object}'},
        'filter_by': {'key': 'filter_by', 'type': 'FilterBy'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[List[Union[str, "ValueType"]]] = None,
        default: Optional[Any] = None,
        description: Optional[str] = None,
        enum: Optional[List[Any]] = None,
        enabled_by: Optional[str] = None,
        enabled_by_type: Optional[List[Union[str, "ValueType"]]] = None,
        enabled_by_value: Optional[List[Any]] = None,
        model_list: Optional[List[str]] = None,
        capabilities: Optional["AzureOpenAIModelCapabilities"] = None,
        dynamic_list: Optional["ToolInputDynamicList"] = None,
        allow_manual_entry: Optional[bool] = None,
        is_multi_select: Optional[bool] = None,
        generated_by: Optional["ToolInputGeneratedBy"] = None,
        input_type: Optional[Union[str, "InputType"]] = None,
        advanced: Optional[bool] = None,
        ui_hints: Optional[Dict[str, Any]] = None,
        filter_by: Optional["FilterBy"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: list[str or ~flow.models.ValueType]
        :keyword default: Anything.
        :paramtype default: any
        :keyword description:
        :paramtype description: str
        :keyword enum:
        :paramtype enum: list[any]
        :keyword enabled_by:
        :paramtype enabled_by: str
        :keyword enabled_by_type:
        :paramtype enabled_by_type: list[str or ~flow.models.ValueType]
        :keyword enabled_by_value:
        :paramtype enabled_by_value: list[any]
        :keyword model_list:
        :paramtype model_list: list[str]
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.AzureOpenAIModelCapabilities
        :keyword dynamic_list:
        :paramtype dynamic_list: ~flow.models.ToolInputDynamicList
        :keyword allow_manual_entry:
        :paramtype allow_manual_entry: bool
        :keyword is_multi_select:
        :paramtype is_multi_select: bool
        :keyword generated_by:
        :paramtype generated_by: ~flow.models.ToolInputGeneratedBy
        :keyword input_type: Possible values include: "default", "uionly_hidden".
        :paramtype input_type: str or ~flow.models.InputType
        :keyword advanced:
        :paramtype advanced: bool
        :keyword ui_hints: This is a dictionary.
        :paramtype ui_hints: dict[str, any]
        :keyword filter_by:
        :paramtype filter_by: ~flow.models.FilterBy
        """
        super(InputDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.default = default
        self.description = description
        self.enum = enum
        self.enabled_by = enabled_by
        self.enabled_by_type = enabled_by_type
        self.enabled_by_value = enabled_by_value
        self.model_list = model_list
        self.capabilities = capabilities
        self.dynamic_list = dynamic_list
        self.allow_manual_entry = allow_manual_entry
        self.is_multi_select = is_multi_select
        self.generated_by = generated_by
        self.input_type = input_type
        self.advanced = advanced
        self.ui_hints = ui_hints
        self.filter_by = filter_by


class InputOutputPortMetadata(msrest.serialization.Model):
    """InputOutputPortMetadata.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar graph_module_node_id:
    :vartype graph_module_node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar schema:
    :vartype schema: str
    :ivar name:
    :vartype name: str
    :ivar id:
    :vartype id: str
    """

    _validation = {
        'id': {'readonly': True},
    }

    _attribute_map = {
        'graph_module_node_id': {'key': 'graphModuleNodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'schema': {'key': 'schema', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        graph_module_node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        schema: Optional[str] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword graph_module_node_id:
        :paramtype graph_module_node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword schema:
        :paramtype schema: str
        :keyword name:
        :paramtype name: str
        """
        super(InputOutputPortMetadata, self).__init__(**kwargs)
        self.graph_module_node_id = graph_module_node_id
        self.port_name = port_name
        self.schema = schema
        self.name = name
        self.id = None


class InputSetting(msrest.serialization.Model):
    """InputSetting.

    :ivar name:
    :vartype name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar options: This is a dictionary.
    :vartype options: dict[str, str]
    :ivar additional_transformations:
    :vartype additional_transformations: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'options': {'key': 'options', 'type': '{str}'},
        'additional_transformations': {'key': 'additionalTransformations', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        options: Optional[Dict[str, str]] = None,
        additional_transformations: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword options: This is a dictionary.
        :paramtype options: dict[str, str]
        :keyword additional_transformations:
        :paramtype additional_transformations: str
        """
        super(InputSetting, self).__init__(**kwargs)
        self.name = name
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.options = options
        self.additional_transformations = additional_transformations


class IntellectualPropertyPublisherInformation(msrest.serialization.Model):
    """IntellectualPropertyPublisherInformation.

    :ivar intellectual_property_publisher:
    :vartype intellectual_property_publisher: str
    """

    _attribute_map = {
        'intellectual_property_publisher': {'key': 'intellectualPropertyPublisher', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        intellectual_property_publisher: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword intellectual_property_publisher:
        :paramtype intellectual_property_publisher: str
        """
        super(IntellectualPropertyPublisherInformation, self).__init__(**kwargs)
        self.intellectual_property_publisher = intellectual_property_publisher


class InteractiveConfig(msrest.serialization.Model):
    """InteractiveConfig.

    :ivar is_ssh_enabled:
    :vartype is_ssh_enabled: bool
    :ivar ssh_public_key:
    :vartype ssh_public_key: str
    :ivar is_i_python_enabled:
    :vartype is_i_python_enabled: bool
    :ivar is_tensor_board_enabled:
    :vartype is_tensor_board_enabled: bool
    :ivar interactive_port:
    :vartype interactive_port: int
    """

    _attribute_map = {
        'is_ssh_enabled': {'key': 'isSSHEnabled', 'type': 'bool'},
        'ssh_public_key': {'key': 'sshPublicKey', 'type': 'str'},
        'is_i_python_enabled': {'key': 'isIPythonEnabled', 'type': 'bool'},
        'is_tensor_board_enabled': {'key': 'isTensorBoardEnabled', 'type': 'bool'},
        'interactive_port': {'key': 'interactivePort', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        is_ssh_enabled: Optional[bool] = None,
        ssh_public_key: Optional[str] = None,
        is_i_python_enabled: Optional[bool] = None,
        is_tensor_board_enabled: Optional[bool] = None,
        interactive_port: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword is_ssh_enabled:
        :paramtype is_ssh_enabled: bool
        :keyword ssh_public_key:
        :paramtype ssh_public_key: str
        :keyword is_i_python_enabled:
        :paramtype is_i_python_enabled: bool
        :keyword is_tensor_board_enabled:
        :paramtype is_tensor_board_enabled: bool
        :keyword interactive_port:
        :paramtype interactive_port: int
        """
        super(InteractiveConfig, self).__init__(**kwargs)
        self.is_ssh_enabled = is_ssh_enabled
        self.ssh_public_key = ssh_public_key
        self.is_i_python_enabled = is_i_python_enabled
        self.is_tensor_board_enabled = is_tensor_board_enabled
        self.interactive_port = interactive_port


class InteractiveConfiguration(msrest.serialization.Model):
    """InteractiveConfiguration.

    :ivar is_ssh_enabled:
    :vartype is_ssh_enabled: bool
    :ivar ssh_public_key:
    :vartype ssh_public_key: str
    :ivar is_i_python_enabled:
    :vartype is_i_python_enabled: bool
    :ivar is_tensor_board_enabled:
    :vartype is_tensor_board_enabled: bool
    :ivar interactive_port:
    :vartype interactive_port: int
    """

    _attribute_map = {
        'is_ssh_enabled': {'key': 'isSSHEnabled', 'type': 'bool'},
        'ssh_public_key': {'key': 'sshPublicKey', 'type': 'str'},
        'is_i_python_enabled': {'key': 'isIPythonEnabled', 'type': 'bool'},
        'is_tensor_board_enabled': {'key': 'isTensorBoardEnabled', 'type': 'bool'},
        'interactive_port': {'key': 'interactivePort', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        is_ssh_enabled: Optional[bool] = None,
        ssh_public_key: Optional[str] = None,
        is_i_python_enabled: Optional[bool] = None,
        is_tensor_board_enabled: Optional[bool] = None,
        interactive_port: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword is_ssh_enabled:
        :paramtype is_ssh_enabled: bool
        :keyword ssh_public_key:
        :paramtype ssh_public_key: str
        :keyword is_i_python_enabled:
        :paramtype is_i_python_enabled: bool
        :keyword is_tensor_board_enabled:
        :paramtype is_tensor_board_enabled: bool
        :keyword interactive_port:
        :paramtype interactive_port: int
        """
        super(InteractiveConfiguration, self).__init__(**kwargs)
        self.is_ssh_enabled = is_ssh_enabled
        self.ssh_public_key = ssh_public_key
        self.is_i_python_enabled = is_i_python_enabled
        self.is_tensor_board_enabled = is_tensor_board_enabled
        self.interactive_port = interactive_port


class JobCost(msrest.serialization.Model):
    """JobCost.

    :ivar charged_cpu_core_seconds:
    :vartype charged_cpu_core_seconds: float
    :ivar charged_cpu_memory_megabyte_seconds:
    :vartype charged_cpu_memory_megabyte_seconds: float
    :ivar charged_gpu_seconds:
    :vartype charged_gpu_seconds: float
    :ivar charged_node_utilization_seconds:
    :vartype charged_node_utilization_seconds: float
    """

    _attribute_map = {
        'charged_cpu_core_seconds': {'key': 'chargedCpuCoreSeconds', 'type': 'float'},
        'charged_cpu_memory_megabyte_seconds': {'key': 'chargedCpuMemoryMegabyteSeconds', 'type': 'float'},
        'charged_gpu_seconds': {'key': 'chargedGpuSeconds', 'type': 'float'},
        'charged_node_utilization_seconds': {'key': 'chargedNodeUtilizationSeconds', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        charged_cpu_core_seconds: Optional[float] = None,
        charged_cpu_memory_megabyte_seconds: Optional[float] = None,
        charged_gpu_seconds: Optional[float] = None,
        charged_node_utilization_seconds: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword charged_cpu_core_seconds:
        :paramtype charged_cpu_core_seconds: float
        :keyword charged_cpu_memory_megabyte_seconds:
        :paramtype charged_cpu_memory_megabyte_seconds: float
        :keyword charged_gpu_seconds:
        :paramtype charged_gpu_seconds: float
        :keyword charged_node_utilization_seconds:
        :paramtype charged_node_utilization_seconds: float
        """
        super(JobCost, self).__init__(**kwargs)
        self.charged_cpu_core_seconds = charged_cpu_core_seconds
        self.charged_cpu_memory_megabyte_seconds = charged_cpu_memory_megabyte_seconds
        self.charged_gpu_seconds = charged_gpu_seconds
        self.charged_node_utilization_seconds = charged_node_utilization_seconds


class JobEndpoint(msrest.serialization.Model):
    """JobEndpoint.

    :ivar type:
    :vartype type: str
    :ivar port:
    :vartype port: int
    :ivar endpoint:
    :vartype endpoint: str
    :ivar status:
    :vartype status: str
    :ivar error_message:
    :vartype error_message: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar nodes:
    :vartype nodes: ~flow.models.MfeInternalNodes
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'port': {'key': 'port', 'type': 'int'},
        'endpoint': {'key': 'endpoint', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'nodes': {'key': 'nodes', 'type': 'MfeInternalNodes'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        port: Optional[int] = None,
        endpoint: Optional[str] = None,
        status: Optional[str] = None,
        error_message: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        nodes: Optional["MfeInternalNodes"] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword port:
        :paramtype port: int
        :keyword endpoint:
        :paramtype endpoint: str
        :keyword status:
        :paramtype status: str
        :keyword error_message:
        :paramtype error_message: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword nodes:
        :paramtype nodes: ~flow.models.MfeInternalNodes
        """
        super(JobEndpoint, self).__init__(**kwargs)
        self.type = type
        self.port = port
        self.endpoint = endpoint
        self.status = status
        self.error_message = error_message
        self.properties = properties
        self.nodes = nodes


class JobInput(msrest.serialization.Model):
    """JobInput.

    All required parameters must be populated in order to send to Azure.

    :ivar job_input_type: Required. Possible values include: "Dataset", "Uri", "Literal",
     "UriFile", "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
    :vartype job_input_type: str or ~flow.models.JobInputType
    :ivar description:
    :vartype description: str
    """

    _validation = {
        'job_input_type': {'required': True},
    }

    _attribute_map = {
        'job_input_type': {'key': 'jobInputType', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        job_input_type: Union[str, "JobInputType"],
        description: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword job_input_type: Required. Possible values include: "Dataset", "Uri", "Literal",
         "UriFile", "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
        :paramtype job_input_type: str or ~flow.models.JobInputType
        :keyword description:
        :paramtype description: str
        """
        super(JobInput, self).__init__(**kwargs)
        self.job_input_type = job_input_type
        self.description = description


class JobOutput(msrest.serialization.Model):
    """JobOutput.

    All required parameters must be populated in order to send to Azure.

    :ivar job_output_type: Required. Possible values include: "Uri", "Dataset", "UriFile",
     "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
    :vartype job_output_type: str or ~flow.models.JobOutputType
    :ivar description:
    :vartype description: str
    :ivar auto_delete_setting:
    :vartype auto_delete_setting: ~flow.models.AutoDeleteSetting
    """

    _validation = {
        'job_output_type': {'required': True},
    }

    _attribute_map = {
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'auto_delete_setting': {'key': 'autoDeleteSetting', 'type': 'AutoDeleteSetting'},
    }

    def __init__(
        self,
        *,
        job_output_type: Union[str, "JobOutputType"],
        description: Optional[str] = None,
        auto_delete_setting: Optional["AutoDeleteSetting"] = None,
        **kwargs
    ):
        """
        :keyword job_output_type: Required. Possible values include: "Uri", "Dataset", "UriFile",
         "UriFolder", "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
        :paramtype job_output_type: str or ~flow.models.JobOutputType
        :keyword description:
        :paramtype description: str
        :keyword auto_delete_setting:
        :paramtype auto_delete_setting: ~flow.models.AutoDeleteSetting
        """
        super(JobOutput, self).__init__(**kwargs)
        self.job_output_type = job_output_type
        self.description = description
        self.auto_delete_setting = auto_delete_setting


class JobOutputArtifacts(msrest.serialization.Model):
    """JobOutputArtifacts.

    :ivar datastore_id:
    :vartype datastore_id: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'datastore_id': {'key': 'datastoreId', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        datastore_id: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword datastore_id:
        :paramtype datastore_id: str
        :keyword path:
        :paramtype path: str
        """
        super(JobOutputArtifacts, self).__init__(**kwargs)
        self.datastore_id = datastore_id
        self.path = path


class JobScheduleDto(msrest.serialization.Model):
    """JobScheduleDto.

    :ivar job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
     "AutoML", "Spark", "Base", "FineTuning".
    :vartype job_type: str or ~flow.models.JobType
    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar name:
    :vartype name: str
    :ivar job_definition_id:
    :vartype job_definition_id: str
    :ivar display_name:
    :vartype display_name: str
    :ivar trigger_type: Possible values include: "Recurrence", "Cron".
    :vartype trigger_type: str or ~flow.models.TriggerType
    :ivar recurrence:
    :vartype recurrence: ~flow.models.Recurrence
    :ivar cron:
    :vartype cron: ~flow.models.Cron
    :ivar status: Possible values include: "Enabled", "Disabled".
    :vartype status: str or ~flow.models.ScheduleStatus
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'job_type': {'key': 'jobType', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'name': {'key': 'name', 'type': 'str'},
        'job_definition_id': {'key': 'jobDefinitionId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'Recurrence'},
        'cron': {'key': 'cron', 'type': 'Cron'},
        'status': {'key': 'status', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        job_type: Optional[Union[str, "JobType"]] = None,
        system_data: Optional["SystemData"] = None,
        name: Optional[str] = None,
        job_definition_id: Optional[str] = None,
        display_name: Optional[str] = None,
        trigger_type: Optional[Union[str, "TriggerType"]] = None,
        recurrence: Optional["Recurrence"] = None,
        cron: Optional["Cron"] = None,
        status: Optional[Union[str, "ScheduleStatus"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
         "AutoML", "Spark", "Base", "FineTuning".
        :paramtype job_type: str or ~flow.models.JobType
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword name:
        :paramtype name: str
        :keyword job_definition_id:
        :paramtype job_definition_id: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword trigger_type: Possible values include: "Recurrence", "Cron".
        :paramtype trigger_type: str or ~flow.models.TriggerType
        :keyword recurrence:
        :paramtype recurrence: ~flow.models.Recurrence
        :keyword cron:
        :paramtype cron: ~flow.models.Cron
        :keyword status: Possible values include: "Enabled", "Disabled".
        :paramtype status: str or ~flow.models.ScheduleStatus
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(JobScheduleDto, self).__init__(**kwargs)
        self.job_type = job_type
        self.system_data = system_data
        self.name = name
        self.job_definition_id = job_definition_id
        self.display_name = display_name
        self.trigger_type = trigger_type
        self.recurrence = recurrence
        self.cron = cron
        self.status = status
        self.description = description
        self.tags = tags
        self.properties = properties


class K8SConfiguration(msrest.serialization.Model):
    """K8SConfiguration.

    :ivar max_retry_count:
    :vartype max_retry_count: int
    :ivar resource_configuration:
    :vartype resource_configuration: ~flow.models.ResourceConfig
    :ivar priority_configuration:
    :vartype priority_configuration: ~flow.models.PriorityConfig
    :ivar interactive_configuration:
    :vartype interactive_configuration: ~flow.models.InteractiveConfig
    """

    _attribute_map = {
        'max_retry_count': {'key': 'maxRetryCount', 'type': 'int'},
        'resource_configuration': {'key': 'resourceConfiguration', 'type': 'ResourceConfig'},
        'priority_configuration': {'key': 'priorityConfiguration', 'type': 'PriorityConfig'},
        'interactive_configuration': {'key': 'interactiveConfiguration', 'type': 'InteractiveConfig'},
    }

    def __init__(
        self,
        *,
        max_retry_count: Optional[int] = None,
        resource_configuration: Optional["ResourceConfig"] = None,
        priority_configuration: Optional["PriorityConfig"] = None,
        interactive_configuration: Optional["InteractiveConfig"] = None,
        **kwargs
    ):
        """
        :keyword max_retry_count:
        :paramtype max_retry_count: int
        :keyword resource_configuration:
        :paramtype resource_configuration: ~flow.models.ResourceConfig
        :keyword priority_configuration:
        :paramtype priority_configuration: ~flow.models.PriorityConfig
        :keyword interactive_configuration:
        :paramtype interactive_configuration: ~flow.models.InteractiveConfig
        """
        super(K8SConfiguration, self).__init__(**kwargs)
        self.max_retry_count = max_retry_count
        self.resource_configuration = resource_configuration
        self.priority_configuration = priority_configuration
        self.interactive_configuration = interactive_configuration


class KeyValuePairComponentNameMetaInfoErrorResponse(msrest.serialization.Model):
    """KeyValuePairComponentNameMetaInfoErrorResponse.

    :ivar key:
    :vartype key: ~flow.models.ComponentNameMetaInfo
    :ivar value: The error response.
    :vartype value: ~flow.models.ErrorResponse
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'ComponentNameMetaInfo'},
        'value': {'key': 'value', 'type': 'ErrorResponse'},
    }

    def __init__(
        self,
        *,
        key: Optional["ComponentNameMetaInfo"] = None,
        value: Optional["ErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: ~flow.models.ComponentNameMetaInfo
        :keyword value: The error response.
        :paramtype value: ~flow.models.ErrorResponse
        """
        super(KeyValuePairComponentNameMetaInfoErrorResponse, self).__init__(**kwargs)
        self.key = key
        self.value = value


class KeyValuePairComponentNameMetaInfoModuleDto(msrest.serialization.Model):
    """KeyValuePairComponentNameMetaInfoModuleDto.

    :ivar key:
    :vartype key: ~flow.models.ComponentNameMetaInfo
    :ivar value:
    :vartype value: ~flow.models.ModuleDto
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'ComponentNameMetaInfo'},
        'value': {'key': 'value', 'type': 'ModuleDto'},
    }

    def __init__(
        self,
        *,
        key: Optional["ComponentNameMetaInfo"] = None,
        value: Optional["ModuleDto"] = None,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: ~flow.models.ComponentNameMetaInfo
        :keyword value:
        :paramtype value: ~flow.models.ModuleDto
        """
        super(KeyValuePairComponentNameMetaInfoModuleDto, self).__init__(**kwargs)
        self.key = key
        self.value = value


class KeyValuePairStringObject(msrest.serialization.Model):
    """KeyValuePairStringObject.

    :ivar key:
    :vartype key: str
    :ivar value: Anything.
    :vartype value: any
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
        'value': {'key': 'value', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        key: Optional[str] = None,
        value: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        :keyword value: Anything.
        :paramtype value: any
        """
        super(KeyValuePairStringObject, self).__init__(**kwargs)
        self.key = key
        self.value = value


class KubernetesConfiguration(msrest.serialization.Model):
    """KubernetesConfiguration.

    :ivar instance_type:
    :vartype instance_type: str
    """

    _attribute_map = {
        'instance_type': {'key': 'instanceType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_type:
        :paramtype instance_type: str
        """
        super(KubernetesConfiguration, self).__init__(**kwargs)
        self.instance_type = instance_type


class Kwarg(msrest.serialization.Model):
    """Kwarg.

    :ivar key:
    :vartype key: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'key': {'key': 'key', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        key: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword key:
        :paramtype key: str
        :keyword value:
        :paramtype value: str
        """
        super(Kwarg, self).__init__(**kwargs)
        self.key = key
        self.value = value


class LegacyDataPath(msrest.serialization.Model):
    """LegacyDataPath.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar relative_path:
    :vartype relative_path: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        relative_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword relative_path:
        :paramtype relative_path: str
        """
        super(LegacyDataPath, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.data_store_mode = data_store_mode
        self.relative_path = relative_path


class LimitSettings(msrest.serialization.Model):
    """LimitSettings.

    :ivar max_trials:
    :vartype max_trials: int
    :ivar timeout:
    :vartype timeout: str
    :ivar trial_timeout:
    :vartype trial_timeout: str
    :ivar max_concurrent_trials:
    :vartype max_concurrent_trials: int
    :ivar max_cores_per_trial:
    :vartype max_cores_per_trial: int
    :ivar exit_score:
    :vartype exit_score: float
    :ivar enable_early_termination:
    :vartype enable_early_termination: bool
    :ivar max_nodes:
    :vartype max_nodes: int
    """

    _attribute_map = {
        'max_trials': {'key': 'maxTrials', 'type': 'int'},
        'timeout': {'key': 'timeout', 'type': 'str'},
        'trial_timeout': {'key': 'trialTimeout', 'type': 'str'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
        'max_cores_per_trial': {'key': 'maxCoresPerTrial', 'type': 'int'},
        'exit_score': {'key': 'exitScore', 'type': 'float'},
        'enable_early_termination': {'key': 'enableEarlyTermination', 'type': 'bool'},
        'max_nodes': {'key': 'maxNodes', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        max_trials: Optional[int] = None,
        timeout: Optional[str] = None,
        trial_timeout: Optional[str] = None,
        max_concurrent_trials: Optional[int] = None,
        max_cores_per_trial: Optional[int] = None,
        exit_score: Optional[float] = None,
        enable_early_termination: Optional[bool] = None,
        max_nodes: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword max_trials:
        :paramtype max_trials: int
        :keyword timeout:
        :paramtype timeout: str
        :keyword trial_timeout:
        :paramtype trial_timeout: str
        :keyword max_concurrent_trials:
        :paramtype max_concurrent_trials: int
        :keyword max_cores_per_trial:
        :paramtype max_cores_per_trial: int
        :keyword exit_score:
        :paramtype exit_score: float
        :keyword enable_early_termination:
        :paramtype enable_early_termination: bool
        :keyword max_nodes:
        :paramtype max_nodes: int
        """
        super(LimitSettings, self).__init__(**kwargs)
        self.max_trials = max_trials
        self.timeout = timeout
        self.trial_timeout = trial_timeout
        self.max_concurrent_trials = max_concurrent_trials
        self.max_cores_per_trial = max_cores_per_trial
        self.exit_score = exit_score
        self.enable_early_termination = enable_early_termination
        self.max_nodes = max_nodes


class LinkedADBWorkspaceMetadata(msrest.serialization.Model):
    """LinkedADBWorkspaceMetadata.

    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar region:
    :vartype region: str
    """

    _attribute_map = {
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'region': {'key': 'region', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        workspace_id: Optional[str] = None,
        region: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword region:
        :paramtype region: str
        """
        super(LinkedADBWorkspaceMetadata, self).__init__(**kwargs)
        self.workspace_id = workspace_id
        self.region = region


class LinkedPipelineInfo(msrest.serialization.Model):
    """LinkedPipelineInfo.

    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar module_node_id:
    :vartype module_node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar linked_pipeline_draft_id:
    :vartype linked_pipeline_draft_id: str
    :ivar linked_pipeline_run_id:
    :vartype linked_pipeline_run_id: str
    :ivar is_direct_link:
    :vartype is_direct_link: bool
    """

    _attribute_map = {
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'module_node_id': {'key': 'moduleNodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'linked_pipeline_draft_id': {'key': 'linkedPipelineDraftId', 'type': 'str'},
        'linked_pipeline_run_id': {'key': 'linkedPipelineRunId', 'type': 'str'},
        'is_direct_link': {'key': 'isDirectLink', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        module_node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        linked_pipeline_draft_id: Optional[str] = None,
        linked_pipeline_run_id: Optional[str] = None,
        is_direct_link: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword module_node_id:
        :paramtype module_node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword linked_pipeline_draft_id:
        :paramtype linked_pipeline_draft_id: str
        :keyword linked_pipeline_run_id:
        :paramtype linked_pipeline_run_id: str
        :keyword is_direct_link:
        :paramtype is_direct_link: bool
        """
        super(LinkedPipelineInfo, self).__init__(**kwargs)
        self.pipeline_type = pipeline_type
        self.module_node_id = module_node_id
        self.port_name = port_name
        self.linked_pipeline_draft_id = linked_pipeline_draft_id
        self.linked_pipeline_run_id = linked_pipeline_run_id
        self.is_direct_link = is_direct_link


class LoadFlowAsComponentRequest(msrest.serialization.Model):
    """LoadFlowAsComponentRequest.

    :ivar component_name:
    :vartype component_name: str
    :ivar component_version:
    :vartype component_version: str
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar is_deterministic:
    :vartype is_deterministic: bool
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar flow_definition_resource_id:
    :vartype flow_definition_resource_id: str
    :ivar flow_definition_data_store_name:
    :vartype flow_definition_data_store_name: str
    :ivar flow_definition_blob_path:
    :vartype flow_definition_blob_path: str
    :ivar flow_definition_data_uri:
    :vartype flow_definition_data_uri: str
    :ivar node_variant:
    :vartype node_variant: str
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar session_id:
    :vartype session_id: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    """

    _attribute_map = {
        'component_name': {'key': 'componentName', 'type': 'str'},
        'component_version': {'key': 'componentVersion', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'is_deterministic': {'key': 'isDeterministic', 'type': 'bool'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'flow_definition_resource_id': {'key': 'flowDefinitionResourceId', 'type': 'str'},
        'flow_definition_data_store_name': {'key': 'flowDefinitionDataStoreName', 'type': 'str'},
        'flow_definition_blob_path': {'key': 'flowDefinitionBlobPath', 'type': 'str'},
        'flow_definition_data_uri': {'key': 'flowDefinitionDataUri', 'type': 'str'},
        'node_variant': {'key': 'nodeVariant', 'type': 'str'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'session_id': {'key': 'sessionId', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        component_name: Optional[str] = None,
        component_version: Optional[str] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        is_deterministic: Optional[bool] = None,
        flow_definition_file_path: Optional[str] = None,
        flow_definition_resource_id: Optional[str] = None,
        flow_definition_data_store_name: Optional[str] = None,
        flow_definition_blob_path: Optional[str] = None,
        flow_definition_data_uri: Optional[str] = None,
        node_variant: Optional[str] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        runtime_name: Optional[str] = None,
        session_id: Optional[str] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword component_name:
        :paramtype component_name: str
        :keyword component_version:
        :paramtype component_version: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword is_deterministic:
        :paramtype is_deterministic: bool
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword flow_definition_resource_id:
        :paramtype flow_definition_resource_id: str
        :keyword flow_definition_data_store_name:
        :paramtype flow_definition_data_store_name: str
        :keyword flow_definition_blob_path:
        :paramtype flow_definition_blob_path: str
        :keyword flow_definition_data_uri:
        :paramtype flow_definition_data_uri: str
        :keyword node_variant:
        :paramtype node_variant: str
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword session_id:
        :paramtype session_id: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        """
        super(LoadFlowAsComponentRequest, self).__init__(**kwargs)
        self.component_name = component_name
        self.component_version = component_version
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.is_deterministic = is_deterministic
        self.flow_definition_file_path = flow_definition_file_path
        self.flow_definition_resource_id = flow_definition_resource_id
        self.flow_definition_data_store_name = flow_definition_data_store_name
        self.flow_definition_blob_path = flow_definition_blob_path
        self.flow_definition_data_uri = flow_definition_data_uri
        self.node_variant = node_variant
        self.inputs_mapping = inputs_mapping
        self.connections = connections
        self.environment_variables = environment_variables
        self.runtime_name = runtime_name
        self.session_id = session_id
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds


class LogRunTerminatedEventDto(msrest.serialization.Model):
    """LogRunTerminatedEventDto.

    :ivar next_action_interval_in_seconds:
    :vartype next_action_interval_in_seconds: int
    :ivar action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
     "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
    :vartype action_type: str or ~flow.models.ActionType
    :ivar last_checked_time:
    :vartype last_checked_time: ~datetime.datetime
    :ivar flow_run_created_time:
    :vartype flow_run_created_time: ~datetime.datetime
    """

    _attribute_map = {
        'next_action_interval_in_seconds': {'key': 'nextActionIntervalInSeconds', 'type': 'int'},
        'action_type': {'key': 'actionType', 'type': 'str'},
        'last_checked_time': {'key': 'lastCheckedTime', 'type': 'iso-8601'},
        'flow_run_created_time': {'key': 'flowRunCreatedTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        next_action_interval_in_seconds: Optional[int] = None,
        action_type: Optional[Union[str, "ActionType"]] = None,
        last_checked_time: Optional[datetime.datetime] = None,
        flow_run_created_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword next_action_interval_in_seconds:
        :paramtype next_action_interval_in_seconds: int
        :keyword action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
         "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
        :paramtype action_type: str or ~flow.models.ActionType
        :keyword last_checked_time:
        :paramtype last_checked_time: ~datetime.datetime
        :keyword flow_run_created_time:
        :paramtype flow_run_created_time: ~datetime.datetime
        """
        super(LogRunTerminatedEventDto, self).__init__(**kwargs)
        self.next_action_interval_in_seconds = next_action_interval_in_seconds
        self.action_type = action_type
        self.last_checked_time = last_checked_time
        self.flow_run_created_time = flow_run_created_time


class LongRunningOperationUriResponse(msrest.serialization.Model):
    """LongRunningOperationUriResponse.

    :ivar location:
    :vartype location: str
    :ivar operation_result:
    :vartype operation_result: str
    """

    _attribute_map = {
        'location': {'key': 'location', 'type': 'str'},
        'operation_result': {'key': 'operationResult', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        location: Optional[str] = None,
        operation_result: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword location:
        :paramtype location: str
        :keyword operation_result:
        :paramtype operation_result: str
        """
        super(LongRunningOperationUriResponse, self).__init__(**kwargs)
        self.location = location
        self.operation_result = operation_result


class LongRunningUpdateRegistryComponentRequest(msrest.serialization.Model):
    """LongRunningUpdateRegistryComponentRequest.

    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar registry_name:
    :vartype registry_name: str
    :ivar component_name:
    :vartype component_name: str
    :ivar component_version:
    :vartype component_version: str
    :ivar update_type: Possible values include: "EnableModule", "DisableModule",
     "UpdateDisplayName", "UpdateDescription", "UpdateTags".
    :vartype update_type: str or ~flow.models.LongRunningUpdateType
    """

    _attribute_map = {
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'component_name': {'key': 'componentName', 'type': 'str'},
        'component_version': {'key': 'componentVersion', 'type': 'str'},
        'update_type': {'key': 'updateType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        registry_name: Optional[str] = None,
        component_name: Optional[str] = None,
        component_version: Optional[str] = None,
        update_type: Optional[Union[str, "LongRunningUpdateType"]] = None,
        **kwargs
    ):
        """
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword component_name:
        :paramtype component_name: str
        :keyword component_version:
        :paramtype component_version: str
        :keyword update_type: Possible values include: "EnableModule", "DisableModule",
         "UpdateDisplayName", "UpdateDescription", "UpdateTags".
        :paramtype update_type: str or ~flow.models.LongRunningUpdateType
        """
        super(LongRunningUpdateRegistryComponentRequest, self).__init__(**kwargs)
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.registry_name = registry_name
        self.component_name = component_name
        self.component_version = component_version
        self.update_type = update_type


class ManagedCosmosDbConfig(msrest.serialization.Model):
    """ManagedCosmosDbConfig.

    :ivar ttl_in_seconds:
    :vartype ttl_in_seconds: int
    """

    _attribute_map = {
        'ttl_in_seconds': {'key': 'ttlInSeconds', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        ttl_in_seconds: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword ttl_in_seconds:
        :paramtype ttl_in_seconds: int
        """
        super(ManagedCosmosDbConfig, self).__init__(**kwargs)
        self.ttl_in_seconds = ttl_in_seconds


class ManagedServiceIdentity(msrest.serialization.Model):
    """ManagedServiceIdentity.

    All required parameters must be populated in order to send to Azure.

    :ivar type: Required. Possible values include: "SystemAssigned", "UserAssigned",
     "SystemAssignedUserAssigned", "None".
    :vartype type: str or ~flow.models.ManagedServiceIdentityType
    :ivar principal_id:
    :vartype principal_id: str
    :ivar tenant_id:
    :vartype tenant_id: str
    :ivar user_assigned_identities: Dictionary of :code:`<UserAssignedIdentity>`.
    :vartype user_assigned_identities: dict[str, ~flow.models.UserAssignedIdentity]
    """

    _validation = {
        'type': {'required': True},
    }

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'tenant_id': {'key': 'tenantId', 'type': 'str'},
        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserAssignedIdentity}'},
    }

    def __init__(
        self,
        *,
        type: Union[str, "ManagedServiceIdentityType"],
        principal_id: Optional[str] = None,
        tenant_id: Optional[str] = None,
        user_assigned_identities: Optional[Dict[str, "UserAssignedIdentity"]] = None,
        **kwargs
    ):
        """
        :keyword type: Required. Possible values include: "SystemAssigned", "UserAssigned",
         "SystemAssignedUserAssigned", "None".
        :paramtype type: str or ~flow.models.ManagedServiceIdentityType
        :keyword principal_id:
        :paramtype principal_id: str
        :keyword tenant_id:
        :paramtype tenant_id: str
        :keyword user_assigned_identities: Dictionary of :code:`<UserAssignedIdentity>`.
        :paramtype user_assigned_identities: dict[str, ~flow.models.UserAssignedIdentity]
        """
        super(ManagedServiceIdentity, self).__init__(**kwargs)
        self.type = type
        self.principal_id = principal_id
        self.tenant_id = tenant_id
        self.user_assigned_identities = user_assigned_identities


class MavenLibraryDto(msrest.serialization.Model):
    """MavenLibraryDto.

    :ivar coordinates:
    :vartype coordinates: str
    :ivar repo:
    :vartype repo: str
    :ivar exclusions:
    :vartype exclusions: list[str]
    """

    _attribute_map = {
        'coordinates': {'key': 'coordinates', 'type': 'str'},
        'repo': {'key': 'repo', 'type': 'str'},
        'exclusions': {'key': 'exclusions', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        coordinates: Optional[str] = None,
        repo: Optional[str] = None,
        exclusions: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword coordinates:
        :paramtype coordinates: str
        :keyword repo:
        :paramtype repo: str
        :keyword exclusions:
        :paramtype exclusions: list[str]
        """
        super(MavenLibraryDto, self).__init__(**kwargs)
        self.coordinates = coordinates
        self.repo = repo
        self.exclusions = exclusions


class MetricProperties(msrest.serialization.Model):
    """MetricProperties.

    :ivar ux_metric_type:
    :vartype ux_metric_type: str
    """

    _attribute_map = {
        'ux_metric_type': {'key': 'uxMetricType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        ux_metric_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword ux_metric_type:
        :paramtype ux_metric_type: str
        """
        super(MetricProperties, self).__init__(**kwargs)
        self.ux_metric_type = ux_metric_type


class MetricSchemaDto(msrest.serialization.Model):
    """MetricSchemaDto.

    :ivar num_properties:
    :vartype num_properties: int
    :ivar properties:
    :vartype properties: list[~flow.models.MetricSchemaPropertyDto]
    """

    _attribute_map = {
        'num_properties': {'key': 'numProperties', 'type': 'int'},
        'properties': {'key': 'properties', 'type': '[MetricSchemaPropertyDto]'},
    }

    def __init__(
        self,
        *,
        num_properties: Optional[int] = None,
        properties: Optional[List["MetricSchemaPropertyDto"]] = None,
        **kwargs
    ):
        """
        :keyword num_properties:
        :paramtype num_properties: int
        :keyword properties:
        :paramtype properties: list[~flow.models.MetricSchemaPropertyDto]
        """
        super(MetricSchemaDto, self).__init__(**kwargs)
        self.num_properties = num_properties
        self.properties = properties


class MetricSchemaPropertyDto(msrest.serialization.Model):
    """MetricSchemaPropertyDto.

    :ivar property_id:
    :vartype property_id: str
    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'property_id': {'key': 'propertyId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        property_id: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword property_id:
        :paramtype property_id: str
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: str
        """
        super(MetricSchemaPropertyDto, self).__init__(**kwargs)
        self.property_id = property_id
        self.name = name
        self.type = type


class MetricV2Dto(msrest.serialization.Model):
    """MetricV2Dto.

    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar name:
    :vartype name: str
    :ivar columns: This is a dictionary.
    :vartype columns: dict[str, str or ~flow.models.MetricValueType]
    :ivar properties:
    :vartype properties: ~flow.models.MetricProperties
    :ivar namespace:
    :vartype namespace: str
    :ivar standard_schema_id:
    :vartype standard_schema_id: str
    :ivar value:
    :vartype value: list[~flow.models.MetricV2Value]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'columns': {'key': 'columns', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': 'MetricProperties'},
        'namespace': {'key': 'namespace', 'type': 'str'},
        'standard_schema_id': {'key': 'standardSchemaId', 'type': 'str'},
        'value': {'key': 'value', 'type': '[MetricV2Value]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_container_id: Optional[str] = None,
        name: Optional[str] = None,
        columns: Optional[Dict[str, Union[str, "MetricValueType"]]] = None,
        properties: Optional["MetricProperties"] = None,
        namespace: Optional[str] = None,
        standard_schema_id: Optional[str] = None,
        value: Optional[List["MetricV2Value"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword name:
        :paramtype name: str
        :keyword columns: This is a dictionary.
        :paramtype columns: dict[str, str or ~flow.models.MetricValueType]
        :keyword properties:
        :paramtype properties: ~flow.models.MetricProperties
        :keyword namespace:
        :paramtype namespace: str
        :keyword standard_schema_id:
        :paramtype standard_schema_id: str
        :keyword value:
        :paramtype value: list[~flow.models.MetricV2Value]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(MetricV2Dto, self).__init__(**kwargs)
        self.data_container_id = data_container_id
        self.name = name
        self.columns = columns
        self.properties = properties
        self.namespace = namespace
        self.standard_schema_id = standard_schema_id
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class MetricV2Value(msrest.serialization.Model):
    """MetricV2Value.

    :ivar metric_id:
    :vartype metric_id: str
    :ivar created_utc:
    :vartype created_utc: ~datetime.datetime
    :ivar step:
    :vartype step: long
    :ivar data: Dictionary of :code:`<any>`.
    :vartype data: dict[str, any]
    :ivar sas_uri:
    :vartype sas_uri: str
    """

    _attribute_map = {
        'metric_id': {'key': 'metricId', 'type': 'str'},
        'created_utc': {'key': 'createdUtc', 'type': 'iso-8601'},
        'step': {'key': 'step', 'type': 'long'},
        'data': {'key': 'data', 'type': '{object}'},
        'sas_uri': {'key': 'sasUri', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        metric_id: Optional[str] = None,
        created_utc: Optional[datetime.datetime] = None,
        step: Optional[int] = None,
        data: Optional[Dict[str, Any]] = None,
        sas_uri: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword metric_id:
        :paramtype metric_id: str
        :keyword created_utc:
        :paramtype created_utc: ~datetime.datetime
        :keyword step:
        :paramtype step: long
        :keyword data: Dictionary of :code:`<any>`.
        :paramtype data: dict[str, any]
        :keyword sas_uri:
        :paramtype sas_uri: str
        """
        super(MetricV2Value, self).__init__(**kwargs)
        self.metric_id = metric_id
        self.created_utc = created_utc
        self.step = step
        self.data = data
        self.sas_uri = sas_uri


class MfeInternalAutologgerSettings(msrest.serialization.Model):
    """MfeInternalAutologgerSettings.

    :ivar mlflow_autologger: Possible values include: "Enabled", "Disabled".
    :vartype mlflow_autologger: str or ~flow.models.MfeInternalMLFlowAutologgerState
    """

    _attribute_map = {
        'mlflow_autologger': {'key': 'mlflowAutologger', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        mlflow_autologger: Optional[Union[str, "MfeInternalMLFlowAutologgerState"]] = None,
        **kwargs
    ):
        """
        :keyword mlflow_autologger: Possible values include: "Enabled", "Disabled".
        :paramtype mlflow_autologger: str or ~flow.models.MfeInternalMLFlowAutologgerState
        """
        super(MfeInternalAutologgerSettings, self).__init__(**kwargs)
        self.mlflow_autologger = mlflow_autologger


class MfeInternalIdentityConfiguration(msrest.serialization.Model):
    """MfeInternalIdentityConfiguration.

    :ivar identity_type: Possible values include: "Managed", "AMLToken", "UserIdentity".
    :vartype identity_type: str or ~flow.models.MfeInternalIdentityType
    """

    _attribute_map = {
        'identity_type': {'key': 'identityType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identity_type: Optional[Union[str, "MfeInternalIdentityType"]] = None,
        **kwargs
    ):
        """
        :keyword identity_type: Possible values include: "Managed", "AMLToken", "UserIdentity".
        :paramtype identity_type: str or ~flow.models.MfeInternalIdentityType
        """
        super(MfeInternalIdentityConfiguration, self).__init__(**kwargs)
        self.identity_type = identity_type


class MfeInternalNodes(msrest.serialization.Model):
    """MfeInternalNodes.

    :ivar nodes_value_type:  The only acceptable values to pass in are None and "All". The default
     value is None.
    :vartype nodes_value_type: str
    """

    _attribute_map = {
        'nodes_value_type': {'key': 'nodesValueType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        nodes_value_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword nodes_value_type:  The only acceptable values to pass in are None and "All". The
         default value is None.
        :paramtype nodes_value_type: str
        """
        super(MfeInternalNodes, self).__init__(**kwargs)
        self.nodes_value_type = nodes_value_type


class MfeInternalOutputData(msrest.serialization.Model):
    """MfeInternalOutputData.

    :ivar dataset_name:
    :vartype dataset_name: str
    :ivar datastore:
    :vartype datastore: str
    :ivar datapath:
    :vartype datapath: str
    :ivar mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
     "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~flow.models.DataBindingMode
    """

    _attribute_map = {
        'dataset_name': {'key': 'datasetName', 'type': 'str'},
        'datastore': {'key': 'datastore', 'type': 'str'},
        'datapath': {'key': 'datapath', 'type': 'str'},
        'mode': {'key': 'mode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        dataset_name: Optional[str] = None,
        datastore: Optional[str] = None,
        datapath: Optional[str] = None,
        mode: Optional[Union[str, "DataBindingMode"]] = None,
        **kwargs
    ):
        """
        :keyword dataset_name:
        :paramtype dataset_name: str
        :keyword datastore:
        :paramtype datastore: str
        :keyword datapath:
        :paramtype datapath: str
        :keyword mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
         "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~flow.models.DataBindingMode
        """
        super(MfeInternalOutputData, self).__init__(**kwargs)
        self.dataset_name = dataset_name
        self.datastore = datastore
        self.datapath = datapath
        self.mode = mode


class MfeInternalSecretConfiguration(msrest.serialization.Model):
    """MfeInternalSecretConfiguration.

    :ivar workspace_secret_name:
    :vartype workspace_secret_name: str
    :ivar uri:
    :vartype uri: str
    """

    _attribute_map = {
        'workspace_secret_name': {'key': 'workspaceSecretName', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        workspace_secret_name: Optional[str] = None,
        uri: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword workspace_secret_name:
        :paramtype workspace_secret_name: str
        :keyword uri:
        :paramtype uri: str
        """
        super(MfeInternalSecretConfiguration, self).__init__(**kwargs)
        self.workspace_secret_name = workspace_secret_name
        self.uri = uri


class MfeInternalUriReference(msrest.serialization.Model):
    """MfeInternalUriReference.

    :ivar file:
    :vartype file: str
    :ivar folder:
    :vartype folder: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'folder': {'key': 'folder', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        folder: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword folder:
        :paramtype folder: str
        """
        super(MfeInternalUriReference, self).__init__(**kwargs)
        self.file = file
        self.folder = folder


class MfeInternalV20211001ComponentJob(msrest.serialization.Model):
    """MfeInternalV20211001ComponentJob.

    :ivar compute_id:
    :vartype compute_id: str
    :ivar component_id:
    :vartype component_id: str
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.JobInput]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.JobOutput]
    :ivar overrides: Anything.
    :vartype overrides: any
    """

    _attribute_map = {
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'overrides': {'key': 'overrides', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        compute_id: Optional[str] = None,
        component_id: Optional[str] = None,
        inputs: Optional[Dict[str, "JobInput"]] = None,
        outputs: Optional[Dict[str, "JobOutput"]] = None,
        overrides: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword compute_id:
        :paramtype compute_id: str
        :keyword component_id:
        :paramtype component_id: str
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.JobInput]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.JobOutput]
        :keyword overrides: Anything.
        :paramtype overrides: any
        """
        super(MfeInternalV20211001ComponentJob, self).__init__(**kwargs)
        self.compute_id = compute_id
        self.component_id = component_id
        self.inputs = inputs
        self.outputs = outputs
        self.overrides = overrides


class MinMaxParameterRule(msrest.serialization.Model):
    """MinMaxParameterRule.

    :ivar min:
    :vartype min: float
    :ivar max:
    :vartype max: float
    """

    _attribute_map = {
        'min': {'key': 'min', 'type': 'float'},
        'max': {'key': 'max', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        min: Optional[float] = None,
        max: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword min:
        :paramtype min: float
        :keyword max:
        :paramtype max: float
        """
        super(MinMaxParameterRule, self).__init__(**kwargs)
        self.min = min
        self.max = max


class MlcComputeInfo(msrest.serialization.Model):
    """MlcComputeInfo.

    :ivar mlc_compute_type:
    :vartype mlc_compute_type: str
    """

    _attribute_map = {
        'mlc_compute_type': {'key': 'mlcComputeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        mlc_compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword mlc_compute_type:
        :paramtype mlc_compute_type: str
        """
        super(MlcComputeInfo, self).__init__(**kwargs)
        self.mlc_compute_type = mlc_compute_type


class ModelDto(msrest.serialization.Model):
    """ModelDto.

    :ivar feed_name:
    :vartype feed_name: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar aml_data_store_name:
    :vartype aml_data_store_name: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar id:
    :vartype id: str
    :ivar version:
    :vartype version: str
    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar arm_id:
    :vartype arm_id: str
    :ivar online_endpoint_yaml_str:
    :vartype online_endpoint_yaml_str: str
    """

    _attribute_map = {
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'aml_data_store_name': {'key': 'amlDataStoreName', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'arm_id': {'key': 'armId', 'type': 'str'},
        'online_endpoint_yaml_str': {'key': 'onlineEndpointYamlStr', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        feed_name: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        aml_data_store_name: Optional[str] = None,
        relative_path: Optional[str] = None,
        id: Optional[str] = None,
        version: Optional[str] = None,
        system_data: Optional["SystemData"] = None,
        arm_id: Optional[str] = None,
        online_endpoint_yaml_str: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword aml_data_store_name:
        :paramtype aml_data_store_name: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword id:
        :paramtype id: str
        :keyword version:
        :paramtype version: str
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword arm_id:
        :paramtype arm_id: str
        :keyword online_endpoint_yaml_str:
        :paramtype online_endpoint_yaml_str: str
        """
        super(ModelDto, self).__init__(**kwargs)
        self.feed_name = feed_name
        self.name = name
        self.description = description
        self.aml_data_store_name = aml_data_store_name
        self.relative_path = relative_path
        self.id = id
        self.version = version
        self.system_data = system_data
        self.arm_id = arm_id
        self.online_endpoint_yaml_str = online_endpoint_yaml_str


class ModelManagementErrorResponse(msrest.serialization.Model):
    """ModelManagementErrorResponse.

    :ivar code:
    :vartype code: str
    :ivar status_code:
    :vartype status_code: int
    :ivar message:
    :vartype message: str
    :ivar target:
    :vartype target: str
    :ivar details:
    :vartype details: list[~flow.models.InnerErrorDetails]
    :ivar correlation: Dictionary of :code:`<string>`.
    :vartype correlation: dict[str, str]
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'status_code': {'key': 'statusCode', 'type': 'int'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[InnerErrorDetails]'},
        'correlation': {'key': 'correlation', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        status_code: Optional[int] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        details: Optional[List["InnerErrorDetails"]] = None,
        correlation: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword code:
        :paramtype code: str
        :keyword status_code:
        :paramtype status_code: int
        :keyword message:
        :paramtype message: str
        :keyword target:
        :paramtype target: str
        :keyword details:
        :paramtype details: list[~flow.models.InnerErrorDetails]
        :keyword correlation: Dictionary of :code:`<string>`.
        :paramtype correlation: dict[str, str]
        """
        super(ModelManagementErrorResponse, self).__init__(**kwargs)
        self.code = code
        self.status_code = status_code
        self.message = message
        self.target = target
        self.details = details
        self.correlation = correlation


class ModifyPipelineJobScheduleDto(msrest.serialization.Model):
    """ModifyPipelineJobScheduleDto.

    :ivar pipeline_job_name:
    :vartype pipeline_job_name: str
    :ivar pipeline_job_runtime_settings:
    :vartype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
    :ivar display_name:
    :vartype display_name: str
    :ivar trigger_type: Possible values include: "Recurrence", "Cron".
    :vartype trigger_type: str or ~flow.models.TriggerType
    :ivar recurrence:
    :vartype recurrence: ~flow.models.Recurrence
    :ivar cron:
    :vartype cron: ~flow.models.Cron
    :ivar status: Possible values include: "Enabled", "Disabled".
    :vartype status: str or ~flow.models.ScheduleStatus
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'pipeline_job_name': {'key': 'pipelineJobName', 'type': 'str'},
        'pipeline_job_runtime_settings': {'key': 'pipelineJobRuntimeSettings', 'type': 'PipelineJobRuntimeBasicSettings'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'Recurrence'},
        'cron': {'key': 'cron', 'type': 'Cron'},
        'status': {'key': 'status', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        pipeline_job_name: Optional[str] = None,
        pipeline_job_runtime_settings: Optional["PipelineJobRuntimeBasicSettings"] = None,
        display_name: Optional[str] = None,
        trigger_type: Optional[Union[str, "TriggerType"]] = None,
        recurrence: Optional["Recurrence"] = None,
        cron: Optional["Cron"] = None,
        status: Optional[Union[str, "ScheduleStatus"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword pipeline_job_name:
        :paramtype pipeline_job_name: str
        :keyword pipeline_job_runtime_settings:
        :paramtype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
        :keyword display_name:
        :paramtype display_name: str
        :keyword trigger_type: Possible values include: "Recurrence", "Cron".
        :paramtype trigger_type: str or ~flow.models.TriggerType
        :keyword recurrence:
        :paramtype recurrence: ~flow.models.Recurrence
        :keyword cron:
        :paramtype cron: ~flow.models.Cron
        :keyword status: Possible values include: "Enabled", "Disabled".
        :paramtype status: str or ~flow.models.ScheduleStatus
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(ModifyPipelineJobScheduleDto, self).__init__(**kwargs)
        self.pipeline_job_name = pipeline_job_name
        self.pipeline_job_runtime_settings = pipeline_job_runtime_settings
        self.display_name = display_name
        self.trigger_type = trigger_type
        self.recurrence = recurrence
        self.cron = cron
        self.status = status
        self.description = description
        self.tags = tags
        self.properties = properties


class ModuleDto(msrest.serialization.Model):
    """ModuleDto.

    :ivar namespace:
    :vartype namespace: str
    :ivar tags: A set of tags.
    :vartype tags: list[str]
    :ivar display_name:
    :vartype display_name: str
    :ivar dict_tags: Dictionary of :code:`<string>`.
    :vartype dict_tags: dict[str, str]
    :ivar module_version_id:
    :vartype module_version_id: str
    :ivar feed_name:
    :vartype feed_name: str
    :ivar registry_name:
    :vartype registry_name: str
    :ivar module_name:
    :vartype module_name: str
    :ivar module_version:
    :vartype module_version: str
    :ivar description:
    :vartype description: str
    :ivar owner:
    :vartype owner: str
    :ivar job_type:
    :vartype job_type: str
    :ivar default_version:
    :vartype default_version: str
    :ivar family_id:
    :vartype family_id: str
    :ivar help_document:
    :vartype help_document: str
    :ivar codegen_by:
    :vartype codegen_by: str
    :ivar arm_id:
    :vartype arm_id: str
    :ivar module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous", "Step",
     "Draft", "Feed", "Registry", "SystemAutoCreated".
    :vartype module_scope: str or ~flow.models.ModuleScope
    :ivar module_entity:
    :vartype module_entity: ~flow.models.ModuleEntity
    :ivar input_types:
    :vartype input_types: list[str]
    :ivar output_types:
    :vartype output_types: list[str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar yaml_link:
    :vartype yaml_link: str
    :ivar yaml_link_with_commit_sha:
    :vartype yaml_link_with_commit_sha: str
    :ivar module_source_type: Possible values include: "Unknown", "Local", "GithubFile",
     "GithubFolder", "DevopsArtifactsZip", "SerializedModuleInfo".
    :vartype module_source_type: str or ~flow.models.ModuleSourceType
    :ivar registered_by:
    :vartype registered_by: str
    :ivar versions:
    :vartype versions: list[~flow.models.AzureMLModuleVersionDescriptor]
    :ivar is_default_module_version:
    :vartype is_default_module_version: bool
    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar system_meta:
    :vartype system_meta: ~flow.models.SystemMeta
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar entry:
    :vartype entry: str
    :ivar os_type:
    :vartype os_type: str
    :ivar require_gpu:
    :vartype require_gpu: bool
    :ivar module_python_interface:
    :vartype module_python_interface: ~flow.models.ModulePythonInterface
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar run_setting_parameters:
    :vartype run_setting_parameters: list[~flow.models.RunSettingParameter]
    :ivar supported_ui_input_data_delivery_modes: Dictionary of
     <components·9qwi7e·schemas·moduledto·properties·supporteduiinputdatadeliverymodes·additionalproperties>.
    :vartype supported_ui_input_data_delivery_modes: dict[str, list[str or
     ~flow.models.UIInputDataDeliveryMode]]
    :ivar output_setting_specs: Dictionary of :code:`<OutputSettingSpec>`.
    :vartype output_setting_specs: dict[str, ~flow.models.OutputSettingSpec]
    :ivar yaml_str:
    :vartype yaml_str: str
    """

    _attribute_map = {
        'namespace': {'key': 'namespace', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '[str]'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'dict_tags': {'key': 'dictTags', 'type': '{str}'},
        'module_version_id': {'key': 'moduleVersionId', 'type': 'str'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'module_name': {'key': 'moduleName', 'type': 'str'},
        'module_version': {'key': 'moduleVersion', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'owner': {'key': 'owner', 'type': 'str'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'default_version': {'key': 'defaultVersion', 'type': 'str'},
        'family_id': {'key': 'familyId', 'type': 'str'},
        'help_document': {'key': 'helpDocument', 'type': 'str'},
        'codegen_by': {'key': 'codegenBy', 'type': 'str'},
        'arm_id': {'key': 'armId', 'type': 'str'},
        'module_scope': {'key': 'moduleScope', 'type': 'str'},
        'module_entity': {'key': 'moduleEntity', 'type': 'ModuleEntity'},
        'input_types': {'key': 'inputTypes', 'type': '[str]'},
        'output_types': {'key': 'outputTypes', 'type': '[str]'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'yaml_link': {'key': 'yamlLink', 'type': 'str'},
        'yaml_link_with_commit_sha': {'key': 'yamlLinkWithCommitSha', 'type': 'str'},
        'module_source_type': {'key': 'moduleSourceType', 'type': 'str'},
        'registered_by': {'key': 'registeredBy', 'type': 'str'},
        'versions': {'key': 'versions', 'type': '[AzureMLModuleVersionDescriptor]'},
        'is_default_module_version': {'key': 'isDefaultModuleVersion', 'type': 'bool'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'system_meta': {'key': 'systemMeta', 'type': 'SystemMeta'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'entry': {'key': 'entry', 'type': 'str'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'require_gpu': {'key': 'requireGpu', 'type': 'bool'},
        'module_python_interface': {'key': 'modulePythonInterface', 'type': 'ModulePythonInterface'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'run_setting_parameters': {'key': 'runSettingParameters', 'type': '[RunSettingParameter]'},
        'supported_ui_input_data_delivery_modes': {'key': 'supportedUIInputDataDeliveryModes', 'type': '{[str]}'},
        'output_setting_specs': {'key': 'outputSettingSpecs', 'type': '{OutputSettingSpec}'},
        'yaml_str': {'key': 'yamlStr', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        namespace: Optional[str] = None,
        tags: Optional[List[str]] = None,
        display_name: Optional[str] = None,
        dict_tags: Optional[Dict[str, str]] = None,
        module_version_id: Optional[str] = None,
        feed_name: Optional[str] = None,
        registry_name: Optional[str] = None,
        module_name: Optional[str] = None,
        module_version: Optional[str] = None,
        description: Optional[str] = None,
        owner: Optional[str] = None,
        job_type: Optional[str] = None,
        default_version: Optional[str] = None,
        family_id: Optional[str] = None,
        help_document: Optional[str] = None,
        codegen_by: Optional[str] = None,
        arm_id: Optional[str] = None,
        module_scope: Optional[Union[str, "ModuleScope"]] = None,
        module_entity: Optional["ModuleEntity"] = None,
        input_types: Optional[List[str]] = None,
        output_types: Optional[List[str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        yaml_link: Optional[str] = None,
        yaml_link_with_commit_sha: Optional[str] = None,
        module_source_type: Optional[Union[str, "ModuleSourceType"]] = None,
        registered_by: Optional[str] = None,
        versions: Optional[List["AzureMLModuleVersionDescriptor"]] = None,
        is_default_module_version: Optional[bool] = None,
        system_data: Optional["SystemData"] = None,
        system_meta: Optional["SystemMeta"] = None,
        snapshot_id: Optional[str] = None,
        entry: Optional[str] = None,
        os_type: Optional[str] = None,
        require_gpu: Optional[bool] = None,
        module_python_interface: Optional["ModulePythonInterface"] = None,
        environment_asset_id: Optional[str] = None,
        run_setting_parameters: Optional[List["RunSettingParameter"]] = None,
        supported_ui_input_data_delivery_modes: Optional[Dict[str, List[Union[str, "UIInputDataDeliveryMode"]]]] = None,
        output_setting_specs: Optional[Dict[str, "OutputSettingSpec"]] = None,
        yaml_str: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword namespace:
        :paramtype namespace: str
        :keyword tags: A set of tags.
        :paramtype tags: list[str]
        :keyword display_name:
        :paramtype display_name: str
        :keyword dict_tags: Dictionary of :code:`<string>`.
        :paramtype dict_tags: dict[str, str]
        :keyword module_version_id:
        :paramtype module_version_id: str
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword module_name:
        :paramtype module_name: str
        :keyword module_version:
        :paramtype module_version: str
        :keyword description:
        :paramtype description: str
        :keyword owner:
        :paramtype owner: str
        :keyword job_type:
        :paramtype job_type: str
        :keyword default_version:
        :paramtype default_version: str
        :keyword family_id:
        :paramtype family_id: str
        :keyword help_document:
        :paramtype help_document: str
        :keyword codegen_by:
        :paramtype codegen_by: str
        :keyword arm_id:
        :paramtype arm_id: str
        :keyword module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous",
         "Step", "Draft", "Feed", "Registry", "SystemAutoCreated".
        :paramtype module_scope: str or ~flow.models.ModuleScope
        :keyword module_entity:
        :paramtype module_entity: ~flow.models.ModuleEntity
        :keyword input_types:
        :paramtype input_types: list[str]
        :keyword output_types:
        :paramtype output_types: list[str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword yaml_link:
        :paramtype yaml_link: str
        :keyword yaml_link_with_commit_sha:
        :paramtype yaml_link_with_commit_sha: str
        :keyword module_source_type: Possible values include: "Unknown", "Local", "GithubFile",
         "GithubFolder", "DevopsArtifactsZip", "SerializedModuleInfo".
        :paramtype module_source_type: str or ~flow.models.ModuleSourceType
        :keyword registered_by:
        :paramtype registered_by: str
        :keyword versions:
        :paramtype versions: list[~flow.models.AzureMLModuleVersionDescriptor]
        :keyword is_default_module_version:
        :paramtype is_default_module_version: bool
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword system_meta:
        :paramtype system_meta: ~flow.models.SystemMeta
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword entry:
        :paramtype entry: str
        :keyword os_type:
        :paramtype os_type: str
        :keyword require_gpu:
        :paramtype require_gpu: bool
        :keyword module_python_interface:
        :paramtype module_python_interface: ~flow.models.ModulePythonInterface
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword run_setting_parameters:
        :paramtype run_setting_parameters: list[~flow.models.RunSettingParameter]
        :keyword supported_ui_input_data_delivery_modes: Dictionary of
         <components·9qwi7e·schemas·moduledto·properties·supporteduiinputdatadeliverymodes·additionalproperties>.
        :paramtype supported_ui_input_data_delivery_modes: dict[str, list[str or
         ~flow.models.UIInputDataDeliveryMode]]
        :keyword output_setting_specs: Dictionary of :code:`<OutputSettingSpec>`.
        :paramtype output_setting_specs: dict[str, ~flow.models.OutputSettingSpec]
        :keyword yaml_str:
        :paramtype yaml_str: str
        """
        super(ModuleDto, self).__init__(**kwargs)
        self.namespace = namespace
        self.tags = tags
        self.display_name = display_name
        self.dict_tags = dict_tags
        self.module_version_id = module_version_id
        self.feed_name = feed_name
        self.registry_name = registry_name
        self.module_name = module_name
        self.module_version = module_version
        self.description = description
        self.owner = owner
        self.job_type = job_type
        self.default_version = default_version
        self.family_id = family_id
        self.help_document = help_document
        self.codegen_by = codegen_by
        self.arm_id = arm_id
        self.module_scope = module_scope
        self.module_entity = module_entity
        self.input_types = input_types
        self.output_types = output_types
        self.entity_status = entity_status
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.yaml_link = yaml_link
        self.yaml_link_with_commit_sha = yaml_link_with_commit_sha
        self.module_source_type = module_source_type
        self.registered_by = registered_by
        self.versions = versions
        self.is_default_module_version = is_default_module_version
        self.system_data = system_data
        self.system_meta = system_meta
        self.snapshot_id = snapshot_id
        self.entry = entry
        self.os_type = os_type
        self.require_gpu = require_gpu
        self.module_python_interface = module_python_interface
        self.environment_asset_id = environment_asset_id
        self.run_setting_parameters = run_setting_parameters
        self.supported_ui_input_data_delivery_modes = supported_ui_input_data_delivery_modes
        self.output_setting_specs = output_setting_specs
        self.yaml_str = yaml_str


class ModuleDtoWithErrors(msrest.serialization.Model):
    """ModuleDtoWithErrors.

    :ivar version_id_to_module_dto: This is a dictionary.
    :vartype version_id_to_module_dto: dict[str, ~flow.models.ModuleDto]
    :ivar name_and_version_to_module_dto:
    :vartype name_and_version_to_module_dto:
     list[~flow.models.KeyValuePairComponentNameMetaInfoModuleDto]
    :ivar version_id_to_error: This is a dictionary.
    :vartype version_id_to_error: dict[str, ~flow.models.ErrorResponse]
    :ivar name_and_version_to_error:
    :vartype name_and_version_to_error:
     list[~flow.models.KeyValuePairComponentNameMetaInfoErrorResponse]
    """

    _attribute_map = {
        'version_id_to_module_dto': {'key': 'versionIdToModuleDto', 'type': '{ModuleDto}'},
        'name_and_version_to_module_dto': {'key': 'nameAndVersionToModuleDto', 'type': '[KeyValuePairComponentNameMetaInfoModuleDto]'},
        'version_id_to_error': {'key': 'versionIdToError', 'type': '{ErrorResponse}'},
        'name_and_version_to_error': {'key': 'nameAndVersionToError', 'type': '[KeyValuePairComponentNameMetaInfoErrorResponse]'},
    }

    def __init__(
        self,
        *,
        version_id_to_module_dto: Optional[Dict[str, "ModuleDto"]] = None,
        name_and_version_to_module_dto: Optional[List["KeyValuePairComponentNameMetaInfoModuleDto"]] = None,
        version_id_to_error: Optional[Dict[str, "ErrorResponse"]] = None,
        name_and_version_to_error: Optional[List["KeyValuePairComponentNameMetaInfoErrorResponse"]] = None,
        **kwargs
    ):
        """
        :keyword version_id_to_module_dto: This is a dictionary.
        :paramtype version_id_to_module_dto: dict[str, ~flow.models.ModuleDto]
        :keyword name_and_version_to_module_dto:
        :paramtype name_and_version_to_module_dto:
         list[~flow.models.KeyValuePairComponentNameMetaInfoModuleDto]
        :keyword version_id_to_error: This is a dictionary.
        :paramtype version_id_to_error: dict[str, ~flow.models.ErrorResponse]
        :keyword name_and_version_to_error:
        :paramtype name_and_version_to_error:
         list[~flow.models.KeyValuePairComponentNameMetaInfoErrorResponse]
        """
        super(ModuleDtoWithErrors, self).__init__(**kwargs)
        self.version_id_to_module_dto = version_id_to_module_dto
        self.name_and_version_to_module_dto = name_and_version_to_module_dto
        self.version_id_to_error = version_id_to_error
        self.name_and_version_to_error = name_and_version_to_error


class ModuleDtoWithValidateStatus(msrest.serialization.Model):
    """ModuleDtoWithValidateStatus.

    :ivar existing_module_entity:
    :vartype existing_module_entity: ~flow.models.ModuleEntity
    :ivar status: Possible values include: "NewModule", "NewVersion", "Conflict", "ParseError",
     "ProcessRequestError".
    :vartype status: str or ~flow.models.ModuleInfoFromYamlStatusEnum
    :ivar status_details:
    :vartype status_details: str
    :ivar error_details:
    :vartype error_details: list[str]
    :ivar serialized_module_info:
    :vartype serialized_module_info: str
    :ivar namespace:
    :vartype namespace: str
    :ivar tags: A set of tags.
    :vartype tags: list[str]
    :ivar display_name:
    :vartype display_name: str
    :ivar dict_tags: Dictionary of :code:`<string>`.
    :vartype dict_tags: dict[str, str]
    :ivar module_version_id:
    :vartype module_version_id: str
    :ivar feed_name:
    :vartype feed_name: str
    :ivar registry_name:
    :vartype registry_name: str
    :ivar module_name:
    :vartype module_name: str
    :ivar module_version:
    :vartype module_version: str
    :ivar description:
    :vartype description: str
    :ivar owner:
    :vartype owner: str
    :ivar job_type:
    :vartype job_type: str
    :ivar default_version:
    :vartype default_version: str
    :ivar family_id:
    :vartype family_id: str
    :ivar help_document:
    :vartype help_document: str
    :ivar codegen_by:
    :vartype codegen_by: str
    :ivar arm_id:
    :vartype arm_id: str
    :ivar module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous", "Step",
     "Draft", "Feed", "Registry", "SystemAutoCreated".
    :vartype module_scope: str or ~flow.models.ModuleScope
    :ivar module_entity:
    :vartype module_entity: ~flow.models.ModuleEntity
    :ivar input_types:
    :vartype input_types: list[str]
    :ivar output_types:
    :vartype output_types: list[str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar yaml_link:
    :vartype yaml_link: str
    :ivar yaml_link_with_commit_sha:
    :vartype yaml_link_with_commit_sha: str
    :ivar module_source_type: Possible values include: "Unknown", "Local", "GithubFile",
     "GithubFolder", "DevopsArtifactsZip", "SerializedModuleInfo".
    :vartype module_source_type: str or ~flow.models.ModuleSourceType
    :ivar registered_by:
    :vartype registered_by: str
    :ivar versions:
    :vartype versions: list[~flow.models.AzureMLModuleVersionDescriptor]
    :ivar is_default_module_version:
    :vartype is_default_module_version: bool
    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar system_meta:
    :vartype system_meta: ~flow.models.SystemMeta
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar entry:
    :vartype entry: str
    :ivar os_type:
    :vartype os_type: str
    :ivar require_gpu:
    :vartype require_gpu: bool
    :ivar module_python_interface:
    :vartype module_python_interface: ~flow.models.ModulePythonInterface
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar run_setting_parameters:
    :vartype run_setting_parameters: list[~flow.models.RunSettingParameter]
    :ivar supported_ui_input_data_delivery_modes: Dictionary of
     <components·8o5zaj·schemas·moduledtowithvalidatestatus·properties·supporteduiinputdatadeliverymodes·additionalproperties>.
    :vartype supported_ui_input_data_delivery_modes: dict[str, list[str or
     ~flow.models.UIInputDataDeliveryMode]]
    :ivar output_setting_specs: Dictionary of :code:`<OutputSettingSpec>`.
    :vartype output_setting_specs: dict[str, ~flow.models.OutputSettingSpec]
    :ivar yaml_str:
    :vartype yaml_str: str
    """

    _attribute_map = {
        'existing_module_entity': {'key': 'existingModuleEntity', 'type': 'ModuleEntity'},
        'status': {'key': 'status', 'type': 'str'},
        'status_details': {'key': 'statusDetails', 'type': 'str'},
        'error_details': {'key': 'errorDetails', 'type': '[str]'},
        'serialized_module_info': {'key': 'serializedModuleInfo', 'type': 'str'},
        'namespace': {'key': 'namespace', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '[str]'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'dict_tags': {'key': 'dictTags', 'type': '{str}'},
        'module_version_id': {'key': 'moduleVersionId', 'type': 'str'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'module_name': {'key': 'moduleName', 'type': 'str'},
        'module_version': {'key': 'moduleVersion', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'owner': {'key': 'owner', 'type': 'str'},
        'job_type': {'key': 'jobType', 'type': 'str'},
        'default_version': {'key': 'defaultVersion', 'type': 'str'},
        'family_id': {'key': 'familyId', 'type': 'str'},
        'help_document': {'key': 'helpDocument', 'type': 'str'},
        'codegen_by': {'key': 'codegenBy', 'type': 'str'},
        'arm_id': {'key': 'armId', 'type': 'str'},
        'module_scope': {'key': 'moduleScope', 'type': 'str'},
        'module_entity': {'key': 'moduleEntity', 'type': 'ModuleEntity'},
        'input_types': {'key': 'inputTypes', 'type': '[str]'},
        'output_types': {'key': 'outputTypes', 'type': '[str]'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'yaml_link': {'key': 'yamlLink', 'type': 'str'},
        'yaml_link_with_commit_sha': {'key': 'yamlLinkWithCommitSha', 'type': 'str'},
        'module_source_type': {'key': 'moduleSourceType', 'type': 'str'},
        'registered_by': {'key': 'registeredBy', 'type': 'str'},
        'versions': {'key': 'versions', 'type': '[AzureMLModuleVersionDescriptor]'},
        'is_default_module_version': {'key': 'isDefaultModuleVersion', 'type': 'bool'},
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'system_meta': {'key': 'systemMeta', 'type': 'SystemMeta'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'entry': {'key': 'entry', 'type': 'str'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'require_gpu': {'key': 'requireGpu', 'type': 'bool'},
        'module_python_interface': {'key': 'modulePythonInterface', 'type': 'ModulePythonInterface'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'run_setting_parameters': {'key': 'runSettingParameters', 'type': '[RunSettingParameter]'},
        'supported_ui_input_data_delivery_modes': {'key': 'supportedUIInputDataDeliveryModes', 'type': '{[str]}'},
        'output_setting_specs': {'key': 'outputSettingSpecs', 'type': '{OutputSettingSpec}'},
        'yaml_str': {'key': 'yamlStr', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        existing_module_entity: Optional["ModuleEntity"] = None,
        status: Optional[Union[str, "ModuleInfoFromYamlStatusEnum"]] = None,
        status_details: Optional[str] = None,
        error_details: Optional[List[str]] = None,
        serialized_module_info: Optional[str] = None,
        namespace: Optional[str] = None,
        tags: Optional[List[str]] = None,
        display_name: Optional[str] = None,
        dict_tags: Optional[Dict[str, str]] = None,
        module_version_id: Optional[str] = None,
        feed_name: Optional[str] = None,
        registry_name: Optional[str] = None,
        module_name: Optional[str] = None,
        module_version: Optional[str] = None,
        description: Optional[str] = None,
        owner: Optional[str] = None,
        job_type: Optional[str] = None,
        default_version: Optional[str] = None,
        family_id: Optional[str] = None,
        help_document: Optional[str] = None,
        codegen_by: Optional[str] = None,
        arm_id: Optional[str] = None,
        module_scope: Optional[Union[str, "ModuleScope"]] = None,
        module_entity: Optional["ModuleEntity"] = None,
        input_types: Optional[List[str]] = None,
        output_types: Optional[List[str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        yaml_link: Optional[str] = None,
        yaml_link_with_commit_sha: Optional[str] = None,
        module_source_type: Optional[Union[str, "ModuleSourceType"]] = None,
        registered_by: Optional[str] = None,
        versions: Optional[List["AzureMLModuleVersionDescriptor"]] = None,
        is_default_module_version: Optional[bool] = None,
        system_data: Optional["SystemData"] = None,
        system_meta: Optional["SystemMeta"] = None,
        snapshot_id: Optional[str] = None,
        entry: Optional[str] = None,
        os_type: Optional[str] = None,
        require_gpu: Optional[bool] = None,
        module_python_interface: Optional["ModulePythonInterface"] = None,
        environment_asset_id: Optional[str] = None,
        run_setting_parameters: Optional[List["RunSettingParameter"]] = None,
        supported_ui_input_data_delivery_modes: Optional[Dict[str, List[Union[str, "UIInputDataDeliveryMode"]]]] = None,
        output_setting_specs: Optional[Dict[str, "OutputSettingSpec"]] = None,
        yaml_str: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword existing_module_entity:
        :paramtype existing_module_entity: ~flow.models.ModuleEntity
        :keyword status: Possible values include: "NewModule", "NewVersion", "Conflict", "ParseError",
         "ProcessRequestError".
        :paramtype status: str or ~flow.models.ModuleInfoFromYamlStatusEnum
        :keyword status_details:
        :paramtype status_details: str
        :keyword error_details:
        :paramtype error_details: list[str]
        :keyword serialized_module_info:
        :paramtype serialized_module_info: str
        :keyword namespace:
        :paramtype namespace: str
        :keyword tags: A set of tags.
        :paramtype tags: list[str]
        :keyword display_name:
        :paramtype display_name: str
        :keyword dict_tags: Dictionary of :code:`<string>`.
        :paramtype dict_tags: dict[str, str]
        :keyword module_version_id:
        :paramtype module_version_id: str
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword module_name:
        :paramtype module_name: str
        :keyword module_version:
        :paramtype module_version: str
        :keyword description:
        :paramtype description: str
        :keyword owner:
        :paramtype owner: str
        :keyword job_type:
        :paramtype job_type: str
        :keyword default_version:
        :paramtype default_version: str
        :keyword family_id:
        :paramtype family_id: str
        :keyword help_document:
        :paramtype help_document: str
        :keyword codegen_by:
        :paramtype codegen_by: str
        :keyword arm_id:
        :paramtype arm_id: str
        :keyword module_scope: Possible values include: "All", "Global", "Workspace", "Anonymous",
         "Step", "Draft", "Feed", "Registry", "SystemAutoCreated".
        :paramtype module_scope: str or ~flow.models.ModuleScope
        :keyword module_entity:
        :paramtype module_entity: ~flow.models.ModuleEntity
        :keyword input_types:
        :paramtype input_types: list[str]
        :keyword output_types:
        :paramtype output_types: list[str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword yaml_link:
        :paramtype yaml_link: str
        :keyword yaml_link_with_commit_sha:
        :paramtype yaml_link_with_commit_sha: str
        :keyword module_source_type: Possible values include: "Unknown", "Local", "GithubFile",
         "GithubFolder", "DevopsArtifactsZip", "SerializedModuleInfo".
        :paramtype module_source_type: str or ~flow.models.ModuleSourceType
        :keyword registered_by:
        :paramtype registered_by: str
        :keyword versions:
        :paramtype versions: list[~flow.models.AzureMLModuleVersionDescriptor]
        :keyword is_default_module_version:
        :paramtype is_default_module_version: bool
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword system_meta:
        :paramtype system_meta: ~flow.models.SystemMeta
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword entry:
        :paramtype entry: str
        :keyword os_type:
        :paramtype os_type: str
        :keyword require_gpu:
        :paramtype require_gpu: bool
        :keyword module_python_interface:
        :paramtype module_python_interface: ~flow.models.ModulePythonInterface
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword run_setting_parameters:
        :paramtype run_setting_parameters: list[~flow.models.RunSettingParameter]
        :keyword supported_ui_input_data_delivery_modes: Dictionary of
         <components·8o5zaj·schemas·moduledtowithvalidatestatus·properties·supporteduiinputdatadeliverymodes·additionalproperties>.
        :paramtype supported_ui_input_data_delivery_modes: dict[str, list[str or
         ~flow.models.UIInputDataDeliveryMode]]
        :keyword output_setting_specs: Dictionary of :code:`<OutputSettingSpec>`.
        :paramtype output_setting_specs: dict[str, ~flow.models.OutputSettingSpec]
        :keyword yaml_str:
        :paramtype yaml_str: str
        """
        super(ModuleDtoWithValidateStatus, self).__init__(**kwargs)
        self.existing_module_entity = existing_module_entity
        self.status = status
        self.status_details = status_details
        self.error_details = error_details
        self.serialized_module_info = serialized_module_info
        self.namespace = namespace
        self.tags = tags
        self.display_name = display_name
        self.dict_tags = dict_tags
        self.module_version_id = module_version_id
        self.feed_name = feed_name
        self.registry_name = registry_name
        self.module_name = module_name
        self.module_version = module_version
        self.description = description
        self.owner = owner
        self.job_type = job_type
        self.default_version = default_version
        self.family_id = family_id
        self.help_document = help_document
        self.codegen_by = codegen_by
        self.arm_id = arm_id
        self.module_scope = module_scope
        self.module_entity = module_entity
        self.input_types = input_types
        self.output_types = output_types
        self.entity_status = entity_status
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.yaml_link = yaml_link
        self.yaml_link_with_commit_sha = yaml_link_with_commit_sha
        self.module_source_type = module_source_type
        self.registered_by = registered_by
        self.versions = versions
        self.is_default_module_version = is_default_module_version
        self.system_data = system_data
        self.system_meta = system_meta
        self.snapshot_id = snapshot_id
        self.entry = entry
        self.os_type = os_type
        self.require_gpu = require_gpu
        self.module_python_interface = module_python_interface
        self.environment_asset_id = environment_asset_id
        self.run_setting_parameters = run_setting_parameters
        self.supported_ui_input_data_delivery_modes = supported_ui_input_data_delivery_modes
        self.output_setting_specs = output_setting_specs
        self.yaml_str = yaml_str


class ModuleEntity(msrest.serialization.Model):
    """ModuleEntity.

    :ivar display_name:
    :vartype display_name: str
    :ivar module_execution_type:
    :vartype module_execution_type: str
    :ivar module_type: Possible values include: "None", "BatchInferencing".
    :vartype module_type: str or ~flow.models.ModuleType
    :ivar module_type_version:
    :vartype module_type_version: str
    :ivar upload_state: Possible values include: "Uploading", "Completed", "Canceled", "Failed".
    :vartype upload_state: str or ~flow.models.UploadState
    :ivar is_deterministic:
    :vartype is_deterministic: bool
    :ivar structured_interface:
    :vartype structured_interface: ~flow.models.StructuredInterface
    :ivar data_location:
    :vartype data_location: ~flow.models.DataLocation
    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar created_by:
    :vartype created_by: ~flow.models.CreatedBy
    :ivar last_updated_by:
    :vartype last_updated_by: ~flow.models.CreatedBy
    :ivar runconfig:
    :vartype runconfig: str
    :ivar cloud_settings:
    :vartype cloud_settings: ~flow.models.CloudSettings
    :ivar category:
    :vartype category: str
    :ivar step_type:
    :vartype step_type: str
    :ivar stage:
    :vartype stage: str
    :ivar name:
    :vartype name: str
    :ivar hash:
    :vartype hash: str
    :ivar description:
    :vartype description: str
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'display_name': {'key': 'displayName', 'type': 'str'},
        'module_execution_type': {'key': 'moduleExecutionType', 'type': 'str'},
        'module_type': {'key': 'moduleType', 'type': 'str'},
        'module_type_version': {'key': 'moduleTypeVersion', 'type': 'str'},
        'upload_state': {'key': 'uploadState', 'type': 'str'},
        'is_deterministic': {'key': 'isDeterministic', 'type': 'bool'},
        'structured_interface': {'key': 'structuredInterface', 'type': 'StructuredInterface'},
        'data_location': {'key': 'dataLocation', 'type': 'DataLocation'},
        'identifier_hash': {'key': 'identifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'identifierHashV2', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'created_by': {'key': 'createdBy', 'type': 'CreatedBy'},
        'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'CreatedBy'},
        'runconfig': {'key': 'runconfig', 'type': 'str'},
        'cloud_settings': {'key': 'cloudSettings', 'type': 'CloudSettings'},
        'category': {'key': 'category', 'type': 'str'},
        'step_type': {'key': 'stepType', 'type': 'str'},
        'stage': {'key': 'stage', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'hash': {'key': 'hash', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        display_name: Optional[str] = None,
        module_execution_type: Optional[str] = None,
        module_type: Optional[Union[str, "ModuleType"]] = None,
        module_type_version: Optional[str] = None,
        upload_state: Optional[Union[str, "UploadState"]] = None,
        is_deterministic: Optional[bool] = None,
        structured_interface: Optional["StructuredInterface"] = None,
        data_location: Optional["DataLocation"] = None,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        created_by: Optional["CreatedBy"] = None,
        last_updated_by: Optional["CreatedBy"] = None,
        runconfig: Optional[str] = None,
        cloud_settings: Optional["CloudSettings"] = None,
        category: Optional[str] = None,
        step_type: Optional[str] = None,
        stage: Optional[str] = None,
        name: Optional[str] = None,
        hash: Optional[str] = None,
        description: Optional[str] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword display_name:
        :paramtype display_name: str
        :keyword module_execution_type:
        :paramtype module_execution_type: str
        :keyword module_type: Possible values include: "None", "BatchInferencing".
        :paramtype module_type: str or ~flow.models.ModuleType
        :keyword module_type_version:
        :paramtype module_type_version: str
        :keyword upload_state: Possible values include: "Uploading", "Completed", "Canceled", "Failed".
        :paramtype upload_state: str or ~flow.models.UploadState
        :keyword is_deterministic:
        :paramtype is_deterministic: bool
        :keyword structured_interface:
        :paramtype structured_interface: ~flow.models.StructuredInterface
        :keyword data_location:
        :paramtype data_location: ~flow.models.DataLocation
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword created_by:
        :paramtype created_by: ~flow.models.CreatedBy
        :keyword last_updated_by:
        :paramtype last_updated_by: ~flow.models.CreatedBy
        :keyword runconfig:
        :paramtype runconfig: str
        :keyword cloud_settings:
        :paramtype cloud_settings: ~flow.models.CloudSettings
        :keyword category:
        :paramtype category: str
        :keyword step_type:
        :paramtype step_type: str
        :keyword stage:
        :paramtype stage: str
        :keyword name:
        :paramtype name: str
        :keyword hash:
        :paramtype hash: str
        :keyword description:
        :paramtype description: str
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(ModuleEntity, self).__init__(**kwargs)
        self.display_name = display_name
        self.module_execution_type = module_execution_type
        self.module_type = module_type
        self.module_type_version = module_type_version
        self.upload_state = upload_state
        self.is_deterministic = is_deterministic
        self.structured_interface = structured_interface
        self.data_location = data_location
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2
        self.tags = tags
        self.properties = properties
        self.created_by = created_by
        self.last_updated_by = last_updated_by
        self.runconfig = runconfig
        self.cloud_settings = cloud_settings
        self.category = category
        self.step_type = step_type
        self.stage = stage
        self.name = name
        self.hash = hash
        self.description = description
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class ModulePythonInterface(msrest.serialization.Model):
    """ModulePythonInterface.

    :ivar inputs:
    :vartype inputs: list[~flow.models.PythonInterfaceMapping]
    :ivar outputs:
    :vartype outputs: list[~flow.models.PythonInterfaceMapping]
    :ivar parameters:
    :vartype parameters: list[~flow.models.PythonInterfaceMapping]
    """

    _attribute_map = {
        'inputs': {'key': 'inputs', 'type': '[PythonInterfaceMapping]'},
        'outputs': {'key': 'outputs', 'type': '[PythonInterfaceMapping]'},
        'parameters': {'key': 'parameters', 'type': '[PythonInterfaceMapping]'},
    }

    def __init__(
        self,
        *,
        inputs: Optional[List["PythonInterfaceMapping"]] = None,
        outputs: Optional[List["PythonInterfaceMapping"]] = None,
        parameters: Optional[List["PythonInterfaceMapping"]] = None,
        **kwargs
    ):
        """
        :keyword inputs:
        :paramtype inputs: list[~flow.models.PythonInterfaceMapping]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.PythonInterfaceMapping]
        :keyword parameters:
        :paramtype parameters: list[~flow.models.PythonInterfaceMapping]
        """
        super(ModulePythonInterface, self).__init__(**kwargs)
        self.inputs = inputs
        self.outputs = outputs
        self.parameters = parameters


class MpiConfiguration(msrest.serialization.Model):
    """MpiConfiguration.

    :ivar process_count_per_node:
    :vartype process_count_per_node: int
    """

    _attribute_map = {
        'process_count_per_node': {'key': 'processCountPerNode', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        process_count_per_node: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword process_count_per_node:
        :paramtype process_count_per_node: int
        """
        super(MpiConfiguration, self).__init__(**kwargs)
        self.process_count_per_node = process_count_per_node


class NCrossValidations(msrest.serialization.Model):
    """NCrossValidations.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.NCrossValidationMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "NCrossValidationMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.NCrossValidationMode
        :keyword value:
        :paramtype value: int
        """
        super(NCrossValidations, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class Node(msrest.serialization.Model):
    """Node.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
     "csharp", "typescript".
    :vartype type: str or ~flow.models.ToolType
    :ivar source:
    :vartype source: ~flow.models.NodeSource
    :ivar inputs: Dictionary of :code:`<any>`.
    :vartype inputs: dict[str, any]
    :ivar tool:
    :vartype tool: str
    :ivar reduce:
    :vartype reduce: bool
    :ivar activate:
    :vartype activate: ~flow.models.Activate
    :ivar use_variants:
    :vartype use_variants: bool
    :ivar comment:
    :vartype comment: str
    :ivar api:
    :vartype api: str
    :ivar provider:
    :vartype provider: str
    :ivar connection:
    :vartype connection: str
    :ivar module:
    :vartype module: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'source': {'key': 'source', 'type': 'NodeSource'},
        'inputs': {'key': 'inputs', 'type': '{object}'},
        'tool': {'key': 'tool', 'type': 'str'},
        'reduce': {'key': 'reduce', 'type': 'bool'},
        'activate': {'key': 'activate', 'type': 'Activate'},
        'use_variants': {'key': 'use_variants', 'type': 'bool'},
        'comment': {'key': 'comment', 'type': 'str'},
        'api': {'key': 'api', 'type': 'str'},
        'provider': {'key': 'provider', 'type': 'str'},
        'connection': {'key': 'connection', 'type': 'str'},
        'module': {'key': 'module', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ToolType"]] = None,
        source: Optional["NodeSource"] = None,
        inputs: Optional[Dict[str, Any]] = None,
        tool: Optional[str] = None,
        reduce: Optional[bool] = None,
        activate: Optional["Activate"] = None,
        use_variants: Optional[bool] = None,
        comment: Optional[str] = None,
        api: Optional[str] = None,
        provider: Optional[str] = None,
        connection: Optional[str] = None,
        module: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
         "csharp", "typescript".
        :paramtype type: str or ~flow.models.ToolType
        :keyword source:
        :paramtype source: ~flow.models.NodeSource
        :keyword inputs: Dictionary of :code:`<any>`.
        :paramtype inputs: dict[str, any]
        :keyword tool:
        :paramtype tool: str
        :keyword reduce:
        :paramtype reduce: bool
        :keyword activate:
        :paramtype activate: ~flow.models.Activate
        :keyword use_variants:
        :paramtype use_variants: bool
        :keyword comment:
        :paramtype comment: str
        :keyword api:
        :paramtype api: str
        :keyword provider:
        :paramtype provider: str
        :keyword connection:
        :paramtype connection: str
        :keyword module:
        :paramtype module: str
        """
        super(Node, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.source = source
        self.inputs = inputs
        self.tool = tool
        self.reduce = reduce
        self.activate = activate
        self.use_variants = use_variants
        self.comment = comment
        self.api = api
        self.provider = provider
        self.connection = connection
        self.module = module


class NodeInputPort(msrest.serialization.Model):
    """NodeInputPort.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar data_types_ids:
    :vartype data_types_ids: list[str]
    :ivar is_optional:
    :vartype is_optional: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'data_types_ids': {'key': 'dataTypesIds', 'type': '[str]'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        data_types_ids: Optional[List[str]] = None,
        is_optional: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword data_types_ids:
        :paramtype data_types_ids: list[str]
        :keyword is_optional:
        :paramtype is_optional: bool
        """
        super(NodeInputPort, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.data_types_ids = data_types_ids
        self.is_optional = is_optional


class NodeLayout(msrest.serialization.Model):
    """NodeLayout.

    :ivar x:
    :vartype x: float
    :ivar y:
    :vartype y: float
    :ivar width:
    :vartype width: float
    :ivar height:
    :vartype height: float
    :ivar extended_data:
    :vartype extended_data: str
    """

    _attribute_map = {
        'x': {'key': 'x', 'type': 'float'},
        'y': {'key': 'y', 'type': 'float'},
        'width': {'key': 'width', 'type': 'float'},
        'height': {'key': 'height', 'type': 'float'},
        'extended_data': {'key': 'extendedData', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        x: Optional[float] = None,
        y: Optional[float] = None,
        width: Optional[float] = None,
        height: Optional[float] = None,
        extended_data: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword x:
        :paramtype x: float
        :keyword y:
        :paramtype y: float
        :keyword width:
        :paramtype width: float
        :keyword height:
        :paramtype height: float
        :keyword extended_data:
        :paramtype extended_data: str
        """
        super(NodeLayout, self).__init__(**kwargs)
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.extended_data = extended_data


class NodeOutputPort(msrest.serialization.Model):
    """NodeOutputPort.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar data_type_id:
    :vartype data_type_id: str
    :ivar pass_through_input_name:
    :vartype pass_through_input_name: str
    :ivar early_available:
    :vartype early_available: bool
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
        'pass_through_input_name': {'key': 'passThroughInputName', 'type': 'str'},
        'early_available': {'key': 'EarlyAvailable', 'type': 'bool'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        data_type_id: Optional[str] = None,
        pass_through_input_name: Optional[str] = None,
        early_available: Optional[bool] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword data_type_id:
        :paramtype data_type_id: str
        :keyword pass_through_input_name:
        :paramtype pass_through_input_name: str
        :keyword early_available:
        :paramtype early_available: bool
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        """
        super(NodeOutputPort, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.data_type_id = data_type_id
        self.pass_through_input_name = pass_through_input_name
        self.early_available = early_available
        self.data_store_mode = data_store_mode


class NodePortInterface(msrest.serialization.Model):
    """NodePortInterface.

    :ivar inputs:
    :vartype inputs: list[~flow.models.NodeInputPort]
    :ivar outputs:
    :vartype outputs: list[~flow.models.NodeOutputPort]
    :ivar control_outputs:
    :vartype control_outputs: list[~flow.models.ControlOutput]
    """

    _attribute_map = {
        'inputs': {'key': 'inputs', 'type': '[NodeInputPort]'},
        'outputs': {'key': 'outputs', 'type': '[NodeOutputPort]'},
        'control_outputs': {'key': 'controlOutputs', 'type': '[ControlOutput]'},
    }

    def __init__(
        self,
        *,
        inputs: Optional[List["NodeInputPort"]] = None,
        outputs: Optional[List["NodeOutputPort"]] = None,
        control_outputs: Optional[List["ControlOutput"]] = None,
        **kwargs
    ):
        """
        :keyword inputs:
        :paramtype inputs: list[~flow.models.NodeInputPort]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.NodeOutputPort]
        :keyword control_outputs:
        :paramtype control_outputs: list[~flow.models.ControlOutput]
        """
        super(NodePortInterface, self).__init__(**kwargs)
        self.inputs = inputs
        self.outputs = outputs
        self.control_outputs = control_outputs


class Nodes(msrest.serialization.Model):
    """Nodes.

    All required parameters must be populated in order to send to Azure.

    :ivar nodes_value_type: Required. Possible values include: "All", "Custom".
    :vartype nodes_value_type: str or ~flow.models.NodesValueType
    :ivar values:
    :vartype values: list[int]
    """

    _validation = {
        'nodes_value_type': {'required': True},
    }

    _attribute_map = {
        'nodes_value_type': {'key': 'nodes_value_type', 'type': 'str'},
        'values': {'key': 'values', 'type': '[int]'},
    }

    def __init__(
        self,
        *,
        nodes_value_type: Union[str, "NodesValueType"],
        values: Optional[List[int]] = None,
        **kwargs
    ):
        """
        :keyword nodes_value_type: Required. Possible values include: "All", "Custom".
        :paramtype nodes_value_type: str or ~flow.models.NodesValueType
        :keyword values:
        :paramtype values: list[int]
        """
        super(Nodes, self).__init__(**kwargs)
        self.nodes_value_type = nodes_value_type
        self.values = values


class NodeSource(msrest.serialization.Model):
    """NodeSource.

    :ivar type:
    :vartype type: str
    :ivar tool:
    :vartype tool: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'tool': {'key': 'tool', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[str] = None,
        tool: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type:
        :paramtype type: str
        :keyword tool:
        :paramtype tool: str
        :keyword path:
        :paramtype path: str
        """
        super(NodeSource, self).__init__(**kwargs)
        self.type = type
        self.tool = tool
        self.path = path


class NodeTelemetryMetaInfo(msrest.serialization.Model):
    """NodeTelemetryMetaInfo.

    :ivar pipeline_run_id:
    :vartype pipeline_run_id: str
    :ivar node_id:
    :vartype node_id: str
    :ivar version_id:
    :vartype version_id: str
    :ivar node_type:
    :vartype node_type: str
    :ivar node_source:
    :vartype node_source: str
    :ivar is_anonymous:
    :vartype is_anonymous: bool
    :ivar is_pipeline_component:
    :vartype is_pipeline_component: bool
    """

    _attribute_map = {
        'pipeline_run_id': {'key': 'pipelineRunId', 'type': 'str'},
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'version_id': {'key': 'versionId', 'type': 'str'},
        'node_type': {'key': 'nodeType', 'type': 'str'},
        'node_source': {'key': 'nodeSource', 'type': 'str'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'is_pipeline_component': {'key': 'isPipelineComponent', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        pipeline_run_id: Optional[str] = None,
        node_id: Optional[str] = None,
        version_id: Optional[str] = None,
        node_type: Optional[str] = None,
        node_source: Optional[str] = None,
        is_anonymous: Optional[bool] = None,
        is_pipeline_component: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword pipeline_run_id:
        :paramtype pipeline_run_id: str
        :keyword node_id:
        :paramtype node_id: str
        :keyword version_id:
        :paramtype version_id: str
        :keyword node_type:
        :paramtype node_type: str
        :keyword node_source:
        :paramtype node_source: str
        :keyword is_anonymous:
        :paramtype is_anonymous: bool
        :keyword is_pipeline_component:
        :paramtype is_pipeline_component: bool
        """
        super(NodeTelemetryMetaInfo, self).__init__(**kwargs)
        self.pipeline_run_id = pipeline_run_id
        self.node_id = node_id
        self.version_id = version_id
        self.node_type = node_type
        self.node_source = node_source
        self.is_anonymous = is_anonymous
        self.is_pipeline_component = is_pipeline_component


class NodeVariant(msrest.serialization.Model):
    """NodeVariant.

    :ivar variants: This is a dictionary.
    :vartype variants: dict[str, ~flow.models.VariantNode]
    :ivar default_variant_id:
    :vartype default_variant_id: str
    """

    _attribute_map = {
        'variants': {'key': 'variants', 'type': '{VariantNode}'},
        'default_variant_id': {'key': 'defaultVariantId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        variants: Optional[Dict[str, "VariantNode"]] = None,
        default_variant_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword variants: This is a dictionary.
        :paramtype variants: dict[str, ~flow.models.VariantNode]
        :keyword default_variant_id:
        :paramtype default_variant_id: str
        """
        super(NodeVariant, self).__init__(**kwargs)
        self.variants = variants
        self.default_variant_id = default_variant_id


class NoteBookTaskDto(msrest.serialization.Model):
    """NoteBookTaskDto.

    :ivar notebook_path:
    :vartype notebook_path: str
    :ivar base_parameters: Dictionary of :code:`<string>`.
    :vartype base_parameters: dict[str, str]
    """

    _attribute_map = {
        'notebook_path': {'key': 'notebook_path', 'type': 'str'},
        'base_parameters': {'key': 'base_parameters', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        notebook_path: Optional[str] = None,
        base_parameters: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword notebook_path:
        :paramtype notebook_path: str
        :keyword base_parameters: Dictionary of :code:`<string>`.
        :paramtype base_parameters: dict[str, str]
        """
        super(NoteBookTaskDto, self).__init__(**kwargs)
        self.notebook_path = notebook_path
        self.base_parameters = base_parameters


class NotificationSetting(msrest.serialization.Model):
    """NotificationSetting.

    :ivar emails:
    :vartype emails: list[str]
    :ivar email_on:
    :vartype email_on: list[str or ~flow.models.EmailNotificationEnableType]
    :ivar webhooks: Dictionary of :code:`<Webhook>`.
    :vartype webhooks: dict[str, ~flow.models.Webhook]
    """

    _attribute_map = {
        'emails': {'key': 'emails', 'type': '[str]'},
        'email_on': {'key': 'emailOn', 'type': '[str]'},
        'webhooks': {'key': 'webhooks', 'type': '{Webhook}'},
    }

    def __init__(
        self,
        *,
        emails: Optional[List[str]] = None,
        email_on: Optional[List[Union[str, "EmailNotificationEnableType"]]] = None,
        webhooks: Optional[Dict[str, "Webhook"]] = None,
        **kwargs
    ):
        """
        :keyword emails:
        :paramtype emails: list[str]
        :keyword email_on:
        :paramtype email_on: list[str or ~flow.models.EmailNotificationEnableType]
        :keyword webhooks: Dictionary of :code:`<Webhook>`.
        :paramtype webhooks: dict[str, ~flow.models.Webhook]
        """
        super(NotificationSetting, self).__init__(**kwargs)
        self.emails = emails
        self.email_on = email_on
        self.webhooks = webhooks


class ODataError(msrest.serialization.Model):
    """Represents OData v4 error object.

    :ivar code: Gets or sets a language-independent, service-defined error code.
     This code serves as a sub-status for the HTTP error code specified
     in the response.
    :vartype code: str
    :ivar message: Gets or sets a human-readable, language-dependent representation of the error.
     The ``Content-Language`` header MUST contain the language code from [RFC5646]
     corresponding to the language in which the value for message is written.
    :vartype message: str
    :ivar target: Gets or sets the target of the particular error
     (for example, the name of the property in error).
    :vartype target: str
    :ivar details: Gets or sets additional details about the error.
    :vartype details: list[~flow.models.ODataErrorDetail]
    :ivar innererror: The contents of this object are service-defined.
     Usually this object contains information that will help debug the service
     and SHOULD only be used in development environments in order to guard
     against potential security concerns around information disclosure.
    :vartype innererror: ~flow.models.ODataInnerError
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[ODataErrorDetail]'},
        'innererror': {'key': 'innererror', 'type': 'ODataInnerError'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        details: Optional[List["ODataErrorDetail"]] = None,
        innererror: Optional["ODataInnerError"] = None,
        **kwargs
    ):
        """
        :keyword code: Gets or sets a language-independent, service-defined error code.
         This code serves as a sub-status for the HTTP error code specified
         in the response.
        :paramtype code: str
        :keyword message: Gets or sets a human-readable, language-dependent representation of the
         error.
         The ``Content-Language`` header MUST contain the language code from [RFC5646]
         corresponding to the language in which the value for message is written.
        :paramtype message: str
        :keyword target: Gets or sets the target of the particular error
         (for example, the name of the property in error).
        :paramtype target: str
        :keyword details: Gets or sets additional details about the error.
        :paramtype details: list[~flow.models.ODataErrorDetail]
        :keyword innererror: The contents of this object are service-defined.
         Usually this object contains information that will help debug the service
         and SHOULD only be used in development environments in order to guard
         against potential security concerns around information disclosure.
        :paramtype innererror: ~flow.models.ODataInnerError
        """
        super(ODataError, self).__init__(**kwargs)
        self.code = code
        self.message = message
        self.target = target
        self.details = details
        self.innererror = innererror


class ODataErrorDetail(msrest.serialization.Model):
    """Represents additional error details.

    :ivar code: Gets or sets a language-independent, service-defined error code.
    :vartype code: str
    :ivar message: Gets or sets a human-readable, language-dependent representation of the error.
    :vartype message: str
    :ivar target: Gets or sets the target of the particular error
     (for example, the name of the property in error).
    :vartype target: str
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        message: Optional[str] = None,
        target: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword code: Gets or sets a language-independent, service-defined error code.
        :paramtype code: str
        :keyword message: Gets or sets a human-readable, language-dependent representation of the
         error.
        :paramtype message: str
        :keyword target: Gets or sets the target of the particular error
         (for example, the name of the property in error).
        :paramtype target: str
        """
        super(ODataErrorDetail, self).__init__(**kwargs)
        self.code = code
        self.message = message
        self.target = target


class ODataErrorResponse(msrest.serialization.Model):
    """Represents OData v4 compliant error response message.

    :ivar error: Represents OData v4 error object.
    :vartype error: ~flow.models.ODataError
    """

    _attribute_map = {
        'error': {'key': 'error', 'type': 'ODataError'},
    }

    def __init__(
        self,
        *,
        error: Optional["ODataError"] = None,
        **kwargs
    ):
        """
        :keyword error: Represents OData v4 error object.
        :paramtype error: ~flow.models.ODataError
        """
        super(ODataErrorResponse, self).__init__(**kwargs)
        self.error = error


class ODataInnerError(msrest.serialization.Model):
    """The contents of this object are service-defined.
Usually this object contains information that will help debug the service
and SHOULD only be used in development environments in order to guard
against potential security concerns around information disclosure.

    :ivar client_request_id: Gets or sets the client provided request ID.
    :vartype client_request_id: str
    :ivar service_request_id: Gets or sets the server generated request ID.
    :vartype service_request_id: str
    :ivar trace: Gets or sets the exception stack trace.
     DO NOT INCLUDE IT IN PRODUCTION ENVIRONMENT.
    :vartype trace: str
    :ivar context: Gets or sets additional context for the exception.
     DO NOT INCLUDE IT IN PRODUCTION ENVIRONMENT.
    :vartype context: str
    """

    _attribute_map = {
        'client_request_id': {'key': 'clientRequestId', 'type': 'str'},
        'service_request_id': {'key': 'serviceRequestId', 'type': 'str'},
        'trace': {'key': 'trace', 'type': 'str'},
        'context': {'key': 'context', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        client_request_id: Optional[str] = None,
        service_request_id: Optional[str] = None,
        trace: Optional[str] = None,
        context: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword client_request_id: Gets or sets the client provided request ID.
        :paramtype client_request_id: str
        :keyword service_request_id: Gets or sets the server generated request ID.
        :paramtype service_request_id: str
        :keyword trace: Gets or sets the exception stack trace.
         DO NOT INCLUDE IT IN PRODUCTION ENVIRONMENT.
        :paramtype trace: str
        :keyword context: Gets or sets additional context for the exception.
         DO NOT INCLUDE IT IN PRODUCTION ENVIRONMENT.
        :paramtype context: str
        """
        super(ODataInnerError, self).__init__(**kwargs)
        self.client_request_id = client_request_id
        self.service_request_id = service_request_id
        self.trace = trace
        self.context = context


class OutputData(msrest.serialization.Model):
    """OutputData.

    :ivar output_location:
    :vartype output_location: ~flow.models.ExecutionDataLocation
    :ivar mechanism: Possible values include: "Upload", "Mount", "Hdfs", "Link", "Direct".
    :vartype mechanism: str or ~flow.models.OutputMechanism
    :ivar additional_options:
    :vartype additional_options: ~flow.models.OutputOptions
    :ivar environment_variable_name:
    :vartype environment_variable_name: str
    """

    _attribute_map = {
        'output_location': {'key': 'outputLocation', 'type': 'ExecutionDataLocation'},
        'mechanism': {'key': 'mechanism', 'type': 'str'},
        'additional_options': {'key': 'additionalOptions', 'type': 'OutputOptions'},
        'environment_variable_name': {'key': 'environmentVariableName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        output_location: Optional["ExecutionDataLocation"] = None,
        mechanism: Optional[Union[str, "OutputMechanism"]] = None,
        additional_options: Optional["OutputOptions"] = None,
        environment_variable_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword output_location:
        :paramtype output_location: ~flow.models.ExecutionDataLocation
        :keyword mechanism: Possible values include: "Upload", "Mount", "Hdfs", "Link", "Direct".
        :paramtype mechanism: str or ~flow.models.OutputMechanism
        :keyword additional_options:
        :paramtype additional_options: ~flow.models.OutputOptions
        :keyword environment_variable_name:
        :paramtype environment_variable_name: str
        """
        super(OutputData, self).__init__(**kwargs)
        self.output_location = output_location
        self.mechanism = mechanism
        self.additional_options = additional_options
        self.environment_variable_name = environment_variable_name


class OutputDataBinding(msrest.serialization.Model):
    """OutputDataBinding.

    :ivar datastore_id:
    :vartype datastore_id: str
    :ivar path_on_datastore:
    :vartype path_on_datastore: str
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar description:
    :vartype description: str
    :ivar uri:
    :vartype uri: ~flow.models.MfeInternalUriReference
    :ivar mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
     "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
    :vartype mode: str or ~flow.models.DataBindingMode
    :ivar asset_uri:
    :vartype asset_uri: str
    :ivar is_asset_job_output:
    :vartype is_asset_job_output: bool
    :ivar job_output_type: Possible values include: "Uri", "Dataset", "UriFile", "UriFolder",
     "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
    :vartype job_output_type: str or ~flow.models.JobOutputType
    :ivar asset_name:
    :vartype asset_name: str
    :ivar asset_version:
    :vartype asset_version: str
    :ivar auto_delete_setting:
    :vartype auto_delete_setting: ~flow.models.AutoDeleteSetting
    """

    _attribute_map = {
        'datastore_id': {'key': 'datastoreId', 'type': 'str'},
        'path_on_datastore': {'key': 'pathOnDatastore', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'MfeInternalUriReference'},
        'mode': {'key': 'mode', 'type': 'str'},
        'asset_uri': {'key': 'assetUri', 'type': 'str'},
        'is_asset_job_output': {'key': 'isAssetJobOutput', 'type': 'bool'},
        'job_output_type': {'key': 'jobOutputType', 'type': 'str'},
        'asset_name': {'key': 'assetName', 'type': 'str'},
        'asset_version': {'key': 'assetVersion', 'type': 'str'},
        'auto_delete_setting': {'key': 'autoDeleteSetting', 'type': 'AutoDeleteSetting'},
    }

    def __init__(
        self,
        *,
        datastore_id: Optional[str] = None,
        path_on_datastore: Optional[str] = None,
        path_on_compute: Optional[str] = None,
        description: Optional[str] = None,
        uri: Optional["MfeInternalUriReference"] = None,
        mode: Optional[Union[str, "DataBindingMode"]] = None,
        asset_uri: Optional[str] = None,
        is_asset_job_output: Optional[bool] = None,
        job_output_type: Optional[Union[str, "JobOutputType"]] = None,
        asset_name: Optional[str] = None,
        asset_version: Optional[str] = None,
        auto_delete_setting: Optional["AutoDeleteSetting"] = None,
        **kwargs
    ):
        """
        :keyword datastore_id:
        :paramtype datastore_id: str
        :keyword path_on_datastore:
        :paramtype path_on_datastore: str
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword description:
        :paramtype description: str
        :keyword uri:
        :paramtype uri: ~flow.models.MfeInternalUriReference
        :keyword mode: Possible values include: "Mount", "Download", "Upload", "ReadOnlyMount",
         "ReadWriteMount", "Direct", "EvalMount", "EvalDownload".
        :paramtype mode: str or ~flow.models.DataBindingMode
        :keyword asset_uri:
        :paramtype asset_uri: str
        :keyword is_asset_job_output:
        :paramtype is_asset_job_output: bool
        :keyword job_output_type: Possible values include: "Uri", "Dataset", "UriFile", "UriFolder",
         "MLTable", "CustomModel", "MLFlowModel", "TritonModel".
        :paramtype job_output_type: str or ~flow.models.JobOutputType
        :keyword asset_name:
        :paramtype asset_name: str
        :keyword asset_version:
        :paramtype asset_version: str
        :keyword auto_delete_setting:
        :paramtype auto_delete_setting: ~flow.models.AutoDeleteSetting
        """
        super(OutputDataBinding, self).__init__(**kwargs)
        self.datastore_id = datastore_id
        self.path_on_datastore = path_on_datastore
        self.path_on_compute = path_on_compute
        self.description = description
        self.uri = uri
        self.mode = mode
        self.asset_uri = asset_uri
        self.is_asset_job_output = is_asset_job_output
        self.job_output_type = job_output_type
        self.asset_name = asset_name
        self.asset_version = asset_version
        self.auto_delete_setting = auto_delete_setting


class OutputDatasetLineage(msrest.serialization.Model):
    """OutputDatasetLineage.

    :ivar identifier:
    :vartype identifier: ~flow.models.DatasetIdentifier
    :ivar output_type: Possible values include: "RunOutput", "Reference".
    :vartype output_type: str or ~flow.models.DatasetOutputType
    :ivar output_details:
    :vartype output_details: ~flow.models.DatasetOutputDetails
    """

    _attribute_map = {
        'identifier': {'key': 'identifier', 'type': 'DatasetIdentifier'},
        'output_type': {'key': 'outputType', 'type': 'str'},
        'output_details': {'key': 'outputDetails', 'type': 'DatasetOutputDetails'},
    }

    def __init__(
        self,
        *,
        identifier: Optional["DatasetIdentifier"] = None,
        output_type: Optional[Union[str, "DatasetOutputType"]] = None,
        output_details: Optional["DatasetOutputDetails"] = None,
        **kwargs
    ):
        """
        :keyword identifier:
        :paramtype identifier: ~flow.models.DatasetIdentifier
        :keyword output_type: Possible values include: "RunOutput", "Reference".
        :paramtype output_type: str or ~flow.models.DatasetOutputType
        :keyword output_details:
        :paramtype output_details: ~flow.models.DatasetOutputDetails
        """
        super(OutputDatasetLineage, self).__init__(**kwargs)
        self.identifier = identifier
        self.output_type = output_type
        self.output_details = output_details


class OutputDefinition(msrest.serialization.Model):
    """OutputDefinition.

    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: list[str or ~flow.models.ValueType]
    :ivar description:
    :vartype description: str
    :ivar is_property:
    :vartype is_property: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': '[str]'},
        'description': {'key': 'description', 'type': 'str'},
        'is_property': {'key': 'isProperty', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[List[Union[str, "ValueType"]]] = None,
        description: Optional[str] = None,
        is_property: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: list[str or ~flow.models.ValueType]
        :keyword description:
        :paramtype description: str
        :keyword is_property:
        :paramtype is_property: bool
        """
        super(OutputDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.description = description
        self.is_property = is_property


class OutputOptions(msrest.serialization.Model):
    """OutputOptions.

    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar registration_options:
    :vartype registration_options: ~flow.models.RegistrationOptions
    :ivar upload_options:
    :vartype upload_options: ~flow.models.UploadOptions
    :ivar mount_options: Dictionary of :code:`<string>`.
    :vartype mount_options: dict[str, str]
    """

    _attribute_map = {
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'registration_options': {'key': 'registrationOptions', 'type': 'RegistrationOptions'},
        'upload_options': {'key': 'uploadOptions', 'type': 'UploadOptions'},
        'mount_options': {'key': 'mountOptions', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        path_on_compute: Optional[str] = None,
        registration_options: Optional["RegistrationOptions"] = None,
        upload_options: Optional["UploadOptions"] = None,
        mount_options: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword registration_options:
        :paramtype registration_options: ~flow.models.RegistrationOptions
        :keyword upload_options:
        :paramtype upload_options: ~flow.models.UploadOptions
        :keyword mount_options: Dictionary of :code:`<string>`.
        :paramtype mount_options: dict[str, str]
        """
        super(OutputOptions, self).__init__(**kwargs)
        self.path_on_compute = path_on_compute
        self.registration_options = registration_options
        self.upload_options = upload_options
        self.mount_options = mount_options


class OutputSetting(msrest.serialization.Model):
    """OutputSetting.

    :ivar name:
    :vartype name: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_name_parameter_assignment:
    :vartype data_store_name_parameter_assignment: ~flow.models.ParameterAssignment
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar data_store_mode_parameter_assignment:
    :vartype data_store_mode_parameter_assignment: ~flow.models.ParameterAssignment
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar path_on_compute_parameter_assignment:
    :vartype path_on_compute_parameter_assignment: ~flow.models.ParameterAssignment
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar web_service_port:
    :vartype web_service_port: str
    :ivar dataset_registration:
    :vartype dataset_registration: ~flow.models.DatasetRegistration
    :ivar dataset_output_options:
    :vartype dataset_output_options: ~flow.models.DatasetOutputOptions
    :ivar asset_output_settings:
    :vartype asset_output_settings: ~flow.models.AssetOutputSettings
    :ivar parameter_name:
    :vartype parameter_name: str
    :ivar asset_output_settings_parameter_name:
    :vartype asset_output_settings_parameter_name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_name_parameter_assignment': {'key': 'DataStoreNameParameterAssignment', 'type': 'ParameterAssignment'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'data_store_mode_parameter_assignment': {'key': 'DataStoreModeParameterAssignment', 'type': 'ParameterAssignment'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'path_on_compute_parameter_assignment': {'key': 'PathOnComputeParameterAssignment', 'type': 'ParameterAssignment'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'web_service_port': {'key': 'webServicePort', 'type': 'str'},
        'dataset_registration': {'key': 'datasetRegistration', 'type': 'DatasetRegistration'},
        'dataset_output_options': {'key': 'datasetOutputOptions', 'type': 'DatasetOutputOptions'},
        'asset_output_settings': {'key': 'AssetOutputSettings', 'type': 'AssetOutputSettings'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
        'asset_output_settings_parameter_name': {'key': 'AssetOutputSettingsParameterName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_store_name_parameter_assignment: Optional["ParameterAssignment"] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        data_store_mode_parameter_assignment: Optional["ParameterAssignment"] = None,
        path_on_compute: Optional[str] = None,
        path_on_compute_parameter_assignment: Optional["ParameterAssignment"] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        web_service_port: Optional[str] = None,
        dataset_registration: Optional["DatasetRegistration"] = None,
        dataset_output_options: Optional["DatasetOutputOptions"] = None,
        asset_output_settings: Optional["AssetOutputSettings"] = None,
        parameter_name: Optional[str] = None,
        asset_output_settings_parameter_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_name_parameter_assignment:
        :paramtype data_store_name_parameter_assignment: ~flow.models.ParameterAssignment
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword data_store_mode_parameter_assignment:
        :paramtype data_store_mode_parameter_assignment: ~flow.models.ParameterAssignment
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword path_on_compute_parameter_assignment:
        :paramtype path_on_compute_parameter_assignment: ~flow.models.ParameterAssignment
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword web_service_port:
        :paramtype web_service_port: str
        :keyword dataset_registration:
        :paramtype dataset_registration: ~flow.models.DatasetRegistration
        :keyword dataset_output_options:
        :paramtype dataset_output_options: ~flow.models.DatasetOutputOptions
        :keyword asset_output_settings:
        :paramtype asset_output_settings: ~flow.models.AssetOutputSettings
        :keyword parameter_name:
        :paramtype parameter_name: str
        :keyword asset_output_settings_parameter_name:
        :paramtype asset_output_settings_parameter_name: str
        """
        super(OutputSetting, self).__init__(**kwargs)
        self.name = name
        self.data_store_name = data_store_name
        self.data_store_name_parameter_assignment = data_store_name_parameter_assignment
        self.data_store_mode = data_store_mode
        self.data_store_mode_parameter_assignment = data_store_mode_parameter_assignment
        self.path_on_compute = path_on_compute
        self.path_on_compute_parameter_assignment = path_on_compute_parameter_assignment
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.web_service_port = web_service_port
        self.dataset_registration = dataset_registration
        self.dataset_output_options = dataset_output_options
        self.asset_output_settings = asset_output_settings
        self.parameter_name = parameter_name
        self.asset_output_settings_parameter_name = asset_output_settings_parameter_name


class OutputSettingSpec(msrest.serialization.Model):
    """OutputSettingSpec.

    :ivar supported_data_store_modes:
    :vartype supported_data_store_modes: list[str or ~flow.models.AEVADataStoreMode]
    :ivar default_asset_output_path:
    :vartype default_asset_output_path: str
    """

    _attribute_map = {
        'supported_data_store_modes': {'key': 'supportedDataStoreModes', 'type': '[str]'},
        'default_asset_output_path': {'key': 'defaultAssetOutputPath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        supported_data_store_modes: Optional[List[Union[str, "AEVADataStoreMode"]]] = None,
        default_asset_output_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword supported_data_store_modes:
        :paramtype supported_data_store_modes: list[str or ~flow.models.AEVADataStoreMode]
        :keyword default_asset_output_path:
        :paramtype default_asset_output_path: str
        """
        super(OutputSettingSpec, self).__init__(**kwargs)
        self.supported_data_store_modes = supported_data_store_modes
        self.default_asset_output_path = default_asset_output_path


class PaginatedDataInfoList(msrest.serialization.Model):
    """A paginated list of DataInfos.

    :ivar value: An array of objects of type DataInfo.
    :vartype value: list[~flow.models.DataInfo]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[DataInfo]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["DataInfo"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type DataInfo.
        :paramtype value: list[~flow.models.DataInfo]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedDataInfoList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedModelDtoList(msrest.serialization.Model):
    """A paginated list of ModelDtos.

    :ivar value: An array of objects of type ModelDto.
    :vartype value: list[~flow.models.ModelDto]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ModelDto]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["ModelDto"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type ModelDto.
        :paramtype value: list[~flow.models.ModelDto]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedModelDtoList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedModuleDtoList(msrest.serialization.Model):
    """A paginated list of ModuleDtos.

    :ivar value: An array of objects of type ModuleDto.
    :vartype value: list[~flow.models.ModuleDto]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ModuleDto]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["ModuleDto"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type ModuleDto.
        :paramtype value: list[~flow.models.ModuleDto]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedModuleDtoList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedPipelineDraftSummaryList(msrest.serialization.Model):
    """A paginated list of PipelineDraftSummarys.

    :ivar value: An array of objects of type PipelineDraftSummary.
    :vartype value: list[~flow.models.PipelineDraftSummary]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PipelineDraftSummary]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["PipelineDraftSummary"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type PipelineDraftSummary.
        :paramtype value: list[~flow.models.PipelineDraftSummary]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedPipelineDraftSummaryList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedPipelineEndpointSummaryList(msrest.serialization.Model):
    """A paginated list of PipelineEndpointSummarys.

    :ivar value: An array of objects of type PipelineEndpointSummary.
    :vartype value: list[~flow.models.PipelineEndpointSummary]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PipelineEndpointSummary]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["PipelineEndpointSummary"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type PipelineEndpointSummary.
        :paramtype value: list[~flow.models.PipelineEndpointSummary]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedPipelineEndpointSummaryList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedPipelineRunSummaryList(msrest.serialization.Model):
    """A paginated list of PipelineRunSummarys.

    :ivar value: An array of objects of type PipelineRunSummary.
    :vartype value: list[~flow.models.PipelineRunSummary]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PipelineRunSummary]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["PipelineRunSummary"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type PipelineRunSummary.
        :paramtype value: list[~flow.models.PipelineRunSummary]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedPipelineRunSummaryList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class PaginatedPublishedPipelineSummaryList(msrest.serialization.Model):
    """A paginated list of PublishedPipelineSummarys.

    :ivar value: An array of objects of type PublishedPipelineSummary.
    :vartype value: list[~flow.models.PublishedPipelineSummary]
    :ivar continuation_token: The token used in retrieving the next page. If null, there are no
     additional pages.
    :vartype continuation_token: str
    :ivar next_link: The link to the next page constructed using the continuationToken.  If null,
     there are no additional pages.
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[PublishedPipelineSummary]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["PublishedPipelineSummary"]] = None,
        continuation_token: Optional[str] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value: An array of objects of type PublishedPipelineSummary.
        :paramtype value: list[~flow.models.PublishedPipelineSummary]
        :keyword continuation_token: The token used in retrieving the next page. If null, there are no
         additional pages.
        :paramtype continuation_token: str
        :keyword next_link: The link to the next page constructed using the continuationToken.  If
         null, there are no additional pages.
        :paramtype next_link: str
        """
        super(PaginatedPublishedPipelineSummaryList, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.next_link = next_link


class ParallelForControlFlowInfo(msrest.serialization.Model):
    """ParallelForControlFlowInfo.

    :ivar parallel_for_items_input:
    :vartype parallel_for_items_input: ~flow.models.ParameterAssignment
    """

    _attribute_map = {
        'parallel_for_items_input': {'key': 'parallelForItemsInput', 'type': 'ParameterAssignment'},
    }

    def __init__(
        self,
        *,
        parallel_for_items_input: Optional["ParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword parallel_for_items_input:
        :paramtype parallel_for_items_input: ~flow.models.ParameterAssignment
        """
        super(ParallelForControlFlowInfo, self).__init__(**kwargs)
        self.parallel_for_items_input = parallel_for_items_input


class ParallelTaskConfiguration(msrest.serialization.Model):
    """ParallelTaskConfiguration.

    :ivar max_retries_per_worker:
    :vartype max_retries_per_worker: int
    :ivar worker_count_per_node:
    :vartype worker_count_per_node: int
    :ivar terminal_exit_codes:
    :vartype terminal_exit_codes: list[int]
    :ivar configuration: Dictionary of :code:`<string>`.
    :vartype configuration: dict[str, str]
    """

    _attribute_map = {
        'max_retries_per_worker': {'key': 'maxRetriesPerWorker', 'type': 'int'},
        'worker_count_per_node': {'key': 'workerCountPerNode', 'type': 'int'},
        'terminal_exit_codes': {'key': 'terminalExitCodes', 'type': '[int]'},
        'configuration': {'key': 'configuration', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        max_retries_per_worker: Optional[int] = None,
        worker_count_per_node: Optional[int] = None,
        terminal_exit_codes: Optional[List[int]] = None,
        configuration: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword max_retries_per_worker:
        :paramtype max_retries_per_worker: int
        :keyword worker_count_per_node:
        :paramtype worker_count_per_node: int
        :keyword terminal_exit_codes:
        :paramtype terminal_exit_codes: list[int]
        :keyword configuration: Dictionary of :code:`<string>`.
        :paramtype configuration: dict[str, str]
        """
        super(ParallelTaskConfiguration, self).__init__(**kwargs)
        self.max_retries_per_worker = max_retries_per_worker
        self.worker_count_per_node = worker_count_per_node
        self.terminal_exit_codes = terminal_exit_codes
        self.configuration = configuration


class Parameter(msrest.serialization.Model):
    """Parameter.

    :ivar name:
    :vartype name: str
    :ivar documentation:
    :vartype documentation: str
    :ivar default_value:
    :vartype default_value: str
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar min_max_rules:
    :vartype min_max_rules: list[~flow.models.MinMaxParameterRule]
    :ivar enum_rules:
    :vartype enum_rules: list[~flow.models.EnumParameterRule]
    :ivar type: Possible values include: "Int", "Double", "Bool", "String", "Undefined".
    :vartype type: str or ~flow.models.ParameterType
    :ivar label:
    :vartype label: str
    :ivar group_names:
    :vartype group_names: list[str]
    :ivar argument_name:
    :vartype argument_name: str
    :ivar ui_hint:
    :vartype ui_hint: ~flow.models.UIParameterHint
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'documentation': {'key': 'documentation', 'type': 'str'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'min_max_rules': {'key': 'minMaxRules', 'type': '[MinMaxParameterRule]'},
        'enum_rules': {'key': 'enumRules', 'type': '[EnumParameterRule]'},
        'type': {'key': 'type', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'group_names': {'key': 'groupNames', 'type': '[str]'},
        'argument_name': {'key': 'argumentName', 'type': 'str'},
        'ui_hint': {'key': 'uiHint', 'type': 'UIParameterHint'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        documentation: Optional[str] = None,
        default_value: Optional[str] = None,
        is_optional: Optional[bool] = None,
        min_max_rules: Optional[List["MinMaxParameterRule"]] = None,
        enum_rules: Optional[List["EnumParameterRule"]] = None,
        type: Optional[Union[str, "ParameterType"]] = None,
        label: Optional[str] = None,
        group_names: Optional[List[str]] = None,
        argument_name: Optional[str] = None,
        ui_hint: Optional["UIParameterHint"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword documentation:
        :paramtype documentation: str
        :keyword default_value:
        :paramtype default_value: str
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword min_max_rules:
        :paramtype min_max_rules: list[~flow.models.MinMaxParameterRule]
        :keyword enum_rules:
        :paramtype enum_rules: list[~flow.models.EnumParameterRule]
        :keyword type: Possible values include: "Int", "Double", "Bool", "String", "Undefined".
        :paramtype type: str or ~flow.models.ParameterType
        :keyword label:
        :paramtype label: str
        :keyword group_names:
        :paramtype group_names: list[str]
        :keyword argument_name:
        :paramtype argument_name: str
        :keyword ui_hint:
        :paramtype ui_hint: ~flow.models.UIParameterHint
        """
        super(Parameter, self).__init__(**kwargs)
        self.name = name
        self.documentation = documentation
        self.default_value = default_value
        self.is_optional = is_optional
        self.min_max_rules = min_max_rules
        self.enum_rules = enum_rules
        self.type = type
        self.label = label
        self.group_names = group_names
        self.argument_name = argument_name
        self.ui_hint = ui_hint


class ParameterAssignment(msrest.serialization.Model):
    """ParameterAssignment.

    :ivar value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
     "Input", "DataPath", "DataSetDefinition".
    :vartype value_type: str or ~flow.models.ParameterValueType
    :ivar assignments_to_concatenate:
    :vartype assignments_to_concatenate: list[~flow.models.ParameterAssignment]
    :ivar data_path_assignment:
    :vartype data_path_assignment: ~flow.models.LegacyDataPath
    :ivar data_set_definition_value_assignment:
    :vartype data_set_definition_value_assignment: ~flow.models.DataSetDefinitionValue
    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'value_type': {'key': 'valueType', 'type': 'str'},
        'assignments_to_concatenate': {'key': 'assignmentsToConcatenate', 'type': '[ParameterAssignment]'},
        'data_path_assignment': {'key': 'dataPathAssignment', 'type': 'LegacyDataPath'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': 'DataSetDefinitionValue'},
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value_type: Optional[Union[str, "ParameterValueType"]] = None,
        assignments_to_concatenate: Optional[List["ParameterAssignment"]] = None,
        data_path_assignment: Optional["LegacyDataPath"] = None,
        data_set_definition_value_assignment: Optional["DataSetDefinitionValue"] = None,
        name: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
         "Input", "DataPath", "DataSetDefinition".
        :paramtype value_type: str or ~flow.models.ParameterValueType
        :keyword assignments_to_concatenate:
        :paramtype assignments_to_concatenate: list[~flow.models.ParameterAssignment]
        :keyword data_path_assignment:
        :paramtype data_path_assignment: ~flow.models.LegacyDataPath
        :keyword data_set_definition_value_assignment:
        :paramtype data_set_definition_value_assignment: ~flow.models.DataSetDefinitionValue
        :keyword name:
        :paramtype name: str
        :keyword value:
        :paramtype value: str
        """
        super(ParameterAssignment, self).__init__(**kwargs)
        self.value_type = value_type
        self.assignments_to_concatenate = assignments_to_concatenate
        self.data_path_assignment = data_path_assignment
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.name = name
        self.value = value


class ParameterDefinition(msrest.serialization.Model):
    """ParameterDefinition.

    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: str
    :ivar value:
    :vartype value: str
    :ivar is_optional:
    :vartype is_optional: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[str] = None,
        value: Optional[str] = None,
        is_optional: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: str
        :keyword value:
        :paramtype value: str
        :keyword is_optional:
        :paramtype is_optional: bool
        """
        super(ParameterDefinition, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.value = value
        self.is_optional = is_optional


class PatchFlowRequest(msrest.serialization.Model):
    """PatchFlowRequest.

    :ivar flow_patch_operation_type: Possible values include: "ArchiveFlow", "RestoreFlow",
     "ExportFlowToFile".
    :vartype flow_patch_operation_type: str or ~flow.models.FlowPatchOperationType
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    """

    _attribute_map = {
        'flow_patch_operation_type': {'key': 'flowPatchOperationType', 'type': 'str'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        flow_patch_operation_type: Optional[Union[str, "FlowPatchOperationType"]] = None,
        flow_definition_file_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword flow_patch_operation_type: Possible values include: "ArchiveFlow", "RestoreFlow",
         "ExportFlowToFile".
        :paramtype flow_patch_operation_type: str or ~flow.models.FlowPatchOperationType
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        """
        super(PatchFlowRequest, self).__init__(**kwargs)
        self.flow_patch_operation_type = flow_patch_operation_type
        self.flow_definition_file_path = flow_definition_file_path


class Pipeline(msrest.serialization.Model):
    """Pipeline.

    :ivar run_id:
    :vartype run_id: str
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar default_datastore_name:
    :vartype default_datastore_name: str
    :ivar component_jobs: This is a dictionary.
    :vartype component_jobs: dict[str, ~flow.models.ComponentJob]
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.PipelineInput]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.PipelineOutput]
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'default_datastore_name': {'key': 'defaultDatastoreName', 'type': 'str'},
        'component_jobs': {'key': 'componentJobs', 'type': '{ComponentJob}'},
        'inputs': {'key': 'inputs', 'type': '{PipelineInput}'},
        'outputs': {'key': 'outputs', 'type': '{PipelineOutput}'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        default_datastore_name: Optional[str] = None,
        component_jobs: Optional[Dict[str, "ComponentJob"]] = None,
        inputs: Optional[Dict[str, "PipelineInput"]] = None,
        outputs: Optional[Dict[str, "PipelineOutput"]] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword default_datastore_name:
        :paramtype default_datastore_name: str
        :keyword component_jobs: This is a dictionary.
        :paramtype component_jobs: dict[str, ~flow.models.ComponentJob]
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.PipelineInput]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.PipelineOutput]
        """
        super(Pipeline, self).__init__(**kwargs)
        self.run_id = run_id
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.default_datastore_name = default_datastore_name
        self.component_jobs = component_jobs
        self.inputs = inputs
        self.outputs = outputs


class PipelineDraft(msrest.serialization.Model):
    """PipelineDraft.

    :ivar graph_draft_id:
    :vartype graph_draft_id: str
    :ivar source_pipeline_run_id:
    :vartype source_pipeline_run_id: str
    :ivar latest_pipeline_run_id:
    :vartype latest_pipeline_run_id: str
    :ivar latest_run_experiment_name:
    :vartype latest_run_experiment_name: str
    :ivar latest_run_experiment_id:
    :vartype latest_run_experiment_id: str
    :ivar is_latest_run_experiment_archived:
    :vartype is_latest_run_experiment_archived: bool
    :ivar status:
    :vartype status: ~flow.models.PipelineStatus
    :ivar graph_detail:
    :vartype graph_detail: ~flow.models.PipelineRunGraphDetail
    :ivar real_time_endpoint_info:
    :vartype real_time_endpoint_info: ~flow.models.RealTimeEndpointInfo
    :ivar linked_pipelines_info:
    :vartype linked_pipelines_info: list[~flow.models.LinkedPipelineInfo]
    :ivar nodes_in_draft:
    :vartype nodes_in_draft: list[str]
    :ivar studio_migration_info:
    :vartype studio_migration_info: ~flow.models.StudioMigrationInfo
    :ivar flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
    :vartype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
    :ivar pipeline_run_setting_parameters:
    :vartype pipeline_run_setting_parameters: list[~flow.models.RunSettingParameter]
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar continue_run_on_failed_optional_input:
    :vartype continue_run_on_failed_optional_input: bool
    :ivar default_compute:
    :vartype default_compute: ~flow.models.ComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.DatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.CloudPrioritySetting
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar pipeline_timeout:
    :vartype pipeline_timeout: int
    :ivar identity_config:
    :vartype identity_config: ~flow.models.IdentitySetting
    :ivar graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
     "ContainsDesignerBuildin".
    :vartype graph_components_mode: str or ~flow.models.GraphComponentsMode
    :ivar name:
    :vartype name: str
    :ivar last_edited_by:
    :vartype last_edited_by: str
    :ivar created_by:
    :vartype created_by: str
    :ivar description:
    :vartype description: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'graph_draft_id': {'key': 'graphDraftId', 'type': 'str'},
        'source_pipeline_run_id': {'key': 'sourcePipelineRunId', 'type': 'str'},
        'latest_pipeline_run_id': {'key': 'latestPipelineRunId', 'type': 'str'},
        'latest_run_experiment_name': {'key': 'latestRunExperimentName', 'type': 'str'},
        'latest_run_experiment_id': {'key': 'latestRunExperimentId', 'type': 'str'},
        'is_latest_run_experiment_archived': {'key': 'isLatestRunExperimentArchived', 'type': 'bool'},
        'status': {'key': 'status', 'type': 'PipelineStatus'},
        'graph_detail': {'key': 'graphDetail', 'type': 'PipelineRunGraphDetail'},
        'real_time_endpoint_info': {'key': 'realTimeEndpointInfo', 'type': 'RealTimeEndpointInfo'},
        'linked_pipelines_info': {'key': 'linkedPipelinesInfo', 'type': '[LinkedPipelineInfo]'},
        'nodes_in_draft': {'key': 'nodesInDraft', 'type': '[str]'},
        'studio_migration_info': {'key': 'studioMigrationInfo', 'type': 'StudioMigrationInfo'},
        'flattened_sub_graphs': {'key': 'flattenedSubGraphs', 'type': '{PipelineSubDraft}'},
        'pipeline_run_setting_parameters': {'key': 'pipelineRunSettingParameters', 'type': '[RunSettingParameter]'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'continue_run_on_failed_optional_input': {'key': 'continueRunOnFailedOptionalInput', 'type': 'bool'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'default_cloud_priority': {'key': 'defaultCloudPriority', 'type': 'CloudPrioritySetting'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'pipeline_timeout': {'key': 'pipelineTimeout', 'type': 'int'},
        'identity_config': {'key': 'identityConfig', 'type': 'IdentitySetting'},
        'graph_components_mode': {'key': 'graphComponentsMode', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'last_edited_by': {'key': 'lastEditedBy', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        graph_draft_id: Optional[str] = None,
        source_pipeline_run_id: Optional[str] = None,
        latest_pipeline_run_id: Optional[str] = None,
        latest_run_experiment_name: Optional[str] = None,
        latest_run_experiment_id: Optional[str] = None,
        is_latest_run_experiment_archived: Optional[bool] = None,
        status: Optional["PipelineStatus"] = None,
        graph_detail: Optional["PipelineRunGraphDetail"] = None,
        real_time_endpoint_info: Optional["RealTimeEndpointInfo"] = None,
        linked_pipelines_info: Optional[List["LinkedPipelineInfo"]] = None,
        nodes_in_draft: Optional[List[str]] = None,
        studio_migration_info: Optional["StudioMigrationInfo"] = None,
        flattened_sub_graphs: Optional[Dict[str, "PipelineSubDraft"]] = None,
        pipeline_run_setting_parameters: Optional[List["RunSettingParameter"]] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        continue_run_on_failed_optional_input: Optional[bool] = None,
        default_compute: Optional["ComputeSetting"] = None,
        default_datastore: Optional["DatastoreSetting"] = None,
        default_cloud_priority: Optional["CloudPrioritySetting"] = None,
        enforce_rerun: Optional[bool] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        pipeline_timeout: Optional[int] = None,
        identity_config: Optional["IdentitySetting"] = None,
        graph_components_mode: Optional[Union[str, "GraphComponentsMode"]] = None,
        name: Optional[str] = None,
        last_edited_by: Optional[str] = None,
        created_by: Optional[str] = None,
        description: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword graph_draft_id:
        :paramtype graph_draft_id: str
        :keyword source_pipeline_run_id:
        :paramtype source_pipeline_run_id: str
        :keyword latest_pipeline_run_id:
        :paramtype latest_pipeline_run_id: str
        :keyword latest_run_experiment_name:
        :paramtype latest_run_experiment_name: str
        :keyword latest_run_experiment_id:
        :paramtype latest_run_experiment_id: str
        :keyword is_latest_run_experiment_archived:
        :paramtype is_latest_run_experiment_archived: bool
        :keyword status:
        :paramtype status: ~flow.models.PipelineStatus
        :keyword graph_detail:
        :paramtype graph_detail: ~flow.models.PipelineRunGraphDetail
        :keyword real_time_endpoint_info:
        :paramtype real_time_endpoint_info: ~flow.models.RealTimeEndpointInfo
        :keyword linked_pipelines_info:
        :paramtype linked_pipelines_info: list[~flow.models.LinkedPipelineInfo]
        :keyword nodes_in_draft:
        :paramtype nodes_in_draft: list[str]
        :keyword studio_migration_info:
        :paramtype studio_migration_info: ~flow.models.StudioMigrationInfo
        :keyword flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
        :paramtype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
        :keyword pipeline_run_setting_parameters:
        :paramtype pipeline_run_setting_parameters: list[~flow.models.RunSettingParameter]
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword continue_run_on_failed_optional_input:
        :paramtype continue_run_on_failed_optional_input: bool
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.ComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.DatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.CloudPrioritySetting
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword pipeline_timeout:
        :paramtype pipeline_timeout: int
        :keyword identity_config:
        :paramtype identity_config: ~flow.models.IdentitySetting
        :keyword graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
         "ContainsDesignerBuildin".
        :paramtype graph_components_mode: str or ~flow.models.GraphComponentsMode
        :keyword name:
        :paramtype name: str
        :keyword last_edited_by:
        :paramtype last_edited_by: str
        :keyword created_by:
        :paramtype created_by: str
        :keyword description:
        :paramtype description: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineDraft, self).__init__(**kwargs)
        self.graph_draft_id = graph_draft_id
        self.source_pipeline_run_id = source_pipeline_run_id
        self.latest_pipeline_run_id = latest_pipeline_run_id
        self.latest_run_experiment_name = latest_run_experiment_name
        self.latest_run_experiment_id = latest_run_experiment_id
        self.is_latest_run_experiment_archived = is_latest_run_experiment_archived
        self.status = status
        self.graph_detail = graph_detail
        self.real_time_endpoint_info = real_time_endpoint_info
        self.linked_pipelines_info = linked_pipelines_info
        self.nodes_in_draft = nodes_in_draft
        self.studio_migration_info = studio_migration_info
        self.flattened_sub_graphs = flattened_sub_graphs
        self.pipeline_run_setting_parameters = pipeline_run_setting_parameters
        self.pipeline_run_settings = pipeline_run_settings
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.continue_run_on_failed_optional_input = continue_run_on_failed_optional_input
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.default_cloud_priority = default_cloud_priority
        self.enforce_rerun = enforce_rerun
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.pipeline_timeout = pipeline_timeout
        self.identity_config = identity_config
        self.graph_components_mode = graph_components_mode
        self.name = name
        self.last_edited_by = last_edited_by
        self.created_by = created_by
        self.description = description
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.tags = tags
        self.properties = properties
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineDraftStepDetails(msrest.serialization.Model):
    """PipelineDraftStepDetails.

    :ivar run_id:
    :vartype run_id: str
    :ivar target:
    :vartype target: str
    :ivar status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar is_reused:
    :vartype is_reused: bool
    :ivar reused_run_id:
    :vartype reused_run_id: str
    :ivar reused_pipeline_run_id:
    :vartype reused_pipeline_run_id: str
    :ivar logs: This is a dictionary.
    :vartype logs: dict[str, str]
    :ivar output_log:
    :vartype output_log: str
    :ivar run_configuration:
    :vartype run_configuration: ~flow.models.RunConfiguration
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, str]
    :ivar port_outputs: This is a dictionary.
    :vartype port_outputs: dict[str, ~flow.models.PortOutputInfo]
    :ivar is_experiment_archived:
    :vartype is_experiment_archived: bool
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'is_reused': {'key': 'isReused', 'type': 'bool'},
        'reused_run_id': {'key': 'reusedRunId', 'type': 'str'},
        'reused_pipeline_run_id': {'key': 'reusedPipelineRunId', 'type': 'str'},
        'logs': {'key': 'logs', 'type': '{str}'},
        'output_log': {'key': 'outputLog', 'type': 'str'},
        'run_configuration': {'key': 'runConfiguration', 'type': 'RunConfiguration'},
        'outputs': {'key': 'outputs', 'type': '{str}'},
        'port_outputs': {'key': 'portOutputs', 'type': '{PortOutputInfo}'},
        'is_experiment_archived': {'key': 'isExperimentArchived', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        target: Optional[str] = None,
        status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        is_reused: Optional[bool] = None,
        reused_run_id: Optional[str] = None,
        reused_pipeline_run_id: Optional[str] = None,
        logs: Optional[Dict[str, str]] = None,
        output_log: Optional[str] = None,
        run_configuration: Optional["RunConfiguration"] = None,
        outputs: Optional[Dict[str, str]] = None,
        port_outputs: Optional[Dict[str, "PortOutputInfo"]] = None,
        is_experiment_archived: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword target:
        :paramtype target: str
        :keyword status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword is_reused:
        :paramtype is_reused: bool
        :keyword reused_run_id:
        :paramtype reused_run_id: str
        :keyword reused_pipeline_run_id:
        :paramtype reused_pipeline_run_id: str
        :keyword logs: This is a dictionary.
        :paramtype logs: dict[str, str]
        :keyword output_log:
        :paramtype output_log: str
        :keyword run_configuration:
        :paramtype run_configuration: ~flow.models.RunConfiguration
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, str]
        :keyword port_outputs: This is a dictionary.
        :paramtype port_outputs: dict[str, ~flow.models.PortOutputInfo]
        :keyword is_experiment_archived:
        :paramtype is_experiment_archived: bool
        """
        super(PipelineDraftStepDetails, self).__init__(**kwargs)
        self.run_id = run_id
        self.target = target
        self.status = status
        self.status_detail = status_detail
        self.parent_run_id = parent_run_id
        self.start_time = start_time
        self.end_time = end_time
        self.is_reused = is_reused
        self.reused_run_id = reused_run_id
        self.reused_pipeline_run_id = reused_pipeline_run_id
        self.logs = logs
        self.output_log = output_log
        self.run_configuration = run_configuration
        self.outputs = outputs
        self.port_outputs = port_outputs
        self.is_experiment_archived = is_experiment_archived


class PipelineDraftSummary(msrest.serialization.Model):
    """PipelineDraftSummary.

    :ivar name:
    :vartype name: str
    :ivar last_edited_by:
    :vartype last_edited_by: str
    :ivar created_by:
    :vartype created_by: str
    :ivar description:
    :vartype description: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'last_edited_by': {'key': 'lastEditedBy', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        last_edited_by: Optional[str] = None,
        created_by: Optional[str] = None,
        description: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword last_edited_by:
        :paramtype last_edited_by: str
        :keyword created_by:
        :paramtype created_by: str
        :keyword description:
        :paramtype description: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineDraftSummary, self).__init__(**kwargs)
        self.name = name
        self.last_edited_by = last_edited_by
        self.created_by = created_by
        self.description = description
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.tags = tags
        self.properties = properties
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineEndpoint(msrest.serialization.Model):
    """PipelineEndpoint.

    :ivar default_version:
    :vartype default_version: str
    :ivar default_pipeline_id:
    :vartype default_pipeline_id: str
    :ivar default_graph_id:
    :vartype default_graph_id: str
    :ivar rest_endpoint:
    :vartype rest_endpoint: str
    :ivar published_date:
    :vartype published_date: ~datetime.datetime
    :ivar published_by:
    :vartype published_by: str
    :ivar parameters: This is a dictionary.
    :vartype parameters: dict[str, str]
    :ivar data_set_definition_value_assignment: This is a dictionary.
    :vartype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar default_pipeline_name:
    :vartype default_pipeline_name: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar updated_by:
    :vartype updated_by: str
    :ivar swagger_url:
    :vartype swagger_url: str
    :ivar last_run_time:
    :vartype last_run_time: ~datetime.datetime
    :ivar last_run_status: Possible values include: "NotStarted", "Running", "Failed", "Finished",
     "Canceled", "Queued", "CancelRequested".
    :vartype last_run_status: str or ~flow.models.PipelineRunStatusCode
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'default_version': {'key': 'defaultVersion', 'type': 'str'},
        'default_pipeline_id': {'key': 'defaultPipelineId', 'type': 'str'},
        'default_graph_id': {'key': 'defaultGraphId', 'type': 'str'},
        'rest_endpoint': {'key': 'restEndpoint', 'type': 'str'},
        'published_date': {'key': 'publishedDate', 'type': 'iso-8601'},
        'published_by': {'key': 'publishedBy', 'type': 'str'},
        'parameters': {'key': 'parameters', 'type': '{str}'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': '{DataSetDefinitionValue}'},
        'default_pipeline_name': {'key': 'defaultPipelineName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'updated_by': {'key': 'updatedBy', 'type': 'str'},
        'swagger_url': {'key': 'swaggerUrl', 'type': 'str'},
        'last_run_time': {'key': 'lastRunTime', 'type': 'iso-8601'},
        'last_run_status': {'key': 'lastRunStatus', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        default_version: Optional[str] = None,
        default_pipeline_id: Optional[str] = None,
        default_graph_id: Optional[str] = None,
        rest_endpoint: Optional[str] = None,
        published_date: Optional[datetime.datetime] = None,
        published_by: Optional[str] = None,
        parameters: Optional[Dict[str, str]] = None,
        data_set_definition_value_assignment: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        default_pipeline_name: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        updated_by: Optional[str] = None,
        swagger_url: Optional[str] = None,
        last_run_time: Optional[datetime.datetime] = None,
        last_run_status: Optional[Union[str, "PipelineRunStatusCode"]] = None,
        tags: Optional[Dict[str, str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword default_version:
        :paramtype default_version: str
        :keyword default_pipeline_id:
        :paramtype default_pipeline_id: str
        :keyword default_graph_id:
        :paramtype default_graph_id: str
        :keyword rest_endpoint:
        :paramtype rest_endpoint: str
        :keyword published_date:
        :paramtype published_date: ~datetime.datetime
        :keyword published_by:
        :paramtype published_by: str
        :keyword parameters: This is a dictionary.
        :paramtype parameters: dict[str, str]
        :keyword data_set_definition_value_assignment: This is a dictionary.
        :paramtype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
        :keyword default_pipeline_name:
        :paramtype default_pipeline_name: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword updated_by:
        :paramtype updated_by: str
        :keyword swagger_url:
        :paramtype swagger_url: str
        :keyword last_run_time:
        :paramtype last_run_time: ~datetime.datetime
        :keyword last_run_status: Possible values include: "NotStarted", "Running", "Failed",
         "Finished", "Canceled", "Queued", "CancelRequested".
        :paramtype last_run_status: str or ~flow.models.PipelineRunStatusCode
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineEndpoint, self).__init__(**kwargs)
        self.default_version = default_version
        self.default_pipeline_id = default_pipeline_id
        self.default_graph_id = default_graph_id
        self.rest_endpoint = rest_endpoint
        self.published_date = published_date
        self.published_by = published_by
        self.parameters = parameters
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.default_pipeline_name = default_pipeline_name
        self.name = name
        self.description = description
        self.updated_by = updated_by
        self.swagger_url = swagger_url
        self.last_run_time = last_run_time
        self.last_run_status = last_run_status
        self.tags = tags
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineEndpointSummary(msrest.serialization.Model):
    """PipelineEndpointSummary.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar updated_by:
    :vartype updated_by: str
    :ivar swagger_url:
    :vartype swagger_url: str
    :ivar last_run_time:
    :vartype last_run_time: ~datetime.datetime
    :ivar last_run_status: Possible values include: "NotStarted", "Running", "Failed", "Finished",
     "Canceled", "Queued", "CancelRequested".
    :vartype last_run_status: str or ~flow.models.PipelineRunStatusCode
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'updated_by': {'key': 'updatedBy', 'type': 'str'},
        'swagger_url': {'key': 'swaggerUrl', 'type': 'str'},
        'last_run_time': {'key': 'lastRunTime', 'type': 'iso-8601'},
        'last_run_status': {'key': 'lastRunStatus', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        updated_by: Optional[str] = None,
        swagger_url: Optional[str] = None,
        last_run_time: Optional[datetime.datetime] = None,
        last_run_status: Optional[Union[str, "PipelineRunStatusCode"]] = None,
        tags: Optional[Dict[str, str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword updated_by:
        :paramtype updated_by: str
        :keyword swagger_url:
        :paramtype swagger_url: str
        :keyword last_run_time:
        :paramtype last_run_time: ~datetime.datetime
        :keyword last_run_status: Possible values include: "NotStarted", "Running", "Failed",
         "Finished", "Canceled", "Queued", "CancelRequested".
        :paramtype last_run_status: str or ~flow.models.PipelineRunStatusCode
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineEndpointSummary, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.updated_by = updated_by
        self.swagger_url = swagger_url
        self.last_run_time = last_run_time
        self.last_run_status = last_run_status
        self.tags = tags
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineGraph(msrest.serialization.Model):
    """PipelineGraph.

    :ivar graph_module_dtos:
    :vartype graph_module_dtos: list[~flow.models.ModuleDto]
    :ivar graph_data_sources:
    :vartype graph_data_sources: list[~flow.models.DataInfo]
    :ivar graphs: This is a dictionary.
    :vartype graphs: dict[str, ~flow.models.PipelineGraph]
    :ivar graph_drafts: This is a dictionary.
    :vartype graph_drafts: dict[str, ~flow.models.PipelineGraph]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar referenced_node_id:
    :vartype referenced_node_id: str
    :ivar pipeline_run_setting_parameters:
    :vartype pipeline_run_setting_parameters: list[~flow.models.RunSettingParameter]
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar real_time_endpoint_info:
    :vartype real_time_endpoint_info: ~flow.models.RealTimeEndpointInfo
    :ivar node_telemetry_meta_infos:
    :vartype node_telemetry_meta_infos: list[~flow.models.NodeTelemetryMetaInfo]
    :ivar graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
     "ContainsDesignerBuildin".
    :vartype graph_components_mode: str or ~flow.models.GraphComponentsMode
    :ivar module_nodes:
    :vartype module_nodes: list[~flow.models.GraphModuleNode]
    :ivar dataset_nodes:
    :vartype dataset_nodes: list[~flow.models.GraphDatasetNode]
    :ivar sub_graph_nodes:
    :vartype sub_graph_nodes: list[~flow.models.GraphReferenceNode]
    :ivar control_reference_nodes:
    :vartype control_reference_nodes: list[~flow.models.GraphControlReferenceNode]
    :ivar control_nodes:
    :vartype control_nodes: list[~flow.models.GraphControlNode]
    :ivar edges:
    :vartype edges: list[~flow.models.GraphEdge]
    :ivar entity_interface:
    :vartype entity_interface: ~flow.models.EntityInterface
    :ivar graph_layout:
    :vartype graph_layout: ~flow.models.GraphLayout
    :ivar created_by:
    :vartype created_by: ~flow.models.CreatedBy
    :ivar last_updated_by:
    :vartype last_updated_by: ~flow.models.CreatedBy
    :ivar default_compute:
    :vartype default_compute: ~flow.models.ComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.DatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.CloudPrioritySetting
    :ivar extended_properties: This is a dictionary.
    :vartype extended_properties: dict[str, str]
    :ivar parent_sub_graph_module_ids:
    :vartype parent_sub_graph_module_ids: list[str]
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'graph_module_dtos': {'key': 'graphModuleDtos', 'type': '[ModuleDto]'},
        'graph_data_sources': {'key': 'graphDataSources', 'type': '[DataInfo]'},
        'graphs': {'key': 'graphs', 'type': '{PipelineGraph}'},
        'graph_drafts': {'key': 'graphDrafts', 'type': '{PipelineGraph}'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'referenced_node_id': {'key': 'referencedNodeId', 'type': 'str'},
        'pipeline_run_setting_parameters': {'key': 'pipelineRunSettingParameters', 'type': '[RunSettingParameter]'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'real_time_endpoint_info': {'key': 'realTimeEndpointInfo', 'type': 'RealTimeEndpointInfo'},
        'node_telemetry_meta_infos': {'key': 'nodeTelemetryMetaInfos', 'type': '[NodeTelemetryMetaInfo]'},
        'graph_components_mode': {'key': 'graphComponentsMode', 'type': 'str'},
        'module_nodes': {'key': 'moduleNodes', 'type': '[GraphModuleNode]'},
        'dataset_nodes': {'key': 'datasetNodes', 'type': '[GraphDatasetNode]'},
        'sub_graph_nodes': {'key': 'subGraphNodes', 'type': '[GraphReferenceNode]'},
        'control_reference_nodes': {'key': 'controlReferenceNodes', 'type': '[GraphControlReferenceNode]'},
        'control_nodes': {'key': 'controlNodes', 'type': '[GraphControlNode]'},
        'edges': {'key': 'edges', 'type': '[GraphEdge]'},
        'entity_interface': {'key': 'entityInterface', 'type': 'EntityInterface'},
        'graph_layout': {'key': 'graphLayout', 'type': 'GraphLayout'},
        'created_by': {'key': 'createdBy', 'type': 'CreatedBy'},
        'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'CreatedBy'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'default_cloud_priority': {'key': 'defaultCloudPriority', 'type': 'CloudPrioritySetting'},
        'extended_properties': {'key': 'extendedProperties', 'type': '{str}'},
        'parent_sub_graph_module_ids': {'key': 'parentSubGraphModuleIds', 'type': '[str]'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        graph_module_dtos: Optional[List["ModuleDto"]] = None,
        graph_data_sources: Optional[List["DataInfo"]] = None,
        graphs: Optional[Dict[str, "PipelineGraph"]] = None,
        graph_drafts: Optional[Dict[str, "PipelineGraph"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        referenced_node_id: Optional[str] = None,
        pipeline_run_setting_parameters: Optional[List["RunSettingParameter"]] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        real_time_endpoint_info: Optional["RealTimeEndpointInfo"] = None,
        node_telemetry_meta_infos: Optional[List["NodeTelemetryMetaInfo"]] = None,
        graph_components_mode: Optional[Union[str, "GraphComponentsMode"]] = None,
        module_nodes: Optional[List["GraphModuleNode"]] = None,
        dataset_nodes: Optional[List["GraphDatasetNode"]] = None,
        sub_graph_nodes: Optional[List["GraphReferenceNode"]] = None,
        control_reference_nodes: Optional[List["GraphControlReferenceNode"]] = None,
        control_nodes: Optional[List["GraphControlNode"]] = None,
        edges: Optional[List["GraphEdge"]] = None,
        entity_interface: Optional["EntityInterface"] = None,
        graph_layout: Optional["GraphLayout"] = None,
        created_by: Optional["CreatedBy"] = None,
        last_updated_by: Optional["CreatedBy"] = None,
        default_compute: Optional["ComputeSetting"] = None,
        default_datastore: Optional["DatastoreSetting"] = None,
        default_cloud_priority: Optional["CloudPrioritySetting"] = None,
        extended_properties: Optional[Dict[str, str]] = None,
        parent_sub_graph_module_ids: Optional[List[str]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword graph_module_dtos:
        :paramtype graph_module_dtos: list[~flow.models.ModuleDto]
        :keyword graph_data_sources:
        :paramtype graph_data_sources: list[~flow.models.DataInfo]
        :keyword graphs: This is a dictionary.
        :paramtype graphs: dict[str, ~flow.models.PipelineGraph]
        :keyword graph_drafts: This is a dictionary.
        :paramtype graph_drafts: dict[str, ~flow.models.PipelineGraph]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword referenced_node_id:
        :paramtype referenced_node_id: str
        :keyword pipeline_run_setting_parameters:
        :paramtype pipeline_run_setting_parameters: list[~flow.models.RunSettingParameter]
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword real_time_endpoint_info:
        :paramtype real_time_endpoint_info: ~flow.models.RealTimeEndpointInfo
        :keyword node_telemetry_meta_infos:
        :paramtype node_telemetry_meta_infos: list[~flow.models.NodeTelemetryMetaInfo]
        :keyword graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
         "ContainsDesignerBuildin".
        :paramtype graph_components_mode: str or ~flow.models.GraphComponentsMode
        :keyword module_nodes:
        :paramtype module_nodes: list[~flow.models.GraphModuleNode]
        :keyword dataset_nodes:
        :paramtype dataset_nodes: list[~flow.models.GraphDatasetNode]
        :keyword sub_graph_nodes:
        :paramtype sub_graph_nodes: list[~flow.models.GraphReferenceNode]
        :keyword control_reference_nodes:
        :paramtype control_reference_nodes: list[~flow.models.GraphControlReferenceNode]
        :keyword control_nodes:
        :paramtype control_nodes: list[~flow.models.GraphControlNode]
        :keyword edges:
        :paramtype edges: list[~flow.models.GraphEdge]
        :keyword entity_interface:
        :paramtype entity_interface: ~flow.models.EntityInterface
        :keyword graph_layout:
        :paramtype graph_layout: ~flow.models.GraphLayout
        :keyword created_by:
        :paramtype created_by: ~flow.models.CreatedBy
        :keyword last_updated_by:
        :paramtype last_updated_by: ~flow.models.CreatedBy
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.ComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.DatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.CloudPrioritySetting
        :keyword extended_properties: This is a dictionary.
        :paramtype extended_properties: dict[str, str]
        :keyword parent_sub_graph_module_ids:
        :paramtype parent_sub_graph_module_ids: list[str]
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineGraph, self).__init__(**kwargs)
        self.graph_module_dtos = graph_module_dtos
        self.graph_data_sources = graph_data_sources
        self.graphs = graphs
        self.graph_drafts = graph_drafts
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.sub_pipelines_info = sub_pipelines_info
        self.referenced_node_id = referenced_node_id
        self.pipeline_run_setting_parameters = pipeline_run_setting_parameters
        self.pipeline_run_settings = pipeline_run_settings
        self.real_time_endpoint_info = real_time_endpoint_info
        self.node_telemetry_meta_infos = node_telemetry_meta_infos
        self.graph_components_mode = graph_components_mode
        self.module_nodes = module_nodes
        self.dataset_nodes = dataset_nodes
        self.sub_graph_nodes = sub_graph_nodes
        self.control_reference_nodes = control_reference_nodes
        self.control_nodes = control_nodes
        self.edges = edges
        self.entity_interface = entity_interface
        self.graph_layout = graph_layout
        self.created_by = created_by
        self.last_updated_by = last_updated_by
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.default_cloud_priority = default_cloud_priority
        self.extended_properties = extended_properties
        self.parent_sub_graph_module_ids = parent_sub_graph_module_ids
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineInput(msrest.serialization.Model):
    """PipelineInput.

    :ivar data:
    :vartype data: ~flow.models.InputData
    """

    _attribute_map = {
        'data': {'key': 'data', 'type': 'InputData'},
    }

    def __init__(
        self,
        *,
        data: Optional["InputData"] = None,
        **kwargs
    ):
        """
        :keyword data:
        :paramtype data: ~flow.models.InputData
        """
        super(PipelineInput, self).__init__(**kwargs)
        self.data = data


class PipelineJob(msrest.serialization.Model):
    """PipelineJob.

    :ivar job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
     "AutoML", "Spark", "Base", "FineTuning".
    :vartype job_type: str or ~flow.models.JobType
    :ivar pipeline_job_type:  The only acceptable values to pass in are None and "AzureML". The
     default value is None.
    :vartype pipeline_job_type: str
    :ivar pipeline:
    :vartype pipeline: ~flow.models.Pipeline
    :ivar compute_id:
    :vartype compute_id: str
    :ivar run_id:
    :vartype run_id: str
    :ivar settings: Anything.
    :vartype settings: any
    :ivar component_jobs: This is a dictionary.
    :vartype component_jobs: dict[str, ~flow.models.MfeInternalV20211001ComponentJob]
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.JobInput]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.JobOutput]
    :ivar bindings:
    :vartype bindings: list[~flow.models.Binding]
    :ivar jobs: This is a dictionary.
    :vartype jobs: dict[str, any]
    :ivar input_bindings: This is a dictionary.
    :vartype input_bindings: dict[str, ~flow.models.InputDataBinding]
    :ivar output_bindings: This is a dictionary.
    :vartype output_bindings: dict[str, ~flow.models.OutputDataBinding]
    :ivar source_job_id:
    :vartype source_job_id: str
    :ivar provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
     "InProgress".
    :vartype provisioning_state: str or ~flow.models.JobProvisioningState
    :ivar parent_job_name:
    :vartype parent_job_name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar status: Possible values include: "NotStarted", "Starting", "Provisioning", "Preparing",
     "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed", "Canceled",
     "NotResponding", "Paused", "Unknown", "Scheduled".
    :vartype status: str or ~flow.models.JobStatus
    :ivar interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
    :vartype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
    :ivar identity:
    :vartype identity: ~flow.models.MfeInternalIdentityConfiguration
    :ivar compute:
    :vartype compute: ~flow.models.ComputeConfiguration
    :ivar priority:
    :vartype priority: int
    :ivar output:
    :vartype output: ~flow.models.JobOutputArtifacts
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar schedule:
    :vartype schedule: ~flow.models.ScheduleBase
    :ivar component_id:
    :vartype component_id: str
    :ivar notification_setting:
    :vartype notification_setting: ~flow.models.NotificationSetting
    :ivar secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
    :vartype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'job_type': {'key': 'jobType', 'type': 'str'},
        'pipeline_job_type': {'key': 'pipelineJobType', 'type': 'str'},
        'pipeline': {'key': 'pipeline', 'type': 'Pipeline'},
        'compute_id': {'key': 'computeId', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'settings': {'key': 'settings', 'type': 'object'},
        'component_jobs': {'key': 'componentJobs', 'type': '{MfeInternalV20211001ComponentJob}'},
        'inputs': {'key': 'inputs', 'type': '{JobInput}'},
        'outputs': {'key': 'outputs', 'type': '{JobOutput}'},
        'bindings': {'key': 'bindings', 'type': '[Binding]'},
        'jobs': {'key': 'jobs', 'type': '{object}'},
        'input_bindings': {'key': 'inputBindings', 'type': '{InputDataBinding}'},
        'output_bindings': {'key': 'outputBindings', 'type': '{OutputDataBinding}'},
        'source_job_id': {'key': 'sourceJobId', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'interaction_endpoints': {'key': 'interactionEndpoints', 'type': '{JobEndpoint}'},
        'identity': {'key': 'identity', 'type': 'MfeInternalIdentityConfiguration'},
        'compute': {'key': 'compute', 'type': 'ComputeConfiguration'},
        'priority': {'key': 'priority', 'type': 'int'},
        'output': {'key': 'output', 'type': 'JobOutputArtifacts'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'schedule': {'key': 'schedule', 'type': 'ScheduleBase'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'secrets_configuration': {'key': 'secretsConfiguration', 'type': '{MfeInternalSecretConfiguration}'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        job_type: Optional[Union[str, "JobType"]] = None,
        pipeline_job_type: Optional[str] = None,
        pipeline: Optional["Pipeline"] = None,
        compute_id: Optional[str] = None,
        run_id: Optional[str] = None,
        settings: Optional[Any] = None,
        component_jobs: Optional[Dict[str, "MfeInternalV20211001ComponentJob"]] = None,
        inputs: Optional[Dict[str, "JobInput"]] = None,
        outputs: Optional[Dict[str, "JobOutput"]] = None,
        bindings: Optional[List["Binding"]] = None,
        jobs: Optional[Dict[str, Any]] = None,
        input_bindings: Optional[Dict[str, "InputDataBinding"]] = None,
        output_bindings: Optional[Dict[str, "OutputDataBinding"]] = None,
        source_job_id: Optional[str] = None,
        provisioning_state: Optional[Union[str, "JobProvisioningState"]] = None,
        parent_job_name: Optional[str] = None,
        display_name: Optional[str] = None,
        experiment_name: Optional[str] = None,
        status: Optional[Union[str, "JobStatus"]] = None,
        interaction_endpoints: Optional[Dict[str, "JobEndpoint"]] = None,
        identity: Optional["MfeInternalIdentityConfiguration"] = None,
        compute: Optional["ComputeConfiguration"] = None,
        priority: Optional[int] = None,
        output: Optional["JobOutputArtifacts"] = None,
        is_archived: Optional[bool] = None,
        schedule: Optional["ScheduleBase"] = None,
        component_id: Optional[str] = None,
        notification_setting: Optional["NotificationSetting"] = None,
        secrets_configuration: Optional[Dict[str, "MfeInternalSecretConfiguration"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
         "AutoML", "Spark", "Base", "FineTuning".
        :paramtype job_type: str or ~flow.models.JobType
        :keyword pipeline_job_type:  The only acceptable values to pass in are None and "AzureML". The
         default value is None.
        :paramtype pipeline_job_type: str
        :keyword pipeline:
        :paramtype pipeline: ~flow.models.Pipeline
        :keyword compute_id:
        :paramtype compute_id: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword settings: Anything.
        :paramtype settings: any
        :keyword component_jobs: This is a dictionary.
        :paramtype component_jobs: dict[str, ~flow.models.MfeInternalV20211001ComponentJob]
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.JobInput]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.JobOutput]
        :keyword bindings:
        :paramtype bindings: list[~flow.models.Binding]
        :keyword jobs: This is a dictionary.
        :paramtype jobs: dict[str, any]
        :keyword input_bindings: This is a dictionary.
        :paramtype input_bindings: dict[str, ~flow.models.InputDataBinding]
        :keyword output_bindings: This is a dictionary.
        :paramtype output_bindings: dict[str, ~flow.models.OutputDataBinding]
        :keyword source_job_id:
        :paramtype source_job_id: str
        :keyword provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
         "InProgress".
        :paramtype provisioning_state: str or ~flow.models.JobProvisioningState
        :keyword parent_job_name:
        :paramtype parent_job_name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword status: Possible values include: "NotStarted", "Starting", "Provisioning",
         "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed",
         "Canceled", "NotResponding", "Paused", "Unknown", "Scheduled".
        :paramtype status: str or ~flow.models.JobStatus
        :keyword interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
        :paramtype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
        :keyword identity:
        :paramtype identity: ~flow.models.MfeInternalIdentityConfiguration
        :keyword compute:
        :paramtype compute: ~flow.models.ComputeConfiguration
        :keyword priority:
        :paramtype priority: int
        :keyword output:
        :paramtype output: ~flow.models.JobOutputArtifacts
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword schedule:
        :paramtype schedule: ~flow.models.ScheduleBase
        :keyword component_id:
        :paramtype component_id: str
        :keyword notification_setting:
        :paramtype notification_setting: ~flow.models.NotificationSetting
        :keyword secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
        :paramtype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(PipelineJob, self).__init__(**kwargs)
        self.job_type = job_type
        self.pipeline_job_type = pipeline_job_type
        self.pipeline = pipeline
        self.compute_id = compute_id
        self.run_id = run_id
        self.settings = settings
        self.component_jobs = component_jobs
        self.inputs = inputs
        self.outputs = outputs
        self.bindings = bindings
        self.jobs = jobs
        self.input_bindings = input_bindings
        self.output_bindings = output_bindings
        self.source_job_id = source_job_id
        self.provisioning_state = provisioning_state
        self.parent_job_name = parent_job_name
        self.display_name = display_name
        self.experiment_name = experiment_name
        self.status = status
        self.interaction_endpoints = interaction_endpoints
        self.identity = identity
        self.compute = compute
        self.priority = priority
        self.output = output
        self.is_archived = is_archived
        self.schedule = schedule
        self.component_id = component_id
        self.notification_setting = notification_setting
        self.secrets_configuration = secrets_configuration
        self.description = description
        self.tags = tags
        self.properties = properties


class PipelineJobRuntimeBasicSettings(msrest.serialization.Model):
    """PipelineJobRuntimeBasicSettings.

    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar pipeline_job_name:
    :vartype pipeline_job_name: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar trigger_time_string:
    :vartype trigger_time_string: str
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    """

    _attribute_map = {
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'pipeline_job_name': {'key': 'pipelineJobName', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'trigger_time_string': {'key': 'triggerTimeString', 'type': 'str'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
    }

    def __init__(
        self,
        *,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        experiment_name: Optional[str] = None,
        pipeline_job_name: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        trigger_time_string: Optional[str] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        **kwargs
    ):
        """
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword pipeline_job_name:
        :paramtype pipeline_job_name: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword trigger_time_string:
        :paramtype trigger_time_string: str
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        """
        super(PipelineJobRuntimeBasicSettings, self).__init__(**kwargs)
        self.pipeline_run_settings = pipeline_run_settings
        self.experiment_name = experiment_name
        self.pipeline_job_name = pipeline_job_name
        self.tags = tags
        self.display_name = display_name
        self.description = description
        self.trigger_time_string = trigger_time_string
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments


class PipelineJobScheduleDto(msrest.serialization.Model):
    """PipelineJobScheduleDto.

    :ivar system_data:
    :vartype system_data: ~flow.models.SystemData
    :ivar name:
    :vartype name: str
    :ivar pipeline_job_name:
    :vartype pipeline_job_name: str
    :ivar pipeline_job_runtime_settings:
    :vartype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
    :ivar display_name:
    :vartype display_name: str
    :ivar trigger_type: Possible values include: "Recurrence", "Cron".
    :vartype trigger_type: str or ~flow.models.TriggerType
    :ivar recurrence:
    :vartype recurrence: ~flow.models.Recurrence
    :ivar cron:
    :vartype cron: ~flow.models.Cron
    :ivar status: Possible values include: "Enabled", "Disabled".
    :vartype status: str or ~flow.models.ScheduleStatus
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'system_data': {'key': 'systemData', 'type': 'SystemData'},
        'name': {'key': 'name', 'type': 'str'},
        'pipeline_job_name': {'key': 'pipelineJobName', 'type': 'str'},
        'pipeline_job_runtime_settings': {'key': 'pipelineJobRuntimeSettings', 'type': 'PipelineJobRuntimeBasicSettings'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'trigger_type': {'key': 'triggerType', 'type': 'str'},
        'recurrence': {'key': 'recurrence', 'type': 'Recurrence'},
        'cron': {'key': 'cron', 'type': 'Cron'},
        'status': {'key': 'status', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        system_data: Optional["SystemData"] = None,
        name: Optional[str] = None,
        pipeline_job_name: Optional[str] = None,
        pipeline_job_runtime_settings: Optional["PipelineJobRuntimeBasicSettings"] = None,
        display_name: Optional[str] = None,
        trigger_type: Optional[Union[str, "TriggerType"]] = None,
        recurrence: Optional["Recurrence"] = None,
        cron: Optional["Cron"] = None,
        status: Optional[Union[str, "ScheduleStatus"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword system_data:
        :paramtype system_data: ~flow.models.SystemData
        :keyword name:
        :paramtype name: str
        :keyword pipeline_job_name:
        :paramtype pipeline_job_name: str
        :keyword pipeline_job_runtime_settings:
        :paramtype pipeline_job_runtime_settings: ~flow.models.PipelineJobRuntimeBasicSettings
        :keyword display_name:
        :paramtype display_name: str
        :keyword trigger_type: Possible values include: "Recurrence", "Cron".
        :paramtype trigger_type: str or ~flow.models.TriggerType
        :keyword recurrence:
        :paramtype recurrence: ~flow.models.Recurrence
        :keyword cron:
        :paramtype cron: ~flow.models.Cron
        :keyword status: Possible values include: "Enabled", "Disabled".
        :paramtype status: str or ~flow.models.ScheduleStatus
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(PipelineJobScheduleDto, self).__init__(**kwargs)
        self.system_data = system_data
        self.name = name
        self.pipeline_job_name = pipeline_job_name
        self.pipeline_job_runtime_settings = pipeline_job_runtime_settings
        self.display_name = display_name
        self.trigger_type = trigger_type
        self.recurrence = recurrence
        self.cron = cron
        self.status = status
        self.description = description
        self.tags = tags
        self.properties = properties


class PipelineOutput(msrest.serialization.Model):
    """PipelineOutput.

    :ivar data:
    :vartype data: ~flow.models.MfeInternalOutputData
    """

    _attribute_map = {
        'data': {'key': 'data', 'type': 'MfeInternalOutputData'},
    }

    def __init__(
        self,
        *,
        data: Optional["MfeInternalOutputData"] = None,
        **kwargs
    ):
        """
        :keyword data:
        :paramtype data: ~flow.models.MfeInternalOutputData
        """
        super(PipelineOutput, self).__init__(**kwargs)
        self.data = data


class PipelineRun(msrest.serialization.Model):
    """PipelineRun.

    :ivar pipeline_id:
    :vartype pipeline_id: str
    :ivar run_source:
    :vartype run_source: str
    :ivar run_type: Possible values include: "HTTP", "SDK", "Schedule", "Portal".
    :vartype run_type: str or ~flow.models.RunType
    :ivar parameters: This is a dictionary.
    :vartype parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignment: This is a dictionary.
    :vartype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar total_steps:
    :vartype total_steps: int
    :ivar logs: This is a dictionary.
    :vartype logs: dict[str, str]
    :ivar user_alias:
    :vartype user_alias: str
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar continue_run_on_failed_optional_input:
    :vartype continue_run_on_failed_optional_input: bool
    :ivar default_compute:
    :vartype default_compute: ~flow.models.ComputeSetting
    :ivar default_datastore:
    :vartype default_datastore: ~flow.models.DatastoreSetting
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.CloudPrioritySetting
    :ivar pipeline_timeout_seconds:
    :vartype pipeline_timeout_seconds: int
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar identity_config:
    :vartype identity_config: ~flow.models.IdentitySetting
    :ivar description:
    :vartype description: str
    :ivar display_name:
    :vartype display_name: str
    :ivar run_number:
    :vartype run_number: int
    :ivar status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
     "Failed", "Finished", "Canceled", "Throttled", "Unknown".
    :vartype status_code: str or ~flow.models.PipelineStatusCode
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar graph_id:
    :vartype graph_id: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar is_experiment_archived:
    :vartype is_experiment_archived: bool
    :ivar submitted_by:
    :vartype submitted_by: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar step_tags: This is a dictionary.
    :vartype step_tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar aether_start_time:
    :vartype aether_start_time: ~datetime.datetime
    :ivar aether_end_time:
    :vartype aether_end_time: ~datetime.datetime
    :ivar run_history_start_time:
    :vartype run_history_start_time: ~datetime.datetime
    :ivar run_history_end_time:
    :vartype run_history_end_time: ~datetime.datetime
    :ivar unique_child_run_compute_targets:
    :vartype unique_child_run_compute_targets: list[str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _validation = {
        'unique_child_run_compute_targets': {'unique': True},
    }

    _attribute_map = {
        'pipeline_id': {'key': 'pipelineId', 'type': 'str'},
        'run_source': {'key': 'runSource', 'type': 'str'},
        'run_type': {'key': 'runType', 'type': 'str'},
        'parameters': {'key': 'parameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'total_steps': {'key': 'totalSteps', 'type': 'int'},
        'logs': {'key': 'logs', 'type': '{str}'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'continue_run_on_failed_optional_input': {'key': 'continueRunOnFailedOptionalInput', 'type': 'bool'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'default_cloud_priority': {'key': 'defaultCloudPriority', 'type': 'CloudPrioritySetting'},
        'pipeline_timeout_seconds': {'key': 'pipelineTimeoutSeconds', 'type': 'int'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'identity_config': {'key': 'identityConfig', 'type': 'IdentitySetting'},
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'status_code': {'key': 'statusCode', 'type': 'str'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'is_experiment_archived': {'key': 'isExperimentArchived', 'type': 'bool'},
        'submitted_by': {'key': 'submittedBy', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'step_tags': {'key': 'stepTags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'aether_start_time': {'key': 'aetherStartTime', 'type': 'iso-8601'},
        'aether_end_time': {'key': 'aetherEndTime', 'type': 'iso-8601'},
        'run_history_start_time': {'key': 'runHistoryStartTime', 'type': 'iso-8601'},
        'run_history_end_time': {'key': 'runHistoryEndTime', 'type': 'iso-8601'},
        'unique_child_run_compute_targets': {'key': 'uniqueChildRunComputeTargets', 'type': '[str]'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        pipeline_id: Optional[str] = None,
        run_source: Optional[str] = None,
        run_type: Optional[Union[str, "RunType"]] = None,
        parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignment: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        total_steps: Optional[int] = None,
        logs: Optional[Dict[str, str]] = None,
        user_alias: Optional[str] = None,
        enforce_rerun: Optional[bool] = None,
        continue_run_on_failed_optional_input: Optional[bool] = None,
        default_compute: Optional["ComputeSetting"] = None,
        default_datastore: Optional["DatastoreSetting"] = None,
        default_cloud_priority: Optional["CloudPrioritySetting"] = None,
        pipeline_timeout_seconds: Optional[int] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        identity_config: Optional["IdentitySetting"] = None,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        run_number: Optional[int] = None,
        status_code: Optional[Union[str, "PipelineStatusCode"]] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        graph_id: Optional[str] = None,
        experiment_id: Optional[str] = None,
        experiment_name: Optional[str] = None,
        is_experiment_archived: Optional[bool] = None,
        submitted_by: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        step_tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        aether_start_time: Optional[datetime.datetime] = None,
        aether_end_time: Optional[datetime.datetime] = None,
        run_history_start_time: Optional[datetime.datetime] = None,
        run_history_end_time: Optional[datetime.datetime] = None,
        unique_child_run_compute_targets: Optional[List[str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword pipeline_id:
        :paramtype pipeline_id: str
        :keyword run_source:
        :paramtype run_source: str
        :keyword run_type: Possible values include: "HTTP", "SDK", "Schedule", "Portal".
        :paramtype run_type: str or ~flow.models.RunType
        :keyword parameters: This is a dictionary.
        :paramtype parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignment: This is a dictionary.
        :paramtype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword total_steps:
        :paramtype total_steps: int
        :keyword logs: This is a dictionary.
        :paramtype logs: dict[str, str]
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword continue_run_on_failed_optional_input:
        :paramtype continue_run_on_failed_optional_input: bool
        :keyword default_compute:
        :paramtype default_compute: ~flow.models.ComputeSetting
        :keyword default_datastore:
        :paramtype default_datastore: ~flow.models.DatastoreSetting
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.CloudPrioritySetting
        :keyword pipeline_timeout_seconds:
        :paramtype pipeline_timeout_seconds: int
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword identity_config:
        :paramtype identity_config: ~flow.models.IdentitySetting
        :keyword description:
        :paramtype description: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword run_number:
        :paramtype run_number: int
        :keyword status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
         "Failed", "Finished", "Canceled", "Throttled", "Unknown".
        :paramtype status_code: str or ~flow.models.PipelineStatusCode
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword is_experiment_archived:
        :paramtype is_experiment_archived: bool
        :keyword submitted_by:
        :paramtype submitted_by: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword step_tags: This is a dictionary.
        :paramtype step_tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword aether_start_time:
        :paramtype aether_start_time: ~datetime.datetime
        :keyword aether_end_time:
        :paramtype aether_end_time: ~datetime.datetime
        :keyword run_history_start_time:
        :paramtype run_history_start_time: ~datetime.datetime
        :keyword run_history_end_time:
        :paramtype run_history_end_time: ~datetime.datetime
        :keyword unique_child_run_compute_targets:
        :paramtype unique_child_run_compute_targets: list[str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineRun, self).__init__(**kwargs)
        self.pipeline_id = pipeline_id
        self.run_source = run_source
        self.run_type = run_type
        self.parameters = parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.total_steps = total_steps
        self.logs = logs
        self.user_alias = user_alias
        self.enforce_rerun = enforce_rerun
        self.continue_run_on_failed_optional_input = continue_run_on_failed_optional_input
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.default_cloud_priority = default_cloud_priority
        self.pipeline_timeout_seconds = pipeline_timeout_seconds
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.identity_config = identity_config
        self.description = description
        self.display_name = display_name
        self.run_number = run_number
        self.status_code = status_code
        self.run_status = run_status
        self.status_detail = status_detail
        self.start_time = start_time
        self.end_time = end_time
        self.graph_id = graph_id
        self.experiment_id = experiment_id
        self.experiment_name = experiment_name
        self.is_experiment_archived = is_experiment_archived
        self.submitted_by = submitted_by
        self.tags = tags
        self.step_tags = step_tags
        self.properties = properties
        self.aether_start_time = aether_start_time
        self.aether_end_time = aether_end_time
        self.run_history_start_time = run_history_start_time
        self.run_history_end_time = run_history_end_time
        self.unique_child_run_compute_targets = unique_child_run_compute_targets
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineRunGraphDetail(msrest.serialization.Model):
    """PipelineRunGraphDetail.

    :ivar graph:
    :vartype graph: ~flow.models.PipelineGraph
    :ivar graph_nodes_status: This is a dictionary.
    :vartype graph_nodes_status: dict[str, ~flow.models.GraphNodeStatusInfo]
    """

    _attribute_map = {
        'graph': {'key': 'graph', 'type': 'PipelineGraph'},
        'graph_nodes_status': {'key': 'graphNodesStatus', 'type': '{GraphNodeStatusInfo}'},
    }

    def __init__(
        self,
        *,
        graph: Optional["PipelineGraph"] = None,
        graph_nodes_status: Optional[Dict[str, "GraphNodeStatusInfo"]] = None,
        **kwargs
    ):
        """
        :keyword graph:
        :paramtype graph: ~flow.models.PipelineGraph
        :keyword graph_nodes_status: This is a dictionary.
        :paramtype graph_nodes_status: dict[str, ~flow.models.GraphNodeStatusInfo]
        """
        super(PipelineRunGraphDetail, self).__init__(**kwargs)
        self.graph = graph
        self.graph_nodes_status = graph_nodes_status


class PipelineRunGraphStatus(msrest.serialization.Model):
    """PipelineRunGraphStatus.

    :ivar status:
    :vartype status: ~flow.models.PipelineStatus
    :ivar graph_nodes_status: This is a dictionary.
    :vartype graph_nodes_status: dict[str, ~flow.models.GraphNodeStatusInfo]
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar is_experiment_archived:
    :vartype is_experiment_archived: bool
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'PipelineStatus'},
        'graph_nodes_status': {'key': 'graphNodesStatus', 'type': '{GraphNodeStatusInfo}'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'is_experiment_archived': {'key': 'isExperimentArchived', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        status: Optional["PipelineStatus"] = None,
        graph_nodes_status: Optional[Dict[str, "GraphNodeStatusInfo"]] = None,
        experiment_id: Optional[str] = None,
        is_experiment_archived: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword status:
        :paramtype status: ~flow.models.PipelineStatus
        :keyword graph_nodes_status: This is a dictionary.
        :paramtype graph_nodes_status: dict[str, ~flow.models.GraphNodeStatusInfo]
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword is_experiment_archived:
        :paramtype is_experiment_archived: bool
        """
        super(PipelineRunGraphStatus, self).__init__(**kwargs)
        self.status = status
        self.graph_nodes_status = graph_nodes_status
        self.experiment_id = experiment_id
        self.is_experiment_archived = is_experiment_archived


class PipelineRunProfile(msrest.serialization.Model):
    """PipelineRunProfile.

    :ivar run_id:
    :vartype run_id: str
    :ivar node_id:
    :vartype node_id: str
    :ivar run_url:
    :vartype run_url: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar description:
    :vartype description: str
    :ivar status:
    :vartype status: ~flow.models.PipelineRunStatus
    :ivar create_time:
    :vartype create_time: long
    :ivar start_time:
    :vartype start_time: long
    :ivar end_time:
    :vartype end_time: long
    :ivar profiling_time:
    :vartype profiling_time: long
    :ivar step_runs_profile:
    :vartype step_runs_profile: list[~flow.models.StepRunProfile]
    :ivar sub_pipeline_run_profile:
    :vartype sub_pipeline_run_profile: list[~flow.models.PipelineRunProfile]
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'run_url': {'key': 'runUrl', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'status': {'key': 'status', 'type': 'PipelineRunStatus'},
        'create_time': {'key': 'createTime', 'type': 'long'},
        'start_time': {'key': 'startTime', 'type': 'long'},
        'end_time': {'key': 'endTime', 'type': 'long'},
        'profiling_time': {'key': 'profilingTime', 'type': 'long'},
        'step_runs_profile': {'key': 'stepRunsProfile', 'type': '[StepRunProfile]'},
        'sub_pipeline_run_profile': {'key': 'subPipelineRunProfile', 'type': '[PipelineRunProfile]'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        node_id: Optional[str] = None,
        run_url: Optional[str] = None,
        experiment_name: Optional[str] = None,
        experiment_id: Optional[str] = None,
        description: Optional[str] = None,
        status: Optional["PipelineRunStatus"] = None,
        create_time: Optional[int] = None,
        start_time: Optional[int] = None,
        end_time: Optional[int] = None,
        profiling_time: Optional[int] = None,
        step_runs_profile: Optional[List["StepRunProfile"]] = None,
        sub_pipeline_run_profile: Optional[List["PipelineRunProfile"]] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword node_id:
        :paramtype node_id: str
        :keyword run_url:
        :paramtype run_url: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword description:
        :paramtype description: str
        :keyword status:
        :paramtype status: ~flow.models.PipelineRunStatus
        :keyword create_time:
        :paramtype create_time: long
        :keyword start_time:
        :paramtype start_time: long
        :keyword end_time:
        :paramtype end_time: long
        :keyword profiling_time:
        :paramtype profiling_time: long
        :keyword step_runs_profile:
        :paramtype step_runs_profile: list[~flow.models.StepRunProfile]
        :keyword sub_pipeline_run_profile:
        :paramtype sub_pipeline_run_profile: list[~flow.models.PipelineRunProfile]
        """
        super(PipelineRunProfile, self).__init__(**kwargs)
        self.run_id = run_id
        self.node_id = node_id
        self.run_url = run_url
        self.experiment_name = experiment_name
        self.experiment_id = experiment_id
        self.description = description
        self.status = status
        self.create_time = create_time
        self.start_time = start_time
        self.end_time = end_time
        self.profiling_time = profiling_time
        self.step_runs_profile = step_runs_profile
        self.sub_pipeline_run_profile = sub_pipeline_run_profile


class PipelineRunStatus(msrest.serialization.Model):
    """PipelineRunStatus.

    :ivar status_code: Possible values include: "NotStarted", "Running", "Failed", "Finished",
     "Canceled", "Queued", "CancelRequested".
    :vartype status_code: str or ~flow.models.PipelineRunStatusCode
    :ivar status_detail:
    :vartype status_detail: str
    :ivar creation_time:
    :vartype creation_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    """

    _attribute_map = {
        'status_code': {'key': 'statusCode', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'creation_time': {'key': 'creationTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        status_code: Optional[Union[str, "PipelineRunStatusCode"]] = None,
        status_detail: Optional[str] = None,
        creation_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword status_code: Possible values include: "NotStarted", "Running", "Failed", "Finished",
         "Canceled", "Queued", "CancelRequested".
        :paramtype status_code: str or ~flow.models.PipelineRunStatusCode
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword creation_time:
        :paramtype creation_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        """
        super(PipelineRunStatus, self).__init__(**kwargs)
        self.status_code = status_code
        self.status_detail = status_detail
        self.creation_time = creation_time
        self.end_time = end_time


class PipelineRunStepDetails(msrest.serialization.Model):
    """PipelineRunStepDetails.

    :ivar run_id:
    :vartype run_id: str
    :ivar target:
    :vartype target: str
    :ivar status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar is_reused:
    :vartype is_reused: bool
    :ivar logs: This is a dictionary.
    :vartype logs: dict[str, str]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, str]
    :ivar snapshot_info:
    :vartype snapshot_info: ~flow.models.SnapshotInfo
    :ivar input_datasets:
    :vartype input_datasets: list[~flow.models.DatasetLineage]
    :ivar output_datasets:
    :vartype output_datasets: list[~flow.models.OutputDatasetLineage]
    """

    _validation = {
        'input_datasets': {'unique': True},
        'output_datasets': {'unique': True},
    }

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'is_reused': {'key': 'isReused', 'type': 'bool'},
        'logs': {'key': 'logs', 'type': '{str}'},
        'outputs': {'key': 'outputs', 'type': '{str}'},
        'snapshot_info': {'key': 'snapshotInfo', 'type': 'SnapshotInfo'},
        'input_datasets': {'key': 'inputDatasets', 'type': '[DatasetLineage]'},
        'output_datasets': {'key': 'outputDatasets', 'type': '[OutputDatasetLineage]'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        target: Optional[str] = None,
        status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        is_reused: Optional[bool] = None,
        logs: Optional[Dict[str, str]] = None,
        outputs: Optional[Dict[str, str]] = None,
        snapshot_info: Optional["SnapshotInfo"] = None,
        input_datasets: Optional[List["DatasetLineage"]] = None,
        output_datasets: Optional[List["OutputDatasetLineage"]] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword target:
        :paramtype target: str
        :keyword status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword is_reused:
        :paramtype is_reused: bool
        :keyword logs: This is a dictionary.
        :paramtype logs: dict[str, str]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, str]
        :keyword snapshot_info:
        :paramtype snapshot_info: ~flow.models.SnapshotInfo
        :keyword input_datasets:
        :paramtype input_datasets: list[~flow.models.DatasetLineage]
        :keyword output_datasets:
        :paramtype output_datasets: list[~flow.models.OutputDatasetLineage]
        """
        super(PipelineRunStepDetails, self).__init__(**kwargs)
        self.run_id = run_id
        self.target = target
        self.status = status
        self.status_detail = status_detail
        self.parent_run_id = parent_run_id
        self.start_time = start_time
        self.end_time = end_time
        self.is_reused = is_reused
        self.logs = logs
        self.outputs = outputs
        self.snapshot_info = snapshot_info
        self.input_datasets = input_datasets
        self.output_datasets = output_datasets


class PipelineRunSummary(msrest.serialization.Model):
    """PipelineRunSummary.

    :ivar description:
    :vartype description: str
    :ivar display_name:
    :vartype display_name: str
    :ivar run_number:
    :vartype run_number: int
    :ivar status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
     "Failed", "Finished", "Canceled", "Throttled", "Unknown".
    :vartype status_code: str or ~flow.models.PipelineStatusCode
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar graph_id:
    :vartype graph_id: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar is_experiment_archived:
    :vartype is_experiment_archived: bool
    :ivar submitted_by:
    :vartype submitted_by: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar step_tags: This is a dictionary.
    :vartype step_tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar aether_start_time:
    :vartype aether_start_time: ~datetime.datetime
    :ivar aether_end_time:
    :vartype aether_end_time: ~datetime.datetime
    :ivar run_history_start_time:
    :vartype run_history_start_time: ~datetime.datetime
    :ivar run_history_end_time:
    :vartype run_history_end_time: ~datetime.datetime
    :ivar unique_child_run_compute_targets:
    :vartype unique_child_run_compute_targets: list[str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _validation = {
        'unique_child_run_compute_targets': {'unique': True},
    }

    _attribute_map = {
        'description': {'key': 'description', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'status_code': {'key': 'statusCode', 'type': 'str'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'is_experiment_archived': {'key': 'isExperimentArchived', 'type': 'bool'},
        'submitted_by': {'key': 'submittedBy', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'step_tags': {'key': 'stepTags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'aether_start_time': {'key': 'aetherStartTime', 'type': 'iso-8601'},
        'aether_end_time': {'key': 'aetherEndTime', 'type': 'iso-8601'},
        'run_history_start_time': {'key': 'runHistoryStartTime', 'type': 'iso-8601'},
        'run_history_end_time': {'key': 'runHistoryEndTime', 'type': 'iso-8601'},
        'unique_child_run_compute_targets': {'key': 'uniqueChildRunComputeTargets', 'type': '[str]'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        description: Optional[str] = None,
        display_name: Optional[str] = None,
        run_number: Optional[int] = None,
        status_code: Optional[Union[str, "PipelineStatusCode"]] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        graph_id: Optional[str] = None,
        experiment_id: Optional[str] = None,
        experiment_name: Optional[str] = None,
        is_experiment_archived: Optional[bool] = None,
        submitted_by: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        step_tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        aether_start_time: Optional[datetime.datetime] = None,
        aether_end_time: Optional[datetime.datetime] = None,
        run_history_start_time: Optional[datetime.datetime] = None,
        run_history_end_time: Optional[datetime.datetime] = None,
        unique_child_run_compute_targets: Optional[List[str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword description:
        :paramtype description: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword run_number:
        :paramtype run_number: int
        :keyword status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
         "Failed", "Finished", "Canceled", "Throttled", "Unknown".
        :paramtype status_code: str or ~flow.models.PipelineStatusCode
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword is_experiment_archived:
        :paramtype is_experiment_archived: bool
        :keyword submitted_by:
        :paramtype submitted_by: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword step_tags: This is a dictionary.
        :paramtype step_tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword aether_start_time:
        :paramtype aether_start_time: ~datetime.datetime
        :keyword aether_end_time:
        :paramtype aether_end_time: ~datetime.datetime
        :keyword run_history_start_time:
        :paramtype run_history_start_time: ~datetime.datetime
        :keyword run_history_end_time:
        :paramtype run_history_end_time: ~datetime.datetime
        :keyword unique_child_run_compute_targets:
        :paramtype unique_child_run_compute_targets: list[str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineRunSummary, self).__init__(**kwargs)
        self.description = description
        self.display_name = display_name
        self.run_number = run_number
        self.status_code = status_code
        self.run_status = run_status
        self.status_detail = status_detail
        self.start_time = start_time
        self.end_time = end_time
        self.graph_id = graph_id
        self.experiment_id = experiment_id
        self.experiment_name = experiment_name
        self.is_experiment_archived = is_experiment_archived
        self.submitted_by = submitted_by
        self.tags = tags
        self.step_tags = step_tags
        self.properties = properties
        self.aether_start_time = aether_start_time
        self.aether_end_time = aether_end_time
        self.run_history_start_time = run_history_start_time
        self.run_history_end_time = run_history_end_time
        self.unique_child_run_compute_targets = unique_child_run_compute_targets
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PipelineStatus(msrest.serialization.Model):
    """PipelineStatus.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
     "Failed", "Finished", "Canceled", "Throttled", "Unknown".
    :vartype status_code: str or ~flow.models.PipelineStatusCode
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar is_terminal_state:
    :vartype is_terminal_state: bool
    """

    _validation = {
        'is_terminal_state': {'readonly': True},
    }

    _attribute_map = {
        'status_code': {'key': 'statusCode', 'type': 'str'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'is_terminal_state': {'key': 'isTerminalState', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        status_code: Optional[Union[str, "PipelineStatusCode"]] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword status_code: Possible values include: "NotStarted", "InDraft", "Preparing", "Running",
         "Failed", "Finished", "Canceled", "Throttled", "Unknown".
        :paramtype status_code: str or ~flow.models.PipelineStatusCode
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        """
        super(PipelineStatus, self).__init__(**kwargs)
        self.status_code = status_code
        self.run_status = run_status
        self.status_detail = status_detail
        self.start_time = start_time
        self.end_time = end_time
        self.is_terminal_state = None


class PipelineStepRun(msrest.serialization.Model):
    """PipelineStepRun.

    :ivar step_name:
    :vartype step_name: str
    :ivar run_number:
    :vartype run_number: int
    :ivar run_id:
    :vartype run_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype run_status: str or ~flow.models.RunStatus
    :ivar compute_target:
    :vartype compute_target: str
    :ivar compute_type:
    :vartype compute_type: str
    :ivar run_type:
    :vartype run_type: str
    :ivar step_type:
    :vartype step_type: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar is_reused:
    :vartype is_reused: bool
    :ivar display_name:
    :vartype display_name: str
    """

    _attribute_map = {
        'step_name': {'key': 'stepName', 'type': 'str'},
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'run_status': {'key': 'runStatus', 'type': 'str'},
        'compute_target': {'key': 'computeTarget', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'run_type': {'key': 'runType', 'type': 'str'},
        'step_type': {'key': 'stepType', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'is_reused': {'key': 'isReused', 'type': 'bool'},
        'display_name': {'key': 'displayName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        step_name: Optional[str] = None,
        run_number: Optional[int] = None,
        run_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        run_status: Optional[Union[str, "RunStatus"]] = None,
        compute_target: Optional[str] = None,
        compute_type: Optional[str] = None,
        run_type: Optional[str] = None,
        step_type: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        is_reused: Optional[bool] = None,
        display_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword step_name:
        :paramtype step_name: str
        :keyword run_number:
        :paramtype run_number: int
        :keyword run_id:
        :paramtype run_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword run_status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype run_status: str or ~flow.models.RunStatus
        :keyword compute_target:
        :paramtype compute_target: str
        :keyword compute_type:
        :paramtype compute_type: str
        :keyword run_type:
        :paramtype run_type: str
        :keyword step_type:
        :paramtype step_type: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword is_reused:
        :paramtype is_reused: bool
        :keyword display_name:
        :paramtype display_name: str
        """
        super(PipelineStepRun, self).__init__(**kwargs)
        self.step_name = step_name
        self.run_number = run_number
        self.run_id = run_id
        self.start_time = start_time
        self.end_time = end_time
        self.run_status = run_status
        self.compute_target = compute_target
        self.compute_type = compute_type
        self.run_type = run_type
        self.step_type = step_type
        self.tags = tags
        self.is_reused = is_reused
        self.display_name = display_name


class PipelineStepRunOutputs(msrest.serialization.Model):
    """PipelineStepRunOutputs.

    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, str]
    :ivar port_outputs: This is a dictionary.
    :vartype port_outputs: dict[str, ~flow.models.PortOutputInfo]
    """

    _attribute_map = {
        'outputs': {'key': 'outputs', 'type': '{str}'},
        'port_outputs': {'key': 'portOutputs', 'type': '{PortOutputInfo}'},
    }

    def __init__(
        self,
        *,
        outputs: Optional[Dict[str, str]] = None,
        port_outputs: Optional[Dict[str, "PortOutputInfo"]] = None,
        **kwargs
    ):
        """
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, str]
        :keyword port_outputs: This is a dictionary.
        :paramtype port_outputs: dict[str, ~flow.models.PortOutputInfo]
        """
        super(PipelineStepRunOutputs, self).__init__(**kwargs)
        self.outputs = outputs
        self.port_outputs = port_outputs


class PipelineSubDraft(msrest.serialization.Model):
    """PipelineSubDraft.

    :ivar parent_graph_draft_id:
    :vartype parent_graph_draft_id: str
    :ivar parent_node_id:
    :vartype parent_node_id: str
    :ivar graph_detail:
    :vartype graph_detail: ~flow.models.PipelineRunGraphDetail
    :ivar module_dto:
    :vartype module_dto: ~flow.models.ModuleDto
    :ivar name:
    :vartype name: str
    :ivar last_edited_by:
    :vartype last_edited_by: str
    :ivar created_by:
    :vartype created_by: str
    :ivar description:
    :vartype description: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'parent_graph_draft_id': {'key': 'parentGraphDraftId', 'type': 'str'},
        'parent_node_id': {'key': 'parentNodeId', 'type': 'str'},
        'graph_detail': {'key': 'graphDetail', 'type': 'PipelineRunGraphDetail'},
        'module_dto': {'key': 'moduleDto', 'type': 'ModuleDto'},
        'name': {'key': 'name', 'type': 'str'},
        'last_edited_by': {'key': 'lastEditedBy', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        parent_graph_draft_id: Optional[str] = None,
        parent_node_id: Optional[str] = None,
        graph_detail: Optional["PipelineRunGraphDetail"] = None,
        module_dto: Optional["ModuleDto"] = None,
        name: Optional[str] = None,
        last_edited_by: Optional[str] = None,
        created_by: Optional[str] = None,
        description: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword parent_graph_draft_id:
        :paramtype parent_graph_draft_id: str
        :keyword parent_node_id:
        :paramtype parent_node_id: str
        :keyword graph_detail:
        :paramtype graph_detail: ~flow.models.PipelineRunGraphDetail
        :keyword module_dto:
        :paramtype module_dto: ~flow.models.ModuleDto
        :keyword name:
        :paramtype name: str
        :keyword last_edited_by:
        :paramtype last_edited_by: str
        :keyword created_by:
        :paramtype created_by: str
        :keyword description:
        :paramtype description: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PipelineSubDraft, self).__init__(**kwargs)
        self.parent_graph_draft_id = parent_graph_draft_id
        self.parent_node_id = parent_node_id
        self.graph_detail = graph_detail
        self.module_dto = module_dto
        self.name = name
        self.last_edited_by = last_edited_by
        self.created_by = created_by
        self.description = description
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.tags = tags
        self.properties = properties
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PolicyValidationResponse(msrest.serialization.Model):
    """PolicyValidationResponse.

    :ivar error_response: The error response.
    :vartype error_response: ~flow.models.ErrorResponse
    :ivar next_action_interval_in_seconds:
    :vartype next_action_interval_in_seconds: int
    :ivar action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
     "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
    :vartype action_type: str or ~flow.models.ActionType
    """

    _attribute_map = {
        'error_response': {'key': 'errorResponse', 'type': 'ErrorResponse'},
        'next_action_interval_in_seconds': {'key': 'nextActionIntervalInSeconds', 'type': 'int'},
        'action_type': {'key': 'actionType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        error_response: Optional["ErrorResponse"] = None,
        next_action_interval_in_seconds: Optional[int] = None,
        action_type: Optional[Union[str, "ActionType"]] = None,
        **kwargs
    ):
        """
        :keyword error_response: The error response.
        :paramtype error_response: ~flow.models.ErrorResponse
        :keyword next_action_interval_in_seconds:
        :paramtype next_action_interval_in_seconds: int
        :keyword action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
         "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
        :paramtype action_type: str or ~flow.models.ActionType
        """
        super(PolicyValidationResponse, self).__init__(**kwargs)
        self.error_response = error_response
        self.next_action_interval_in_seconds = next_action_interval_in_seconds
        self.action_type = action_type


class PortInfo(msrest.serialization.Model):
    """PortInfo.

    :ivar node_id:
    :vartype node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar graph_port_name:
    :vartype graph_port_name: str
    :ivar is_parameter:
    :vartype is_parameter: bool
    :ivar web_service_port:
    :vartype web_service_port: str
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'graph_port_name': {'key': 'graphPortName', 'type': 'str'},
        'is_parameter': {'key': 'isParameter', 'type': 'bool'},
        'web_service_port': {'key': 'webServicePort', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        graph_port_name: Optional[str] = None,
        is_parameter: Optional[bool] = None,
        web_service_port: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword graph_port_name:
        :paramtype graph_port_name: str
        :keyword is_parameter:
        :paramtype is_parameter: bool
        :keyword web_service_port:
        :paramtype web_service_port: str
        """
        super(PortInfo, self).__init__(**kwargs)
        self.node_id = node_id
        self.port_name = port_name
        self.graph_port_name = graph_port_name
        self.is_parameter = is_parameter
        self.web_service_port = web_service_port


class PortOutputInfo(msrest.serialization.Model):
    """PortOutputInfo.

    :ivar container_uri:
    :vartype container_uri: str
    :ivar relative_path:
    :vartype relative_path: str
    :ivar preview_params:
    :vartype preview_params: str
    :ivar model_output_path:
    :vartype model_output_path: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_reference_type: Possible values include: "None", "AzureBlob", "AzureDataLake",
     "AzureFiles", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS",
     "AzureMySqlDatabase", "Custom", "Hdfs".
    :vartype data_reference_type: str or ~flow.models.DataReferenceType
    :ivar is_file:
    :vartype is_file: bool
    :ivar supported_actions:
    :vartype supported_actions: list[str or ~flow.models.PortAction]
    """

    _attribute_map = {
        'container_uri': {'key': 'containerUri', 'type': 'str'},
        'relative_path': {'key': 'relativePath', 'type': 'str'},
        'preview_params': {'key': 'previewParams', 'type': 'str'},
        'model_output_path': {'key': 'modelOutputPath', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_reference_type': {'key': 'dataReferenceType', 'type': 'str'},
        'is_file': {'key': 'isFile', 'type': 'bool'},
        'supported_actions': {'key': 'supportedActions', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        container_uri: Optional[str] = None,
        relative_path: Optional[str] = None,
        preview_params: Optional[str] = None,
        model_output_path: Optional[str] = None,
        data_store_name: Optional[str] = None,
        data_reference_type: Optional[Union[str, "DataReferenceType"]] = None,
        is_file: Optional[bool] = None,
        supported_actions: Optional[List[Union[str, "PortAction"]]] = None,
        **kwargs
    ):
        """
        :keyword container_uri:
        :paramtype container_uri: str
        :keyword relative_path:
        :paramtype relative_path: str
        :keyword preview_params:
        :paramtype preview_params: str
        :keyword model_output_path:
        :paramtype model_output_path: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_reference_type: Possible values include: "None", "AzureBlob", "AzureDataLake",
         "AzureFiles", "AzureSqlDatabase", "AzurePostgresDatabase", "AzureDataLakeGen2", "DBFS",
         "AzureMySqlDatabase", "Custom", "Hdfs".
        :paramtype data_reference_type: str or ~flow.models.DataReferenceType
        :keyword is_file:
        :paramtype is_file: bool
        :keyword supported_actions:
        :paramtype supported_actions: list[str or ~flow.models.PortAction]
        """
        super(PortOutputInfo, self).__init__(**kwargs)
        self.container_uri = container_uri
        self.relative_path = relative_path
        self.preview_params = preview_params
        self.model_output_path = model_output_path
        self.data_store_name = data_store_name
        self.data_reference_type = data_reference_type
        self.is_file = is_file
        self.supported_actions = supported_actions


class PriorityConfig(msrest.serialization.Model):
    """PriorityConfig.

    :ivar job_priority:
    :vartype job_priority: int
    :ivar is_preemptible:
    :vartype is_preemptible: bool
    :ivar node_count_set:
    :vartype node_count_set: list[int]
    :ivar scale_interval:
    :vartype scale_interval: int
    """

    _attribute_map = {
        'job_priority': {'key': 'jobPriority', 'type': 'int'},
        'is_preemptible': {'key': 'isPreemptible', 'type': 'bool'},
        'node_count_set': {'key': 'nodeCountSet', 'type': '[int]'},
        'scale_interval': {'key': 'scaleInterval', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        job_priority: Optional[int] = None,
        is_preemptible: Optional[bool] = None,
        node_count_set: Optional[List[int]] = None,
        scale_interval: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword job_priority:
        :paramtype job_priority: int
        :keyword is_preemptible:
        :paramtype is_preemptible: bool
        :keyword node_count_set:
        :paramtype node_count_set: list[int]
        :keyword scale_interval:
        :paramtype scale_interval: int
        """
        super(PriorityConfig, self).__init__(**kwargs)
        self.job_priority = job_priority
        self.is_preemptible = is_preemptible
        self.node_count_set = node_count_set
        self.scale_interval = scale_interval


class PriorityConfiguration(msrest.serialization.Model):
    """PriorityConfiguration.

    :ivar cloud_priority:
    :vartype cloud_priority: int
    :ivar string_type_priority:
    :vartype string_type_priority: str
    """

    _attribute_map = {
        'cloud_priority': {'key': 'cloudPriority', 'type': 'int'},
        'string_type_priority': {'key': 'stringTypePriority', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        cloud_priority: Optional[int] = None,
        string_type_priority: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword cloud_priority:
        :paramtype cloud_priority: int
        :keyword string_type_priority:
        :paramtype string_type_priority: str
        """
        super(PriorityConfiguration, self).__init__(**kwargs)
        self.cloud_priority = cloud_priority
        self.string_type_priority = string_type_priority


class PromoteDataSetRequest(msrest.serialization.Model):
    """PromoteDataSetRequest.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar module_node_id:
    :vartype module_node_id: str
    :ivar step_run_id:
    :vartype step_run_id: str
    :ivar output_port_name:
    :vartype output_port_name: str
    :ivar model_output_path:
    :vartype model_output_path: str
    :ivar data_type_id:
    :vartype data_type_id: str
    :ivar dataset_type:
    :vartype dataset_type: str
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar output_relative_path:
    :vartype output_relative_path: str
    :ivar pipeline_run_id:
    :vartype pipeline_run_id: str
    :ivar root_pipeline_run_id:
    :vartype root_pipeline_run_id: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar experiment_id:
    :vartype experiment_id: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'module_node_id': {'key': 'moduleNodeId', 'type': 'str'},
        'step_run_id': {'key': 'stepRunId', 'type': 'str'},
        'output_port_name': {'key': 'outputPortName', 'type': 'str'},
        'model_output_path': {'key': 'modelOutputPath', 'type': 'str'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
        'dataset_type': {'key': 'datasetType', 'type': 'str'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'output_relative_path': {'key': 'outputRelativePath', 'type': 'str'},
        'pipeline_run_id': {'key': 'pipelineRunId', 'type': 'str'},
        'root_pipeline_run_id': {'key': 'rootPipelineRunId', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        module_node_id: Optional[str] = None,
        step_run_id: Optional[str] = None,
        output_port_name: Optional[str] = None,
        model_output_path: Optional[str] = None,
        data_type_id: Optional[str] = None,
        dataset_type: Optional[str] = None,
        data_store_name: Optional[str] = None,
        output_relative_path: Optional[str] = None,
        pipeline_run_id: Optional[str] = None,
        root_pipeline_run_id: Optional[str] = None,
        experiment_name: Optional[str] = None,
        experiment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword module_node_id:
        :paramtype module_node_id: str
        :keyword step_run_id:
        :paramtype step_run_id: str
        :keyword output_port_name:
        :paramtype output_port_name: str
        :keyword model_output_path:
        :paramtype model_output_path: str
        :keyword data_type_id:
        :paramtype data_type_id: str
        :keyword dataset_type:
        :paramtype dataset_type: str
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword output_relative_path:
        :paramtype output_relative_path: str
        :keyword pipeline_run_id:
        :paramtype pipeline_run_id: str
        :keyword root_pipeline_run_id:
        :paramtype root_pipeline_run_id: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        """
        super(PromoteDataSetRequest, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.module_node_id = module_node_id
        self.step_run_id = step_run_id
        self.output_port_name = output_port_name
        self.model_output_path = model_output_path
        self.data_type_id = data_type_id
        self.dataset_type = dataset_type
        self.data_store_name = data_store_name
        self.output_relative_path = output_relative_path
        self.pipeline_run_id = pipeline_run_id
        self.root_pipeline_run_id = root_pipeline_run_id
        self.experiment_name = experiment_name
        self.experiment_id = experiment_id


class ProviderEntity(msrest.serialization.Model):
    """ProviderEntity.

    :ivar provider:
    :vartype provider: str
    :ivar module:
    :vartype module: str
    :ivar connection_type:
    :vartype connection_type: list[str or ~flow.models.ConnectionType]
    :ivar apis:
    :vartype apis: list[~flow.models.ApiAndParameters]
    """

    _attribute_map = {
        'provider': {'key': 'provider', 'type': 'str'},
        'module': {'key': 'module', 'type': 'str'},
        'connection_type': {'key': 'connection_type', 'type': '[str]'},
        'apis': {'key': 'apis', 'type': '[ApiAndParameters]'},
    }

    def __init__(
        self,
        *,
        provider: Optional[str] = None,
        module: Optional[str] = None,
        connection_type: Optional[List[Union[str, "ConnectionType"]]] = None,
        apis: Optional[List["ApiAndParameters"]] = None,
        **kwargs
    ):
        """
        :keyword provider:
        :paramtype provider: str
        :keyword module:
        :paramtype module: str
        :keyword connection_type:
        :paramtype connection_type: list[str or ~flow.models.ConnectionType]
        :keyword apis:
        :paramtype apis: list[~flow.models.ApiAndParameters]
        """
        super(ProviderEntity, self).__init__(**kwargs)
        self.provider = provider
        self.module = module
        self.connection_type = connection_type
        self.apis = apis


class PublishedPipeline(msrest.serialization.Model):
    """PublishedPipeline.

    :ivar total_run_steps:
    :vartype total_run_steps: int
    :ivar total_runs:
    :vartype total_runs: int
    :ivar parameters: This is a dictionary.
    :vartype parameters: dict[str, str]
    :ivar data_set_definition_value_assignment: This is a dictionary.
    :vartype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar rest_endpoint:
    :vartype rest_endpoint: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar graph_id:
    :vartype graph_id: str
    :ivar published_date:
    :vartype published_date: ~datetime.datetime
    :ivar last_run_time:
    :vartype last_run_time: ~datetime.datetime
    :ivar last_run_status: Possible values include: "NotStarted", "Running", "Failed", "Finished",
     "Canceled", "Queued", "CancelRequested".
    :vartype last_run_status: str or ~flow.models.PipelineRunStatusCode
    :ivar published_by:
    :vartype published_by: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar version:
    :vartype version: str
    :ivar is_default:
    :vartype is_default: bool
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'total_run_steps': {'key': 'totalRunSteps', 'type': 'int'},
        'total_runs': {'key': 'totalRuns', 'type': 'int'},
        'parameters': {'key': 'parameters', 'type': '{str}'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': '{DataSetDefinitionValue}'},
        'rest_endpoint': {'key': 'restEndpoint', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'published_date': {'key': 'publishedDate', 'type': 'iso-8601'},
        'last_run_time': {'key': 'lastRunTime', 'type': 'iso-8601'},
        'last_run_status': {'key': 'lastRunStatus', 'type': 'str'},
        'published_by': {'key': 'publishedBy', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'version': {'key': 'version', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        total_run_steps: Optional[int] = None,
        total_runs: Optional[int] = None,
        parameters: Optional[Dict[str, str]] = None,
        data_set_definition_value_assignment: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        rest_endpoint: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        graph_id: Optional[str] = None,
        published_date: Optional[datetime.datetime] = None,
        last_run_time: Optional[datetime.datetime] = None,
        last_run_status: Optional[Union[str, "PipelineRunStatusCode"]] = None,
        published_by: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        version: Optional[str] = None,
        is_default: Optional[bool] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword total_run_steps:
        :paramtype total_run_steps: int
        :keyword total_runs:
        :paramtype total_runs: int
        :keyword parameters: This is a dictionary.
        :paramtype parameters: dict[str, str]
        :keyword data_set_definition_value_assignment: This is a dictionary.
        :paramtype data_set_definition_value_assignment: dict[str, ~flow.models.DataSetDefinitionValue]
        :keyword rest_endpoint:
        :paramtype rest_endpoint: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword published_date:
        :paramtype published_date: ~datetime.datetime
        :keyword last_run_time:
        :paramtype last_run_time: ~datetime.datetime
        :keyword last_run_status: Possible values include: "NotStarted", "Running", "Failed",
         "Finished", "Canceled", "Queued", "CancelRequested".
        :paramtype last_run_status: str or ~flow.models.PipelineRunStatusCode
        :keyword published_by:
        :paramtype published_by: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword version:
        :paramtype version: str
        :keyword is_default:
        :paramtype is_default: bool
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PublishedPipeline, self).__init__(**kwargs)
        self.total_run_steps = total_run_steps
        self.total_runs = total_runs
        self.parameters = parameters
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.rest_endpoint = rest_endpoint
        self.name = name
        self.description = description
        self.graph_id = graph_id
        self.published_date = published_date
        self.last_run_time = last_run_time
        self.last_run_status = last_run_status
        self.published_by = published_by
        self.tags = tags
        self.properties = properties
        self.version = version
        self.is_default = is_default
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PublishedPipelineSummary(msrest.serialization.Model):
    """PublishedPipelineSummary.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar graph_id:
    :vartype graph_id: str
    :ivar published_date:
    :vartype published_date: ~datetime.datetime
    :ivar last_run_time:
    :vartype last_run_time: ~datetime.datetime
    :ivar last_run_status: Possible values include: "NotStarted", "Running", "Failed", "Finished",
     "Canceled", "Queued", "CancelRequested".
    :vartype last_run_status: str or ~flow.models.PipelineRunStatusCode
    :ivar published_by:
    :vartype published_by: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar version:
    :vartype version: str
    :ivar is_default:
    :vartype is_default: bool
    :ivar entity_status: Possible values include: "Active", "Deprecated", "Disabled".
    :vartype entity_status: str or ~flow.models.EntityStatus
    :ivar id:
    :vartype id: str
    :ivar etag:
    :vartype etag: str
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'published_date': {'key': 'publishedDate', 'type': 'iso-8601'},
        'last_run_time': {'key': 'lastRunTime', 'type': 'iso-8601'},
        'last_run_status': {'key': 'lastRunStatus', 'type': 'str'},
        'published_by': {'key': 'publishedBy', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'version': {'key': 'version', 'type': 'str'},
        'is_default': {'key': 'isDefault', 'type': 'bool'},
        'entity_status': {'key': 'entityStatus', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        graph_id: Optional[str] = None,
        published_date: Optional[datetime.datetime] = None,
        last_run_time: Optional[datetime.datetime] = None,
        last_run_status: Optional[Union[str, "PipelineRunStatusCode"]] = None,
        published_by: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        version: Optional[str] = None,
        is_default: Optional[bool] = None,
        entity_status: Optional[Union[str, "EntityStatus"]] = None,
        id: Optional[str] = None,
        etag: Optional[str] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword published_date:
        :paramtype published_date: ~datetime.datetime
        :keyword last_run_time:
        :paramtype last_run_time: ~datetime.datetime
        :keyword last_run_status: Possible values include: "NotStarted", "Running", "Failed",
         "Finished", "Canceled", "Queued", "CancelRequested".
        :paramtype last_run_status: str or ~flow.models.PipelineRunStatusCode
        :keyword published_by:
        :paramtype published_by: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword version:
        :paramtype version: str
        :keyword is_default:
        :paramtype is_default: bool
        :keyword entity_status: Possible values include: "Active", "Deprecated", "Disabled".
        :paramtype entity_status: str or ~flow.models.EntityStatus
        :keyword id:
        :paramtype id: str
        :keyword etag:
        :paramtype etag: str
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        """
        super(PublishedPipelineSummary, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.graph_id = graph_id
        self.published_date = published_date
        self.last_run_time = last_run_time
        self.last_run_status = last_run_status
        self.published_by = published_by
        self.tags = tags
        self.properties = properties
        self.version = version
        self.is_default = is_default
        self.entity_status = entity_status
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date


class PythonInterfaceMapping(msrest.serialization.Model):
    """PythonInterfaceMapping.

    :ivar name:
    :vartype name: str
    :ivar name_in_yaml:
    :vartype name_in_yaml: str
    :ivar argument_name:
    :vartype argument_name: str
    :ivar command_line_option:
    :vartype command_line_option: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'name_in_yaml': {'key': 'nameInYaml', 'type': 'str'},
        'argument_name': {'key': 'argumentName', 'type': 'str'},
        'command_line_option': {'key': 'commandLineOption', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        name_in_yaml: Optional[str] = None,
        argument_name: Optional[str] = None,
        command_line_option: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword name_in_yaml:
        :paramtype name_in_yaml: str
        :keyword argument_name:
        :paramtype argument_name: str
        :keyword command_line_option:
        :paramtype command_line_option: str
        """
        super(PythonInterfaceMapping, self).__init__(**kwargs)
        self.name = name
        self.name_in_yaml = name_in_yaml
        self.argument_name = argument_name
        self.command_line_option = command_line_option


class PythonPyPiOrRCranLibraryDto(msrest.serialization.Model):
    """PythonPyPiOrRCranLibraryDto.

    :ivar package:
    :vartype package: str
    :ivar repo:
    :vartype repo: str
    """

    _attribute_map = {
        'package': {'key': 'package', 'type': 'str'},
        'repo': {'key': 'repo', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        package: Optional[str] = None,
        repo: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword package:
        :paramtype package: str
        :keyword repo:
        :paramtype repo: str
        """
        super(PythonPyPiOrRCranLibraryDto, self).__init__(**kwargs)
        self.package = package
        self.repo = repo


class PythonSection(msrest.serialization.Model):
    """PythonSection.

    :ivar interpreter_path:
    :vartype interpreter_path: str
    :ivar user_managed_dependencies:
    :vartype user_managed_dependencies: bool
    :ivar conda_dependencies: Anything.
    :vartype conda_dependencies: any
    :ivar base_conda_environment:
    :vartype base_conda_environment: str
    """

    _attribute_map = {
        'interpreter_path': {'key': 'interpreterPath', 'type': 'str'},
        'user_managed_dependencies': {'key': 'userManagedDependencies', 'type': 'bool'},
        'conda_dependencies': {'key': 'condaDependencies', 'type': 'object'},
        'base_conda_environment': {'key': 'baseCondaEnvironment', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        interpreter_path: Optional[str] = None,
        user_managed_dependencies: Optional[bool] = None,
        conda_dependencies: Optional[Any] = None,
        base_conda_environment: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword interpreter_path:
        :paramtype interpreter_path: str
        :keyword user_managed_dependencies:
        :paramtype user_managed_dependencies: bool
        :keyword conda_dependencies: Anything.
        :paramtype conda_dependencies: any
        :keyword base_conda_environment:
        :paramtype base_conda_environment: str
        """
        super(PythonSection, self).__init__(**kwargs)
        self.interpreter_path = interpreter_path
        self.user_managed_dependencies = user_managed_dependencies
        self.conda_dependencies = conda_dependencies
        self.base_conda_environment = base_conda_environment


class PyTorchConfiguration(msrest.serialization.Model):
    """PyTorchConfiguration.

    :ivar communication_backend:
    :vartype communication_backend: str
    :ivar process_count:
    :vartype process_count: int
    """

    _attribute_map = {
        'communication_backend': {'key': 'communicationBackend', 'type': 'str'},
        'process_count': {'key': 'processCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        communication_backend: Optional[str] = None,
        process_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword communication_backend:
        :paramtype communication_backend: str
        :keyword process_count:
        :paramtype process_count: int
        """
        super(PyTorchConfiguration, self).__init__(**kwargs)
        self.communication_backend = communication_backend
        self.process_count = process_count


class QueueingInfo(msrest.serialization.Model):
    """QueueingInfo.

    :ivar code:
    :vartype code: str
    :ivar message:
    :vartype message: str
    :ivar last_refresh_timestamp:
    :vartype last_refresh_timestamp: ~datetime.datetime
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'last_refresh_timestamp': {'key': 'lastRefreshTimestamp', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        message: Optional[str] = None,
        last_refresh_timestamp: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword code:
        :paramtype code: str
        :keyword message:
        :paramtype message: str
        :keyword last_refresh_timestamp:
        :paramtype last_refresh_timestamp: ~datetime.datetime
        """
        super(QueueingInfo, self).__init__(**kwargs)
        self.code = code
        self.message = message
        self.last_refresh_timestamp = last_refresh_timestamp


class RawComponentDto(msrest.serialization.Model):
    """RawComponentDto.

    :ivar component_schema:
    :vartype component_schema: str
    :ivar is_anonymous:
    :vartype is_anonymous: bool
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar type: Possible values include: "Unknown", "CommandComponent", "Command".
    :vartype type: str or ~flow.models.ComponentType
    :ivar component_type_version:
    :vartype component_type_version: str
    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar is_deterministic:
    :vartype is_deterministic: bool
    :ivar successful_return_code:
    :vartype successful_return_code: str
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.ComponentInput]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.ComponentOutput]
    :ivar command:
    :vartype command: str
    :ivar environment_name:
    :vartype environment_name: str
    :ivar environment_version:
    :vartype environment_version: str
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar last_modified_by:
    :vartype last_modified_by: ~flow.models.SchemaContractsCreatedBy
    :ivar created_date:
    :vartype created_date: ~datetime.datetime
    :ivar last_modified_date:
    :vartype last_modified_date: ~datetime.datetime
    :ivar component_internal_id:
    :vartype component_internal_id: str
    """

    _attribute_map = {
        'component_schema': {'key': 'componentSchema', 'type': 'str'},
        'is_anonymous': {'key': 'isAnonymous', 'type': 'bool'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'component_type_version': {'key': 'componentTypeVersion', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'is_deterministic': {'key': 'isDeterministic', 'type': 'bool'},
        'successful_return_code': {'key': 'successfulReturnCode', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{ComponentInput}'},
        'outputs': {'key': 'outputs', 'type': '{ComponentOutput}'},
        'command': {'key': 'command', 'type': 'str'},
        'environment_name': {'key': 'environmentName', 'type': 'str'},
        'environment_version': {'key': 'environmentVersion', 'type': 'str'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'SchemaContractsCreatedBy'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
        'component_internal_id': {'key': 'componentInternalId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        component_schema: Optional[str] = None,
        is_anonymous: Optional[bool] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        type: Optional[Union[str, "ComponentType"]] = None,
        component_type_version: Optional[str] = None,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        is_deterministic: Optional[bool] = None,
        successful_return_code: Optional[str] = None,
        inputs: Optional[Dict[str, "ComponentInput"]] = None,
        outputs: Optional[Dict[str, "ComponentOutput"]] = None,
        command: Optional[str] = None,
        environment_name: Optional[str] = None,
        environment_version: Optional[str] = None,
        snapshot_id: Optional[str] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        last_modified_by: Optional["SchemaContractsCreatedBy"] = None,
        created_date: Optional[datetime.datetime] = None,
        last_modified_date: Optional[datetime.datetime] = None,
        component_internal_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword component_schema:
        :paramtype component_schema: str
        :keyword is_anonymous:
        :paramtype is_anonymous: bool
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword type: Possible values include: "Unknown", "CommandComponent", "Command".
        :paramtype type: str or ~flow.models.ComponentType
        :keyword component_type_version:
        :paramtype component_type_version: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword is_deterministic:
        :paramtype is_deterministic: bool
        :keyword successful_return_code:
        :paramtype successful_return_code: str
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.ComponentInput]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.ComponentOutput]
        :keyword command:
        :paramtype command: str
        :keyword environment_name:
        :paramtype environment_name: str
        :keyword environment_version:
        :paramtype environment_version: str
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword last_modified_by:
        :paramtype last_modified_by: ~flow.models.SchemaContractsCreatedBy
        :keyword created_date:
        :paramtype created_date: ~datetime.datetime
        :keyword last_modified_date:
        :paramtype last_modified_date: ~datetime.datetime
        :keyword component_internal_id:
        :paramtype component_internal_id: str
        """
        super(RawComponentDto, self).__init__(**kwargs)
        self.component_schema = component_schema
        self.is_anonymous = is_anonymous
        self.name = name
        self.version = version
        self.type = type
        self.component_type_version = component_type_version
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.is_deterministic = is_deterministic
        self.successful_return_code = successful_return_code
        self.inputs = inputs
        self.outputs = outputs
        self.command = command
        self.environment_name = environment_name
        self.environment_version = environment_version
        self.snapshot_id = snapshot_id
        self.created_by = created_by
        self.last_modified_by = last_modified_by
        self.created_date = created_date
        self.last_modified_date = last_modified_date
        self.component_internal_id = component_internal_id


class RayConfiguration(msrest.serialization.Model):
    """RayConfiguration.

    :ivar port:
    :vartype port: int
    :ivar address:
    :vartype address: str
    :ivar include_dashboard:
    :vartype include_dashboard: bool
    :ivar dashboard_port:
    :vartype dashboard_port: int
    :ivar head_node_additional_args:
    :vartype head_node_additional_args: str
    :ivar worker_node_additional_args:
    :vartype worker_node_additional_args: str
    """

    _attribute_map = {
        'port': {'key': 'port', 'type': 'int'},
        'address': {'key': 'address', 'type': 'str'},
        'include_dashboard': {'key': 'includeDashboard', 'type': 'bool'},
        'dashboard_port': {'key': 'dashboardPort', 'type': 'int'},
        'head_node_additional_args': {'key': 'headNodeAdditionalArgs', 'type': 'str'},
        'worker_node_additional_args': {'key': 'workerNodeAdditionalArgs', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        port: Optional[int] = None,
        address: Optional[str] = None,
        include_dashboard: Optional[bool] = None,
        dashboard_port: Optional[int] = None,
        head_node_additional_args: Optional[str] = None,
        worker_node_additional_args: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword port:
        :paramtype port: int
        :keyword address:
        :paramtype address: str
        :keyword include_dashboard:
        :paramtype include_dashboard: bool
        :keyword dashboard_port:
        :paramtype dashboard_port: int
        :keyword head_node_additional_args:
        :paramtype head_node_additional_args: str
        :keyword worker_node_additional_args:
        :paramtype worker_node_additional_args: str
        """
        super(RayConfiguration, self).__init__(**kwargs)
        self.port = port
        self.address = address
        self.include_dashboard = include_dashboard
        self.dashboard_port = dashboard_port
        self.head_node_additional_args = head_node_additional_args
        self.worker_node_additional_args = worker_node_additional_args


class RCranPackage(msrest.serialization.Model):
    """RCranPackage.

    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar repository:
    :vartype repository: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'repository': {'key': 'repository', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        version: Optional[str] = None,
        repository: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword repository:
        :paramtype repository: str
        """
        super(RCranPackage, self).__init__(**kwargs)
        self.name = name
        self.version = version
        self.repository = repository


class RealTimeEndpoint(msrest.serialization.Model):
    """RealTimeEndpoint.

    :ivar created_by:
    :vartype created_by: str
    :ivar kv_tags: Dictionary of :code:`<string>`.
    :vartype kv_tags: dict[str, str]
    :ivar state: Possible values include: "Transitioning", "Healthy", "Unhealthy", "Failed",
     "Unschedulable".
    :vartype state: str or ~flow.models.WebServiceState
    :ivar error:
    :vartype error: ~flow.models.ModelManagementErrorResponse
    :ivar compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT", "AKSENDPOINT",
     "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE", "UNKNOWN".
    :vartype compute_type: str or ~flow.models.ComputeEnvironmentType
    :ivar image_id:
    :vartype image_id: str
    :ivar cpu:
    :vartype cpu: float
    :ivar memory_in_gb:
    :vartype memory_in_gb: float
    :ivar max_concurrent_requests_per_container:
    :vartype max_concurrent_requests_per_container: int
    :ivar num_replicas:
    :vartype num_replicas: int
    :ivar event_hub_enabled:
    :vartype event_hub_enabled: bool
    :ivar storage_enabled:
    :vartype storage_enabled: bool
    :ivar app_insights_enabled:
    :vartype app_insights_enabled: bool
    :ivar auto_scale_enabled:
    :vartype auto_scale_enabled: bool
    :ivar min_replicas:
    :vartype min_replicas: int
    :ivar max_replicas:
    :vartype max_replicas: int
    :ivar target_utilization:
    :vartype target_utilization: int
    :ivar refresh_period_in_seconds:
    :vartype refresh_period_in_seconds: int
    :ivar scoring_uri:
    :vartype scoring_uri: str
    :ivar deployment_status:
    :vartype deployment_status: ~flow.models.AKSReplicaStatus
    :ivar scoring_timeout_ms:
    :vartype scoring_timeout_ms: int
    :ivar auth_enabled:
    :vartype auth_enabled: bool
    :ivar aad_auth_enabled:
    :vartype aad_auth_enabled: bool
    :ivar region:
    :vartype region: str
    :ivar primary_key:
    :vartype primary_key: str
    :ivar secondary_key:
    :vartype secondary_key: str
    :ivar swagger_uri:
    :vartype swagger_uri: str
    :ivar linked_pipeline_draft_id:
    :vartype linked_pipeline_draft_id: str
    :ivar linked_pipeline_run_id:
    :vartype linked_pipeline_run_id: str
    :ivar warning:
    :vartype warning: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar id:
    :vartype id: str
    :ivar created_time:
    :vartype created_time: ~datetime.datetime
    :ivar updated_time:
    :vartype updated_time: ~datetime.datetime
    :ivar compute_name:
    :vartype compute_name: str
    :ivar updated_by:
    :vartype updated_by: str
    """

    _attribute_map = {
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'kv_tags': {'key': 'kvTags', 'type': '{str}'},
        'state': {'key': 'state', 'type': 'str'},
        'error': {'key': 'error', 'type': 'ModelManagementErrorResponse'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'image_id': {'key': 'imageId', 'type': 'str'},
        'cpu': {'key': 'cpu', 'type': 'float'},
        'memory_in_gb': {'key': 'memoryInGB', 'type': 'float'},
        'max_concurrent_requests_per_container': {'key': 'maxConcurrentRequestsPerContainer', 'type': 'int'},
        'num_replicas': {'key': 'numReplicas', 'type': 'int'},
        'event_hub_enabled': {'key': 'eventHubEnabled', 'type': 'bool'},
        'storage_enabled': {'key': 'storageEnabled', 'type': 'bool'},
        'app_insights_enabled': {'key': 'appInsightsEnabled', 'type': 'bool'},
        'auto_scale_enabled': {'key': 'autoScaleEnabled', 'type': 'bool'},
        'min_replicas': {'key': 'minReplicas', 'type': 'int'},
        'max_replicas': {'key': 'maxReplicas', 'type': 'int'},
        'target_utilization': {'key': 'targetUtilization', 'type': 'int'},
        'refresh_period_in_seconds': {'key': 'refreshPeriodInSeconds', 'type': 'int'},
        'scoring_uri': {'key': 'scoringUri', 'type': 'str'},
        'deployment_status': {'key': 'deploymentStatus', 'type': 'AKSReplicaStatus'},
        'scoring_timeout_ms': {'key': 'scoringTimeoutMs', 'type': 'int'},
        'auth_enabled': {'key': 'authEnabled', 'type': 'bool'},
        'aad_auth_enabled': {'key': 'aadAuthEnabled', 'type': 'bool'},
        'region': {'key': 'region', 'type': 'str'},
        'primary_key': {'key': 'primaryKey', 'type': 'str'},
        'secondary_key': {'key': 'secondaryKey', 'type': 'str'},
        'swagger_uri': {'key': 'swaggerUri', 'type': 'str'},
        'linked_pipeline_draft_id': {'key': 'linkedPipelineDraftId', 'type': 'str'},
        'linked_pipeline_run_id': {'key': 'linkedPipelineRunId', 'type': 'str'},
        'warning': {'key': 'warning', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'updated_time': {'key': 'updatedTime', 'type': 'iso-8601'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'updated_by': {'key': 'updatedBy', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        created_by: Optional[str] = None,
        kv_tags: Optional[Dict[str, str]] = None,
        state: Optional[Union[str, "WebServiceState"]] = None,
        error: Optional["ModelManagementErrorResponse"] = None,
        compute_type: Optional[Union[str, "ComputeEnvironmentType"]] = None,
        image_id: Optional[str] = None,
        cpu: Optional[float] = None,
        memory_in_gb: Optional[float] = None,
        max_concurrent_requests_per_container: Optional[int] = None,
        num_replicas: Optional[int] = None,
        event_hub_enabled: Optional[bool] = None,
        storage_enabled: Optional[bool] = None,
        app_insights_enabled: Optional[bool] = None,
        auto_scale_enabled: Optional[bool] = None,
        min_replicas: Optional[int] = None,
        max_replicas: Optional[int] = None,
        target_utilization: Optional[int] = None,
        refresh_period_in_seconds: Optional[int] = None,
        scoring_uri: Optional[str] = None,
        deployment_status: Optional["AKSReplicaStatus"] = None,
        scoring_timeout_ms: Optional[int] = None,
        auth_enabled: Optional[bool] = None,
        aad_auth_enabled: Optional[bool] = None,
        region: Optional[str] = None,
        primary_key: Optional[str] = None,
        secondary_key: Optional[str] = None,
        swagger_uri: Optional[str] = None,
        linked_pipeline_draft_id: Optional[str] = None,
        linked_pipeline_run_id: Optional[str] = None,
        warning: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        id: Optional[str] = None,
        created_time: Optional[datetime.datetime] = None,
        updated_time: Optional[datetime.datetime] = None,
        compute_name: Optional[str] = None,
        updated_by: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword created_by:
        :paramtype created_by: str
        :keyword kv_tags: Dictionary of :code:`<string>`.
        :paramtype kv_tags: dict[str, str]
        :keyword state: Possible values include: "Transitioning", "Healthy", "Unhealthy", "Failed",
         "Unschedulable".
        :paramtype state: str or ~flow.models.WebServiceState
        :keyword error:
        :paramtype error: ~flow.models.ModelManagementErrorResponse
        :keyword compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT",
         "AKSENDPOINT", "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE",
         "UNKNOWN".
        :paramtype compute_type: str or ~flow.models.ComputeEnvironmentType
        :keyword image_id:
        :paramtype image_id: str
        :keyword cpu:
        :paramtype cpu: float
        :keyword memory_in_gb:
        :paramtype memory_in_gb: float
        :keyword max_concurrent_requests_per_container:
        :paramtype max_concurrent_requests_per_container: int
        :keyword num_replicas:
        :paramtype num_replicas: int
        :keyword event_hub_enabled:
        :paramtype event_hub_enabled: bool
        :keyword storage_enabled:
        :paramtype storage_enabled: bool
        :keyword app_insights_enabled:
        :paramtype app_insights_enabled: bool
        :keyword auto_scale_enabled:
        :paramtype auto_scale_enabled: bool
        :keyword min_replicas:
        :paramtype min_replicas: int
        :keyword max_replicas:
        :paramtype max_replicas: int
        :keyword target_utilization:
        :paramtype target_utilization: int
        :keyword refresh_period_in_seconds:
        :paramtype refresh_period_in_seconds: int
        :keyword scoring_uri:
        :paramtype scoring_uri: str
        :keyword deployment_status:
        :paramtype deployment_status: ~flow.models.AKSReplicaStatus
        :keyword scoring_timeout_ms:
        :paramtype scoring_timeout_ms: int
        :keyword auth_enabled:
        :paramtype auth_enabled: bool
        :keyword aad_auth_enabled:
        :paramtype aad_auth_enabled: bool
        :keyword region:
        :paramtype region: str
        :keyword primary_key:
        :paramtype primary_key: str
        :keyword secondary_key:
        :paramtype secondary_key: str
        :keyword swagger_uri:
        :paramtype swagger_uri: str
        :keyword linked_pipeline_draft_id:
        :paramtype linked_pipeline_draft_id: str
        :keyword linked_pipeline_run_id:
        :paramtype linked_pipeline_run_id: str
        :keyword warning:
        :paramtype warning: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword id:
        :paramtype id: str
        :keyword created_time:
        :paramtype created_time: ~datetime.datetime
        :keyword updated_time:
        :paramtype updated_time: ~datetime.datetime
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword updated_by:
        :paramtype updated_by: str
        """
        super(RealTimeEndpoint, self).__init__(**kwargs)
        self.created_by = created_by
        self.kv_tags = kv_tags
        self.state = state
        self.error = error
        self.compute_type = compute_type
        self.image_id = image_id
        self.cpu = cpu
        self.memory_in_gb = memory_in_gb
        self.max_concurrent_requests_per_container = max_concurrent_requests_per_container
        self.num_replicas = num_replicas
        self.event_hub_enabled = event_hub_enabled
        self.storage_enabled = storage_enabled
        self.app_insights_enabled = app_insights_enabled
        self.auto_scale_enabled = auto_scale_enabled
        self.min_replicas = min_replicas
        self.max_replicas = max_replicas
        self.target_utilization = target_utilization
        self.refresh_period_in_seconds = refresh_period_in_seconds
        self.scoring_uri = scoring_uri
        self.deployment_status = deployment_status
        self.scoring_timeout_ms = scoring_timeout_ms
        self.auth_enabled = auth_enabled
        self.aad_auth_enabled = aad_auth_enabled
        self.region = region
        self.primary_key = primary_key
        self.secondary_key = secondary_key
        self.swagger_uri = swagger_uri
        self.linked_pipeline_draft_id = linked_pipeline_draft_id
        self.linked_pipeline_run_id = linked_pipeline_run_id
        self.warning = warning
        self.name = name
        self.description = description
        self.id = id
        self.created_time = created_time
        self.updated_time = updated_time
        self.compute_name = compute_name
        self.updated_by = updated_by


class RealTimeEndpointInfo(msrest.serialization.Model):
    """RealTimeEndpointInfo.

    :ivar web_service_inputs:
    :vartype web_service_inputs: list[~flow.models.WebServicePort]
    :ivar web_service_outputs:
    :vartype web_service_outputs: list[~flow.models.WebServicePort]
    :ivar deployments_info:
    :vartype deployments_info: list[~flow.models.DeploymentInfo]
    """

    _attribute_map = {
        'web_service_inputs': {'key': 'webServiceInputs', 'type': '[WebServicePort]'},
        'web_service_outputs': {'key': 'webServiceOutputs', 'type': '[WebServicePort]'},
        'deployments_info': {'key': 'deploymentsInfo', 'type': '[DeploymentInfo]'},
    }

    def __init__(
        self,
        *,
        web_service_inputs: Optional[List["WebServicePort"]] = None,
        web_service_outputs: Optional[List["WebServicePort"]] = None,
        deployments_info: Optional[List["DeploymentInfo"]] = None,
        **kwargs
    ):
        """
        :keyword web_service_inputs:
        :paramtype web_service_inputs: list[~flow.models.WebServicePort]
        :keyword web_service_outputs:
        :paramtype web_service_outputs: list[~flow.models.WebServicePort]
        :keyword deployments_info:
        :paramtype deployments_info: list[~flow.models.DeploymentInfo]
        """
        super(RealTimeEndpointInfo, self).__init__(**kwargs)
        self.web_service_inputs = web_service_inputs
        self.web_service_outputs = web_service_outputs
        self.deployments_info = deployments_info


class RealTimeEndpointStatus(msrest.serialization.Model):
    """RealTimeEndpointStatus.

    :ivar last_operation: Possible values include: "Create", "Update", "Delete".
    :vartype last_operation: str or ~flow.models.RealTimeEndpointOpCode
    :ivar last_operation_status: Possible values include: "Ongoing", "Succeeded", "Failed",
     "SucceededWithWarning".
    :vartype last_operation_status: str or ~flow.models.RealTimeEndpointOpStatusCode
    :ivar internal_step: Possible values include: "AboutToDeploy", "WaitAksComputeReady",
     "RegisterModels", "CreateServiceFromModels", "UpdateServiceFromModels", "WaitServiceCreating",
     "FetchServiceRelatedInfo", "TestWithSampleData", "AboutToDelete", "DeleteDeployment",
     "DeleteAsset", "DeleteImage", "DeleteModel", "DeleteServiceRecord".
    :vartype internal_step: str or ~flow.models.RealTimeEndpointInternalStepCode
    :ivar status_detail:
    :vartype status_detail: str
    :ivar deployment_state:
    :vartype deployment_state: str
    :ivar service_id:
    :vartype service_id: str
    :ivar linked_pipeline_draft_id:
    :vartype linked_pipeline_draft_id: str
    """

    _attribute_map = {
        'last_operation': {'key': 'lastOperation', 'type': 'str'},
        'last_operation_status': {'key': 'lastOperationStatus', 'type': 'str'},
        'internal_step': {'key': 'internalStep', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'deployment_state': {'key': 'deploymentState', 'type': 'str'},
        'service_id': {'key': 'serviceId', 'type': 'str'},
        'linked_pipeline_draft_id': {'key': 'linkedPipelineDraftId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        last_operation: Optional[Union[str, "RealTimeEndpointOpCode"]] = None,
        last_operation_status: Optional[Union[str, "RealTimeEndpointOpStatusCode"]] = None,
        internal_step: Optional[Union[str, "RealTimeEndpointInternalStepCode"]] = None,
        status_detail: Optional[str] = None,
        deployment_state: Optional[str] = None,
        service_id: Optional[str] = None,
        linked_pipeline_draft_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword last_operation: Possible values include: "Create", "Update", "Delete".
        :paramtype last_operation: str or ~flow.models.RealTimeEndpointOpCode
        :keyword last_operation_status: Possible values include: "Ongoing", "Succeeded", "Failed",
         "SucceededWithWarning".
        :paramtype last_operation_status: str or ~flow.models.RealTimeEndpointOpStatusCode
        :keyword internal_step: Possible values include: "AboutToDeploy", "WaitAksComputeReady",
         "RegisterModels", "CreateServiceFromModels", "UpdateServiceFromModels", "WaitServiceCreating",
         "FetchServiceRelatedInfo", "TestWithSampleData", "AboutToDelete", "DeleteDeployment",
         "DeleteAsset", "DeleteImage", "DeleteModel", "DeleteServiceRecord".
        :paramtype internal_step: str or ~flow.models.RealTimeEndpointInternalStepCode
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword deployment_state:
        :paramtype deployment_state: str
        :keyword service_id:
        :paramtype service_id: str
        :keyword linked_pipeline_draft_id:
        :paramtype linked_pipeline_draft_id: str
        """
        super(RealTimeEndpointStatus, self).__init__(**kwargs)
        self.last_operation = last_operation
        self.last_operation_status = last_operation_status
        self.internal_step = internal_step
        self.status_detail = status_detail
        self.deployment_state = deployment_state
        self.service_id = service_id
        self.linked_pipeline_draft_id = linked_pipeline_draft_id


class RealTimeEndpointSummary(msrest.serialization.Model):
    """RealTimeEndpointSummary.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar id:
    :vartype id: str
    :ivar created_time:
    :vartype created_time: ~datetime.datetime
    :ivar updated_time:
    :vartype updated_time: ~datetime.datetime
    :ivar compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT", "AKSENDPOINT",
     "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE", "UNKNOWN".
    :vartype compute_type: str or ~flow.models.ComputeEnvironmentType
    :ivar compute_name:
    :vartype compute_name: str
    :ivar updated_by:
    :vartype updated_by: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'updated_time': {'key': 'updatedTime', 'type': 'iso-8601'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'updated_by': {'key': 'updatedBy', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        id: Optional[str] = None,
        created_time: Optional[datetime.datetime] = None,
        updated_time: Optional[datetime.datetime] = None,
        compute_type: Optional[Union[str, "ComputeEnvironmentType"]] = None,
        compute_name: Optional[str] = None,
        updated_by: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword id:
        :paramtype id: str
        :keyword created_time:
        :paramtype created_time: ~datetime.datetime
        :keyword updated_time:
        :paramtype updated_time: ~datetime.datetime
        :keyword compute_type: Possible values include: "ACI", "AKS", "AMLCOMPUTE", "IOT",
         "AKSENDPOINT", "MIRSINGLEMODEL", "MIRAMLCOMPUTE", "MIRGA", "AMLARC", "BATCHAMLCOMPUTE",
         "UNKNOWN".
        :paramtype compute_type: str or ~flow.models.ComputeEnvironmentType
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword updated_by:
        :paramtype updated_by: str
        """
        super(RealTimeEndpointSummary, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.id = id
        self.created_time = created_time
        self.updated_time = updated_time
        self.compute_type = compute_type
        self.compute_name = compute_name
        self.updated_by = updated_by


class RealTimeEndpointTestRequest(msrest.serialization.Model):
    """RealTimeEndpointTestRequest.

    :ivar end_point:
    :vartype end_point: str
    :ivar auth_key:
    :vartype auth_key: str
    :ivar payload:
    :vartype payload: str
    """

    _attribute_map = {
        'end_point': {'key': 'endPoint', 'type': 'str'},
        'auth_key': {'key': 'authKey', 'type': 'str'},
        'payload': {'key': 'payload', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        end_point: Optional[str] = None,
        auth_key: Optional[str] = None,
        payload: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword end_point:
        :paramtype end_point: str
        :keyword auth_key:
        :paramtype auth_key: str
        :keyword payload:
        :paramtype payload: str
        """
        super(RealTimeEndpointTestRequest, self).__init__(**kwargs)
        self.end_point = end_point
        self.auth_key = auth_key
        self.payload = payload


class Recurrence(msrest.serialization.Model):
    """Recurrence.

    :ivar frequency: Possible values include: "Month", "Week", "Day", "Hour", "Minute".
    :vartype frequency: str or ~flow.models.Frequency
    :ivar interval:
    :vartype interval: int
    :ivar schedule:
    :vartype schedule: ~flow.models.RecurrenceSchedule
    :ivar end_time:
    :vartype end_time: str
    :ivar start_time:
    :vartype start_time: str
    :ivar time_zone:
    :vartype time_zone: str
    """

    _attribute_map = {
        'frequency': {'key': 'frequency', 'type': 'str'},
        'interval': {'key': 'interval', 'type': 'int'},
        'schedule': {'key': 'schedule', 'type': 'RecurrenceSchedule'},
        'end_time': {'key': 'endTime', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'str'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        frequency: Optional[Union[str, "Frequency"]] = None,
        interval: Optional[int] = None,
        schedule: Optional["RecurrenceSchedule"] = None,
        end_time: Optional[str] = None,
        start_time: Optional[str] = None,
        time_zone: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword frequency: Possible values include: "Month", "Week", "Day", "Hour", "Minute".
        :paramtype frequency: str or ~flow.models.Frequency
        :keyword interval:
        :paramtype interval: int
        :keyword schedule:
        :paramtype schedule: ~flow.models.RecurrenceSchedule
        :keyword end_time:
        :paramtype end_time: str
        :keyword start_time:
        :paramtype start_time: str
        :keyword time_zone:
        :paramtype time_zone: str
        """
        super(Recurrence, self).__init__(**kwargs)
        self.frequency = frequency
        self.interval = interval
        self.schedule = schedule
        self.end_time = end_time
        self.start_time = start_time
        self.time_zone = time_zone


class RecurrencePattern(msrest.serialization.Model):
    """RecurrencePattern.

    :ivar hours:
    :vartype hours: list[int]
    :ivar minutes:
    :vartype minutes: list[int]
    :ivar weekdays:
    :vartype weekdays: list[str or ~flow.models.Weekday]
    """

    _attribute_map = {
        'hours': {'key': 'hours', 'type': '[int]'},
        'minutes': {'key': 'minutes', 'type': '[int]'},
        'weekdays': {'key': 'weekdays', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        hours: Optional[List[int]] = None,
        minutes: Optional[List[int]] = None,
        weekdays: Optional[List[Union[str, "Weekday"]]] = None,
        **kwargs
    ):
        """
        :keyword hours:
        :paramtype hours: list[int]
        :keyword minutes:
        :paramtype minutes: list[int]
        :keyword weekdays:
        :paramtype weekdays: list[str or ~flow.models.Weekday]
        """
        super(RecurrencePattern, self).__init__(**kwargs)
        self.hours = hours
        self.minutes = minutes
        self.weekdays = weekdays


class RecurrenceSchedule(msrest.serialization.Model):
    """RecurrenceSchedule.

    :ivar hours:
    :vartype hours: list[int]
    :ivar minutes:
    :vartype minutes: list[int]
    :ivar week_days:
    :vartype week_days: list[str or ~flow.models.WeekDays]
    :ivar month_days:
    :vartype month_days: list[int]
    """

    _attribute_map = {
        'hours': {'key': 'hours', 'type': '[int]'},
        'minutes': {'key': 'minutes', 'type': '[int]'},
        'week_days': {'key': 'weekDays', 'type': '[str]'},
        'month_days': {'key': 'monthDays', 'type': '[int]'},
    }

    def __init__(
        self,
        *,
        hours: Optional[List[int]] = None,
        minutes: Optional[List[int]] = None,
        week_days: Optional[List[Union[str, "WeekDays"]]] = None,
        month_days: Optional[List[int]] = None,
        **kwargs
    ):
        """
        :keyword hours:
        :paramtype hours: list[int]
        :keyword minutes:
        :paramtype minutes: list[int]
        :keyword week_days:
        :paramtype week_days: list[str or ~flow.models.WeekDays]
        :keyword month_days:
        :paramtype month_days: list[int]
        """
        super(RecurrenceSchedule, self).__init__(**kwargs)
        self.hours = hours
        self.minutes = minutes
        self.week_days = week_days
        self.month_days = month_days


class RegenerateServiceKeysRequest(msrest.serialization.Model):
    """RegenerateServiceKeysRequest.

    :ivar key_type: Possible values include: "Primary", "Secondary".
    :vartype key_type: str or ~flow.models.KeyType
    :ivar key_value:
    :vartype key_value: str
    """

    _attribute_map = {
        'key_type': {'key': 'keyType', 'type': 'str'},
        'key_value': {'key': 'keyValue', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        key_type: Optional[Union[str, "KeyType"]] = None,
        key_value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword key_type: Possible values include: "Primary", "Secondary".
        :paramtype key_type: str or ~flow.models.KeyType
        :keyword key_value:
        :paramtype key_value: str
        """
        super(RegenerateServiceKeysRequest, self).__init__(**kwargs)
        self.key_type = key_type
        self.key_value = key_value


class RegisterComponentMetaInfo(msrest.serialization.Model):
    """RegisterComponentMetaInfo.

    :ivar aml_module_name:
    :vartype aml_module_name: str
    :ivar name_only_display_info:
    :vartype name_only_display_info: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar module_version_id:
    :vartype module_version_id: str
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar component_registration_type: Possible values include: "Normal", "AnonymousAmlModule",
     "AnonymousAmlModuleVersion", "ModuleEntityOnly".
    :vartype component_registration_type: str or ~flow.models.ComponentRegistrationTypeEnum
    :ivar module_entity_from_yaml:
    :vartype module_entity_from_yaml: ~flow.models.ModuleEntity
    :ivar set_as_default_version:
    :vartype set_as_default_version: bool
    :ivar data_types_from_yaml:
    :vartype data_types_from_yaml: list[~flow.models.DataTypeCreationInfo]
    :ivar data_type_mechanism: Possible values include: "ErrorWhenNotExisting",
     "RegisterWhenNotExisting", "RegisterBuildinDataTypeOnly".
    :vartype data_type_mechanism: str or ~flow.models.DataTypeMechanism
    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hashes:
    :vartype identifier_hashes: ~flow.models.RegisterComponentMetaInfoIdentifierHashes
    :ivar content_hash:
    :vartype content_hash: str
    :ivar extra_hash:
    :vartype extra_hash: str
    :ivar extra_hashes:
    :vartype extra_hashes: ~flow.models.RegisterComponentMetaInfoExtraHashes
    :ivar registration:
    :vartype registration: bool
    :ivar validate_only:
    :vartype validate_only: bool
    :ivar skip_workspace_related_check:
    :vartype skip_workspace_related_check: bool
    :ivar intellectual_property_protected_workspace_component_registration_allowed_publisher:
    :vartype intellectual_property_protected_workspace_component_registration_allowed_publisher:
     list[str]
    :ivar system_managed_registration:
    :vartype system_managed_registration: bool
    :ivar allow_dup_name_between_input_and_ouput_port:
    :vartype allow_dup_name_between_input_and_ouput_port: bool
    :ivar module_source:
    :vartype module_source: str
    :ivar module_scope:
    :vartype module_scope: str
    :ivar module_additional_includes_count:
    :vartype module_additional_includes_count: int
    :ivar module_os_type:
    :vartype module_os_type: str
    :ivar module_codegen_by:
    :vartype module_codegen_by: str
    :ivar module_client_source:
    :vartype module_client_source: str
    :ivar module_is_builtin:
    :vartype module_is_builtin: bool
    :ivar module_register_event_extension_fields: Dictionary of :code:`<string>`.
    :vartype module_register_event_extension_fields: dict[str, str]
    """

    _attribute_map = {
        'aml_module_name': {'key': 'amlModuleName', 'type': 'str'},
        'name_only_display_info': {'key': 'nameOnlyDisplayInfo', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'module_version_id': {'key': 'moduleVersionId', 'type': 'str'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'component_registration_type': {'key': 'componentRegistrationType', 'type': 'str'},
        'module_entity_from_yaml': {'key': 'moduleEntityFromYaml', 'type': 'ModuleEntity'},
        'set_as_default_version': {'key': 'setAsDefaultVersion', 'type': 'bool'},
        'data_types_from_yaml': {'key': 'dataTypesFromYaml', 'type': '[DataTypeCreationInfo]'},
        'data_type_mechanism': {'key': 'dataTypeMechanism', 'type': 'str'},
        'identifier_hash': {'key': 'identifierHash', 'type': 'str'},
        'identifier_hashes': {'key': 'identifierHashes', 'type': 'RegisterComponentMetaInfoIdentifierHashes'},
        'content_hash': {'key': 'contentHash', 'type': 'str'},
        'extra_hash': {'key': 'extraHash', 'type': 'str'},
        'extra_hashes': {'key': 'extraHashes', 'type': 'RegisterComponentMetaInfoExtraHashes'},
        'registration': {'key': 'registration', 'type': 'bool'},
        'validate_only': {'key': 'validateOnly', 'type': 'bool'},
        'skip_workspace_related_check': {'key': 'skipWorkspaceRelatedCheck', 'type': 'bool'},
        'intellectual_property_protected_workspace_component_registration_allowed_publisher': {'key': 'intellectualPropertyProtectedWorkspaceComponentRegistrationAllowedPublisher', 'type': '[str]'},
        'system_managed_registration': {'key': 'systemManagedRegistration', 'type': 'bool'},
        'allow_dup_name_between_input_and_ouput_port': {'key': 'allowDupNameBetweenInputAndOuputPort', 'type': 'bool'},
        'module_source': {'key': 'moduleSource', 'type': 'str'},
        'module_scope': {'key': 'moduleScope', 'type': 'str'},
        'module_additional_includes_count': {'key': 'moduleAdditionalIncludesCount', 'type': 'int'},
        'module_os_type': {'key': 'moduleOSType', 'type': 'str'},
        'module_codegen_by': {'key': 'moduleCodegenBy', 'type': 'str'},
        'module_client_source': {'key': 'moduleClientSource', 'type': 'str'},
        'module_is_builtin': {'key': 'moduleIsBuiltin', 'type': 'bool'},
        'module_register_event_extension_fields': {'key': 'moduleRegisterEventExtensionFields', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        aml_module_name: Optional[str] = None,
        name_only_display_info: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        module_version_id: Optional[str] = None,
        snapshot_id: Optional[str] = None,
        component_registration_type: Optional[Union[str, "ComponentRegistrationTypeEnum"]] = None,
        module_entity_from_yaml: Optional["ModuleEntity"] = None,
        set_as_default_version: Optional[bool] = None,
        data_types_from_yaml: Optional[List["DataTypeCreationInfo"]] = None,
        data_type_mechanism: Optional[Union[str, "DataTypeMechanism"]] = None,
        identifier_hash: Optional[str] = None,
        identifier_hashes: Optional["RegisterComponentMetaInfoIdentifierHashes"] = None,
        content_hash: Optional[str] = None,
        extra_hash: Optional[str] = None,
        extra_hashes: Optional["RegisterComponentMetaInfoExtraHashes"] = None,
        registration: Optional[bool] = None,
        validate_only: Optional[bool] = None,
        skip_workspace_related_check: Optional[bool] = None,
        intellectual_property_protected_workspace_component_registration_allowed_publisher: Optional[List[str]] = None,
        system_managed_registration: Optional[bool] = None,
        allow_dup_name_between_input_and_ouput_port: Optional[bool] = None,
        module_source: Optional[str] = None,
        module_scope: Optional[str] = None,
        module_additional_includes_count: Optional[int] = None,
        module_os_type: Optional[str] = None,
        module_codegen_by: Optional[str] = None,
        module_client_source: Optional[str] = None,
        module_is_builtin: Optional[bool] = None,
        module_register_event_extension_fields: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword aml_module_name:
        :paramtype aml_module_name: str
        :keyword name_only_display_info:
        :paramtype name_only_display_info: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword module_version_id:
        :paramtype module_version_id: str
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword component_registration_type: Possible values include: "Normal", "AnonymousAmlModule",
         "AnonymousAmlModuleVersion", "ModuleEntityOnly".
        :paramtype component_registration_type: str or ~flow.models.ComponentRegistrationTypeEnum
        :keyword module_entity_from_yaml:
        :paramtype module_entity_from_yaml: ~flow.models.ModuleEntity
        :keyword set_as_default_version:
        :paramtype set_as_default_version: bool
        :keyword data_types_from_yaml:
        :paramtype data_types_from_yaml: list[~flow.models.DataTypeCreationInfo]
        :keyword data_type_mechanism: Possible values include: "ErrorWhenNotExisting",
         "RegisterWhenNotExisting", "RegisterBuildinDataTypeOnly".
        :paramtype data_type_mechanism: str or ~flow.models.DataTypeMechanism
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hashes:
        :paramtype identifier_hashes: ~flow.models.RegisterComponentMetaInfoIdentifierHashes
        :keyword content_hash:
        :paramtype content_hash: str
        :keyword extra_hash:
        :paramtype extra_hash: str
        :keyword extra_hashes:
        :paramtype extra_hashes: ~flow.models.RegisterComponentMetaInfoExtraHashes
        :keyword registration:
        :paramtype registration: bool
        :keyword validate_only:
        :paramtype validate_only: bool
        :keyword skip_workspace_related_check:
        :paramtype skip_workspace_related_check: bool
        :keyword intellectual_property_protected_workspace_component_registration_allowed_publisher:
        :paramtype intellectual_property_protected_workspace_component_registration_allowed_publisher:
         list[str]
        :keyword system_managed_registration:
        :paramtype system_managed_registration: bool
        :keyword allow_dup_name_between_input_and_ouput_port:
        :paramtype allow_dup_name_between_input_and_ouput_port: bool
        :keyword module_source:
        :paramtype module_source: str
        :keyword module_scope:
        :paramtype module_scope: str
        :keyword module_additional_includes_count:
        :paramtype module_additional_includes_count: int
        :keyword module_os_type:
        :paramtype module_os_type: str
        :keyword module_codegen_by:
        :paramtype module_codegen_by: str
        :keyword module_client_source:
        :paramtype module_client_source: str
        :keyword module_is_builtin:
        :paramtype module_is_builtin: bool
        :keyword module_register_event_extension_fields: Dictionary of :code:`<string>`.
        :paramtype module_register_event_extension_fields: dict[str, str]
        """
        super(RegisterComponentMetaInfo, self).__init__(**kwargs)
        self.aml_module_name = aml_module_name
        self.name_only_display_info = name_only_display_info
        self.name = name
        self.version = version
        self.module_version_id = module_version_id
        self.snapshot_id = snapshot_id
        self.component_registration_type = component_registration_type
        self.module_entity_from_yaml = module_entity_from_yaml
        self.set_as_default_version = set_as_default_version
        self.data_types_from_yaml = data_types_from_yaml
        self.data_type_mechanism = data_type_mechanism
        self.identifier_hash = identifier_hash
        self.identifier_hashes = identifier_hashes
        self.content_hash = content_hash
        self.extra_hash = extra_hash
        self.extra_hashes = extra_hashes
        self.registration = registration
        self.validate_only = validate_only
        self.skip_workspace_related_check = skip_workspace_related_check
        self.intellectual_property_protected_workspace_component_registration_allowed_publisher = intellectual_property_protected_workspace_component_registration_allowed_publisher
        self.system_managed_registration = system_managed_registration
        self.allow_dup_name_between_input_and_ouput_port = allow_dup_name_between_input_and_ouput_port
        self.module_source = module_source
        self.module_scope = module_scope
        self.module_additional_includes_count = module_additional_includes_count
        self.module_os_type = module_os_type
        self.module_codegen_by = module_codegen_by
        self.module_client_source = module_client_source
        self.module_is_builtin = module_is_builtin
        self.module_register_event_extension_fields = module_register_event_extension_fields


class RegisterComponentMetaInfoExtraHashes(msrest.serialization.Model):
    """RegisterComponentMetaInfoExtraHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(RegisterComponentMetaInfoExtraHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class RegisterComponentMetaInfoIdentifierHashes(msrest.serialization.Model):
    """RegisterComponentMetaInfoIdentifierHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(RegisterComponentMetaInfoIdentifierHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class RegisteredDataSetReference(msrest.serialization.Model):
    """RegisteredDataSetReference.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(RegisteredDataSetReference, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.version = version


class RegisterRegistryComponentMetaInfo(msrest.serialization.Model):
    """RegisterRegistryComponentMetaInfo.

    :ivar registry_name:
    :vartype registry_name: str
    :ivar intellectual_property_publisher_information:
    :vartype intellectual_property_publisher_information:
     ~flow.models.IntellectualPropertyPublisherInformation
    :ivar blob_reference_data: This is a dictionary.
    :vartype blob_reference_data: dict[str, ~flow.models.RegistryBlobReferenceData]
    :ivar aml_module_name:
    :vartype aml_module_name: str
    :ivar name_only_display_info:
    :vartype name_only_display_info: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar module_version_id:
    :vartype module_version_id: str
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar component_registration_type: Possible values include: "Normal", "AnonymousAmlModule",
     "AnonymousAmlModuleVersion", "ModuleEntityOnly".
    :vartype component_registration_type: str or ~flow.models.ComponentRegistrationTypeEnum
    :ivar module_entity_from_yaml:
    :vartype module_entity_from_yaml: ~flow.models.ModuleEntity
    :ivar set_as_default_version:
    :vartype set_as_default_version: bool
    :ivar data_types_from_yaml:
    :vartype data_types_from_yaml: list[~flow.models.DataTypeCreationInfo]
    :ivar data_type_mechanism: Possible values include: "ErrorWhenNotExisting",
     "RegisterWhenNotExisting", "RegisterBuildinDataTypeOnly".
    :vartype data_type_mechanism: str or ~flow.models.DataTypeMechanism
    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hashes:
    :vartype identifier_hashes: ~flow.models.RegisterRegistryComponentMetaInfoIdentifierHashes
    :ivar content_hash:
    :vartype content_hash: str
    :ivar extra_hash:
    :vartype extra_hash: str
    :ivar extra_hashes:
    :vartype extra_hashes: ~flow.models.RegisterRegistryComponentMetaInfoExtraHashes
    :ivar registration:
    :vartype registration: bool
    :ivar validate_only:
    :vartype validate_only: bool
    :ivar skip_workspace_related_check:
    :vartype skip_workspace_related_check: bool
    :ivar intellectual_property_protected_workspace_component_registration_allowed_publisher:
    :vartype intellectual_property_protected_workspace_component_registration_allowed_publisher:
     list[str]
    :ivar system_managed_registration:
    :vartype system_managed_registration: bool
    :ivar allow_dup_name_between_input_and_ouput_port:
    :vartype allow_dup_name_between_input_and_ouput_port: bool
    :ivar module_source:
    :vartype module_source: str
    :ivar module_scope:
    :vartype module_scope: str
    :ivar module_additional_includes_count:
    :vartype module_additional_includes_count: int
    :ivar module_os_type:
    :vartype module_os_type: str
    :ivar module_codegen_by:
    :vartype module_codegen_by: str
    :ivar module_client_source:
    :vartype module_client_source: str
    :ivar module_is_builtin:
    :vartype module_is_builtin: bool
    :ivar module_register_event_extension_fields: Dictionary of :code:`<string>`.
    :vartype module_register_event_extension_fields: dict[str, str]
    """

    _attribute_map = {
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'intellectual_property_publisher_information': {'key': 'intellectualPropertyPublisherInformation', 'type': 'IntellectualPropertyPublisherInformation'},
        'blob_reference_data': {'key': 'blobReferenceData', 'type': '{RegistryBlobReferenceData}'},
        'aml_module_name': {'key': 'amlModuleName', 'type': 'str'},
        'name_only_display_info': {'key': 'nameOnlyDisplayInfo', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'module_version_id': {'key': 'moduleVersionId', 'type': 'str'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'component_registration_type': {'key': 'componentRegistrationType', 'type': 'str'},
        'module_entity_from_yaml': {'key': 'moduleEntityFromYaml', 'type': 'ModuleEntity'},
        'set_as_default_version': {'key': 'setAsDefaultVersion', 'type': 'bool'},
        'data_types_from_yaml': {'key': 'dataTypesFromYaml', 'type': '[DataTypeCreationInfo]'},
        'data_type_mechanism': {'key': 'dataTypeMechanism', 'type': 'str'},
        'identifier_hash': {'key': 'identifierHash', 'type': 'str'},
        'identifier_hashes': {'key': 'identifierHashes', 'type': 'RegisterRegistryComponentMetaInfoIdentifierHashes'},
        'content_hash': {'key': 'contentHash', 'type': 'str'},
        'extra_hash': {'key': 'extraHash', 'type': 'str'},
        'extra_hashes': {'key': 'extraHashes', 'type': 'RegisterRegistryComponentMetaInfoExtraHashes'},
        'registration': {'key': 'registration', 'type': 'bool'},
        'validate_only': {'key': 'validateOnly', 'type': 'bool'},
        'skip_workspace_related_check': {'key': 'skipWorkspaceRelatedCheck', 'type': 'bool'},
        'intellectual_property_protected_workspace_component_registration_allowed_publisher': {'key': 'intellectualPropertyProtectedWorkspaceComponentRegistrationAllowedPublisher', 'type': '[str]'},
        'system_managed_registration': {'key': 'systemManagedRegistration', 'type': 'bool'},
        'allow_dup_name_between_input_and_ouput_port': {'key': 'allowDupNameBetweenInputAndOuputPort', 'type': 'bool'},
        'module_source': {'key': 'moduleSource', 'type': 'str'},
        'module_scope': {'key': 'moduleScope', 'type': 'str'},
        'module_additional_includes_count': {'key': 'moduleAdditionalIncludesCount', 'type': 'int'},
        'module_os_type': {'key': 'moduleOSType', 'type': 'str'},
        'module_codegen_by': {'key': 'moduleCodegenBy', 'type': 'str'},
        'module_client_source': {'key': 'moduleClientSource', 'type': 'str'},
        'module_is_builtin': {'key': 'moduleIsBuiltin', 'type': 'bool'},
        'module_register_event_extension_fields': {'key': 'moduleRegisterEventExtensionFields', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        registry_name: Optional[str] = None,
        intellectual_property_publisher_information: Optional["IntellectualPropertyPublisherInformation"] = None,
        blob_reference_data: Optional[Dict[str, "RegistryBlobReferenceData"]] = None,
        aml_module_name: Optional[str] = None,
        name_only_display_info: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        module_version_id: Optional[str] = None,
        snapshot_id: Optional[str] = None,
        component_registration_type: Optional[Union[str, "ComponentRegistrationTypeEnum"]] = None,
        module_entity_from_yaml: Optional["ModuleEntity"] = None,
        set_as_default_version: Optional[bool] = None,
        data_types_from_yaml: Optional[List["DataTypeCreationInfo"]] = None,
        data_type_mechanism: Optional[Union[str, "DataTypeMechanism"]] = None,
        identifier_hash: Optional[str] = None,
        identifier_hashes: Optional["RegisterRegistryComponentMetaInfoIdentifierHashes"] = None,
        content_hash: Optional[str] = None,
        extra_hash: Optional[str] = None,
        extra_hashes: Optional["RegisterRegistryComponentMetaInfoExtraHashes"] = None,
        registration: Optional[bool] = None,
        validate_only: Optional[bool] = None,
        skip_workspace_related_check: Optional[bool] = None,
        intellectual_property_protected_workspace_component_registration_allowed_publisher: Optional[List[str]] = None,
        system_managed_registration: Optional[bool] = None,
        allow_dup_name_between_input_and_ouput_port: Optional[bool] = None,
        module_source: Optional[str] = None,
        module_scope: Optional[str] = None,
        module_additional_includes_count: Optional[int] = None,
        module_os_type: Optional[str] = None,
        module_codegen_by: Optional[str] = None,
        module_client_source: Optional[str] = None,
        module_is_builtin: Optional[bool] = None,
        module_register_event_extension_fields: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword intellectual_property_publisher_information:
        :paramtype intellectual_property_publisher_information:
         ~flow.models.IntellectualPropertyPublisherInformation
        :keyword blob_reference_data: This is a dictionary.
        :paramtype blob_reference_data: dict[str, ~flow.models.RegistryBlobReferenceData]
        :keyword aml_module_name:
        :paramtype aml_module_name: str
        :keyword name_only_display_info:
        :paramtype name_only_display_info: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword module_version_id:
        :paramtype module_version_id: str
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword component_registration_type: Possible values include: "Normal", "AnonymousAmlModule",
         "AnonymousAmlModuleVersion", "ModuleEntityOnly".
        :paramtype component_registration_type: str or ~flow.models.ComponentRegistrationTypeEnum
        :keyword module_entity_from_yaml:
        :paramtype module_entity_from_yaml: ~flow.models.ModuleEntity
        :keyword set_as_default_version:
        :paramtype set_as_default_version: bool
        :keyword data_types_from_yaml:
        :paramtype data_types_from_yaml: list[~flow.models.DataTypeCreationInfo]
        :keyword data_type_mechanism: Possible values include: "ErrorWhenNotExisting",
         "RegisterWhenNotExisting", "RegisterBuildinDataTypeOnly".
        :paramtype data_type_mechanism: str or ~flow.models.DataTypeMechanism
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hashes:
        :paramtype identifier_hashes: ~flow.models.RegisterRegistryComponentMetaInfoIdentifierHashes
        :keyword content_hash:
        :paramtype content_hash: str
        :keyword extra_hash:
        :paramtype extra_hash: str
        :keyword extra_hashes:
        :paramtype extra_hashes: ~flow.models.RegisterRegistryComponentMetaInfoExtraHashes
        :keyword registration:
        :paramtype registration: bool
        :keyword validate_only:
        :paramtype validate_only: bool
        :keyword skip_workspace_related_check:
        :paramtype skip_workspace_related_check: bool
        :keyword intellectual_property_protected_workspace_component_registration_allowed_publisher:
        :paramtype intellectual_property_protected_workspace_component_registration_allowed_publisher:
         list[str]
        :keyword system_managed_registration:
        :paramtype system_managed_registration: bool
        :keyword allow_dup_name_between_input_and_ouput_port:
        :paramtype allow_dup_name_between_input_and_ouput_port: bool
        :keyword module_source:
        :paramtype module_source: str
        :keyword module_scope:
        :paramtype module_scope: str
        :keyword module_additional_includes_count:
        :paramtype module_additional_includes_count: int
        :keyword module_os_type:
        :paramtype module_os_type: str
        :keyword module_codegen_by:
        :paramtype module_codegen_by: str
        :keyword module_client_source:
        :paramtype module_client_source: str
        :keyword module_is_builtin:
        :paramtype module_is_builtin: bool
        :keyword module_register_event_extension_fields: Dictionary of :code:`<string>`.
        :paramtype module_register_event_extension_fields: dict[str, str]
        """
        super(RegisterRegistryComponentMetaInfo, self).__init__(**kwargs)
        self.registry_name = registry_name
        self.intellectual_property_publisher_information = intellectual_property_publisher_information
        self.blob_reference_data = blob_reference_data
        self.aml_module_name = aml_module_name
        self.name_only_display_info = name_only_display_info
        self.name = name
        self.version = version
        self.module_version_id = module_version_id
        self.snapshot_id = snapshot_id
        self.component_registration_type = component_registration_type
        self.module_entity_from_yaml = module_entity_from_yaml
        self.set_as_default_version = set_as_default_version
        self.data_types_from_yaml = data_types_from_yaml
        self.data_type_mechanism = data_type_mechanism
        self.identifier_hash = identifier_hash
        self.identifier_hashes = identifier_hashes
        self.content_hash = content_hash
        self.extra_hash = extra_hash
        self.extra_hashes = extra_hashes
        self.registration = registration
        self.validate_only = validate_only
        self.skip_workspace_related_check = skip_workspace_related_check
        self.intellectual_property_protected_workspace_component_registration_allowed_publisher = intellectual_property_protected_workspace_component_registration_allowed_publisher
        self.system_managed_registration = system_managed_registration
        self.allow_dup_name_between_input_and_ouput_port = allow_dup_name_between_input_and_ouput_port
        self.module_source = module_source
        self.module_scope = module_scope
        self.module_additional_includes_count = module_additional_includes_count
        self.module_os_type = module_os_type
        self.module_codegen_by = module_codegen_by
        self.module_client_source = module_client_source
        self.module_is_builtin = module_is_builtin
        self.module_register_event_extension_fields = module_register_event_extension_fields


class RegisterRegistryComponentMetaInfoExtraHashes(msrest.serialization.Model):
    """RegisterRegistryComponentMetaInfoExtraHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(RegisterRegistryComponentMetaInfoExtraHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class RegisterRegistryComponentMetaInfoIdentifierHashes(msrest.serialization.Model):
    """RegisterRegistryComponentMetaInfoIdentifierHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(RegisterRegistryComponentMetaInfoIdentifierHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class RegistrationOptions(msrest.serialization.Model):
    """RegistrationOptions.

    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar dataset_registration_options:
    :vartype dataset_registration_options: ~flow.models.DatasetRegistrationOptions
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'dataset_registration_options': {'key': 'datasetRegistrationOptions', 'type': 'DatasetRegistrationOptions'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        version: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        dataset_registration_options: Optional["DatasetRegistrationOptions"] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword dataset_registration_options:
        :paramtype dataset_registration_options: ~flow.models.DatasetRegistrationOptions
        """
        super(RegistrationOptions, self).__init__(**kwargs)
        self.name = name
        self.version = version
        self.description = description
        self.tags = tags
        self.properties = properties
        self.dataset_registration_options = dataset_registration_options


class RegistryBlobReferenceData(msrest.serialization.Model):
    """RegistryBlobReferenceData.

    :ivar data_reference_id:
    :vartype data_reference_id: str
    :ivar data:
    :vartype data: str
    """

    _attribute_map = {
        'data_reference_id': {'key': 'dataReferenceId', 'type': 'str'},
        'data': {'key': 'data', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_reference_id: Optional[str] = None,
        data: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_reference_id:
        :paramtype data_reference_id: str
        :keyword data:
        :paramtype data: str
        """
        super(RegistryBlobReferenceData, self).__init__(**kwargs)
        self.data_reference_id = data_reference_id
        self.data = data


class RegistryIdentity(msrest.serialization.Model):
    """RegistryIdentity.

    :ivar resource_id:
    :vartype resource_id: str
    :ivar client_id:
    :vartype client_id: str
    """

    _attribute_map = {
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        resource_id: Optional[str] = None,
        client_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword client_id:
        :paramtype client_id: str
        """
        super(RegistryIdentity, self).__init__(**kwargs)
        self.resource_id = resource_id
        self.client_id = client_id


class Relationship(msrest.serialization.Model):
    """Relationship.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar relation_type:
    :vartype relation_type: str
    :ivar target_entity_id:
    :vartype target_entity_id: str
    :ivar asset_id:
    :vartype asset_id: str
    :ivar entity_type:
    :vartype entity_type: str
    :ivar direction:
    :vartype direction: str
    :ivar entity_container_id:
    :vartype entity_container_id: str
    """

    _validation = {
        'entity_type': {'readonly': True},
        'entity_container_id': {'readonly': True},
    }

    _attribute_map = {
        'relation_type': {'key': 'relationType', 'type': 'str'},
        'target_entity_id': {'key': 'targetEntityId', 'type': 'str'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'entity_type': {'key': 'entityType', 'type': 'str'},
        'direction': {'key': 'direction', 'type': 'str'},
        'entity_container_id': {'key': 'entityContainerId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        relation_type: Optional[str] = None,
        target_entity_id: Optional[str] = None,
        asset_id: Optional[str] = None,
        direction: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword relation_type:
        :paramtype relation_type: str
        :keyword target_entity_id:
        :paramtype target_entity_id: str
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword direction:
        :paramtype direction: str
        """
        super(Relationship, self).__init__(**kwargs)
        self.relation_type = relation_type
        self.target_entity_id = target_entity_id
        self.asset_id = asset_id
        self.entity_type = None
        self.direction = direction
        self.entity_container_id = None


class RemoteDockerComputeInfo(msrest.serialization.Model):
    """RemoteDockerComputeInfo.

    :ivar address:
    :vartype address: str
    :ivar username:
    :vartype username: str
    :ivar password:
    :vartype password: str
    :ivar private_key:
    :vartype private_key: str
    """

    _attribute_map = {
        'address': {'key': 'address', 'type': 'str'},
        'username': {'key': 'username', 'type': 'str'},
        'password': {'key': 'password', 'type': 'str'},
        'private_key': {'key': 'privateKey', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        address: Optional[str] = None,
        username: Optional[str] = None,
        password: Optional[str] = None,
        private_key: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword address:
        :paramtype address: str
        :keyword username:
        :paramtype username: str
        :keyword password:
        :paramtype password: str
        :keyword private_key:
        :paramtype private_key: str
        """
        super(RemoteDockerComputeInfo, self).__init__(**kwargs)
        self.address = address
        self.username = username
        self.password = password
        self.private_key = private_key


class ResourceConfig(msrest.serialization.Model):
    """ResourceConfig.

    :ivar gpu_count:
    :vartype gpu_count: int
    :ivar cpu_count:
    :vartype cpu_count: int
    :ivar memory_request_in_gb:
    :vartype memory_request_in_gb: int
    """

    _attribute_map = {
        'gpu_count': {'key': 'gpuCount', 'type': 'int'},
        'cpu_count': {'key': 'cpuCount', 'type': 'int'},
        'memory_request_in_gb': {'key': 'memoryRequestInGB', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        gpu_count: Optional[int] = None,
        cpu_count: Optional[int] = None,
        memory_request_in_gb: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword gpu_count:
        :paramtype gpu_count: int
        :keyword cpu_count:
        :paramtype cpu_count: int
        :keyword memory_request_in_gb:
        :paramtype memory_request_in_gb: int
        """
        super(ResourceConfig, self).__init__(**kwargs)
        self.gpu_count = gpu_count
        self.cpu_count = cpu_count
        self.memory_request_in_gb = memory_request_in_gb


class ResourceConfiguration(msrest.serialization.Model):
    """ResourceConfiguration.

    :ivar gpu_count:
    :vartype gpu_count: int
    :ivar cpu_count:
    :vartype cpu_count: int
    :ivar memory_request_in_gb:
    :vartype memory_request_in_gb: int
    """

    _attribute_map = {
        'gpu_count': {'key': 'gpuCount', 'type': 'int'},
        'cpu_count': {'key': 'cpuCount', 'type': 'int'},
        'memory_request_in_gb': {'key': 'memoryRequestInGB', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        gpu_count: Optional[int] = None,
        cpu_count: Optional[int] = None,
        memory_request_in_gb: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword gpu_count:
        :paramtype gpu_count: int
        :keyword cpu_count:
        :paramtype cpu_count: int
        :keyword memory_request_in_gb:
        :paramtype memory_request_in_gb: int
        """
        super(ResourceConfiguration, self).__init__(**kwargs)
        self.gpu_count = gpu_count
        self.cpu_count = cpu_count
        self.memory_request_in_gb = memory_request_in_gb


class ResourcesSetting(msrest.serialization.Model):
    """ResourcesSetting.

    :ivar instance_size:
    :vartype instance_size: str
    :ivar spark_version:
    :vartype spark_version: str
    """

    _attribute_map = {
        'instance_size': {'key': 'instanceSize', 'type': 'str'},
        'spark_version': {'key': 'sparkVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_size: Optional[str] = None,
        spark_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_size:
        :paramtype instance_size: str
        :keyword spark_version:
        :paramtype spark_version: str
        """
        super(ResourcesSetting, self).__init__(**kwargs)
        self.instance_size = instance_size
        self.spark_version = spark_version


class ResubmitExperimentRequest(msrest.serialization.Model):
    """ResubmitExperimentRequest.

    :ivar target_nodes: This is a dictionary.
    :vartype target_nodes: dict[str, ~flow.models.ExperimentNodeRunSettings]
    """

    _attribute_map = {
        'target_nodes': {'key': 'targetNodes', 'type': '{ExperimentNodeRunSettings}'},
    }

    def __init__(
        self,
        *,
        target_nodes: Optional[Dict[str, "ExperimentNodeRunSettings"]] = None,
        **kwargs
    ):
        """
        :keyword target_nodes: This is a dictionary.
        :paramtype target_nodes: dict[str, ~flow.models.ExperimentNodeRunSettings]
        """
        super(ResubmitExperimentRequest, self).__init__(**kwargs)
        self.target_nodes = target_nodes


class ResumeBulkRunRequest(msrest.serialization.Model):
    """ResumeBulkRunRequest.

    :ivar run_id:
    :vartype run_id: str
    :ivar run_display_name:
    :vartype run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar resume_from_run_id:
    :vartype resume_from_run_id: str
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'run_display_name': {'key': 'runDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'resume_from_run_id': {'key': 'resumeFromRunId', 'type': 'str'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        resume_from_run_id: Optional[str] = None,
        runtime_name: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword run_display_name:
        :paramtype run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword resume_from_run_id:
        :paramtype resume_from_run_id: str
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(ResumeBulkRunRequest, self).__init__(**kwargs)
        self.run_id = run_id
        self.run_display_name = run_display_name
        self.description = description
        self.tags = tags
        self.resume_from_run_id = resume_from_run_id
        self.runtime_name = runtime_name
        self.disable_trace = disable_trace
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class RetrieveToolFuncResultRequest(msrest.serialization.Model):
    """RetrieveToolFuncResultRequest.

    :ivar func_path:
    :vartype func_path: str
    :ivar func_kwargs: This is a dictionary.
    :vartype func_kwargs: dict[str, any]
    :ivar func_call_scenario: Possible values include: "generated_by", "reverse_generated_by",
     "dynamic_list".
    :vartype func_call_scenario: str or ~flow.models.ToolFuncCallScenario
    """

    _attribute_map = {
        'func_path': {'key': 'func_path', 'type': 'str'},
        'func_kwargs': {'key': 'func_kwargs', 'type': '{object}'},
        'func_call_scenario': {'key': 'func_call_scenario', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        func_path: Optional[str] = None,
        func_kwargs: Optional[Dict[str, Any]] = None,
        func_call_scenario: Optional[Union[str, "ToolFuncCallScenario"]] = None,
        **kwargs
    ):
        """
        :keyword func_path:
        :paramtype func_path: str
        :keyword func_kwargs: This is a dictionary.
        :paramtype func_kwargs: dict[str, any]
        :keyword func_call_scenario: Possible values include: "generated_by", "reverse_generated_by",
         "dynamic_list".
        :paramtype func_call_scenario: str or ~flow.models.ToolFuncCallScenario
        """
        super(RetrieveToolFuncResultRequest, self).__init__(**kwargs)
        self.func_path = func_path
        self.func_kwargs = func_kwargs
        self.func_call_scenario = func_call_scenario


class RetryConfiguration(msrest.serialization.Model):
    """RetryConfiguration.

    :ivar max_retry_count:
    :vartype max_retry_count: int
    """

    _attribute_map = {
        'max_retry_count': {'key': 'maxRetryCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        max_retry_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword max_retry_count:
        :paramtype max_retry_count: int
        """
        super(RetryConfiguration, self).__init__(**kwargs)
        self.max_retry_count = max_retry_count


class RGitHubPackage(msrest.serialization.Model):
    """RGitHubPackage.

    :ivar repository:
    :vartype repository: str
    :ivar auth_token:
    :vartype auth_token: str
    """

    _attribute_map = {
        'repository': {'key': 'repository', 'type': 'str'},
        'auth_token': {'key': 'authToken', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        repository: Optional[str] = None,
        auth_token: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword repository:
        :paramtype repository: str
        :keyword auth_token:
        :paramtype auth_token: str
        """
        super(RGitHubPackage, self).__init__(**kwargs)
        self.repository = repository
        self.auth_token = auth_token


class RootError(msrest.serialization.Model):
    """The root error.

    :ivar code: The service-defined error code. Supported error codes: ServiceError, UserError,
     ValidationError, AzureStorageError, TransientError, RequestThrottled.
    :vartype code: str
    :ivar severity: The Severity of error.
    :vartype severity: int
    :ivar message: A human-readable representation of the error.
    :vartype message: str
    :ivar message_format: An unformatted version of the message with no variable substitution.
    :vartype message_format: str
    :ivar message_parameters: Value substitutions corresponding to the contents of MessageFormat.
    :vartype message_parameters: dict[str, str]
    :ivar reference_code: This code can optionally be set by the system generating the error.
     It should be used to classify the problem and identify the module and code area where the
     failure occured.
    :vartype reference_code: str
    :ivar details_uri: A URI which points to more details about the context of the error.
    :vartype details_uri: str
    :ivar target: The target of the error (e.g., the name of the property in error).
    :vartype target: str
    :ivar details: The related errors that occurred during the request.
    :vartype details: list[~flow.models.RootError]
    :ivar inner_error: A nested structure of errors.
    :vartype inner_error: ~flow.models.InnerErrorResponse
    :ivar additional_info: The error additional info.
    :vartype additional_info: list[~flow.models.ErrorAdditionalInfo]
    """

    _attribute_map = {
        'code': {'key': 'code', 'type': 'str'},
        'severity': {'key': 'severity', 'type': 'int'},
        'message': {'key': 'message', 'type': 'str'},
        'message_format': {'key': 'messageFormat', 'type': 'str'},
        'message_parameters': {'key': 'messageParameters', 'type': '{str}'},
        'reference_code': {'key': 'referenceCode', 'type': 'str'},
        'details_uri': {'key': 'detailsUri', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'details': {'key': 'details', 'type': '[RootError]'},
        'inner_error': {'key': 'innerError', 'type': 'InnerErrorResponse'},
        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
    }

    def __init__(
        self,
        *,
        code: Optional[str] = None,
        severity: Optional[int] = None,
        message: Optional[str] = None,
        message_format: Optional[str] = None,
        message_parameters: Optional[Dict[str, str]] = None,
        reference_code: Optional[str] = None,
        details_uri: Optional[str] = None,
        target: Optional[str] = None,
        details: Optional[List["RootError"]] = None,
        inner_error: Optional["InnerErrorResponse"] = None,
        additional_info: Optional[List["ErrorAdditionalInfo"]] = None,
        **kwargs
    ):
        """
        :keyword code: The service-defined error code. Supported error codes: ServiceError, UserError,
         ValidationError, AzureStorageError, TransientError, RequestThrottled.
        :paramtype code: str
        :keyword severity: The Severity of error.
        :paramtype severity: int
        :keyword message: A human-readable representation of the error.
        :paramtype message: str
        :keyword message_format: An unformatted version of the message with no variable substitution.
        :paramtype message_format: str
        :keyword message_parameters: Value substitutions corresponding to the contents of
         MessageFormat.
        :paramtype message_parameters: dict[str, str]
        :keyword reference_code: This code can optionally be set by the system generating the error.
         It should be used to classify the problem and identify the module and code area where the
         failure occured.
        :paramtype reference_code: str
        :keyword details_uri: A URI which points to more details about the context of the error.
        :paramtype details_uri: str
        :keyword target: The target of the error (e.g., the name of the property in error).
        :paramtype target: str
        :keyword details: The related errors that occurred during the request.
        :paramtype details: list[~flow.models.RootError]
        :keyword inner_error: A nested structure of errors.
        :paramtype inner_error: ~flow.models.InnerErrorResponse
        :keyword additional_info: The error additional info.
        :paramtype additional_info: list[~flow.models.ErrorAdditionalInfo]
        """
        super(RootError, self).__init__(**kwargs)
        self.code = code
        self.severity = severity
        self.message = message
        self.message_format = message_format
        self.message_parameters = message_parameters
        self.reference_code = reference_code
        self.details_uri = details_uri
        self.target = target
        self.details = details
        self.inner_error = inner_error
        self.additional_info = additional_info


class RSection(msrest.serialization.Model):
    """RSection.

    :ivar r_version:
    :vartype r_version: str
    :ivar user_managed:
    :vartype user_managed: bool
    :ivar rscript_path:
    :vartype rscript_path: str
    :ivar snapshot_date:
    :vartype snapshot_date: str
    :ivar cran_packages:
    :vartype cran_packages: list[~flow.models.RCranPackage]
    :ivar git_hub_packages:
    :vartype git_hub_packages: list[~flow.models.RGitHubPackage]
    :ivar custom_url_packages:
    :vartype custom_url_packages: list[str]
    :ivar bio_conductor_packages:
    :vartype bio_conductor_packages: list[str]
    """

    _attribute_map = {
        'r_version': {'key': 'rVersion', 'type': 'str'},
        'user_managed': {'key': 'userManaged', 'type': 'bool'},
        'rscript_path': {'key': 'rscriptPath', 'type': 'str'},
        'snapshot_date': {'key': 'snapshotDate', 'type': 'str'},
        'cran_packages': {'key': 'cranPackages', 'type': '[RCranPackage]'},
        'git_hub_packages': {'key': 'gitHubPackages', 'type': '[RGitHubPackage]'},
        'custom_url_packages': {'key': 'customUrlPackages', 'type': '[str]'},
        'bio_conductor_packages': {'key': 'bioConductorPackages', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        r_version: Optional[str] = None,
        user_managed: Optional[bool] = None,
        rscript_path: Optional[str] = None,
        snapshot_date: Optional[str] = None,
        cran_packages: Optional[List["RCranPackage"]] = None,
        git_hub_packages: Optional[List["RGitHubPackage"]] = None,
        custom_url_packages: Optional[List[str]] = None,
        bio_conductor_packages: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword r_version:
        :paramtype r_version: str
        :keyword user_managed:
        :paramtype user_managed: bool
        :keyword rscript_path:
        :paramtype rscript_path: str
        :keyword snapshot_date:
        :paramtype snapshot_date: str
        :keyword cran_packages:
        :paramtype cran_packages: list[~flow.models.RCranPackage]
        :keyword git_hub_packages:
        :paramtype git_hub_packages: list[~flow.models.RGitHubPackage]
        :keyword custom_url_packages:
        :paramtype custom_url_packages: list[str]
        :keyword bio_conductor_packages:
        :paramtype bio_conductor_packages: list[str]
        """
        super(RSection, self).__init__(**kwargs)
        self.r_version = r_version
        self.user_managed = user_managed
        self.rscript_path = rscript_path
        self.snapshot_date = snapshot_date
        self.cran_packages = cran_packages
        self.git_hub_packages = git_hub_packages
        self.custom_url_packages = custom_url_packages
        self.bio_conductor_packages = bio_conductor_packages


class RunAnnotations(msrest.serialization.Model):
    """RunAnnotations.

    :ivar display_name:
    :vartype display_name: str
    :ivar status:
    :vartype status: str
    :ivar primary_metric_name:
    :vartype primary_metric_name: str
    :ivar estimated_cost:
    :vartype estimated_cost: float
    :ivar primary_metric_summary:
    :vartype primary_metric_summary: ~flow.models.RunIndexMetricSummary
    :ivar metrics: Dictionary of :code:`<RunIndexMetricSummarySystemObject>`.
    :vartype metrics: dict[str, ~flow.models.RunIndexMetricSummarySystemObject]
    :ivar parameters: Dictionary of :code:`<any>`.
    :vartype parameters: dict[str, any]
    :ivar settings: Dictionary of :code:`<string>`.
    :vartype settings: dict[str, str]
    :ivar modified_time:
    :vartype modified_time: ~datetime.datetime
    :ivar retain_for_lifetime_of_workspace:
    :vartype retain_for_lifetime_of_workspace: bool
    :ivar error:
    :vartype error: ~flow.models.IndexedErrorResponse
    :ivar resource_metric_summary:
    :vartype resource_metric_summary: ~flow.models.RunIndexResourceMetricSummary
    :ivar job_cost:
    :vartype job_cost: ~flow.models.JobCost
    :ivar compute_duration:
    :vartype compute_duration: str
    :ivar compute_duration_milliseconds:
    :vartype compute_duration_milliseconds: float
    :ivar effective_start_time_utc:
    :vartype effective_start_time_utc: ~datetime.datetime
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar archived:
    :vartype archived: bool
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'display_name': {'key': 'displayName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'primary_metric_name': {'key': 'primaryMetricName', 'type': 'str'},
        'estimated_cost': {'key': 'estimatedCost', 'type': 'float'},
        'primary_metric_summary': {'key': 'primaryMetricSummary', 'type': 'RunIndexMetricSummary'},
        'metrics': {'key': 'metrics', 'type': '{RunIndexMetricSummarySystemObject}'},
        'parameters': {'key': 'parameters', 'type': '{object}'},
        'settings': {'key': 'settings', 'type': '{str}'},
        'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'},
        'retain_for_lifetime_of_workspace': {'key': 'retainForLifetimeOfWorkspace', 'type': 'bool'},
        'error': {'key': 'error', 'type': 'IndexedErrorResponse'},
        'resource_metric_summary': {'key': 'resourceMetricSummary', 'type': 'RunIndexResourceMetricSummary'},
        'job_cost': {'key': 'jobCost', 'type': 'JobCost'},
        'compute_duration': {'key': 'computeDuration', 'type': 'str'},
        'compute_duration_milliseconds': {'key': 'computeDurationMilliseconds', 'type': 'float'},
        'effective_start_time_utc': {'key': 'effectiveStartTimeUtc', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'archived': {'key': 'archived', 'type': 'bool'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        display_name: Optional[str] = None,
        status: Optional[str] = None,
        primary_metric_name: Optional[str] = None,
        estimated_cost: Optional[float] = None,
        primary_metric_summary: Optional["RunIndexMetricSummary"] = None,
        metrics: Optional[Dict[str, "RunIndexMetricSummarySystemObject"]] = None,
        parameters: Optional[Dict[str, Any]] = None,
        settings: Optional[Dict[str, str]] = None,
        modified_time: Optional[datetime.datetime] = None,
        retain_for_lifetime_of_workspace: Optional[bool] = None,
        error: Optional["IndexedErrorResponse"] = None,
        resource_metric_summary: Optional["RunIndexResourceMetricSummary"] = None,
        job_cost: Optional["JobCost"] = None,
        compute_duration: Optional[str] = None,
        compute_duration_milliseconds: Optional[float] = None,
        effective_start_time_utc: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        archived: Optional[bool] = None,
        tags: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword display_name:
        :paramtype display_name: str
        :keyword status:
        :paramtype status: str
        :keyword primary_metric_name:
        :paramtype primary_metric_name: str
        :keyword estimated_cost:
        :paramtype estimated_cost: float
        :keyword primary_metric_summary:
        :paramtype primary_metric_summary: ~flow.models.RunIndexMetricSummary
        :keyword metrics: Dictionary of :code:`<RunIndexMetricSummarySystemObject>`.
        :paramtype metrics: dict[str, ~flow.models.RunIndexMetricSummarySystemObject]
        :keyword parameters: Dictionary of :code:`<any>`.
        :paramtype parameters: dict[str, any]
        :keyword settings: Dictionary of :code:`<string>`.
        :paramtype settings: dict[str, str]
        :keyword modified_time:
        :paramtype modified_time: ~datetime.datetime
        :keyword retain_for_lifetime_of_workspace:
        :paramtype retain_for_lifetime_of_workspace: bool
        :keyword error:
        :paramtype error: ~flow.models.IndexedErrorResponse
        :keyword resource_metric_summary:
        :paramtype resource_metric_summary: ~flow.models.RunIndexResourceMetricSummary
        :keyword job_cost:
        :paramtype job_cost: ~flow.models.JobCost
        :keyword compute_duration:
        :paramtype compute_duration: str
        :keyword compute_duration_milliseconds:
        :paramtype compute_duration_milliseconds: float
        :keyword effective_start_time_utc:
        :paramtype effective_start_time_utc: ~datetime.datetime
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword archived:
        :paramtype archived: bool
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        """
        super(RunAnnotations, self).__init__(**kwargs)
        self.display_name = display_name
        self.status = status
        self.primary_metric_name = primary_metric_name
        self.estimated_cost = estimated_cost
        self.primary_metric_summary = primary_metric_summary
        self.metrics = metrics
        self.parameters = parameters
        self.settings = settings
        self.modified_time = modified_time
        self.retain_for_lifetime_of_workspace = retain_for_lifetime_of_workspace
        self.error = error
        self.resource_metric_summary = resource_metric_summary
        self.job_cost = job_cost
        self.compute_duration = compute_duration
        self.compute_duration_milliseconds = compute_duration_milliseconds
        self.effective_start_time_utc = effective_start_time_utc
        self.name = name
        self.description = description
        self.archived = archived
        self.tags = tags


class RunCommandsCommandResult(msrest.serialization.Model):
    """RunCommandsCommandResult.

    :ivar command:
    :vartype command: str
    :ivar arguments:
    :vartype arguments: list[str]
    :ivar exit_code:
    :vartype exit_code: int
    :ivar stdout:
    :vartype stdout: str
    :ivar stderr:
    :vartype stderr: str
    """

    _attribute_map = {
        'command': {'key': 'command', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
        'exit_code': {'key': 'exit_code', 'type': 'int'},
        'stdout': {'key': 'stdout', 'type': 'str'},
        'stderr': {'key': 'stderr', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        command: Optional[str] = None,
        arguments: Optional[List[str]] = None,
        exit_code: Optional[int] = None,
        stdout: Optional[str] = None,
        stderr: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword command:
        :paramtype command: str
        :keyword arguments:
        :paramtype arguments: list[str]
        :keyword exit_code:
        :paramtype exit_code: int
        :keyword stdout:
        :paramtype stdout: str
        :keyword stderr:
        :paramtype stderr: str
        """
        super(RunCommandsCommandResult, self).__init__(**kwargs)
        self.command = command
        self.arguments = arguments
        self.exit_code = exit_code
        self.stdout = stdout
        self.stderr = stderr


class RunConfiguration(msrest.serialization.Model):
    """RunConfiguration.

    :ivar script:
    :vartype script: str
    :ivar script_type: Possible values include: "Python", "Notebook".
    :vartype script_type: str or ~flow.models.ScriptType
    :ivar command:
    :vartype command: str
    :ivar use_absolute_path:
    :vartype use_absolute_path: bool
    :ivar arguments:
    :vartype arguments: list[str]
    :ivar framework: Possible values include: "Python", "PySpark", "Cntk", "TensorFlow", "PyTorch",
     "PySparkInteractive", "R".
    :vartype framework: str or ~flow.models.Framework
    :ivar communicator: Possible values include: "None", "ParameterServer", "Gloo", "Mpi", "Nccl",
     "ParallelTask".
    :vartype communicator: str or ~flow.models.Communicator
    :ivar target:
    :vartype target: str
    :ivar auto_cluster_compute_specification:
    :vartype auto_cluster_compute_specification: ~flow.models.AutoClusterComputeSpecification
    :ivar data_references: Dictionary of :code:`<DataReferenceConfiguration>`.
    :vartype data_references: dict[str, ~flow.models.DataReferenceConfiguration]
    :ivar data: Dictionary of :code:`<Data>`.
    :vartype data: dict[str, ~flow.models.Data]
    :ivar input_assets: Dictionary of :code:`<InputAsset>`.
    :vartype input_assets: dict[str, ~flow.models.InputAsset]
    :ivar output_data: Dictionary of :code:`<OutputData>`.
    :vartype output_data: dict[str, ~flow.models.OutputData]
    :ivar datacaches:
    :vartype datacaches: list[~flow.models.DatacacheConfiguration]
    :ivar job_name:
    :vartype job_name: str
    :ivar max_run_duration_seconds:
    :vartype max_run_duration_seconds: long
    :ivar node_count:
    :vartype node_count: int
    :ivar max_node_count:
    :vartype max_node_count: int
    :ivar instance_types:
    :vartype instance_types: list[str]
    :ivar priority:
    :vartype priority: int
    :ivar credential_passthrough:
    :vartype credential_passthrough: bool
    :ivar identity:
    :vartype identity: ~flow.models.IdentityConfiguration
    :ivar environment:
    :vartype environment: ~flow.models.EnvironmentDefinition
    :ivar history:
    :vartype history: ~flow.models.HistoryConfiguration
    :ivar spark:
    :vartype spark: ~flow.models.SparkConfiguration
    :ivar parallel_task:
    :vartype parallel_task: ~flow.models.ParallelTaskConfiguration
    :ivar tensorflow:
    :vartype tensorflow: ~flow.models.TensorflowConfiguration
    :ivar mpi:
    :vartype mpi: ~flow.models.MpiConfiguration
    :ivar py_torch:
    :vartype py_torch: ~flow.models.PyTorchConfiguration
    :ivar ray:
    :vartype ray: ~flow.models.RayConfiguration
    :ivar hdi:
    :vartype hdi: ~flow.models.HdiConfiguration
    :ivar docker:
    :vartype docker: ~flow.models.DockerConfiguration
    :ivar command_return_code_config:
    :vartype command_return_code_config: ~flow.models.CommandReturnCodeConfig
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
    :vartype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
    :ivar parameters:
    :vartype parameters: list[~flow.models.ParameterDefinition]
    :ivar autologger_settings:
    :vartype autologger_settings: ~flow.models.AutologgerSettings
    :ivar data_bricks:
    :vartype data_bricks: ~flow.models.DatabricksConfiguration
    :ivar training_diagnostic_config:
    :vartype training_diagnostic_config: ~flow.models.TrainingDiagnosticConfiguration
    :ivar secrets_configuration: Dictionary of :code:`<SecretConfiguration>`.
    :vartype secrets_configuration: dict[str, ~flow.models.SecretConfiguration]
    """

    _attribute_map = {
        'script': {'key': 'script', 'type': 'str'},
        'script_type': {'key': 'scriptType', 'type': 'str'},
        'command': {'key': 'command', 'type': 'str'},
        'use_absolute_path': {'key': 'useAbsolutePath', 'type': 'bool'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
        'framework': {'key': 'framework', 'type': 'str'},
        'communicator': {'key': 'communicator', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'auto_cluster_compute_specification': {'key': 'autoClusterComputeSpecification', 'type': 'AutoClusterComputeSpecification'},
        'data_references': {'key': 'dataReferences', 'type': '{DataReferenceConfiguration}'},
        'data': {'key': 'data', 'type': '{Data}'},
        'input_assets': {'key': 'inputAssets', 'type': '{InputAsset}'},
        'output_data': {'key': 'outputData', 'type': '{OutputData}'},
        'datacaches': {'key': 'datacaches', 'type': '[DatacacheConfiguration]'},
        'job_name': {'key': 'jobName', 'type': 'str'},
        'max_run_duration_seconds': {'key': 'maxRunDurationSeconds', 'type': 'long'},
        'node_count': {'key': 'nodeCount', 'type': 'int'},
        'max_node_count': {'key': 'maxNodeCount', 'type': 'int'},
        'instance_types': {'key': 'instanceTypes', 'type': '[str]'},
        'priority': {'key': 'priority', 'type': 'int'},
        'credential_passthrough': {'key': 'credentialPassthrough', 'type': 'bool'},
        'identity': {'key': 'identity', 'type': 'IdentityConfiguration'},
        'environment': {'key': 'environment', 'type': 'EnvironmentDefinition'},
        'history': {'key': 'history', 'type': 'HistoryConfiguration'},
        'spark': {'key': 'spark', 'type': 'SparkConfiguration'},
        'parallel_task': {'key': 'parallelTask', 'type': 'ParallelTaskConfiguration'},
        'tensorflow': {'key': 'tensorflow', 'type': 'TensorflowConfiguration'},
        'mpi': {'key': 'mpi', 'type': 'MpiConfiguration'},
        'py_torch': {'key': 'pyTorch', 'type': 'PyTorchConfiguration'},
        'ray': {'key': 'ray', 'type': 'RayConfiguration'},
        'hdi': {'key': 'hdi', 'type': 'HdiConfiguration'},
        'docker': {'key': 'docker', 'type': 'DockerConfiguration'},
        'command_return_code_config': {'key': 'commandReturnCodeConfig', 'type': 'CommandReturnCodeConfig'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'application_endpoints': {'key': 'applicationEndpoints', 'type': '{ApplicationEndpointConfiguration}'},
        'parameters': {'key': 'parameters', 'type': '[ParameterDefinition]'},
        'autologger_settings': {'key': 'autologgerSettings', 'type': 'AutologgerSettings'},
        'data_bricks': {'key': 'dataBricks', 'type': 'DatabricksConfiguration'},
        'training_diagnostic_config': {'key': 'trainingDiagnosticConfig', 'type': 'TrainingDiagnosticConfiguration'},
        'secrets_configuration': {'key': 'secretsConfiguration', 'type': '{SecretConfiguration}'},
    }

    def __init__(
        self,
        *,
        script: Optional[str] = None,
        script_type: Optional[Union[str, "ScriptType"]] = None,
        command: Optional[str] = None,
        use_absolute_path: Optional[bool] = None,
        arguments: Optional[List[str]] = None,
        framework: Optional[Union[str, "Framework"]] = None,
        communicator: Optional[Union[str, "Communicator"]] = None,
        target: Optional[str] = None,
        auto_cluster_compute_specification: Optional["AutoClusterComputeSpecification"] = None,
        data_references: Optional[Dict[str, "DataReferenceConfiguration"]] = None,
        data: Optional[Dict[str, "Data"]] = None,
        input_assets: Optional[Dict[str, "InputAsset"]] = None,
        output_data: Optional[Dict[str, "OutputData"]] = None,
        datacaches: Optional[List["DatacacheConfiguration"]] = None,
        job_name: Optional[str] = None,
        max_run_duration_seconds: Optional[int] = None,
        node_count: Optional[int] = None,
        max_node_count: Optional[int] = None,
        instance_types: Optional[List[str]] = None,
        priority: Optional[int] = None,
        credential_passthrough: Optional[bool] = None,
        identity: Optional["IdentityConfiguration"] = None,
        environment: Optional["EnvironmentDefinition"] = None,
        history: Optional["HistoryConfiguration"] = None,
        spark: Optional["SparkConfiguration"] = None,
        parallel_task: Optional["ParallelTaskConfiguration"] = None,
        tensorflow: Optional["TensorflowConfiguration"] = None,
        mpi: Optional["MpiConfiguration"] = None,
        py_torch: Optional["PyTorchConfiguration"] = None,
        ray: Optional["RayConfiguration"] = None,
        hdi: Optional["HdiConfiguration"] = None,
        docker: Optional["DockerConfiguration"] = None,
        command_return_code_config: Optional["CommandReturnCodeConfig"] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        application_endpoints: Optional[Dict[str, "ApplicationEndpointConfiguration"]] = None,
        parameters: Optional[List["ParameterDefinition"]] = None,
        autologger_settings: Optional["AutologgerSettings"] = None,
        data_bricks: Optional["DatabricksConfiguration"] = None,
        training_diagnostic_config: Optional["TrainingDiagnosticConfiguration"] = None,
        secrets_configuration: Optional[Dict[str, "SecretConfiguration"]] = None,
        **kwargs
    ):
        """
        :keyword script:
        :paramtype script: str
        :keyword script_type: Possible values include: "Python", "Notebook".
        :paramtype script_type: str or ~flow.models.ScriptType
        :keyword command:
        :paramtype command: str
        :keyword use_absolute_path:
        :paramtype use_absolute_path: bool
        :keyword arguments:
        :paramtype arguments: list[str]
        :keyword framework: Possible values include: "Python", "PySpark", "Cntk", "TensorFlow",
         "PyTorch", "PySparkInteractive", "R".
        :paramtype framework: str or ~flow.models.Framework
        :keyword communicator: Possible values include: "None", "ParameterServer", "Gloo", "Mpi",
         "Nccl", "ParallelTask".
        :paramtype communicator: str or ~flow.models.Communicator
        :keyword target:
        :paramtype target: str
        :keyword auto_cluster_compute_specification:
        :paramtype auto_cluster_compute_specification: ~flow.models.AutoClusterComputeSpecification
        :keyword data_references: Dictionary of :code:`<DataReferenceConfiguration>`.
        :paramtype data_references: dict[str, ~flow.models.DataReferenceConfiguration]
        :keyword data: Dictionary of :code:`<Data>`.
        :paramtype data: dict[str, ~flow.models.Data]
        :keyword input_assets: Dictionary of :code:`<InputAsset>`.
        :paramtype input_assets: dict[str, ~flow.models.InputAsset]
        :keyword output_data: Dictionary of :code:`<OutputData>`.
        :paramtype output_data: dict[str, ~flow.models.OutputData]
        :keyword datacaches:
        :paramtype datacaches: list[~flow.models.DatacacheConfiguration]
        :keyword job_name:
        :paramtype job_name: str
        :keyword max_run_duration_seconds:
        :paramtype max_run_duration_seconds: long
        :keyword node_count:
        :paramtype node_count: int
        :keyword max_node_count:
        :paramtype max_node_count: int
        :keyword instance_types:
        :paramtype instance_types: list[str]
        :keyword priority:
        :paramtype priority: int
        :keyword credential_passthrough:
        :paramtype credential_passthrough: bool
        :keyword identity:
        :paramtype identity: ~flow.models.IdentityConfiguration
        :keyword environment:
        :paramtype environment: ~flow.models.EnvironmentDefinition
        :keyword history:
        :paramtype history: ~flow.models.HistoryConfiguration
        :keyword spark:
        :paramtype spark: ~flow.models.SparkConfiguration
        :keyword parallel_task:
        :paramtype parallel_task: ~flow.models.ParallelTaskConfiguration
        :keyword tensorflow:
        :paramtype tensorflow: ~flow.models.TensorflowConfiguration
        :keyword mpi:
        :paramtype mpi: ~flow.models.MpiConfiguration
        :keyword py_torch:
        :paramtype py_torch: ~flow.models.PyTorchConfiguration
        :keyword ray:
        :paramtype ray: ~flow.models.RayConfiguration
        :keyword hdi:
        :paramtype hdi: ~flow.models.HdiConfiguration
        :keyword docker:
        :paramtype docker: ~flow.models.DockerConfiguration
        :keyword command_return_code_config:
        :paramtype command_return_code_config: ~flow.models.CommandReturnCodeConfig
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword application_endpoints: Dictionary of :code:`<ApplicationEndpointConfiguration>`.
        :paramtype application_endpoints: dict[str, ~flow.models.ApplicationEndpointConfiguration]
        :keyword parameters:
        :paramtype parameters: list[~flow.models.ParameterDefinition]
        :keyword autologger_settings:
        :paramtype autologger_settings: ~flow.models.AutologgerSettings
        :keyword data_bricks:
        :paramtype data_bricks: ~flow.models.DatabricksConfiguration
        :keyword training_diagnostic_config:
        :paramtype training_diagnostic_config: ~flow.models.TrainingDiagnosticConfiguration
        :keyword secrets_configuration: Dictionary of :code:`<SecretConfiguration>`.
        :paramtype secrets_configuration: dict[str, ~flow.models.SecretConfiguration]
        """
        super(RunConfiguration, self).__init__(**kwargs)
        self.script = script
        self.script_type = script_type
        self.command = command
        self.use_absolute_path = use_absolute_path
        self.arguments = arguments
        self.framework = framework
        self.communicator = communicator
        self.target = target
        self.auto_cluster_compute_specification = auto_cluster_compute_specification
        self.data_references = data_references
        self.data = data
        self.input_assets = input_assets
        self.output_data = output_data
        self.datacaches = datacaches
        self.job_name = job_name
        self.max_run_duration_seconds = max_run_duration_seconds
        self.node_count = node_count
        self.max_node_count = max_node_count
        self.instance_types = instance_types
        self.priority = priority
        self.credential_passthrough = credential_passthrough
        self.identity = identity
        self.environment = environment
        self.history = history
        self.spark = spark
        self.parallel_task = parallel_task
        self.tensorflow = tensorflow
        self.mpi = mpi
        self.py_torch = py_torch
        self.ray = ray
        self.hdi = hdi
        self.docker = docker
        self.command_return_code_config = command_return_code_config
        self.environment_variables = environment_variables
        self.application_endpoints = application_endpoints
        self.parameters = parameters
        self.autologger_settings = autologger_settings
        self.data_bricks = data_bricks
        self.training_diagnostic_config = training_diagnostic_config
        self.secrets_configuration = secrets_configuration


class RunDatasetReference(msrest.serialization.Model):
    """RunDatasetReference.

    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword version:
        :paramtype version: str
        """
        super(RunDatasetReference, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.version = version


class RunDefinition(msrest.serialization.Model):
    """RunDefinition.

    :ivar configuration:
    :vartype configuration: ~flow.models.RunConfiguration
    :ivar snapshot_id:
    :vartype snapshot_id: str
    :ivar snapshots:
    :vartype snapshots: list[~flow.models.Snapshot]
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar run_type:
    :vartype run_type: str
    :ivar display_name:
    :vartype display_name: str
    :ivar environment_asset_id:
    :vartype environment_asset_id: str
    :ivar primary_metric_name:
    :vartype primary_metric_name: str
    :ivar description:
    :vartype description: str
    :ivar cancel_reason:
    :vartype cancel_reason: str
    :ivar properties: Dictionary of :code:`<string>`.
    :vartype properties: dict[str, str]
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    """

    _attribute_map = {
        'configuration': {'key': 'configuration', 'type': 'RunConfiguration'},
        'snapshot_id': {'key': 'snapshotId', 'type': 'str'},
        'snapshots': {'key': 'snapshots', 'type': '[Snapshot]'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'run_type': {'key': 'runType', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'environment_asset_id': {'key': 'environmentAssetId', 'type': 'str'},
        'primary_metric_name': {'key': 'primaryMetricName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'cancel_reason': {'key': 'cancelReason', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'tags': {'key': 'tags', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        configuration: Optional["RunConfiguration"] = None,
        snapshot_id: Optional[str] = None,
        snapshots: Optional[List["Snapshot"]] = None,
        parent_run_id: Optional[str] = None,
        run_type: Optional[str] = None,
        display_name: Optional[str] = None,
        environment_asset_id: Optional[str] = None,
        primary_metric_name: Optional[str] = None,
        description: Optional[str] = None,
        cancel_reason: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        tags: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword configuration:
        :paramtype configuration: ~flow.models.RunConfiguration
        :keyword snapshot_id:
        :paramtype snapshot_id: str
        :keyword snapshots:
        :paramtype snapshots: list[~flow.models.Snapshot]
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword run_type:
        :paramtype run_type: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword environment_asset_id:
        :paramtype environment_asset_id: str
        :keyword primary_metric_name:
        :paramtype primary_metric_name: str
        :keyword description:
        :paramtype description: str
        :keyword cancel_reason:
        :paramtype cancel_reason: str
        :keyword properties: Dictionary of :code:`<string>`.
        :paramtype properties: dict[str, str]
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        """
        super(RunDefinition, self).__init__(**kwargs)
        self.configuration = configuration
        self.snapshot_id = snapshot_id
        self.snapshots = snapshots
        self.parent_run_id = parent_run_id
        self.run_type = run_type
        self.display_name = display_name
        self.environment_asset_id = environment_asset_id
        self.primary_metric_name = primary_metric_name
        self.description = description
        self.cancel_reason = cancel_reason
        self.properties = properties
        self.tags = tags


class RunDetailsDto(msrest.serialization.Model):
    """RunDetailsDto.

    :ivar run_id:
    :vartype run_id: str
    :ivar run_uuid:
    :vartype run_uuid: str
    :ivar parent_run_uuid:
    :vartype parent_run_uuid: str
    :ivar root_run_uuid:
    :vartype root_run_uuid: str
    :ivar target:
    :vartype target: str
    :ivar status:
    :vartype status: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar created_time_utc:
    :vartype created_time_utc: ~datetime.datetime
    :ivar start_time_utc:
    :vartype start_time_utc: ~datetime.datetime
    :ivar end_time_utc:
    :vartype end_time_utc: ~datetime.datetime
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar warnings:
    :vartype warnings: list[~flow.models.RunDetailsWarningDto]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar parameters: Dictionary of :code:`<any>`.
    :vartype parameters: dict[str, any]
    :ivar services: This is a dictionary.
    :vartype services: dict[str, ~flow.models.EndpointSetting]
    :ivar input_datasets:
    :vartype input_datasets: list[~flow.models.DatasetLineage]
    :ivar output_datasets:
    :vartype output_datasets: list[~flow.models.OutputDatasetLineage]
    :ivar run_definition: Anything.
    :vartype run_definition: any
    :ivar log_files: This is a dictionary.
    :vartype log_files: dict[str, str]
    :ivar job_cost:
    :vartype job_cost: ~flow.models.JobCost
    :ivar revision:
    :vartype revision: long
    :ivar run_type_v2:
    :vartype run_type_v2: ~flow.models.RunTypeV2
    :ivar settings: This is a dictionary.
    :vartype settings: dict[str, str]
    :ivar compute_request:
    :vartype compute_request: ~flow.models.ComputeRequest
    :ivar compute:
    :vartype compute: ~flow.models.Compute
    :ivar created_by:
    :vartype created_by: ~flow.models.User
    :ivar compute_duration:
    :vartype compute_duration: str
    :ivar effective_start_time_utc:
    :vartype effective_start_time_utc: ~datetime.datetime
    :ivar run_number:
    :vartype run_number: int
    :ivar root_run_id:
    :vartype root_run_id: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar user_id:
    :vartype user_id: str
    :ivar status_revision:
    :vartype status_revision: long
    :ivar current_compute_time:
    :vartype current_compute_time: str
    :ivar last_start_time_utc:
    :vartype last_start_time_utc: ~datetime.datetime
    :ivar last_modified_by:
    :vartype last_modified_by: ~flow.models.User
    :ivar last_modified_utc:
    :vartype last_modified_utc: ~datetime.datetime
    :ivar duration:
    :vartype duration: str
    :ivar inputs: Dictionary of :code:`<TypedAssetReference>`.
    :vartype inputs: dict[str, ~flow.models.TypedAssetReference]
    :ivar outputs: Dictionary of :code:`<TypedAssetReference>`.
    :vartype outputs: dict[str, ~flow.models.TypedAssetReference]
    :ivar current_attempt_id:
    :vartype current_attempt_id: int
    """

    _validation = {
        'input_datasets': {'unique': True},
        'output_datasets': {'unique': True},
    }

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'run_uuid': {'key': 'runUuid', 'type': 'str'},
        'parent_run_uuid': {'key': 'parentRunUuid', 'type': 'str'},
        'root_run_uuid': {'key': 'rootRunUuid', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'created_time_utc': {'key': 'createdTimeUtc', 'type': 'iso-8601'},
        'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'},
        'end_time_utc': {'key': 'endTimeUtc', 'type': 'iso-8601'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'warnings': {'key': 'warnings', 'type': '[RunDetailsWarningDto]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'parameters': {'key': 'parameters', 'type': '{object}'},
        'services': {'key': 'services', 'type': '{EndpointSetting}'},
        'input_datasets': {'key': 'inputDatasets', 'type': '[DatasetLineage]'},
        'output_datasets': {'key': 'outputDatasets', 'type': '[OutputDatasetLineage]'},
        'run_definition': {'key': 'runDefinition', 'type': 'object'},
        'log_files': {'key': 'logFiles', 'type': '{str}'},
        'job_cost': {'key': 'jobCost', 'type': 'JobCost'},
        'revision': {'key': 'revision', 'type': 'long'},
        'run_type_v2': {'key': 'runTypeV2', 'type': 'RunTypeV2'},
        'settings': {'key': 'settings', 'type': '{str}'},
        'compute_request': {'key': 'computeRequest', 'type': 'ComputeRequest'},
        'compute': {'key': 'compute', 'type': 'Compute'},
        'created_by': {'key': 'createdBy', 'type': 'User'},
        'compute_duration': {'key': 'computeDuration', 'type': 'str'},
        'effective_start_time_utc': {'key': 'effectiveStartTimeUtc', 'type': 'iso-8601'},
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'root_run_id': {'key': 'rootRunId', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'status_revision': {'key': 'statusRevision', 'type': 'long'},
        'current_compute_time': {'key': 'currentComputeTime', 'type': 'str'},
        'last_start_time_utc': {'key': 'lastStartTimeUtc', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'User'},
        'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'},
        'duration': {'key': 'duration', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{TypedAssetReference}'},
        'outputs': {'key': 'outputs', 'type': '{TypedAssetReference}'},
        'current_attempt_id': {'key': 'currentAttemptId', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        run_uuid: Optional[str] = None,
        parent_run_uuid: Optional[str] = None,
        root_run_uuid: Optional[str] = None,
        target: Optional[str] = None,
        status: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        data_container_id: Optional[str] = None,
        created_time_utc: Optional[datetime.datetime] = None,
        start_time_utc: Optional[datetime.datetime] = None,
        end_time_utc: Optional[datetime.datetime] = None,
        error: Optional["ErrorResponse"] = None,
        warnings: Optional[List["RunDetailsWarningDto"]] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        parameters: Optional[Dict[str, Any]] = None,
        services: Optional[Dict[str, "EndpointSetting"]] = None,
        input_datasets: Optional[List["DatasetLineage"]] = None,
        output_datasets: Optional[List["OutputDatasetLineage"]] = None,
        run_definition: Optional[Any] = None,
        log_files: Optional[Dict[str, str]] = None,
        job_cost: Optional["JobCost"] = None,
        revision: Optional[int] = None,
        run_type_v2: Optional["RunTypeV2"] = None,
        settings: Optional[Dict[str, str]] = None,
        compute_request: Optional["ComputeRequest"] = None,
        compute: Optional["Compute"] = None,
        created_by: Optional["User"] = None,
        compute_duration: Optional[str] = None,
        effective_start_time_utc: Optional[datetime.datetime] = None,
        run_number: Optional[int] = None,
        root_run_id: Optional[str] = None,
        experiment_id: Optional[str] = None,
        user_id: Optional[str] = None,
        status_revision: Optional[int] = None,
        current_compute_time: Optional[str] = None,
        last_start_time_utc: Optional[datetime.datetime] = None,
        last_modified_by: Optional["User"] = None,
        last_modified_utc: Optional[datetime.datetime] = None,
        duration: Optional[str] = None,
        inputs: Optional[Dict[str, "TypedAssetReference"]] = None,
        outputs: Optional[Dict[str, "TypedAssetReference"]] = None,
        current_attempt_id: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword run_uuid:
        :paramtype run_uuid: str
        :keyword parent_run_uuid:
        :paramtype parent_run_uuid: str
        :keyword root_run_uuid:
        :paramtype root_run_uuid: str
        :keyword target:
        :paramtype target: str
        :keyword status:
        :paramtype status: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword created_time_utc:
        :paramtype created_time_utc: ~datetime.datetime
        :keyword start_time_utc:
        :paramtype start_time_utc: ~datetime.datetime
        :keyword end_time_utc:
        :paramtype end_time_utc: ~datetime.datetime
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword warnings:
        :paramtype warnings: list[~flow.models.RunDetailsWarningDto]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword parameters: Dictionary of :code:`<any>`.
        :paramtype parameters: dict[str, any]
        :keyword services: This is a dictionary.
        :paramtype services: dict[str, ~flow.models.EndpointSetting]
        :keyword input_datasets:
        :paramtype input_datasets: list[~flow.models.DatasetLineage]
        :keyword output_datasets:
        :paramtype output_datasets: list[~flow.models.OutputDatasetLineage]
        :keyword run_definition: Anything.
        :paramtype run_definition: any
        :keyword log_files: This is a dictionary.
        :paramtype log_files: dict[str, str]
        :keyword job_cost:
        :paramtype job_cost: ~flow.models.JobCost
        :keyword revision:
        :paramtype revision: long
        :keyword run_type_v2:
        :paramtype run_type_v2: ~flow.models.RunTypeV2
        :keyword settings: This is a dictionary.
        :paramtype settings: dict[str, str]
        :keyword compute_request:
        :paramtype compute_request: ~flow.models.ComputeRequest
        :keyword compute:
        :paramtype compute: ~flow.models.Compute
        :keyword created_by:
        :paramtype created_by: ~flow.models.User
        :keyword compute_duration:
        :paramtype compute_duration: str
        :keyword effective_start_time_utc:
        :paramtype effective_start_time_utc: ~datetime.datetime
        :keyword run_number:
        :paramtype run_number: int
        :keyword root_run_id:
        :paramtype root_run_id: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword user_id:
        :paramtype user_id: str
        :keyword status_revision:
        :paramtype status_revision: long
        :keyword current_compute_time:
        :paramtype current_compute_time: str
        :keyword last_start_time_utc:
        :paramtype last_start_time_utc: ~datetime.datetime
        :keyword last_modified_by:
        :paramtype last_modified_by: ~flow.models.User
        :keyword last_modified_utc:
        :paramtype last_modified_utc: ~datetime.datetime
        :keyword duration:
        :paramtype duration: str
        :keyword inputs: Dictionary of :code:`<TypedAssetReference>`.
        :paramtype inputs: dict[str, ~flow.models.TypedAssetReference]
        :keyword outputs: Dictionary of :code:`<TypedAssetReference>`.
        :paramtype outputs: dict[str, ~flow.models.TypedAssetReference]
        :keyword current_attempt_id:
        :paramtype current_attempt_id: int
        """
        super(RunDetailsDto, self).__init__(**kwargs)
        self.run_id = run_id
        self.run_uuid = run_uuid
        self.parent_run_uuid = parent_run_uuid
        self.root_run_uuid = root_run_uuid
        self.target = target
        self.status = status
        self.parent_run_id = parent_run_id
        self.data_container_id = data_container_id
        self.created_time_utc = created_time_utc
        self.start_time_utc = start_time_utc
        self.end_time_utc = end_time_utc
        self.error = error
        self.warnings = warnings
        self.tags = tags
        self.properties = properties
        self.parameters = parameters
        self.services = services
        self.input_datasets = input_datasets
        self.output_datasets = output_datasets
        self.run_definition = run_definition
        self.log_files = log_files
        self.job_cost = job_cost
        self.revision = revision
        self.run_type_v2 = run_type_v2
        self.settings = settings
        self.compute_request = compute_request
        self.compute = compute
        self.created_by = created_by
        self.compute_duration = compute_duration
        self.effective_start_time_utc = effective_start_time_utc
        self.run_number = run_number
        self.root_run_id = root_run_id
        self.experiment_id = experiment_id
        self.user_id = user_id
        self.status_revision = status_revision
        self.current_compute_time = current_compute_time
        self.last_start_time_utc = last_start_time_utc
        self.last_modified_by = last_modified_by
        self.last_modified_utc = last_modified_utc
        self.duration = duration
        self.inputs = inputs
        self.outputs = outputs
        self.current_attempt_id = current_attempt_id


class RunDetailsWarningDto(msrest.serialization.Model):
    """RunDetailsWarningDto.

    :ivar source:
    :vartype source: str
    :ivar message:
    :vartype message: str
    """

    _attribute_map = {
        'source': {'key': 'source', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        source: Optional[str] = None,
        message: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword source:
        :paramtype source: str
        :keyword message:
        :paramtype message: str
        """
        super(RunDetailsWarningDto, self).__init__(**kwargs)
        self.source = source
        self.message = message


class RunDto(msrest.serialization.Model):
    """RunDto.

    :ivar run_number:
    :vartype run_number: int
    :ivar root_run_id:
    :vartype root_run_id: str
    :ivar created_utc:
    :vartype created_utc: ~datetime.datetime
    :ivar created_by:
    :vartype created_by: ~flow.models.User
    :ivar user_id:
    :vartype user_id: str
    :ivar token:
    :vartype token: str
    :ivar token_expiry_time_utc:
    :vartype token_expiry_time_utc: ~datetime.datetime
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar warnings:
    :vartype warnings: list[~flow.models.RunDetailsWarningDto]
    :ivar revision:
    :vartype revision: long
    :ivar status_revision:
    :vartype status_revision: long
    :ivar run_uuid:
    :vartype run_uuid: str
    :ivar parent_run_uuid:
    :vartype parent_run_uuid: str
    :ivar root_run_uuid:
    :vartype root_run_uuid: str
    :ivar last_start_time_utc:
    :vartype last_start_time_utc: ~datetime.datetime
    :ivar current_compute_time:
    :vartype current_compute_time: str
    :ivar compute_duration:
    :vartype compute_duration: str
    :ivar effective_start_time_utc:
    :vartype effective_start_time_utc: ~datetime.datetime
    :ivar last_modified_by:
    :vartype last_modified_by: ~flow.models.User
    :ivar last_modified_utc:
    :vartype last_modified_utc: ~datetime.datetime
    :ivar duration:
    :vartype duration: str
    :ivar cancelation_reason:
    :vartype cancelation_reason: str
    :ivar current_attempt_id:
    :vartype current_attempt_id: int
    :ivar run_id:
    :vartype run_id: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar status:
    :vartype status: str
    :ivar start_time_utc:
    :vartype start_time_utc: ~datetime.datetime
    :ivar end_time_utc:
    :vartype end_time_utc: ~datetime.datetime
    :ivar schedule_id:
    :vartype schedule_id: str
    :ivar display_name:
    :vartype display_name: str
    :ivar name:
    :vartype name: str
    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar description:
    :vartype description: str
    :ivar hidden:
    :vartype hidden: bool
    :ivar run_type:
    :vartype run_type: str
    :ivar run_type_v2:
    :vartype run_type_v2: ~flow.models.RunTypeV2
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar parameters: Dictionary of :code:`<any>`.
    :vartype parameters: dict[str, any]
    :ivar action_uris: Dictionary of :code:`<string>`.
    :vartype action_uris: dict[str, str]
    :ivar script_name:
    :vartype script_name: str
    :ivar target:
    :vartype target: str
    :ivar unique_child_run_compute_targets:
    :vartype unique_child_run_compute_targets: list[str]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar settings: Dictionary of :code:`<string>`.
    :vartype settings: dict[str, str]
    :ivar services: Dictionary of :code:`<EndpointSetting>`.
    :vartype services: dict[str, ~flow.models.EndpointSetting]
    :ivar input_datasets:
    :vartype input_datasets: list[~flow.models.DatasetLineage]
    :ivar output_datasets:
    :vartype output_datasets: list[~flow.models.OutputDatasetLineage]
    :ivar run_definition: Anything.
    :vartype run_definition: any
    :ivar job_specification: Anything.
    :vartype job_specification: any
    :ivar primary_metric_name:
    :vartype primary_metric_name: str
    :ivar created_from:
    :vartype created_from: ~flow.models.CreatedFromDto
    :ivar cancel_uri:
    :vartype cancel_uri: str
    :ivar complete_uri:
    :vartype complete_uri: str
    :ivar diagnostics_uri:
    :vartype diagnostics_uri: str
    :ivar compute_request:
    :vartype compute_request: ~flow.models.ComputeRequest
    :ivar compute:
    :vartype compute: ~flow.models.Compute
    :ivar retain_for_lifetime_of_workspace:
    :vartype retain_for_lifetime_of_workspace: bool
    :ivar queueing_info:
    :vartype queueing_info: ~flow.models.QueueingInfo
    :ivar inputs: Dictionary of :code:`<TypedAssetReference>`.
    :vartype inputs: dict[str, ~flow.models.TypedAssetReference]
    :ivar outputs: Dictionary of :code:`<TypedAssetReference>`.
    :vartype outputs: dict[str, ~flow.models.TypedAssetReference]
    """

    _validation = {
        'unique_child_run_compute_targets': {'unique': True},
        'input_datasets': {'unique': True},
        'output_datasets': {'unique': True},
    }

    _attribute_map = {
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'root_run_id': {'key': 'rootRunId', 'type': 'str'},
        'created_utc': {'key': 'createdUtc', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'User'},
        'user_id': {'key': 'userId', 'type': 'str'},
        'token': {'key': 'token', 'type': 'str'},
        'token_expiry_time_utc': {'key': 'tokenExpiryTimeUtc', 'type': 'iso-8601'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'warnings': {'key': 'warnings', 'type': '[RunDetailsWarningDto]'},
        'revision': {'key': 'revision', 'type': 'long'},
        'status_revision': {'key': 'statusRevision', 'type': 'long'},
        'run_uuid': {'key': 'runUuid', 'type': 'str'},
        'parent_run_uuid': {'key': 'parentRunUuid', 'type': 'str'},
        'root_run_uuid': {'key': 'rootRunUuid', 'type': 'str'},
        'last_start_time_utc': {'key': 'lastStartTimeUtc', 'type': 'iso-8601'},
        'current_compute_time': {'key': 'currentComputeTime', 'type': 'str'},
        'compute_duration': {'key': 'computeDuration', 'type': 'str'},
        'effective_start_time_utc': {'key': 'effectiveStartTimeUtc', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'User'},
        'last_modified_utc': {'key': 'lastModifiedUtc', 'type': 'iso-8601'},
        'duration': {'key': 'duration', 'type': 'str'},
        'cancelation_reason': {'key': 'cancelationReason', 'type': 'str'},
        'current_attempt_id': {'key': 'currentAttemptId', 'type': 'int'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'},
        'end_time_utc': {'key': 'endTimeUtc', 'type': 'iso-8601'},
        'schedule_id': {'key': 'scheduleId', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'hidden': {'key': 'hidden', 'type': 'bool'},
        'run_type': {'key': 'runType', 'type': 'str'},
        'run_type_v2': {'key': 'runTypeV2', 'type': 'RunTypeV2'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'parameters': {'key': 'parameters', 'type': '{object}'},
        'action_uris': {'key': 'actionUris', 'type': '{str}'},
        'script_name': {'key': 'scriptName', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'unique_child_run_compute_targets': {'key': 'uniqueChildRunComputeTargets', 'type': '[str]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'settings': {'key': 'settings', 'type': '{str}'},
        'services': {'key': 'services', 'type': '{EndpointSetting}'},
        'input_datasets': {'key': 'inputDatasets', 'type': '[DatasetLineage]'},
        'output_datasets': {'key': 'outputDatasets', 'type': '[OutputDatasetLineage]'},
        'run_definition': {'key': 'runDefinition', 'type': 'object'},
        'job_specification': {'key': 'jobSpecification', 'type': 'object'},
        'primary_metric_name': {'key': 'primaryMetricName', 'type': 'str'},
        'created_from': {'key': 'createdFrom', 'type': 'CreatedFromDto'},
        'cancel_uri': {'key': 'cancelUri', 'type': 'str'},
        'complete_uri': {'key': 'completeUri', 'type': 'str'},
        'diagnostics_uri': {'key': 'diagnosticsUri', 'type': 'str'},
        'compute_request': {'key': 'computeRequest', 'type': 'ComputeRequest'},
        'compute': {'key': 'compute', 'type': 'Compute'},
        'retain_for_lifetime_of_workspace': {'key': 'retainForLifetimeOfWorkspace', 'type': 'bool'},
        'queueing_info': {'key': 'queueingInfo', 'type': 'QueueingInfo'},
        'inputs': {'key': 'inputs', 'type': '{TypedAssetReference}'},
        'outputs': {'key': 'outputs', 'type': '{TypedAssetReference}'},
    }

    def __init__(
        self,
        *,
        run_number: Optional[int] = None,
        root_run_id: Optional[str] = None,
        created_utc: Optional[datetime.datetime] = None,
        created_by: Optional["User"] = None,
        user_id: Optional[str] = None,
        token: Optional[str] = None,
        token_expiry_time_utc: Optional[datetime.datetime] = None,
        error: Optional["ErrorResponse"] = None,
        warnings: Optional[List["RunDetailsWarningDto"]] = None,
        revision: Optional[int] = None,
        status_revision: Optional[int] = None,
        run_uuid: Optional[str] = None,
        parent_run_uuid: Optional[str] = None,
        root_run_uuid: Optional[str] = None,
        last_start_time_utc: Optional[datetime.datetime] = None,
        current_compute_time: Optional[str] = None,
        compute_duration: Optional[str] = None,
        effective_start_time_utc: Optional[datetime.datetime] = None,
        last_modified_by: Optional["User"] = None,
        last_modified_utc: Optional[datetime.datetime] = None,
        duration: Optional[str] = None,
        cancelation_reason: Optional[str] = None,
        current_attempt_id: Optional[int] = None,
        run_id: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        experiment_id: Optional[str] = None,
        status: Optional[str] = None,
        start_time_utc: Optional[datetime.datetime] = None,
        end_time_utc: Optional[datetime.datetime] = None,
        schedule_id: Optional[str] = None,
        display_name: Optional[str] = None,
        name: Optional[str] = None,
        data_container_id: Optional[str] = None,
        description: Optional[str] = None,
        hidden: Optional[bool] = None,
        run_type: Optional[str] = None,
        run_type_v2: Optional["RunTypeV2"] = None,
        properties: Optional[Dict[str, str]] = None,
        parameters: Optional[Dict[str, Any]] = None,
        action_uris: Optional[Dict[str, str]] = None,
        script_name: Optional[str] = None,
        target: Optional[str] = None,
        unique_child_run_compute_targets: Optional[List[str]] = None,
        tags: Optional[Dict[str, str]] = None,
        settings: Optional[Dict[str, str]] = None,
        services: Optional[Dict[str, "EndpointSetting"]] = None,
        input_datasets: Optional[List["DatasetLineage"]] = None,
        output_datasets: Optional[List["OutputDatasetLineage"]] = None,
        run_definition: Optional[Any] = None,
        job_specification: Optional[Any] = None,
        primary_metric_name: Optional[str] = None,
        created_from: Optional["CreatedFromDto"] = None,
        cancel_uri: Optional[str] = None,
        complete_uri: Optional[str] = None,
        diagnostics_uri: Optional[str] = None,
        compute_request: Optional["ComputeRequest"] = None,
        compute: Optional["Compute"] = None,
        retain_for_lifetime_of_workspace: Optional[bool] = None,
        queueing_info: Optional["QueueingInfo"] = None,
        inputs: Optional[Dict[str, "TypedAssetReference"]] = None,
        outputs: Optional[Dict[str, "TypedAssetReference"]] = None,
        **kwargs
    ):
        """
        :keyword run_number:
        :paramtype run_number: int
        :keyword root_run_id:
        :paramtype root_run_id: str
        :keyword created_utc:
        :paramtype created_utc: ~datetime.datetime
        :keyword created_by:
        :paramtype created_by: ~flow.models.User
        :keyword user_id:
        :paramtype user_id: str
        :keyword token:
        :paramtype token: str
        :keyword token_expiry_time_utc:
        :paramtype token_expiry_time_utc: ~datetime.datetime
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword warnings:
        :paramtype warnings: list[~flow.models.RunDetailsWarningDto]
        :keyword revision:
        :paramtype revision: long
        :keyword status_revision:
        :paramtype status_revision: long
        :keyword run_uuid:
        :paramtype run_uuid: str
        :keyword parent_run_uuid:
        :paramtype parent_run_uuid: str
        :keyword root_run_uuid:
        :paramtype root_run_uuid: str
        :keyword last_start_time_utc:
        :paramtype last_start_time_utc: ~datetime.datetime
        :keyword current_compute_time:
        :paramtype current_compute_time: str
        :keyword compute_duration:
        :paramtype compute_duration: str
        :keyword effective_start_time_utc:
        :paramtype effective_start_time_utc: ~datetime.datetime
        :keyword last_modified_by:
        :paramtype last_modified_by: ~flow.models.User
        :keyword last_modified_utc:
        :paramtype last_modified_utc: ~datetime.datetime
        :keyword duration:
        :paramtype duration: str
        :keyword cancelation_reason:
        :paramtype cancelation_reason: str
        :keyword current_attempt_id:
        :paramtype current_attempt_id: int
        :keyword run_id:
        :paramtype run_id: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword status:
        :paramtype status: str
        :keyword start_time_utc:
        :paramtype start_time_utc: ~datetime.datetime
        :keyword end_time_utc:
        :paramtype end_time_utc: ~datetime.datetime
        :keyword schedule_id:
        :paramtype schedule_id: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword name:
        :paramtype name: str
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword description:
        :paramtype description: str
        :keyword hidden:
        :paramtype hidden: bool
        :keyword run_type:
        :paramtype run_type: str
        :keyword run_type_v2:
        :paramtype run_type_v2: ~flow.models.RunTypeV2
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword parameters: Dictionary of :code:`<any>`.
        :paramtype parameters: dict[str, any]
        :keyword action_uris: Dictionary of :code:`<string>`.
        :paramtype action_uris: dict[str, str]
        :keyword script_name:
        :paramtype script_name: str
        :keyword target:
        :paramtype target: str
        :keyword unique_child_run_compute_targets:
        :paramtype unique_child_run_compute_targets: list[str]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword settings: Dictionary of :code:`<string>`.
        :paramtype settings: dict[str, str]
        :keyword services: Dictionary of :code:`<EndpointSetting>`.
        :paramtype services: dict[str, ~flow.models.EndpointSetting]
        :keyword input_datasets:
        :paramtype input_datasets: list[~flow.models.DatasetLineage]
        :keyword output_datasets:
        :paramtype output_datasets: list[~flow.models.OutputDatasetLineage]
        :keyword run_definition: Anything.
        :paramtype run_definition: any
        :keyword job_specification: Anything.
        :paramtype job_specification: any
        :keyword primary_metric_name:
        :paramtype primary_metric_name: str
        :keyword created_from:
        :paramtype created_from: ~flow.models.CreatedFromDto
        :keyword cancel_uri:
        :paramtype cancel_uri: str
        :keyword complete_uri:
        :paramtype complete_uri: str
        :keyword diagnostics_uri:
        :paramtype diagnostics_uri: str
        :keyword compute_request:
        :paramtype compute_request: ~flow.models.ComputeRequest
        :keyword compute:
        :paramtype compute: ~flow.models.Compute
        :keyword retain_for_lifetime_of_workspace:
        :paramtype retain_for_lifetime_of_workspace: bool
        :keyword queueing_info:
        :paramtype queueing_info: ~flow.models.QueueingInfo
        :keyword inputs: Dictionary of :code:`<TypedAssetReference>`.
        :paramtype inputs: dict[str, ~flow.models.TypedAssetReference]
        :keyword outputs: Dictionary of :code:`<TypedAssetReference>`.
        :paramtype outputs: dict[str, ~flow.models.TypedAssetReference]
        """
        super(RunDto, self).__init__(**kwargs)
        self.run_number = run_number
        self.root_run_id = root_run_id
        self.created_utc = created_utc
        self.created_by = created_by
        self.user_id = user_id
        self.token = token
        self.token_expiry_time_utc = token_expiry_time_utc
        self.error = error
        self.warnings = warnings
        self.revision = revision
        self.status_revision = status_revision
        self.run_uuid = run_uuid
        self.parent_run_uuid = parent_run_uuid
        self.root_run_uuid = root_run_uuid
        self.last_start_time_utc = last_start_time_utc
        self.current_compute_time = current_compute_time
        self.compute_duration = compute_duration
        self.effective_start_time_utc = effective_start_time_utc
        self.last_modified_by = last_modified_by
        self.last_modified_utc = last_modified_utc
        self.duration = duration
        self.cancelation_reason = cancelation_reason
        self.current_attempt_id = current_attempt_id
        self.run_id = run_id
        self.parent_run_id = parent_run_id
        self.experiment_id = experiment_id
        self.status = status
        self.start_time_utc = start_time_utc
        self.end_time_utc = end_time_utc
        self.schedule_id = schedule_id
        self.display_name = display_name
        self.name = name
        self.data_container_id = data_container_id
        self.description = description
        self.hidden = hidden
        self.run_type = run_type
        self.run_type_v2 = run_type_v2
        self.properties = properties
        self.parameters = parameters
        self.action_uris = action_uris
        self.script_name = script_name
        self.target = target
        self.unique_child_run_compute_targets = unique_child_run_compute_targets
        self.tags = tags
        self.settings = settings
        self.services = services
        self.input_datasets = input_datasets
        self.output_datasets = output_datasets
        self.run_definition = run_definition
        self.job_specification = job_specification
        self.primary_metric_name = primary_metric_name
        self.created_from = created_from
        self.cancel_uri = cancel_uri
        self.complete_uri = complete_uri
        self.diagnostics_uri = diagnostics_uri
        self.compute_request = compute_request
        self.compute = compute
        self.retain_for_lifetime_of_workspace = retain_for_lifetime_of_workspace
        self.queueing_info = queueing_info
        self.inputs = inputs
        self.outputs = outputs


class RunIndexEntity(msrest.serialization.Model):
    """RunIndexEntity.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar schema_id:
    :vartype schema_id: str
    :ivar entity_id:
    :vartype entity_id: str
    :ivar kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
    :vartype kind: str or ~flow.models.EntityKind
    :ivar annotations:
    :vartype annotations: ~flow.models.RunAnnotations
    :ivar properties:
    :vartype properties: ~flow.models.RunProperties
    :ivar internal: Any object.
    :vartype internal: any
    :ivar update_sequence:
    :vartype update_sequence: long
    :ivar type:
    :vartype type: str
    :ivar version:
    :vartype version: str
    :ivar entity_container_id:
    :vartype entity_container_id: str
    :ivar entity_object_id:
    :vartype entity_object_id: str
    :ivar resource_type:
    :vartype resource_type: str
    :ivar relationships:
    :vartype relationships: list[~flow.models.Relationship]
    :ivar asset_id:
    :vartype asset_id: str
    :ivar usage:
    :vartype usage: ~flow.models.EntityUsage
    :ivar is_a_fragment:
    :vartype is_a_fragment: bool
    :ivar fragment_id:
    :vartype fragment_id: str
    """

    _validation = {
        'version': {'readonly': True},
        'entity_container_id': {'readonly': True},
        'entity_object_id': {'readonly': True},
        'resource_type': {'readonly': True},
    }

    _attribute_map = {
        'schema_id': {'key': 'schemaId', 'type': 'str'},
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'kind': {'key': 'kind', 'type': 'str'},
        'annotations': {'key': 'annotations', 'type': 'RunAnnotations'},
        'properties': {'key': 'properties', 'type': 'RunProperties'},
        'internal': {'key': 'internal', 'type': 'object'},
        'update_sequence': {'key': 'updateSequence', 'type': 'long'},
        'type': {'key': 'type', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
        'entity_container_id': {'key': 'entityContainerId', 'type': 'str'},
        'entity_object_id': {'key': 'entityObjectId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'relationships': {'key': 'relationships', 'type': '[Relationship]'},
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'usage': {'key': 'usage', 'type': 'EntityUsage'},
        'is_a_fragment': {'key': 'isAFragment', 'type': 'bool'},
        'fragment_id': {'key': 'fragmentId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        schema_id: Optional[str] = None,
        entity_id: Optional[str] = None,
        kind: Optional[Union[str, "EntityKind"]] = None,
        annotations: Optional["RunAnnotations"] = None,
        properties: Optional["RunProperties"] = None,
        internal: Optional[Any] = None,
        update_sequence: Optional[int] = None,
        type: Optional[str] = None,
        relationships: Optional[List["Relationship"]] = None,
        asset_id: Optional[str] = None,
        usage: Optional["EntityUsage"] = None,
        is_a_fragment: Optional[bool] = None,
        fragment_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword schema_id:
        :paramtype schema_id: str
        :keyword entity_id:
        :paramtype entity_id: str
        :keyword kind: Possible values include: "Invalid", "LineageRoot", "Versioned", "Unversioned".
        :paramtype kind: str or ~flow.models.EntityKind
        :keyword annotations:
        :paramtype annotations: ~flow.models.RunAnnotations
        :keyword properties:
        :paramtype properties: ~flow.models.RunProperties
        :keyword internal: Any object.
        :paramtype internal: any
        :keyword update_sequence:
        :paramtype update_sequence: long
        :keyword type:
        :paramtype type: str
        :keyword relationships:
        :paramtype relationships: list[~flow.models.Relationship]
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword usage:
        :paramtype usage: ~flow.models.EntityUsage
        :keyword is_a_fragment:
        :paramtype is_a_fragment: bool
        :keyword fragment_id:
        :paramtype fragment_id: str
        """
        super(RunIndexEntity, self).__init__(**kwargs)
        self.schema_id = schema_id
        self.entity_id = entity_id
        self.kind = kind
        self.annotations = annotations
        self.properties = properties
        self.internal = internal
        self.update_sequence = update_sequence
        self.type = type
        self.version = None
        self.entity_container_id = None
        self.entity_object_id = None
        self.resource_type = None
        self.relationships = relationships
        self.asset_id = asset_id
        self.usage = usage
        self.is_a_fragment = is_a_fragment
        self.fragment_id = fragment_id


class RunIndexMetricSummary(msrest.serialization.Model):
    """RunIndexMetricSummary.

    :ivar count:
    :vartype count: long
    :ivar last_value: Anything.
    :vartype last_value: any
    :ivar minimum_value: Anything.
    :vartype minimum_value: any
    :ivar maximum_value: Anything.
    :vartype maximum_value: any
    :ivar metric_type:
    :vartype metric_type: str
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'long'},
        'last_value': {'key': 'lastValue', 'type': 'object'},
        'minimum_value': {'key': 'minimumValue', 'type': 'object'},
        'maximum_value': {'key': 'maximumValue', 'type': 'object'},
        'metric_type': {'key': 'metricType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        count: Optional[int] = None,
        last_value: Optional[Any] = None,
        minimum_value: Optional[Any] = None,
        maximum_value: Optional[Any] = None,
        metric_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword count:
        :paramtype count: long
        :keyword last_value: Anything.
        :paramtype last_value: any
        :keyword minimum_value: Anything.
        :paramtype minimum_value: any
        :keyword maximum_value: Anything.
        :paramtype maximum_value: any
        :keyword metric_type:
        :paramtype metric_type: str
        """
        super(RunIndexMetricSummary, self).__init__(**kwargs)
        self.count = count
        self.last_value = last_value
        self.minimum_value = minimum_value
        self.maximum_value = maximum_value
        self.metric_type = metric_type


class RunIndexMetricSummarySystemObject(msrest.serialization.Model):
    """RunIndexMetricSummarySystemObject.

    :ivar count:
    :vartype count: long
    :ivar last_value: Anything.
    :vartype last_value: any
    :ivar minimum_value: Anything.
    :vartype minimum_value: any
    :ivar maximum_value: Anything.
    :vartype maximum_value: any
    :ivar metric_type:
    :vartype metric_type: str
    """

    _attribute_map = {
        'count': {'key': 'count', 'type': 'long'},
        'last_value': {'key': 'lastValue', 'type': 'object'},
        'minimum_value': {'key': 'minimumValue', 'type': 'object'},
        'maximum_value': {'key': 'maximumValue', 'type': 'object'},
        'metric_type': {'key': 'metricType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        count: Optional[int] = None,
        last_value: Optional[Any] = None,
        minimum_value: Optional[Any] = None,
        maximum_value: Optional[Any] = None,
        metric_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword count:
        :paramtype count: long
        :keyword last_value: Anything.
        :paramtype last_value: any
        :keyword minimum_value: Anything.
        :paramtype minimum_value: any
        :keyword maximum_value: Anything.
        :paramtype maximum_value: any
        :keyword metric_type:
        :paramtype metric_type: str
        """
        super(RunIndexMetricSummarySystemObject, self).__init__(**kwargs)
        self.count = count
        self.last_value = last_value
        self.minimum_value = minimum_value
        self.maximum_value = maximum_value
        self.metric_type = metric_type


class RunIndexResourceMetricSummary(msrest.serialization.Model):
    """RunIndexResourceMetricSummary.

    :ivar gpu_utilization_percent_last_hour:
    :vartype gpu_utilization_percent_last_hour: float
    :ivar gpu_memory_utilization_percent_last_hour:
    :vartype gpu_memory_utilization_percent_last_hour: float
    :ivar gpu_energy_joules:
    :vartype gpu_energy_joules: float
    :ivar resource_metric_names:
    :vartype resource_metric_names: list[str]
    """

    _attribute_map = {
        'gpu_utilization_percent_last_hour': {'key': 'gpuUtilizationPercentLastHour', 'type': 'float'},
        'gpu_memory_utilization_percent_last_hour': {'key': 'gpuMemoryUtilizationPercentLastHour', 'type': 'float'},
        'gpu_energy_joules': {'key': 'gpuEnergyJoules', 'type': 'float'},
        'resource_metric_names': {'key': 'resourceMetricNames', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        gpu_utilization_percent_last_hour: Optional[float] = None,
        gpu_memory_utilization_percent_last_hour: Optional[float] = None,
        gpu_energy_joules: Optional[float] = None,
        resource_metric_names: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword gpu_utilization_percent_last_hour:
        :paramtype gpu_utilization_percent_last_hour: float
        :keyword gpu_memory_utilization_percent_last_hour:
        :paramtype gpu_memory_utilization_percent_last_hour: float
        :keyword gpu_energy_joules:
        :paramtype gpu_energy_joules: float
        :keyword resource_metric_names:
        :paramtype resource_metric_names: list[str]
        """
        super(RunIndexResourceMetricSummary, self).__init__(**kwargs)
        self.gpu_utilization_percent_last_hour = gpu_utilization_percent_last_hour
        self.gpu_memory_utilization_percent_last_hour = gpu_memory_utilization_percent_last_hour
        self.gpu_energy_joules = gpu_energy_joules
        self.resource_metric_names = resource_metric_names


class RunMetricDto(msrest.serialization.Model):
    """RunMetricDto.

    :ivar run_id:
    :vartype run_id: str
    :ivar metric_id:
    :vartype metric_id: str
    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar metric_type:
    :vartype metric_type: str
    :ivar created_utc:
    :vartype created_utc: ~datetime.datetime
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar label:
    :vartype label: str
    :ivar num_cells:
    :vartype num_cells: int
    :ivar data_location:
    :vartype data_location: str
    :ivar cells:
    :vartype cells: list[dict[str, any]]
    :ivar schema:
    :vartype schema: ~flow.models.MetricSchemaDto
    """

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
        'metric_id': {'key': 'metricId', 'type': 'str'},
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'metric_type': {'key': 'metricType', 'type': 'str'},
        'created_utc': {'key': 'createdUtc', 'type': 'iso-8601'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'num_cells': {'key': 'numCells', 'type': 'int'},
        'data_location': {'key': 'dataLocation', 'type': 'str'},
        'cells': {'key': 'cells', 'type': '[{object}]'},
        'schema': {'key': 'schema', 'type': 'MetricSchemaDto'},
    }

    def __init__(
        self,
        *,
        run_id: Optional[str] = None,
        metric_id: Optional[str] = None,
        data_container_id: Optional[str] = None,
        metric_type: Optional[str] = None,
        created_utc: Optional[datetime.datetime] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        label: Optional[str] = None,
        num_cells: Optional[int] = None,
        data_location: Optional[str] = None,
        cells: Optional[List[Dict[str, Any]]] = None,
        schema: Optional["MetricSchemaDto"] = None,
        **kwargs
    ):
        """
        :keyword run_id:
        :paramtype run_id: str
        :keyword metric_id:
        :paramtype metric_id: str
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword metric_type:
        :paramtype metric_type: str
        :keyword created_utc:
        :paramtype created_utc: ~datetime.datetime
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword label:
        :paramtype label: str
        :keyword num_cells:
        :paramtype num_cells: int
        :keyword data_location:
        :paramtype data_location: str
        :keyword cells:
        :paramtype cells: list[dict[str, any]]
        :keyword schema:
        :paramtype schema: ~flow.models.MetricSchemaDto
        """
        super(RunMetricDto, self).__init__(**kwargs)
        self.run_id = run_id
        self.metric_id = metric_id
        self.data_container_id = data_container_id
        self.metric_type = metric_type
        self.created_utc = created_utc
        self.name = name
        self.description = description
        self.label = label
        self.num_cells = num_cells
        self.data_location = data_location
        self.cells = cells
        self.schema = schema


class RunMetricsTypesDto(msrest.serialization.Model):
    """RunMetricsTypesDto.

    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: str
        """
        super(RunMetricsTypesDto, self).__init__(**kwargs)
        self.name = name
        self.type = type


class RunProperties(msrest.serialization.Model):
    """RunProperties.

    :ivar data_container_id:
    :vartype data_container_id: str
    :ivar target_name:
    :vartype target_name: str
    :ivar run_name:
    :vartype run_name: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar run_id:
    :vartype run_id: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar root_run_id:
    :vartype root_run_id: str
    :ivar run_type:
    :vartype run_type: str
    :ivar run_type_v2:
    :vartype run_type_v2: ~flow.models.RunTypeV2Index
    :ivar script_name:
    :vartype script_name: str
    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar run_uuid:
    :vartype run_uuid: str
    :ivar parent_run_uuid:
    :vartype parent_run_uuid: str
    :ivar run_number:
    :vartype run_number: int
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar compute_request:
    :vartype compute_request: ~flow.models.ComputeRequest
    :ivar compute:
    :vartype compute: ~flow.models.Compute
    :ivar user_properties: This is a dictionary.
    :vartype user_properties: dict[str, str]
    :ivar action_uris: This is a dictionary.
    :vartype action_uris: dict[str, str]
    :ivar duration:
    :vartype duration: str
    :ivar duration_milliseconds:
    :vartype duration_milliseconds: float
    :ivar creation_context:
    :vartype creation_context: ~flow.models.CreationContext
    """

    _attribute_map = {
        'data_container_id': {'key': 'dataContainerId', 'type': 'str'},
        'target_name': {'key': 'targetName', 'type': 'str'},
        'run_name': {'key': 'runName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'root_run_id': {'key': 'rootRunId', 'type': 'str'},
        'run_type': {'key': 'runType', 'type': 'str'},
        'run_type_v2': {'key': 'runTypeV2', 'type': 'RunTypeV2Index'},
        'script_name': {'key': 'scriptName', 'type': 'str'},
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'run_uuid': {'key': 'runUuid', 'type': 'str'},
        'parent_run_uuid': {'key': 'parentRunUuid', 'type': 'str'},
        'run_number': {'key': 'runNumber', 'type': 'int'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'compute_request': {'key': 'computeRequest', 'type': 'ComputeRequest'},
        'compute': {'key': 'compute', 'type': 'Compute'},
        'user_properties': {'key': 'userProperties', 'type': '{str}'},
        'action_uris': {'key': 'actionUris', 'type': '{str}'},
        'duration': {'key': 'duration', 'type': 'str'},
        'duration_milliseconds': {'key': 'durationMilliseconds', 'type': 'float'},
        'creation_context': {'key': 'creationContext', 'type': 'CreationContext'},
    }

    def __init__(
        self,
        *,
        data_container_id: Optional[str] = None,
        target_name: Optional[str] = None,
        run_name: Optional[str] = None,
        experiment_name: Optional[str] = None,
        run_id: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        root_run_id: Optional[str] = None,
        run_type: Optional[str] = None,
        run_type_v2: Optional["RunTypeV2Index"] = None,
        script_name: Optional[str] = None,
        experiment_id: Optional[str] = None,
        run_uuid: Optional[str] = None,
        parent_run_uuid: Optional[str] = None,
        run_number: Optional[int] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        compute_request: Optional["ComputeRequest"] = None,
        compute: Optional["Compute"] = None,
        user_properties: Optional[Dict[str, str]] = None,
        action_uris: Optional[Dict[str, str]] = None,
        duration: Optional[str] = None,
        duration_milliseconds: Optional[float] = None,
        creation_context: Optional["CreationContext"] = None,
        **kwargs
    ):
        """
        :keyword data_container_id:
        :paramtype data_container_id: str
        :keyword target_name:
        :paramtype target_name: str
        :keyword run_name:
        :paramtype run_name: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword root_run_id:
        :paramtype root_run_id: str
        :keyword run_type:
        :paramtype run_type: str
        :keyword run_type_v2:
        :paramtype run_type_v2: ~flow.models.RunTypeV2Index
        :keyword script_name:
        :paramtype script_name: str
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword run_uuid:
        :paramtype run_uuid: str
        :keyword parent_run_uuid:
        :paramtype parent_run_uuid: str
        :keyword run_number:
        :paramtype run_number: int
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword compute_request:
        :paramtype compute_request: ~flow.models.ComputeRequest
        :keyword compute:
        :paramtype compute: ~flow.models.Compute
        :keyword user_properties: This is a dictionary.
        :paramtype user_properties: dict[str, str]
        :keyword action_uris: This is a dictionary.
        :paramtype action_uris: dict[str, str]
        :keyword duration:
        :paramtype duration: str
        :keyword duration_milliseconds:
        :paramtype duration_milliseconds: float
        :keyword creation_context:
        :paramtype creation_context: ~flow.models.CreationContext
        """
        super(RunProperties, self).__init__(**kwargs)
        self.data_container_id = data_container_id
        self.target_name = target_name
        self.run_name = run_name
        self.experiment_name = experiment_name
        self.run_id = run_id
        self.parent_run_id = parent_run_id
        self.root_run_id = root_run_id
        self.run_type = run_type
        self.run_type_v2 = run_type_v2
        self.script_name = script_name
        self.experiment_id = experiment_id
        self.run_uuid = run_uuid
        self.parent_run_uuid = parent_run_uuid
        self.run_number = run_number
        self.start_time = start_time
        self.end_time = end_time
        self.compute_request = compute_request
        self.compute = compute
        self.user_properties = user_properties
        self.action_uris = action_uris
        self.duration = duration
        self.duration_milliseconds = duration_milliseconds
        self.creation_context = creation_context


class RunSettingParameter(msrest.serialization.Model):
    """RunSettingParameter.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar parameter_type: Possible values include: "Undefined", "Int", "Double", "Bool", "String",
     "JsonString", "YamlString", "StringList".
    :vartype parameter_type: str or ~flow.models.RunSettingParameterType
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar default_value:
    :vartype default_value: str
    :ivar lower_bound:
    :vartype lower_bound: str
    :ivar upper_bound:
    :vartype upper_bound: str
    :ivar description:
    :vartype description: str
    :ivar run_setting_ui_hint:
    :vartype run_setting_ui_hint: ~flow.models.RunSettingUIParameterHint
    :ivar argument_name:
    :vartype argument_name: str
    :ivar section_name:
    :vartype section_name: str
    :ivar section_description:
    :vartype section_description: str
    :ivar section_argument_name:
    :vartype section_argument_name: str
    :ivar examples:
    :vartype examples: list[str]
    :ivar enum_values:
    :vartype enum_values: list[str]
    :ivar enum_values_to_argument_strings: This is a dictionary.
    :vartype enum_values_to_argument_strings: dict[str, str]
    :ivar enabled_by_parameter_name:
    :vartype enabled_by_parameter_name: str
    :ivar enabled_by_parameter_values:
    :vartype enabled_by_parameter_values: list[str]
    :ivar disabled_by_parameters:
    :vartype disabled_by_parameters: list[str]
    :ivar module_run_setting_type: Possible values include: "All", "Released", "Default",
     "Testing", "Legacy", "Preview", "UxFull", "Integration", "UxIntegration", "Full".
    :vartype module_run_setting_type: str or ~flow.models.ModuleRunSettingTypes
    :ivar linked_parameter_default_value_mapping: Dictionary of :code:`<string>`.
    :vartype linked_parameter_default_value_mapping: dict[str, str]
    :ivar linked_parameter_key_name:
    :vartype linked_parameter_key_name: str
    :ivar support_link_setting:
    :vartype support_link_setting: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'parameter_type': {'key': 'parameterType', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'lower_bound': {'key': 'lowerBound', 'type': 'str'},
        'upper_bound': {'key': 'upperBound', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'run_setting_ui_hint': {'key': 'runSettingUIHint', 'type': 'RunSettingUIParameterHint'},
        'argument_name': {'key': 'argumentName', 'type': 'str'},
        'section_name': {'key': 'sectionName', 'type': 'str'},
        'section_description': {'key': 'sectionDescription', 'type': 'str'},
        'section_argument_name': {'key': 'sectionArgumentName', 'type': 'str'},
        'examples': {'key': 'examples', 'type': '[str]'},
        'enum_values': {'key': 'enumValues', 'type': '[str]'},
        'enum_values_to_argument_strings': {'key': 'enumValuesToArgumentStrings', 'type': '{str}'},
        'enabled_by_parameter_name': {'key': 'enabledByParameterName', 'type': 'str'},
        'enabled_by_parameter_values': {'key': 'enabledByParameterValues', 'type': '[str]'},
        'disabled_by_parameters': {'key': 'disabledByParameters', 'type': '[str]'},
        'module_run_setting_type': {'key': 'moduleRunSettingType', 'type': 'str'},
        'linked_parameter_default_value_mapping': {'key': 'linkedParameterDefaultValueMapping', 'type': '{str}'},
        'linked_parameter_key_name': {'key': 'linkedParameterKeyName', 'type': 'str'},
        'support_link_setting': {'key': 'supportLinkSetting', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        parameter_type: Optional[Union[str, "RunSettingParameterType"]] = None,
        is_optional: Optional[bool] = None,
        default_value: Optional[str] = None,
        lower_bound: Optional[str] = None,
        upper_bound: Optional[str] = None,
        description: Optional[str] = None,
        run_setting_ui_hint: Optional["RunSettingUIParameterHint"] = None,
        argument_name: Optional[str] = None,
        section_name: Optional[str] = None,
        section_description: Optional[str] = None,
        section_argument_name: Optional[str] = None,
        examples: Optional[List[str]] = None,
        enum_values: Optional[List[str]] = None,
        enum_values_to_argument_strings: Optional[Dict[str, str]] = None,
        enabled_by_parameter_name: Optional[str] = None,
        enabled_by_parameter_values: Optional[List[str]] = None,
        disabled_by_parameters: Optional[List[str]] = None,
        module_run_setting_type: Optional[Union[str, "ModuleRunSettingTypes"]] = None,
        linked_parameter_default_value_mapping: Optional[Dict[str, str]] = None,
        linked_parameter_key_name: Optional[str] = None,
        support_link_setting: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword parameter_type: Possible values include: "Undefined", "Int", "Double", "Bool",
         "String", "JsonString", "YamlString", "StringList".
        :paramtype parameter_type: str or ~flow.models.RunSettingParameterType
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword default_value:
        :paramtype default_value: str
        :keyword lower_bound:
        :paramtype lower_bound: str
        :keyword upper_bound:
        :paramtype upper_bound: str
        :keyword description:
        :paramtype description: str
        :keyword run_setting_ui_hint:
        :paramtype run_setting_ui_hint: ~flow.models.RunSettingUIParameterHint
        :keyword argument_name:
        :paramtype argument_name: str
        :keyword section_name:
        :paramtype section_name: str
        :keyword section_description:
        :paramtype section_description: str
        :keyword section_argument_name:
        :paramtype section_argument_name: str
        :keyword examples:
        :paramtype examples: list[str]
        :keyword enum_values:
        :paramtype enum_values: list[str]
        :keyword enum_values_to_argument_strings: This is a dictionary.
        :paramtype enum_values_to_argument_strings: dict[str, str]
        :keyword enabled_by_parameter_name:
        :paramtype enabled_by_parameter_name: str
        :keyword enabled_by_parameter_values:
        :paramtype enabled_by_parameter_values: list[str]
        :keyword disabled_by_parameters:
        :paramtype disabled_by_parameters: list[str]
        :keyword module_run_setting_type: Possible values include: "All", "Released", "Default",
         "Testing", "Legacy", "Preview", "UxFull", "Integration", "UxIntegration", "Full".
        :paramtype module_run_setting_type: str or ~flow.models.ModuleRunSettingTypes
        :keyword linked_parameter_default_value_mapping: Dictionary of :code:`<string>`.
        :paramtype linked_parameter_default_value_mapping: dict[str, str]
        :keyword linked_parameter_key_name:
        :paramtype linked_parameter_key_name: str
        :keyword support_link_setting:
        :paramtype support_link_setting: bool
        """
        super(RunSettingParameter, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.parameter_type = parameter_type
        self.is_optional = is_optional
        self.default_value = default_value
        self.lower_bound = lower_bound
        self.upper_bound = upper_bound
        self.description = description
        self.run_setting_ui_hint = run_setting_ui_hint
        self.argument_name = argument_name
        self.section_name = section_name
        self.section_description = section_description
        self.section_argument_name = section_argument_name
        self.examples = examples
        self.enum_values = enum_values
        self.enum_values_to_argument_strings = enum_values_to_argument_strings
        self.enabled_by_parameter_name = enabled_by_parameter_name
        self.enabled_by_parameter_values = enabled_by_parameter_values
        self.disabled_by_parameters = disabled_by_parameters
        self.module_run_setting_type = module_run_setting_type
        self.linked_parameter_default_value_mapping = linked_parameter_default_value_mapping
        self.linked_parameter_key_name = linked_parameter_key_name
        self.support_link_setting = support_link_setting


class RunSettingParameterAssignment(msrest.serialization.Model):
    """RunSettingParameterAssignment.

    :ivar use_graph_default_compute:
    :vartype use_graph_default_compute: bool
    :ivar mlc_compute_type:
    :vartype mlc_compute_type: str
    :ivar compute_run_settings:
    :vartype compute_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar linked_parameter_name:
    :vartype linked_parameter_name: str
    :ivar value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
     "Input", "DataPath", "DataSetDefinition".
    :vartype value_type: str or ~flow.models.ParameterValueType
    :ivar assignments_to_concatenate:
    :vartype assignments_to_concatenate: list[~flow.models.ParameterAssignment]
    :ivar data_path_assignment:
    :vartype data_path_assignment: ~flow.models.LegacyDataPath
    :ivar data_set_definition_value_assignment:
    :vartype data_set_definition_value_assignment: ~flow.models.DataSetDefinitionValue
    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    """

    _attribute_map = {
        'use_graph_default_compute': {'key': 'useGraphDefaultCompute', 'type': 'bool'},
        'mlc_compute_type': {'key': 'mlcComputeType', 'type': 'str'},
        'compute_run_settings': {'key': 'computeRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'linked_parameter_name': {'key': 'linkedParameterName', 'type': 'str'},
        'value_type': {'key': 'valueType', 'type': 'str'},
        'assignments_to_concatenate': {'key': 'assignmentsToConcatenate', 'type': '[ParameterAssignment]'},
        'data_path_assignment': {'key': 'dataPathAssignment', 'type': 'LegacyDataPath'},
        'data_set_definition_value_assignment': {'key': 'dataSetDefinitionValueAssignment', 'type': 'DataSetDefinitionValue'},
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        use_graph_default_compute: Optional[bool] = None,
        mlc_compute_type: Optional[str] = None,
        compute_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        linked_parameter_name: Optional[str] = None,
        value_type: Optional[Union[str, "ParameterValueType"]] = None,
        assignments_to_concatenate: Optional[List["ParameterAssignment"]] = None,
        data_path_assignment: Optional["LegacyDataPath"] = None,
        data_set_definition_value_assignment: Optional["DataSetDefinitionValue"] = None,
        name: Optional[str] = None,
        value: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword use_graph_default_compute:
        :paramtype use_graph_default_compute: bool
        :keyword mlc_compute_type:
        :paramtype mlc_compute_type: str
        :keyword compute_run_settings:
        :paramtype compute_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword linked_parameter_name:
        :paramtype linked_parameter_name: str
        :keyword value_type: Possible values include: "Literal", "GraphParameterName", "Concatenate",
         "Input", "DataPath", "DataSetDefinition".
        :paramtype value_type: str or ~flow.models.ParameterValueType
        :keyword assignments_to_concatenate:
        :paramtype assignments_to_concatenate: list[~flow.models.ParameterAssignment]
        :keyword data_path_assignment:
        :paramtype data_path_assignment: ~flow.models.LegacyDataPath
        :keyword data_set_definition_value_assignment:
        :paramtype data_set_definition_value_assignment: ~flow.models.DataSetDefinitionValue
        :keyword name:
        :paramtype name: str
        :keyword value:
        :paramtype value: str
        """
        super(RunSettingParameterAssignment, self).__init__(**kwargs)
        self.use_graph_default_compute = use_graph_default_compute
        self.mlc_compute_type = mlc_compute_type
        self.compute_run_settings = compute_run_settings
        self.linked_parameter_name = linked_parameter_name
        self.value_type = value_type
        self.assignments_to_concatenate = assignments_to_concatenate
        self.data_path_assignment = data_path_assignment
        self.data_set_definition_value_assignment = data_set_definition_value_assignment
        self.name = name
        self.value = value


class RunSettingUIParameterHint(msrest.serialization.Model):
    """RunSettingUIParameterHint.

    :ivar ui_widget_type: Possible values include: "Default", "ComputeSelection", "JsonEditor",
     "Mode", "SearchSpaceParameter", "SectionToggle", "YamlEditor", "EnableRuntimeSweep",
     "DataStoreSelection", "Checkbox", "MultipleSelection", "HyperparameterConfiguration",
     "JsonTextBox", "Connection", "Static".
    :vartype ui_widget_type: str or ~flow.models.RunSettingUIWidgetTypeEnum
    :ivar json_editor:
    :vartype json_editor: ~flow.models.UIJsonEditor
    :ivar yaml_editor:
    :vartype yaml_editor: ~flow.models.UIYamlEditor
    :ivar compute_selection:
    :vartype compute_selection: ~flow.models.UIComputeSelection
    :ivar hyperparameter_configuration:
    :vartype hyperparameter_configuration: ~flow.models.UIHyperparameterConfiguration
    :ivar ux_ignore:
    :vartype ux_ignore: bool
    :ivar anonymous:
    :vartype anonymous: bool
    :ivar support_reset:
    :vartype support_reset: bool
    """

    _attribute_map = {
        'ui_widget_type': {'key': 'uiWidgetType', 'type': 'str'},
        'json_editor': {'key': 'jsonEditor', 'type': 'UIJsonEditor'},
        'yaml_editor': {'key': 'yamlEditor', 'type': 'UIYamlEditor'},
        'compute_selection': {'key': 'computeSelection', 'type': 'UIComputeSelection'},
        'hyperparameter_configuration': {'key': 'hyperparameterConfiguration', 'type': 'UIHyperparameterConfiguration'},
        'ux_ignore': {'key': 'uxIgnore', 'type': 'bool'},
        'anonymous': {'key': 'anonymous', 'type': 'bool'},
        'support_reset': {'key': 'supportReset', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        ui_widget_type: Optional[Union[str, "RunSettingUIWidgetTypeEnum"]] = None,
        json_editor: Optional["UIJsonEditor"] = None,
        yaml_editor: Optional["UIYamlEditor"] = None,
        compute_selection: Optional["UIComputeSelection"] = None,
        hyperparameter_configuration: Optional["UIHyperparameterConfiguration"] = None,
        ux_ignore: Optional[bool] = None,
        anonymous: Optional[bool] = None,
        support_reset: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword ui_widget_type: Possible values include: "Default", "ComputeSelection", "JsonEditor",
         "Mode", "SearchSpaceParameter", "SectionToggle", "YamlEditor", "EnableRuntimeSweep",
         "DataStoreSelection", "Checkbox", "MultipleSelection", "HyperparameterConfiguration",
         "JsonTextBox", "Connection", "Static".
        :paramtype ui_widget_type: str or ~flow.models.RunSettingUIWidgetTypeEnum
        :keyword json_editor:
        :paramtype json_editor: ~flow.models.UIJsonEditor
        :keyword yaml_editor:
        :paramtype yaml_editor: ~flow.models.UIYamlEditor
        :keyword compute_selection:
        :paramtype compute_selection: ~flow.models.UIComputeSelection
        :keyword hyperparameter_configuration:
        :paramtype hyperparameter_configuration: ~flow.models.UIHyperparameterConfiguration
        :keyword ux_ignore:
        :paramtype ux_ignore: bool
        :keyword anonymous:
        :paramtype anonymous: bool
        :keyword support_reset:
        :paramtype support_reset: bool
        """
        super(RunSettingUIParameterHint, self).__init__(**kwargs)
        self.ui_widget_type = ui_widget_type
        self.json_editor = json_editor
        self.yaml_editor = yaml_editor
        self.compute_selection = compute_selection
        self.hyperparameter_configuration = hyperparameter_configuration
        self.ux_ignore = ux_ignore
        self.anonymous = anonymous
        self.support_reset = support_reset


class RunStatusPeriod(msrest.serialization.Model):
    """RunStatusPeriod.

    :ivar status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype status: str or ~flow.models.RunStatus
    :ivar sub_periods:
    :vartype sub_periods: list[~flow.models.SubStatusPeriod]
    :ivar start:
    :vartype start: long
    :ivar end:
    :vartype end: long
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'str'},
        'sub_periods': {'key': 'subPeriods', 'type': '[SubStatusPeriod]'},
        'start': {'key': 'start', 'type': 'long'},
        'end': {'key': 'end', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        status: Optional[Union[str, "RunStatus"]] = None,
        sub_periods: Optional[List["SubStatusPeriod"]] = None,
        start: Optional[int] = None,
        end: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype status: str or ~flow.models.RunStatus
        :keyword sub_periods:
        :paramtype sub_periods: list[~flow.models.SubStatusPeriod]
        :keyword start:
        :paramtype start: long
        :keyword end:
        :paramtype end: long
        """
        super(RunStatusPeriod, self).__init__(**kwargs)
        self.status = status
        self.sub_periods = sub_periods
        self.start = start
        self.end = end


class RuntimeConfiguration(msrest.serialization.Model):
    """RuntimeConfiguration.

    :ivar images:
    :vartype images: ~flow.models.RuntimeConfigurationImages
    :ivar base_image:
    :vartype base_image: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'images': {'key': 'images', 'type': 'RuntimeConfigurationImages'},
        'base_image': {'key': 'baseImage', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        images: Optional["RuntimeConfigurationImages"] = None,
        base_image: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword images:
        :paramtype images: ~flow.models.RuntimeConfigurationImages
        :keyword base_image:
        :paramtype base_image: str
        :keyword version:
        :paramtype version: str
        """
        super(RuntimeConfiguration, self).__init__(**kwargs)
        self.images = images
        self.base_image = base_image
        self.version = version


class RuntimeConfigurationBase(msrest.serialization.Model):
    """RuntimeConfigurationBase.

    :ivar base_image:
    :vartype base_image: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'base_image': {'key': 'baseImage', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        base_image: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword base_image:
        :paramtype base_image: str
        :keyword version:
        :paramtype version: str
        """
        super(RuntimeConfigurationBase, self).__init__(**kwargs)
        self.base_image = base_image
        self.version = version


class RuntimeConfigurationImages(msrest.serialization.Model):
    """RuntimeConfigurationImages.

    :ivar python: Dictionary of :code:`<RuntimeConfigurationBase>`.
    :vartype python: dict[str, ~flow.models.RuntimeConfigurationBase]
    :ivar c_sharp: Dictionary of :code:`<RuntimeConfigurationBase>`.
    :vartype c_sharp: dict[str, ~flow.models.RuntimeConfigurationBase]
    :ivar type_script: Dictionary of :code:`<RuntimeConfigurationBase>`.
    :vartype type_script: dict[str, ~flow.models.RuntimeConfigurationBase]
    :ivar java_script: Dictionary of :code:`<RuntimeConfigurationBase>`.
    :vartype java_script: dict[str, ~flow.models.RuntimeConfigurationBase]
    """

    _attribute_map = {
        'python': {'key': 'Python', 'type': '{RuntimeConfigurationBase}'},
        'c_sharp': {'key': 'CSharp', 'type': '{RuntimeConfigurationBase}'},
        'type_script': {'key': 'TypeScript', 'type': '{RuntimeConfigurationBase}'},
        'java_script': {'key': 'JavaScript', 'type': '{RuntimeConfigurationBase}'},
    }

    def __init__(
        self,
        *,
        python: Optional[Dict[str, "RuntimeConfigurationBase"]] = None,
        c_sharp: Optional[Dict[str, "RuntimeConfigurationBase"]] = None,
        type_script: Optional[Dict[str, "RuntimeConfigurationBase"]] = None,
        java_script: Optional[Dict[str, "RuntimeConfigurationBase"]] = None,
        **kwargs
    ):
        """
        :keyword python: Dictionary of :code:`<RuntimeConfigurationBase>`.
        :paramtype python: dict[str, ~flow.models.RuntimeConfigurationBase]
        :keyword c_sharp: Dictionary of :code:`<RuntimeConfigurationBase>`.
        :paramtype c_sharp: dict[str, ~flow.models.RuntimeConfigurationBase]
        :keyword type_script: Dictionary of :code:`<RuntimeConfigurationBase>`.
        :paramtype type_script: dict[str, ~flow.models.RuntimeConfigurationBase]
        :keyword java_script: Dictionary of :code:`<RuntimeConfigurationBase>`.
        :paramtype java_script: dict[str, ~flow.models.RuntimeConfigurationBase]
        """
        super(RuntimeConfigurationImages, self).__init__(**kwargs)
        self.python = python
        self.c_sharp = c_sharp
        self.type_script = type_script
        self.java_script = java_script


class RunTypeV2(msrest.serialization.Model):
    """RunTypeV2.

    :ivar orchestrator:
    :vartype orchestrator: str
    :ivar traits:
    :vartype traits: list[str]
    :ivar attribution:
    :vartype attribution: str
    :ivar compute_type:
    :vartype compute_type: str
    """

    _validation = {
        'traits': {'unique': True},
    }

    _attribute_map = {
        'orchestrator': {'key': 'orchestrator', 'type': 'str'},
        'traits': {'key': 'traits', 'type': '[str]'},
        'attribution': {'key': 'attribution', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        orchestrator: Optional[str] = None,
        traits: Optional[List[str]] = None,
        attribution: Optional[str] = None,
        compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword orchestrator:
        :paramtype orchestrator: str
        :keyword traits:
        :paramtype traits: list[str]
        :keyword attribution:
        :paramtype attribution: str
        :keyword compute_type:
        :paramtype compute_type: str
        """
        super(RunTypeV2, self).__init__(**kwargs)
        self.orchestrator = orchestrator
        self.traits = traits
        self.attribution = attribution
        self.compute_type = compute_type


class RunTypeV2Index(msrest.serialization.Model):
    """RunTypeV2Index.

    :ivar orchestrator:
    :vartype orchestrator: str
    :ivar traits: Dictionary of :code:`<string>`.
    :vartype traits: dict[str, str]
    :ivar attribution:
    :vartype attribution: str
    :ivar compute_type:
    :vartype compute_type: str
    """

    _attribute_map = {
        'orchestrator': {'key': 'orchestrator', 'type': 'str'},
        'traits': {'key': 'traits', 'type': '{str}'},
        'attribution': {'key': 'attribution', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        orchestrator: Optional[str] = None,
        traits: Optional[Dict[str, str]] = None,
        attribution: Optional[str] = None,
        compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword orchestrator:
        :paramtype orchestrator: str
        :keyword traits: Dictionary of :code:`<string>`.
        :paramtype traits: dict[str, str]
        :keyword attribution:
        :paramtype attribution: str
        :keyword compute_type:
        :paramtype compute_type: str
        """
        super(RunTypeV2Index, self).__init__(**kwargs)
        self.orchestrator = orchestrator
        self.traits = traits
        self.attribution = attribution
        self.compute_type = compute_type


class SampleMeta(msrest.serialization.Model):
    """SampleMeta.

    :ivar image:
    :vartype image: str
    :ivar id:
    :vartype id: str
    :ivar display_name:
    :vartype display_name: str
    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar doc_link:
    :vartype doc_link: str
    :ivar tags: A set of tags.
    :vartype tags: list[str]
    :ivar created_at:
    :vartype created_at: ~datetime.datetime
    :ivar updated_at:
    :vartype updated_at: ~datetime.datetime
    :ivar feed_name:
    :vartype feed_name: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'image': {'key': 'image', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'doc_link': {'key': 'docLink', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '[str]'},
        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
        'updated_at': {'key': 'updatedAt', 'type': 'iso-8601'},
        'feed_name': {'key': 'feedName', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        image: Optional[str] = None,
        id: Optional[str] = None,
        display_name: Optional[str] = None,
        name: Optional[str] = None,
        description: Optional[str] = None,
        doc_link: Optional[str] = None,
        tags: Optional[List[str]] = None,
        created_at: Optional[datetime.datetime] = None,
        updated_at: Optional[datetime.datetime] = None,
        feed_name: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword image:
        :paramtype image: str
        :keyword id:
        :paramtype id: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword doc_link:
        :paramtype doc_link: str
        :keyword tags: A set of tags.
        :paramtype tags: list[str]
        :keyword created_at:
        :paramtype created_at: ~datetime.datetime
        :keyword updated_at:
        :paramtype updated_at: ~datetime.datetime
        :keyword feed_name:
        :paramtype feed_name: str
        :keyword version:
        :paramtype version: str
        """
        super(SampleMeta, self).__init__(**kwargs)
        self.image = image
        self.id = id
        self.display_name = display_name
        self.name = name
        self.description = description
        self.doc_link = doc_link
        self.tags = tags
        self.created_at = created_at
        self.updated_at = updated_at
        self.feed_name = feed_name
        self.version = version


class SavedDataSetReference(msrest.serialization.Model):
    """SavedDataSetReference.

    :ivar id:
    :vartype id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        """
        super(SavedDataSetReference, self).__init__(**kwargs)
        self.id = id


class SavePipelineDraftRequest(msrest.serialization.Model):
    """SavePipelineDraftRequest.

    :ivar ui_widget_meta_infos:
    :vartype ui_widget_meta_infos: list[~flow.models.UIWidgetMetaInfo]
    :ivar web_service_inputs:
    :vartype web_service_inputs: list[~flow.models.WebServicePort]
    :ivar web_service_outputs:
    :vartype web_service_outputs: list[~flow.models.WebServicePort]
    :ivar nodes_in_draft:
    :vartype nodes_in_draft: list[str]
    :ivar name:
    :vartype name: str
    :ivar pipeline_type: Possible values include: "TrainingPipeline", "RealTimeInferencePipeline",
     "BatchInferencePipeline", "Unknown".
    :vartype pipeline_type: str or ~flow.models.PipelineType
    :ivar pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
    :vartype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
    :ivar graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
     "ContainsDesignerBuildin".
    :vartype graph_components_mode: str or ~flow.models.GraphComponentsMode
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
    :vartype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'ui_widget_meta_infos': {'key': 'uiWidgetMetaInfos', 'type': '[UIWidgetMetaInfo]'},
        'web_service_inputs': {'key': 'webServiceInputs', 'type': '[WebServicePort]'},
        'web_service_outputs': {'key': 'webServiceOutputs', 'type': '[WebServicePort]'},
        'nodes_in_draft': {'key': 'nodesInDraft', 'type': '[str]'},
        'name': {'key': 'name', 'type': 'str'},
        'pipeline_type': {'key': 'pipelineType', 'type': 'str'},
        'pipeline_draft_mode': {'key': 'pipelineDraftMode', 'type': 'str'},
        'graph_components_mode': {'key': 'graphComponentsMode', 'type': 'str'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'flattened_sub_graphs': {'key': 'flattenedSubGraphs', 'type': '{PipelineSubDraft}'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        ui_widget_meta_infos: Optional[List["UIWidgetMetaInfo"]] = None,
        web_service_inputs: Optional[List["WebServicePort"]] = None,
        web_service_outputs: Optional[List["WebServicePort"]] = None,
        nodes_in_draft: Optional[List[str]] = None,
        name: Optional[str] = None,
        pipeline_type: Optional[Union[str, "PipelineType"]] = None,
        pipeline_draft_mode: Optional[Union[str, "PipelineDraftMode"]] = None,
        graph_components_mode: Optional[Union[str, "GraphComponentsMode"]] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        flattened_sub_graphs: Optional[Dict[str, "PipelineSubDraft"]] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword ui_widget_meta_infos:
        :paramtype ui_widget_meta_infos: list[~flow.models.UIWidgetMetaInfo]
        :keyword web_service_inputs:
        :paramtype web_service_inputs: list[~flow.models.WebServicePort]
        :keyword web_service_outputs:
        :paramtype web_service_outputs: list[~flow.models.WebServicePort]
        :keyword nodes_in_draft:
        :paramtype nodes_in_draft: list[str]
        :keyword name:
        :paramtype name: str
        :keyword pipeline_type: Possible values include: "TrainingPipeline",
         "RealTimeInferencePipeline", "BatchInferencePipeline", "Unknown".
        :paramtype pipeline_type: str or ~flow.models.PipelineType
        :keyword pipeline_draft_mode: Possible values include: "None", "Normal", "Custom".
        :paramtype pipeline_draft_mode: str or ~flow.models.PipelineDraftMode
        :keyword graph_components_mode: Possible values include: "Normal", "AllDesignerBuildin",
         "ContainsDesignerBuildin".
        :paramtype graph_components_mode: str or ~flow.models.GraphComponentsMode
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
        :paramtype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(SavePipelineDraftRequest, self).__init__(**kwargs)
        self.ui_widget_meta_infos = ui_widget_meta_infos
        self.web_service_inputs = web_service_inputs
        self.web_service_outputs = web_service_outputs
        self.nodes_in_draft = nodes_in_draft
        self.name = name
        self.pipeline_type = pipeline_type
        self.pipeline_draft_mode = pipeline_draft_mode
        self.graph_components_mode = graph_components_mode
        self.sub_pipelines_info = sub_pipelines_info
        self.flattened_sub_graphs = flattened_sub_graphs
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class ScheduleBase(msrest.serialization.Model):
    """ScheduleBase.

    :ivar schedule_status: Possible values include: "Enabled", "Disabled".
    :vartype schedule_status: str or ~flow.models.MfeInternalScheduleStatus
    :ivar schedule_type: Possible values include: "Cron", "Recurrence".
    :vartype schedule_type: str or ~flow.models.ScheduleType
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar time_zone:
    :vartype time_zone: str
    :ivar expression:
    :vartype expression: str
    :ivar frequency: Possible values include: "Minute", "Hour", "Day", "Week", "Month".
    :vartype frequency: str or ~flow.models.RecurrenceFrequency
    :ivar interval:
    :vartype interval: int
    :ivar pattern:
    :vartype pattern: ~flow.models.RecurrencePattern
    """

    _attribute_map = {
        'schedule_status': {'key': 'scheduleStatus', 'type': 'str'},
        'schedule_type': {'key': 'scheduleType', 'type': 'str'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'time_zone': {'key': 'timeZone', 'type': 'str'},
        'expression': {'key': 'expression', 'type': 'str'},
        'frequency': {'key': 'frequency', 'type': 'str'},
        'interval': {'key': 'interval', 'type': 'int'},
        'pattern': {'key': 'pattern', 'type': 'RecurrencePattern'},
    }

    def __init__(
        self,
        *,
        schedule_status: Optional[Union[str, "MfeInternalScheduleStatus"]] = None,
        schedule_type: Optional[Union[str, "ScheduleType"]] = None,
        end_time: Optional[datetime.datetime] = None,
        start_time: Optional[datetime.datetime] = None,
        time_zone: Optional[str] = None,
        expression: Optional[str] = None,
        frequency: Optional[Union[str, "RecurrenceFrequency"]] = None,
        interval: Optional[int] = None,
        pattern: Optional["RecurrencePattern"] = None,
        **kwargs
    ):
        """
        :keyword schedule_status: Possible values include: "Enabled", "Disabled".
        :paramtype schedule_status: str or ~flow.models.MfeInternalScheduleStatus
        :keyword schedule_type: Possible values include: "Cron", "Recurrence".
        :paramtype schedule_type: str or ~flow.models.ScheduleType
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword time_zone:
        :paramtype time_zone: str
        :keyword expression:
        :paramtype expression: str
        :keyword frequency: Possible values include: "Minute", "Hour", "Day", "Week", "Month".
        :paramtype frequency: str or ~flow.models.RecurrenceFrequency
        :keyword interval:
        :paramtype interval: int
        :keyword pattern:
        :paramtype pattern: ~flow.models.RecurrencePattern
        """
        super(ScheduleBase, self).__init__(**kwargs)
        self.schedule_status = schedule_status
        self.schedule_type = schedule_type
        self.end_time = end_time
        self.start_time = start_time
        self.time_zone = time_zone
        self.expression = expression
        self.frequency = frequency
        self.interval = interval
        self.pattern = pattern


class SchemaContractsCreatedBy(msrest.serialization.Model):
    """SchemaContractsCreatedBy.

    :ivar user_object_id:
    :vartype user_object_id: str
    :ivar user_tenant_id:
    :vartype user_tenant_id: str
    :ivar user_name:
    :vartype user_name: str
    :ivar user_principal_name:
    :vartype user_principal_name: str
    """

    _attribute_map = {
        'user_object_id': {'key': 'userObjectId', 'type': 'str'},
        'user_tenant_id': {'key': 'userTenantId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
        'user_principal_name': {'key': 'userPrincipalName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        user_object_id: Optional[str] = None,
        user_tenant_id: Optional[str] = None,
        user_name: Optional[str] = None,
        user_principal_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword user_object_id:
        :paramtype user_object_id: str
        :keyword user_tenant_id:
        :paramtype user_tenant_id: str
        :keyword user_name:
        :paramtype user_name: str
        :keyword user_principal_name:
        :paramtype user_principal_name: str
        """
        super(SchemaContractsCreatedBy, self).__init__(**kwargs)
        self.user_object_id = user_object_id
        self.user_tenant_id = user_tenant_id
        self.user_name = user_name
        self.user_principal_name = user_principal_name


class ScopeCloudConfiguration(msrest.serialization.Model):
    """ScopeCloudConfiguration.

    :ivar input_path_suffixes: This is a dictionary.
    :vartype input_path_suffixes: dict[str, ~flow.models.ArgumentAssignment]
    :ivar output_path_suffixes: This is a dictionary.
    :vartype output_path_suffixes: dict[str, ~flow.models.ArgumentAssignment]
    :ivar user_alias:
    :vartype user_alias: str
    :ivar tokens:
    :vartype tokens: int
    :ivar auto_token:
    :vartype auto_token: int
    :ivar vcp:
    :vartype vcp: float
    """

    _attribute_map = {
        'input_path_suffixes': {'key': 'inputPathSuffixes', 'type': '{ArgumentAssignment}'},
        'output_path_suffixes': {'key': 'outputPathSuffixes', 'type': '{ArgumentAssignment}'},
        'user_alias': {'key': 'userAlias', 'type': 'str'},
        'tokens': {'key': 'tokens', 'type': 'int'},
        'auto_token': {'key': 'autoToken', 'type': 'int'},
        'vcp': {'key': 'vcp', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        input_path_suffixes: Optional[Dict[str, "ArgumentAssignment"]] = None,
        output_path_suffixes: Optional[Dict[str, "ArgumentAssignment"]] = None,
        user_alias: Optional[str] = None,
        tokens: Optional[int] = None,
        auto_token: Optional[int] = None,
        vcp: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword input_path_suffixes: This is a dictionary.
        :paramtype input_path_suffixes: dict[str, ~flow.models.ArgumentAssignment]
        :keyword output_path_suffixes: This is a dictionary.
        :paramtype output_path_suffixes: dict[str, ~flow.models.ArgumentAssignment]
        :keyword user_alias:
        :paramtype user_alias: str
        :keyword tokens:
        :paramtype tokens: int
        :keyword auto_token:
        :paramtype auto_token: int
        :keyword vcp:
        :paramtype vcp: float
        """
        super(ScopeCloudConfiguration, self).__init__(**kwargs)
        self.input_path_suffixes = input_path_suffixes
        self.output_path_suffixes = output_path_suffixes
        self.user_alias = user_alias
        self.tokens = tokens
        self.auto_token = auto_token
        self.vcp = vcp


class Seasonality(msrest.serialization.Model):
    """Seasonality.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.SeasonalityMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "SeasonalityMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.SeasonalityMode
        :keyword value:
        :paramtype value: int
        """
        super(Seasonality, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class SecretConfiguration(msrest.serialization.Model):
    """SecretConfiguration.

    :ivar workspace_secret_name:
    :vartype workspace_secret_name: str
    :ivar uri:
    :vartype uri: str
    """

    _attribute_map = {
        'workspace_secret_name': {'key': 'workspace_secret_name', 'type': 'str'},
        'uri': {'key': 'uri', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        workspace_secret_name: Optional[str] = None,
        uri: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword workspace_secret_name:
        :paramtype workspace_secret_name: str
        :keyword uri:
        :paramtype uri: str
        """
        super(SecretConfiguration, self).__init__(**kwargs)
        self.workspace_secret_name = workspace_secret_name
        self.uri = uri


class SegmentedResult1ExperimentIndexEntity(msrest.serialization.Model):
    """SegmentedResult1ExperimentIndexEntity.

    :ivar value:
    :vartype value: list[~flow.models.ExperimentIndexEntity]
    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar count:
    :vartype count: int
    :ivar next_link:
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ExperimentIndexEntity]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'count': {'key': 'count', 'type': 'int'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["ExperimentIndexEntity"]] = None,
        continuation_token: Optional[str] = None,
        count: Optional[int] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: list[~flow.models.ExperimentIndexEntity]
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword count:
        :paramtype count: int
        :keyword next_link:
        :paramtype next_link: str
        """
        super(SegmentedResult1ExperimentIndexEntity, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.count = count
        self.next_link = next_link


class SegmentedResult1ExperimentTemplateIndexEntity(msrest.serialization.Model):
    """SegmentedResult1ExperimentTemplateIndexEntity.

    :ivar value:
    :vartype value: list[~flow.models.ExperimentTemplateIndexEntity]
    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar count:
    :vartype count: int
    :ivar next_link:
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[ExperimentTemplateIndexEntity]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'count': {'key': 'count', 'type': 'int'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["ExperimentTemplateIndexEntity"]] = None,
        continuation_token: Optional[str] = None,
        count: Optional[int] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: list[~flow.models.ExperimentTemplateIndexEntity]
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword count:
        :paramtype count: int
        :keyword next_link:
        :paramtype next_link: str
        """
        super(SegmentedResult1ExperimentTemplateIndexEntity, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.count = count
        self.next_link = next_link


class SegmentedResult1FlowIndexEntity(msrest.serialization.Model):
    """SegmentedResult1FlowIndexEntity.

    :ivar value:
    :vartype value: list[~flow.models.FlowIndexEntity]
    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar count:
    :vartype count: int
    :ivar next_link:
    :vartype next_link: str
    """

    _attribute_map = {
        'value': {'key': 'value', 'type': '[FlowIndexEntity]'},
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'count': {'key': 'count', 'type': 'int'},
        'next_link': {'key': 'nextLink', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        value: Optional[List["FlowIndexEntity"]] = None,
        continuation_token: Optional[str] = None,
        count: Optional[int] = None,
        next_link: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword value:
        :paramtype value: list[~flow.models.FlowIndexEntity]
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword count:
        :paramtype count: int
        :keyword next_link:
        :paramtype next_link: str
        """
        super(SegmentedResult1FlowIndexEntity, self).__init__(**kwargs)
        self.value = value
        self.continuation_token = continuation_token
        self.count = count
        self.next_link = next_link


class ServiceLogRequest(msrest.serialization.Model):
    """ServiceLogRequest.

    :ivar log_level: Possible values include: "Trace", "Debug", "Information", "Warning", "Error",
     "Critical", "None".
    :vartype log_level: str or ~flow.models.LogLevel
    :ivar message:
    :vartype message: str
    :ivar timestamp:
    :vartype timestamp: ~datetime.datetime
    """

    _attribute_map = {
        'log_level': {'key': 'logLevel', 'type': 'str'},
        'message': {'key': 'message', 'type': 'str'},
        'timestamp': {'key': 'timestamp', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        log_level: Optional[Union[str, "LogLevel"]] = None,
        message: Optional[str] = None,
        timestamp: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword log_level: Possible values include: "Trace", "Debug", "Information", "Warning",
         "Error", "Critical", "None".
        :paramtype log_level: str or ~flow.models.LogLevel
        :keyword message:
        :paramtype message: str
        :keyword timestamp:
        :paramtype timestamp: ~datetime.datetime
        """
        super(ServiceLogRequest, self).__init__(**kwargs)
        self.log_level = log_level
        self.message = message
        self.timestamp = timestamp


class SessionApplication(msrest.serialization.Model):
    """SessionApplication.

    :ivar name:
    :vartype name: str
    :ivar type:
    :vartype type: str
    :ivar image:
    :vartype image: str
    :ivar env_vars: Dictionary of :code:`<string>`.
    :vartype env_vars: dict[str, str]
    :ivar python_pip_requirements:
    :vartype python_pip_requirements: list[str]
    :ivar volumes:
    :vartype volumes: list[~flow.models.Volume]
    :ivar network_mode:
    :vartype network_mode: str
    :ivar setup_results:
    :vartype setup_results: list[~flow.models.SessionApplicationRunCommandResult]
    :ivar port:
    :vartype port: int
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'image': {'key': 'image', 'type': 'str'},
        'env_vars': {'key': 'envVars', 'type': '{str}'},
        'python_pip_requirements': {'key': 'pythonPipRequirements', 'type': '[str]'},
        'volumes': {'key': 'volumes', 'type': '[Volume]'},
        'network_mode': {'key': 'networkMode', 'type': 'str'},
        'setup_results': {'key': 'setupResults', 'type': '[SessionApplicationRunCommandResult]'},
        'port': {'key': 'port', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[str] = None,
        image: Optional[str] = None,
        env_vars: Optional[Dict[str, str]] = None,
        python_pip_requirements: Optional[List[str]] = None,
        volumes: Optional[List["Volume"]] = None,
        network_mode: Optional[str] = None,
        setup_results: Optional[List["SessionApplicationRunCommandResult"]] = None,
        port: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type:
        :paramtype type: str
        :keyword image:
        :paramtype image: str
        :keyword env_vars: Dictionary of :code:`<string>`.
        :paramtype env_vars: dict[str, str]
        :keyword python_pip_requirements:
        :paramtype python_pip_requirements: list[str]
        :keyword volumes:
        :paramtype volumes: list[~flow.models.Volume]
        :keyword network_mode:
        :paramtype network_mode: str
        :keyword setup_results:
        :paramtype setup_results: list[~flow.models.SessionApplicationRunCommandResult]
        :keyword port:
        :paramtype port: int
        """
        super(SessionApplication, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.image = image
        self.env_vars = env_vars
        self.python_pip_requirements = python_pip_requirements
        self.volumes = volumes
        self.network_mode = network_mode
        self.setup_results = setup_results
        self.port = port


class SessionApplicationRunCommandResult(msrest.serialization.Model):
    """SessionApplicationRunCommandResult.

    :ivar command:
    :vartype command: str
    :ivar arguments:
    :vartype arguments: list[str]
    :ivar exit_code:
    :vartype exit_code: int
    :ivar std_out:
    :vartype std_out: str
    :ivar std_err:
    :vartype std_err: str
    """

    _attribute_map = {
        'command': {'key': 'command', 'type': 'str'},
        'arguments': {'key': 'arguments', 'type': '[str]'},
        'exit_code': {'key': 'exitCode', 'type': 'int'},
        'std_out': {'key': 'stdOut', 'type': 'str'},
        'std_err': {'key': 'stdErr', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        command: Optional[str] = None,
        arguments: Optional[List[str]] = None,
        exit_code: Optional[int] = None,
        std_out: Optional[str] = None,
        std_err: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword command:
        :paramtype command: str
        :keyword arguments:
        :paramtype arguments: list[str]
        :keyword exit_code:
        :paramtype exit_code: int
        :keyword std_out:
        :paramtype std_out: str
        :keyword std_err:
        :paramtype std_err: str
        """
        super(SessionApplicationRunCommandResult, self).__init__(**kwargs)
        self.command = command
        self.arguments = arguments
        self.exit_code = exit_code
        self.std_out = std_out
        self.std_err = std_err


class SessionProperties(msrest.serialization.Model):
    """SessionProperties.

    :ivar session_id:
    :vartype session_id: str
    :ivar subscription_id:
    :vartype subscription_id: str
    :ivar resource_group_name:
    :vartype resource_group_name: str
    :ivar workspace_name:
    :vartype workspace_name: str
    :ivar existing_user_compute_instance_name:
    :vartype existing_user_compute_instance_name: str
    :ivar user_object_id:
    :vartype user_object_id: str
    :ivar user_tenant_id:
    :vartype user_tenant_id: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar applications:
    :vartype applications: list[~flow.models.SessionApplication]
    :ivar application:
    :vartype application: ~flow.models.SessionApplication
    :ivar last_alive_time:
    :vartype last_alive_time: ~datetime.datetime
    """

    _attribute_map = {
        'session_id': {'key': 'sessionId', 'type': 'str'},
        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
        'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
        'workspace_name': {'key': 'workspaceName', 'type': 'str'},
        'existing_user_compute_instance_name': {'key': 'existingUserComputeInstanceName', 'type': 'str'},
        'user_object_id': {'key': 'userObjectId', 'type': 'str'},
        'user_tenant_id': {'key': 'userTenantId', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'applications': {'key': 'applications', 'type': '[SessionApplication]'},
        'application': {'key': 'application', 'type': 'SessionApplication'},
        'last_alive_time': {'key': 'lastAliveTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        session_id: Optional[str] = None,
        subscription_id: Optional[str] = None,
        resource_group_name: Optional[str] = None,
        workspace_name: Optional[str] = None,
        existing_user_compute_instance_name: Optional[str] = None,
        user_object_id: Optional[str] = None,
        user_tenant_id: Optional[str] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        applications: Optional[List["SessionApplication"]] = None,
        application: Optional["SessionApplication"] = None,
        last_alive_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword session_id:
        :paramtype session_id: str
        :keyword subscription_id:
        :paramtype subscription_id: str
        :keyword resource_group_name:
        :paramtype resource_group_name: str
        :keyword workspace_name:
        :paramtype workspace_name: str
        :keyword existing_user_compute_instance_name:
        :paramtype existing_user_compute_instance_name: str
        :keyword user_object_id:
        :paramtype user_object_id: str
        :keyword user_tenant_id:
        :paramtype user_tenant_id: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword applications:
        :paramtype applications: list[~flow.models.SessionApplication]
        :keyword application:
        :paramtype application: ~flow.models.SessionApplication
        :keyword last_alive_time:
        :paramtype last_alive_time: ~datetime.datetime
        """
        super(SessionProperties, self).__init__(**kwargs)
        self.session_id = session_id
        self.subscription_id = subscription_id
        self.resource_group_name = resource_group_name
        self.workspace_name = workspace_name
        self.existing_user_compute_instance_name = existing_user_compute_instance_name
        self.user_object_id = user_object_id
        self.user_tenant_id = user_tenant_id
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.applications = applications
        self.application = application
        self.last_alive_time = last_alive_time


class SessionRuntimeResources(msrest.serialization.Model):
    """SessionRuntimeResources.

    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(SessionRuntimeResources, self).__init__(**kwargs)
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class SetupFlowSessionRequest(msrest.serialization.Model):
    """SetupFlowSessionRequest.

    :ivar action: Possible values include: "Install", "Reset", "Update", "Delete".
    :vartype action: str or ~flow.models.SetupFlowSessionAction
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'action': {'key': 'action', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        action: Optional[Union[str, "SetupFlowSessionAction"]] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword action: Possible values include: "Install", "Reset", "Update", "Delete".
        :paramtype action: str or ~flow.models.SetupFlowSessionAction
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(SetupFlowSessionRequest, self).__init__(**kwargs)
        self.action = action
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class SharingScope(msrest.serialization.Model):
    """SharingScope.

    :ivar type: Possible values include: "Global", "Tenant", "Subscription", "ResourceGroup",
     "Workspace".
    :vartype type: str or ~flow.models.ScopeType
    :ivar identifier:
    :vartype identifier: str
    """

    _attribute_map = {
        'type': {'key': 'type', 'type': 'str'},
        'identifier': {'key': 'identifier', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        type: Optional[Union[str, "ScopeType"]] = None,
        identifier: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword type: Possible values include: "Global", "Tenant", "Subscription", "ResourceGroup",
         "Workspace".
        :paramtype type: str or ~flow.models.ScopeType
        :keyword identifier:
        :paramtype identifier: str
        """
        super(SharingScope, self).__init__(**kwargs)
        self.type = type
        self.identifier = identifier


class Snapshot(msrest.serialization.Model):
    """Snapshot.

    :ivar id:
    :vartype id: str
    :ivar directory_name:
    :vartype directory_name: str
    :ivar snapshot_asset_id:
    :vartype snapshot_asset_id: str
    :ivar snapshot_entity_id:
    :vartype snapshot_entity_id: str
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'directory_name': {'key': 'directoryName', 'type': 'str'},
        'snapshot_asset_id': {'key': 'snapshotAssetId', 'type': 'str'},
        'snapshot_entity_id': {'key': 'snapshotEntityId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        directory_name: Optional[str] = None,
        snapshot_asset_id: Optional[str] = None,
        snapshot_entity_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword directory_name:
        :paramtype directory_name: str
        :keyword snapshot_asset_id:
        :paramtype snapshot_asset_id: str
        :keyword snapshot_entity_id:
        :paramtype snapshot_entity_id: str
        """
        super(Snapshot, self).__init__(**kwargs)
        self.id = id
        self.directory_name = directory_name
        self.snapshot_asset_id = snapshot_asset_id
        self.snapshot_entity_id = snapshot_entity_id


class SnapshotInfo(msrest.serialization.Model):
    """SnapshotInfo.

    :ivar root_download_url:
    :vartype root_download_url: str
    :ivar snapshots: This is a dictionary.
    :vartype snapshots: dict[str, ~flow.models.DownloadResourceInfo]
    """

    _attribute_map = {
        'root_download_url': {'key': 'rootDownloadUrl', 'type': 'str'},
        'snapshots': {'key': 'snapshots', 'type': '{DownloadResourceInfo}'},
    }

    def __init__(
        self,
        *,
        root_download_url: Optional[str] = None,
        snapshots: Optional[Dict[str, "DownloadResourceInfo"]] = None,
        **kwargs
    ):
        """
        :keyword root_download_url:
        :paramtype root_download_url: str
        :keyword snapshots: This is a dictionary.
        :paramtype snapshots: dict[str, ~flow.models.DownloadResourceInfo]
        """
        super(SnapshotInfo, self).__init__(**kwargs)
        self.root_download_url = root_download_url
        self.snapshots = snapshots


class SourceCodeDataReference(msrest.serialization.Model):
    """SourceCodeDataReference.

    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar path:
    :vartype path: str
    """

    _attribute_map = {
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'path': {'key': 'path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        data_store_name: Optional[str] = None,
        path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword path:
        :paramtype path: str
        """
        super(SourceCodeDataReference, self).__init__(**kwargs)
        self.data_store_name = data_store_name
        self.path = path


class SparkConfiguration(msrest.serialization.Model):
    """SparkConfiguration.

    :ivar configuration: Dictionary of :code:`<string>`.
    :vartype configuration: dict[str, str]
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar spark_pool_resource_id:
    :vartype spark_pool_resource_id: str
    """

    _attribute_map = {
        'configuration': {'key': 'configuration', 'type': '{str}'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'spark_pool_resource_id': {'key': 'sparkPoolResourceId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        configuration: Optional[Dict[str, str]] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        py_files: Optional[List[str]] = None,
        spark_pool_resource_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword configuration: Dictionary of :code:`<string>`.
        :paramtype configuration: dict[str, str]
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword spark_pool_resource_id:
        :paramtype spark_pool_resource_id: str
        """
        super(SparkConfiguration, self).__init__(**kwargs)
        self.configuration = configuration
        self.files = files
        self.archives = archives
        self.jars = jars
        self.py_files = py_files
        self.spark_pool_resource_id = spark_pool_resource_id


class SparkJarTaskDto(msrest.serialization.Model):
    """SparkJarTaskDto.

    :ivar main_class_name:
    :vartype main_class_name: str
    :ivar parameters:
    :vartype parameters: list[str]
    """

    _attribute_map = {
        'main_class_name': {'key': 'main_class_name', 'type': 'str'},
        'parameters': {'key': 'parameters', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        main_class_name: Optional[str] = None,
        parameters: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword main_class_name:
        :paramtype main_class_name: str
        :keyword parameters:
        :paramtype parameters: list[str]
        """
        super(SparkJarTaskDto, self).__init__(**kwargs)
        self.main_class_name = main_class_name
        self.parameters = parameters


class SparkJob(msrest.serialization.Model):
    """SparkJob.

    :ivar job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
     "AutoML", "Spark", "Base", "FineTuning".
    :vartype job_type: str or ~flow.models.JobType
    :ivar resources:
    :vartype resources: ~flow.models.SparkResourceConfiguration
    :ivar args:
    :vartype args: str
    :ivar code_id:
    :vartype code_id: str
    :ivar entry:
    :vartype entry: ~flow.models.SparkJobEntry
    :ivar py_files:
    :vartype py_files: list[str]
    :ivar jars:
    :vartype jars: list[str]
    :ivar files:
    :vartype files: list[str]
    :ivar archives:
    :vartype archives: list[str]
    :ivar environment_id:
    :vartype environment_id: str
    :ivar input_data_bindings: Dictionary of :code:`<InputDataBinding>`.
    :vartype input_data_bindings: dict[str, ~flow.models.InputDataBinding]
    :ivar output_data_bindings: Dictionary of :code:`<OutputDataBinding>`.
    :vartype output_data_bindings: dict[str, ~flow.models.OutputDataBinding]
    :ivar conf: Dictionary of :code:`<string>`.
    :vartype conf: dict[str, str]
    :ivar environment_variables: Dictionary of :code:`<string>`.
    :vartype environment_variables: dict[str, str]
    :ivar provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
     "InProgress".
    :vartype provisioning_state: str or ~flow.models.JobProvisioningState
    :ivar parent_job_name:
    :vartype parent_job_name: str
    :ivar display_name:
    :vartype display_name: str
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar status: Possible values include: "NotStarted", "Starting", "Provisioning", "Preparing",
     "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed", "Canceled",
     "NotResponding", "Paused", "Unknown", "Scheduled".
    :vartype status: str or ~flow.models.JobStatus
    :ivar interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
    :vartype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
    :ivar identity:
    :vartype identity: ~flow.models.MfeInternalIdentityConfiguration
    :ivar compute:
    :vartype compute: ~flow.models.ComputeConfiguration
    :ivar priority:
    :vartype priority: int
    :ivar output:
    :vartype output: ~flow.models.JobOutputArtifacts
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar schedule:
    :vartype schedule: ~flow.models.ScheduleBase
    :ivar component_id:
    :vartype component_id: str
    :ivar notification_setting:
    :vartype notification_setting: ~flow.models.NotificationSetting
    :ivar secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
    :vartype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    """

    _attribute_map = {
        'job_type': {'key': 'jobType', 'type': 'str'},
        'resources': {'key': 'resources', 'type': 'SparkResourceConfiguration'},
        'args': {'key': 'args', 'type': 'str'},
        'code_id': {'key': 'codeId', 'type': 'str'},
        'entry': {'key': 'entry', 'type': 'SparkJobEntry'},
        'py_files': {'key': 'pyFiles', 'type': '[str]'},
        'jars': {'key': 'jars', 'type': '[str]'},
        'files': {'key': 'files', 'type': '[str]'},
        'archives': {'key': 'archives', 'type': '[str]'},
        'environment_id': {'key': 'environmentId', 'type': 'str'},
        'input_data_bindings': {'key': 'inputDataBindings', 'type': '{InputDataBinding}'},
        'output_data_bindings': {'key': 'outputDataBindings', 'type': '{OutputDataBinding}'},
        'conf': {'key': 'conf', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'parent_job_name': {'key': 'parentJobName', 'type': 'str'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'status': {'key': 'status', 'type': 'str'},
        'interaction_endpoints': {'key': 'interactionEndpoints', 'type': '{JobEndpoint}'},
        'identity': {'key': 'identity', 'type': 'MfeInternalIdentityConfiguration'},
        'compute': {'key': 'compute', 'type': 'ComputeConfiguration'},
        'priority': {'key': 'priority', 'type': 'int'},
        'output': {'key': 'output', 'type': 'JobOutputArtifacts'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'schedule': {'key': 'schedule', 'type': 'ScheduleBase'},
        'component_id': {'key': 'componentId', 'type': 'str'},
        'notification_setting': {'key': 'notificationSetting', 'type': 'NotificationSetting'},
        'secrets_configuration': {'key': 'secretsConfiguration', 'type': '{MfeInternalSecretConfiguration}'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        job_type: Optional[Union[str, "JobType"]] = None,
        resources: Optional["SparkResourceConfiguration"] = None,
        args: Optional[str] = None,
        code_id: Optional[str] = None,
        entry: Optional["SparkJobEntry"] = None,
        py_files: Optional[List[str]] = None,
        jars: Optional[List[str]] = None,
        files: Optional[List[str]] = None,
        archives: Optional[List[str]] = None,
        environment_id: Optional[str] = None,
        input_data_bindings: Optional[Dict[str, "InputDataBinding"]] = None,
        output_data_bindings: Optional[Dict[str, "OutputDataBinding"]] = None,
        conf: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        provisioning_state: Optional[Union[str, "JobProvisioningState"]] = None,
        parent_job_name: Optional[str] = None,
        display_name: Optional[str] = None,
        experiment_name: Optional[str] = None,
        status: Optional[Union[str, "JobStatus"]] = None,
        interaction_endpoints: Optional[Dict[str, "JobEndpoint"]] = None,
        identity: Optional["MfeInternalIdentityConfiguration"] = None,
        compute: Optional["ComputeConfiguration"] = None,
        priority: Optional[int] = None,
        output: Optional["JobOutputArtifacts"] = None,
        is_archived: Optional[bool] = None,
        schedule: Optional["ScheduleBase"] = None,
        component_id: Optional[str] = None,
        notification_setting: Optional["NotificationSetting"] = None,
        secrets_configuration: Optional[Dict[str, "MfeInternalSecretConfiguration"]] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword job_type: Possible values include: "Command", "Sweep", "Labeling", "Pipeline", "Data",
         "AutoML", "Spark", "Base", "FineTuning".
        :paramtype job_type: str or ~flow.models.JobType
        :keyword resources:
        :paramtype resources: ~flow.models.SparkResourceConfiguration
        :keyword args:
        :paramtype args: str
        :keyword code_id:
        :paramtype code_id: str
        :keyword entry:
        :paramtype entry: ~flow.models.SparkJobEntry
        :keyword py_files:
        :paramtype py_files: list[str]
        :keyword jars:
        :paramtype jars: list[str]
        :keyword files:
        :paramtype files: list[str]
        :keyword archives:
        :paramtype archives: list[str]
        :keyword environment_id:
        :paramtype environment_id: str
        :keyword input_data_bindings: Dictionary of :code:`<InputDataBinding>`.
        :paramtype input_data_bindings: dict[str, ~flow.models.InputDataBinding]
        :keyword output_data_bindings: Dictionary of :code:`<OutputDataBinding>`.
        :paramtype output_data_bindings: dict[str, ~flow.models.OutputDataBinding]
        :keyword conf: Dictionary of :code:`<string>`.
        :paramtype conf: dict[str, str]
        :keyword environment_variables: Dictionary of :code:`<string>`.
        :paramtype environment_variables: dict[str, str]
        :keyword provisioning_state: Possible values include: "Succeeded", "Failed", "Canceled",
         "InProgress".
        :paramtype provisioning_state: str or ~flow.models.JobProvisioningState
        :keyword parent_job_name:
        :paramtype parent_job_name: str
        :keyword display_name:
        :paramtype display_name: str
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword status: Possible values include: "NotStarted", "Starting", "Provisioning",
         "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed", "Failed",
         "Canceled", "NotResponding", "Paused", "Unknown", "Scheduled".
        :paramtype status: str or ~flow.models.JobStatus
        :keyword interaction_endpoints: Dictionary of :code:`<JobEndpoint>`.
        :paramtype interaction_endpoints: dict[str, ~flow.models.JobEndpoint]
        :keyword identity:
        :paramtype identity: ~flow.models.MfeInternalIdentityConfiguration
        :keyword compute:
        :paramtype compute: ~flow.models.ComputeConfiguration
        :keyword priority:
        :paramtype priority: int
        :keyword output:
        :paramtype output: ~flow.models.JobOutputArtifacts
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword schedule:
        :paramtype schedule: ~flow.models.ScheduleBase
        :keyword component_id:
        :paramtype component_id: str
        :keyword notification_setting:
        :paramtype notification_setting: ~flow.models.NotificationSetting
        :keyword secrets_configuration: Dictionary of :code:`<MfeInternalSecretConfiguration>`.
        :paramtype secrets_configuration: dict[str, ~flow.models.MfeInternalSecretConfiguration]
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        """
        super(SparkJob, self).__init__(**kwargs)
        self.job_type = job_type
        self.resources = resources
        self.args = args
        self.code_id = code_id
        self.entry = entry
        self.py_files = py_files
        self.jars = jars
        self.files = files
        self.archives = archives
        self.environment_id = environment_id
        self.input_data_bindings = input_data_bindings
        self.output_data_bindings = output_data_bindings
        self.conf = conf
        self.environment_variables = environment_variables
        self.provisioning_state = provisioning_state
        self.parent_job_name = parent_job_name
        self.display_name = display_name
        self.experiment_name = experiment_name
        self.status = status
        self.interaction_endpoints = interaction_endpoints
        self.identity = identity
        self.compute = compute
        self.priority = priority
        self.output = output
        self.is_archived = is_archived
        self.schedule = schedule
        self.component_id = component_id
        self.notification_setting = notification_setting
        self.secrets_configuration = secrets_configuration
        self.description = description
        self.tags = tags
        self.properties = properties


class SparkJobEntry(msrest.serialization.Model):
    """SparkJobEntry.

    :ivar file:
    :vartype file: str
    :ivar class_name:
    :vartype class_name: str
    """

    _attribute_map = {
        'file': {'key': 'file', 'type': 'str'},
        'class_name': {'key': 'className', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        file: Optional[str] = None,
        class_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword file:
        :paramtype file: str
        :keyword class_name:
        :paramtype class_name: str
        """
        super(SparkJobEntry, self).__init__(**kwargs)
        self.file = file
        self.class_name = class_name


class SparkMavenPackage(msrest.serialization.Model):
    """SparkMavenPackage.

    :ivar group:
    :vartype group: str
    :ivar artifact:
    :vartype artifact: str
    :ivar version:
    :vartype version: str
    """

    _attribute_map = {
        'group': {'key': 'group', 'type': 'str'},
        'artifact': {'key': 'artifact', 'type': 'str'},
        'version': {'key': 'version', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        group: Optional[str] = None,
        artifact: Optional[str] = None,
        version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword group:
        :paramtype group: str
        :keyword artifact:
        :paramtype artifact: str
        :keyword version:
        :paramtype version: str
        """
        super(SparkMavenPackage, self).__init__(**kwargs)
        self.group = group
        self.artifact = artifact
        self.version = version


class SparkPythonTaskDto(msrest.serialization.Model):
    """SparkPythonTaskDto.

    :ivar python_file:
    :vartype python_file: str
    :ivar parameters:
    :vartype parameters: list[str]
    """

    _attribute_map = {
        'python_file': {'key': 'python_file', 'type': 'str'},
        'parameters': {'key': 'parameters', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        python_file: Optional[str] = None,
        parameters: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword python_file:
        :paramtype python_file: str
        :keyword parameters:
        :paramtype parameters: list[str]
        """
        super(SparkPythonTaskDto, self).__init__(**kwargs)
        self.python_file = python_file
        self.parameters = parameters


class SparkResourceConfiguration(msrest.serialization.Model):
    """SparkResourceConfiguration.

    :ivar instance_type:
    :vartype instance_type: str
    :ivar runtime_version:
    :vartype runtime_version: str
    """

    _attribute_map = {
        'instance_type': {'key': 'instanceType', 'type': 'str'},
        'runtime_version': {'key': 'runtimeVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        instance_type: Optional[str] = None,
        runtime_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword instance_type:
        :paramtype instance_type: str
        :keyword runtime_version:
        :paramtype runtime_version: str
        """
        super(SparkResourceConfiguration, self).__init__(**kwargs)
        self.instance_type = instance_type
        self.runtime_version = runtime_version


class SparkSection(msrest.serialization.Model):
    """SparkSection.

    :ivar repositories:
    :vartype repositories: list[str]
    :ivar packages:
    :vartype packages: list[~flow.models.SparkMavenPackage]
    :ivar precache_packages:
    :vartype precache_packages: bool
    """

    _attribute_map = {
        'repositories': {'key': 'repositories', 'type': '[str]'},
        'packages': {'key': 'packages', 'type': '[SparkMavenPackage]'},
        'precache_packages': {'key': 'precachePackages', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        repositories: Optional[List[str]] = None,
        packages: Optional[List["SparkMavenPackage"]] = None,
        precache_packages: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword repositories:
        :paramtype repositories: list[str]
        :keyword packages:
        :paramtype packages: list[~flow.models.SparkMavenPackage]
        :keyword precache_packages:
        :paramtype precache_packages: bool
        """
        super(SparkSection, self).__init__(**kwargs)
        self.repositories = repositories
        self.packages = packages
        self.precache_packages = precache_packages


class SparkSubmitTaskDto(msrest.serialization.Model):
    """SparkSubmitTaskDto.

    :ivar parameters:
    :vartype parameters: list[str]
    """

    _attribute_map = {
        'parameters': {'key': 'parameters', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        parameters: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword parameters:
        :paramtype parameters: list[str]
        """
        super(SparkSubmitTaskDto, self).__init__(**kwargs)
        self.parameters = parameters


class SqlDataPath(msrest.serialization.Model):
    """SqlDataPath.

    :ivar sql_table_name:
    :vartype sql_table_name: str
    :ivar sql_query:
    :vartype sql_query: str
    :ivar sql_stored_procedure_name:
    :vartype sql_stored_procedure_name: str
    :ivar sql_stored_procedure_params:
    :vartype sql_stored_procedure_params: list[~flow.models.StoredProcedureParameter]
    """

    _attribute_map = {
        'sql_table_name': {'key': 'sqlTableName', 'type': 'str'},
        'sql_query': {'key': 'sqlQuery', 'type': 'str'},
        'sql_stored_procedure_name': {'key': 'sqlStoredProcedureName', 'type': 'str'},
        'sql_stored_procedure_params': {'key': 'sqlStoredProcedureParams', 'type': '[StoredProcedureParameter]'},
    }

    def __init__(
        self,
        *,
        sql_table_name: Optional[str] = None,
        sql_query: Optional[str] = None,
        sql_stored_procedure_name: Optional[str] = None,
        sql_stored_procedure_params: Optional[List["StoredProcedureParameter"]] = None,
        **kwargs
    ):
        """
        :keyword sql_table_name:
        :paramtype sql_table_name: str
        :keyword sql_query:
        :paramtype sql_query: str
        :keyword sql_stored_procedure_name:
        :paramtype sql_stored_procedure_name: str
        :keyword sql_stored_procedure_params:
        :paramtype sql_stored_procedure_params: list[~flow.models.StoredProcedureParameter]
        """
        super(SqlDataPath, self).__init__(**kwargs)
        self.sql_table_name = sql_table_name
        self.sql_query = sql_query
        self.sql_stored_procedure_name = sql_stored_procedure_name
        self.sql_stored_procedure_params = sql_stored_procedure_params


class StackEnsembleSettings(msrest.serialization.Model):
    """StackEnsembleSettings.

    :ivar stack_meta_learner_type: Possible values include: "None", "LogisticRegression",
     "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
     "LightGBMRegressor", "LinearRegression".
    :vartype stack_meta_learner_type: str or ~flow.models.StackMetaLearnerType
    :ivar stack_meta_learner_train_percentage:
    :vartype stack_meta_learner_train_percentage: float
    :ivar stack_meta_learner_k_wargs: Anything.
    :vartype stack_meta_learner_k_wargs: any
    """

    _attribute_map = {
        'stack_meta_learner_type': {'key': 'stackMetaLearnerType', 'type': 'str'},
        'stack_meta_learner_train_percentage': {'key': 'stackMetaLearnerTrainPercentage', 'type': 'float'},
        'stack_meta_learner_k_wargs': {'key': 'stackMetaLearnerKWargs', 'type': 'object'},
    }

    def __init__(
        self,
        *,
        stack_meta_learner_type: Optional[Union[str, "StackMetaLearnerType"]] = None,
        stack_meta_learner_train_percentage: Optional[float] = None,
        stack_meta_learner_k_wargs: Optional[Any] = None,
        **kwargs
    ):
        """
        :keyword stack_meta_learner_type: Possible values include: "None", "LogisticRegression",
         "LogisticRegressionCV", "LightGBMClassifier", "ElasticNet", "ElasticNetCV",
         "LightGBMRegressor", "LinearRegression".
        :paramtype stack_meta_learner_type: str or ~flow.models.StackMetaLearnerType
        :keyword stack_meta_learner_train_percentage:
        :paramtype stack_meta_learner_train_percentage: float
        :keyword stack_meta_learner_k_wargs: Anything.
        :paramtype stack_meta_learner_k_wargs: any
        """
        super(StackEnsembleSettings, self).__init__(**kwargs)
        self.stack_meta_learner_type = stack_meta_learner_type
        self.stack_meta_learner_train_percentage = stack_meta_learner_train_percentage
        self.stack_meta_learner_k_wargs = stack_meta_learner_k_wargs


class StandbyPoolProperties(msrest.serialization.Model):
    """StandbyPoolProperties.

    :ivar name:
    :vartype name: str
    :ivar count:
    :vartype count: int
    :ivar vm_size:
    :vartype vm_size: str
    :ivar standby_available_instances:
    :vartype standby_available_instances: list[~flow.models.StandbyPoolResourceStatus]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'count': {'key': 'count', 'type': 'int'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'standby_available_instances': {'key': 'standbyAvailableInstances', 'type': '[StandbyPoolResourceStatus]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        count: Optional[int] = None,
        vm_size: Optional[str] = None,
        standby_available_instances: Optional[List["StandbyPoolResourceStatus"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword count:
        :paramtype count: int
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword standby_available_instances:
        :paramtype standby_available_instances: list[~flow.models.StandbyPoolResourceStatus]
        """
        super(StandbyPoolProperties, self).__init__(**kwargs)
        self.name = name
        self.count = count
        self.vm_size = vm_size
        self.standby_available_instances = standby_available_instances


class StandbyPoolResourceStatus(msrest.serialization.Model):
    """StandbyPoolResourceStatus.

    :ivar status:
    :vartype status: str
    :ivar error:
    :vartype error: ~flow.models.CloudError
    """

    _attribute_map = {
        'status': {'key': 'status', 'type': 'str'},
        'error': {'key': 'error', 'type': 'CloudError'},
    }

    def __init__(
        self,
        *,
        status: Optional[str] = None,
        error: Optional["CloudError"] = None,
        **kwargs
    ):
        """
        :keyword status:
        :paramtype status: str
        :keyword error:
        :paramtype error: ~flow.models.CloudError
        """
        super(StandbyPoolResourceStatus, self).__init__(**kwargs)
        self.status = status
        self.error = error


class StartRunResult(msrest.serialization.Model):
    """StartRunResult.

    All required parameters must be populated in order to send to Azure.

    :ivar run_id: Required.
    :vartype run_id: str
    """

    _validation = {
        'run_id': {'required': True, 'min_length': 1},
    }

    _attribute_map = {
        'run_id': {'key': 'runId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        run_id: str,
        **kwargs
    ):
        """
        :keyword run_id: Required.
        :paramtype run_id: str
        """
        super(StartRunResult, self).__init__(**kwargs)
        self.run_id = run_id


class StepRunProfile(msrest.serialization.Model):
    """StepRunProfile.

    :ivar step_run_id:
    :vartype step_run_id: str
    :ivar step_run_number:
    :vartype step_run_number: int
    :ivar run_url:
    :vartype run_url: str
    :ivar compute_target:
    :vartype compute_target: str
    :ivar compute_target_url:
    :vartype compute_target_url: str
    :ivar node_id:
    :vartype node_id: str
    :ivar node_name:
    :vartype node_name: str
    :ivar step_name:
    :vartype step_name: str
    :ivar create_time:
    :vartype create_time: long
    :ivar start_time:
    :vartype start_time: long
    :ivar end_time:
    :vartype end_time: long
    :ivar status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
     "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
     "Failed", "Canceled".
    :vartype status: str or ~flow.models.RunStatus
    :ivar status_detail:
    :vartype status_detail: str
    :ivar is_reused:
    :vartype is_reused: bool
    :ivar reused_pipeline_run_id:
    :vartype reused_pipeline_run_id: str
    :ivar reused_step_run_id:
    :vartype reused_step_run_id: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar status_timeline:
    :vartype status_timeline: list[~flow.models.RunStatusPeriod]
    """

    _attribute_map = {
        'step_run_id': {'key': 'stepRunId', 'type': 'str'},
        'step_run_number': {'key': 'stepRunNumber', 'type': 'int'},
        'run_url': {'key': 'runUrl', 'type': 'str'},
        'compute_target': {'key': 'computeTarget', 'type': 'str'},
        'compute_target_url': {'key': 'computeTargetUrl', 'type': 'str'},
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'node_name': {'key': 'nodeName', 'type': 'str'},
        'step_name': {'key': 'stepName', 'type': 'str'},
        'create_time': {'key': 'createTime', 'type': 'long'},
        'start_time': {'key': 'startTime', 'type': 'long'},
        'end_time': {'key': 'endTime', 'type': 'long'},
        'status': {'key': 'status', 'type': 'str'},
        'status_detail': {'key': 'statusDetail', 'type': 'str'},
        'is_reused': {'key': 'isReused', 'type': 'bool'},
        'reused_pipeline_run_id': {'key': 'reusedPipelineRunId', 'type': 'str'},
        'reused_step_run_id': {'key': 'reusedStepRunId', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'status_timeline': {'key': 'statusTimeline', 'type': '[RunStatusPeriod]'},
    }

    def __init__(
        self,
        *,
        step_run_id: Optional[str] = None,
        step_run_number: Optional[int] = None,
        run_url: Optional[str] = None,
        compute_target: Optional[str] = None,
        compute_target_url: Optional[str] = None,
        node_id: Optional[str] = None,
        node_name: Optional[str] = None,
        step_name: Optional[str] = None,
        create_time: Optional[int] = None,
        start_time: Optional[int] = None,
        end_time: Optional[int] = None,
        status: Optional[Union[str, "RunStatus"]] = None,
        status_detail: Optional[str] = None,
        is_reused: Optional[bool] = None,
        reused_pipeline_run_id: Optional[str] = None,
        reused_step_run_id: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        status_timeline: Optional[List["RunStatusPeriod"]] = None,
        **kwargs
    ):
        """
        :keyword step_run_id:
        :paramtype step_run_id: str
        :keyword step_run_number:
        :paramtype step_run_number: int
        :keyword run_url:
        :paramtype run_url: str
        :keyword compute_target:
        :paramtype compute_target: str
        :keyword compute_target_url:
        :paramtype compute_target_url: str
        :keyword node_id:
        :paramtype node_id: str
        :keyword node_name:
        :paramtype node_name: str
        :keyword step_name:
        :paramtype step_name: str
        :keyword create_time:
        :paramtype create_time: long
        :keyword start_time:
        :paramtype start_time: long
        :keyword end_time:
        :paramtype end_time: long
        :keyword status: Possible values include: "NotStarted", "Unapproved", "Pausing", "Paused",
         "Starting", "Preparing", "Queued", "Running", "Finalizing", "CancelRequested", "Completed",
         "Failed", "Canceled".
        :paramtype status: str or ~flow.models.RunStatus
        :keyword status_detail:
        :paramtype status_detail: str
        :keyword is_reused:
        :paramtype is_reused: bool
        :keyword reused_pipeline_run_id:
        :paramtype reused_pipeline_run_id: str
        :keyword reused_step_run_id:
        :paramtype reused_step_run_id: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword status_timeline:
        :paramtype status_timeline: list[~flow.models.RunStatusPeriod]
        """
        super(StepRunProfile, self).__init__(**kwargs)
        self.step_run_id = step_run_id
        self.step_run_number = step_run_number
        self.run_url = run_url
        self.compute_target = compute_target
        self.compute_target_url = compute_target_url
        self.node_id = node_id
        self.node_name = node_name
        self.step_name = step_name
        self.create_time = create_time
        self.start_time = start_time
        self.end_time = end_time
        self.status = status
        self.status_detail = status_detail
        self.is_reused = is_reused
        self.reused_pipeline_run_id = reused_pipeline_run_id
        self.reused_step_run_id = reused_step_run_id
        self.tags = tags
        self.status_timeline = status_timeline


class StorageInfo(msrest.serialization.Model):
    """StorageInfo.

    :ivar storage_auth_type: Possible values include: "MSI", "ConnectionString", "SAS".
    :vartype storage_auth_type: str or ~flow.models.StorageAuthType
    :ivar connection_string:
    :vartype connection_string: str
    :ivar sas_token:
    :vartype sas_token: str
    :ivar account_name:
    :vartype account_name: str
    """

    _attribute_map = {
        'storage_auth_type': {'key': 'storageAuthType', 'type': 'str'},
        'connection_string': {'key': 'connectionString', 'type': 'str'},
        'sas_token': {'key': 'sasToken', 'type': 'str'},
        'account_name': {'key': 'accountName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        storage_auth_type: Optional[Union[str, "StorageAuthType"]] = None,
        connection_string: Optional[str] = None,
        sas_token: Optional[str] = None,
        account_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword storage_auth_type: Possible values include: "MSI", "ConnectionString", "SAS".
        :paramtype storage_auth_type: str or ~flow.models.StorageAuthType
        :keyword connection_string:
        :paramtype connection_string: str
        :keyword sas_token:
        :paramtype sas_token: str
        :keyword account_name:
        :paramtype account_name: str
        """
        super(StorageInfo, self).__init__(**kwargs)
        self.storage_auth_type = storage_auth_type
        self.connection_string = connection_string
        self.sas_token = sas_token
        self.account_name = account_name


class StoredProcedureParameter(msrest.serialization.Model):
    """StoredProcedureParameter.

    :ivar name:
    :vartype name: str
    :ivar value:
    :vartype value: str
    :ivar type: Possible values include: "String", "Int", "Decimal", "Guid", "Boolean", "Date".
    :vartype type: str or ~flow.models.StoredProcedureParameterType
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'value': {'key': 'value', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        value: Optional[str] = None,
        type: Optional[Union[str, "StoredProcedureParameterType"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword value:
        :paramtype value: str
        :keyword type: Possible values include: "String", "Int", "Decimal", "Guid", "Boolean", "Date".
        :paramtype type: str or ~flow.models.StoredProcedureParameterType
        """
        super(StoredProcedureParameter, self).__init__(**kwargs)
        self.name = name
        self.value = value
        self.type = type


class Stream(msrest.serialization.Model):
    """Stream.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar can_read:
    :vartype can_read: bool
    :ivar can_write:
    :vartype can_write: bool
    :ivar can_seek:
    :vartype can_seek: bool
    :ivar can_timeout:
    :vartype can_timeout: bool
    :ivar length:
    :vartype length: long
    :ivar position:
    :vartype position: long
    :ivar read_timeout:
    :vartype read_timeout: int
    :ivar write_timeout:
    :vartype write_timeout: int
    """

    _validation = {
        'can_read': {'readonly': True},
        'can_write': {'readonly': True},
        'can_seek': {'readonly': True},
        'can_timeout': {'readonly': True},
        'length': {'readonly': True},
    }

    _attribute_map = {
        'can_read': {'key': 'canRead', 'type': 'bool'},
        'can_write': {'key': 'canWrite', 'type': 'bool'},
        'can_seek': {'key': 'canSeek', 'type': 'bool'},
        'can_timeout': {'key': 'canTimeout', 'type': 'bool'},
        'length': {'key': 'length', 'type': 'long'},
        'position': {'key': 'position', 'type': 'long'},
        'read_timeout': {'key': 'readTimeout', 'type': 'int'},
        'write_timeout': {'key': 'writeTimeout', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        position: Optional[int] = None,
        read_timeout: Optional[int] = None,
        write_timeout: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword position:
        :paramtype position: long
        :keyword read_timeout:
        :paramtype read_timeout: int
        :keyword write_timeout:
        :paramtype write_timeout: int
        """
        super(Stream, self).__init__(**kwargs)
        self.can_read = None
        self.can_write = None
        self.can_seek = None
        self.can_timeout = None
        self.length = None
        self.position = position
        self.read_timeout = read_timeout
        self.write_timeout = write_timeout


class StructuredInterface(msrest.serialization.Model):
    """StructuredInterface.

    :ivar command_line_pattern:
    :vartype command_line_pattern: str
    :ivar inputs:
    :vartype inputs: list[~flow.models.StructuredInterfaceInput]
    :ivar outputs:
    :vartype outputs: list[~flow.models.StructuredInterfaceOutput]
    :ivar control_outputs:
    :vartype control_outputs: list[~flow.models.ControlOutput]
    :ivar parameters:
    :vartype parameters: list[~flow.models.StructuredInterfaceParameter]
    :ivar metadata_parameters:
    :vartype metadata_parameters: list[~flow.models.StructuredInterfaceParameter]
    :ivar arguments:
    :vartype arguments: list[~flow.models.ArgumentAssignment]
    """

    _attribute_map = {
        'command_line_pattern': {'key': 'commandLinePattern', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '[StructuredInterfaceInput]'},
        'outputs': {'key': 'outputs', 'type': '[StructuredInterfaceOutput]'},
        'control_outputs': {'key': 'controlOutputs', 'type': '[ControlOutput]'},
        'parameters': {'key': 'parameters', 'type': '[StructuredInterfaceParameter]'},
        'metadata_parameters': {'key': 'metadataParameters', 'type': '[StructuredInterfaceParameter]'},
        'arguments': {'key': 'arguments', 'type': '[ArgumentAssignment]'},
    }

    def __init__(
        self,
        *,
        command_line_pattern: Optional[str] = None,
        inputs: Optional[List["StructuredInterfaceInput"]] = None,
        outputs: Optional[List["StructuredInterfaceOutput"]] = None,
        control_outputs: Optional[List["ControlOutput"]] = None,
        parameters: Optional[List["StructuredInterfaceParameter"]] = None,
        metadata_parameters: Optional[List["StructuredInterfaceParameter"]] = None,
        arguments: Optional[List["ArgumentAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword command_line_pattern:
        :paramtype command_line_pattern: str
        :keyword inputs:
        :paramtype inputs: list[~flow.models.StructuredInterfaceInput]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.StructuredInterfaceOutput]
        :keyword control_outputs:
        :paramtype control_outputs: list[~flow.models.ControlOutput]
        :keyword parameters:
        :paramtype parameters: list[~flow.models.StructuredInterfaceParameter]
        :keyword metadata_parameters:
        :paramtype metadata_parameters: list[~flow.models.StructuredInterfaceParameter]
        :keyword arguments:
        :paramtype arguments: list[~flow.models.ArgumentAssignment]
        """
        super(StructuredInterface, self).__init__(**kwargs)
        self.command_line_pattern = command_line_pattern
        self.inputs = inputs
        self.outputs = outputs
        self.control_outputs = control_outputs
        self.parameters = parameters
        self.metadata_parameters = metadata_parameters
        self.arguments = arguments


class StructuredInterfaceInput(msrest.serialization.Model):
    """StructuredInterfaceInput.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar data_type_ids_list:
    :vartype data_type_ids_list: list[str]
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar description:
    :vartype description: str
    :ivar skip_processing:
    :vartype skip_processing: bool
    :ivar is_resource:
    :vartype is_resource: bool
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar dataset_types:
    :vartype dataset_types: list[str or ~flow.models.DatasetType]
    """

    _validation = {
        'dataset_types': {'unique': True},
    }

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'data_type_ids_list': {'key': 'dataTypeIdsList', 'type': '[str]'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'skip_processing': {'key': 'skipProcessing', 'type': 'bool'},
        'is_resource': {'key': 'isResource', 'type': 'bool'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'dataset_types': {'key': 'datasetTypes', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        data_type_ids_list: Optional[List[str]] = None,
        is_optional: Optional[bool] = None,
        description: Optional[str] = None,
        skip_processing: Optional[bool] = None,
        is_resource: Optional[bool] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        dataset_types: Optional[List[Union[str, "DatasetType"]]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword data_type_ids_list:
        :paramtype data_type_ids_list: list[str]
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword description:
        :paramtype description: str
        :keyword skip_processing:
        :paramtype skip_processing: bool
        :keyword is_resource:
        :paramtype is_resource: bool
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword dataset_types:
        :paramtype dataset_types: list[str or ~flow.models.DatasetType]
        """
        super(StructuredInterfaceInput, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.data_type_ids_list = data_type_ids_list
        self.is_optional = is_optional
        self.description = description
        self.skip_processing = skip_processing
        self.is_resource = is_resource
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.dataset_types = dataset_types


class StructuredInterfaceOutput(msrest.serialization.Model):
    """StructuredInterfaceOutput.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar data_type_id:
    :vartype data_type_id: str
    :ivar pass_through_data_type_input_name:
    :vartype pass_through_data_type_input_name: str
    :ivar description:
    :vartype description: str
    :ivar skip_processing:
    :vartype skip_processing: bool
    :ivar is_artifact:
    :vartype is_artifact: bool
    :ivar data_store_name:
    :vartype data_store_name: str
    :ivar data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
     "Direct", "Hdfs", "Link".
    :vartype data_store_mode: str or ~flow.models.AEVADataStoreMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    :ivar overwrite:
    :vartype overwrite: bool
    :ivar data_reference_name:
    :vartype data_reference_name: str
    :ivar training_output:
    :vartype training_output: ~flow.models.TrainingOutput
    :ivar dataset_output:
    :vartype dataset_output: ~flow.models.DatasetOutput
    :ivar asset_output_settings:
    :vartype asset_output_settings: ~flow.models.AssetOutputSettings
    :ivar early_available:
    :vartype early_available: bool
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'data_type_id': {'key': 'dataTypeId', 'type': 'str'},
        'pass_through_data_type_input_name': {'key': 'passThroughDataTypeInputName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'skip_processing': {'key': 'skipProcessing', 'type': 'bool'},
        'is_artifact': {'key': 'IsArtifact', 'type': 'bool'},
        'data_store_name': {'key': 'dataStoreName', 'type': 'str'},
        'data_store_mode': {'key': 'dataStoreMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'data_reference_name': {'key': 'dataReferenceName', 'type': 'str'},
        'training_output': {'key': 'trainingOutput', 'type': 'TrainingOutput'},
        'dataset_output': {'key': 'datasetOutput', 'type': 'DatasetOutput'},
        'asset_output_settings': {'key': 'AssetOutputSettings', 'type': 'AssetOutputSettings'},
        'early_available': {'key': 'EarlyAvailable', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        data_type_id: Optional[str] = None,
        pass_through_data_type_input_name: Optional[str] = None,
        description: Optional[str] = None,
        skip_processing: Optional[bool] = None,
        is_artifact: Optional[bool] = None,
        data_store_name: Optional[str] = None,
        data_store_mode: Optional[Union[str, "AEVADataStoreMode"]] = None,
        path_on_compute: Optional[str] = None,
        overwrite: Optional[bool] = None,
        data_reference_name: Optional[str] = None,
        training_output: Optional["TrainingOutput"] = None,
        dataset_output: Optional["DatasetOutput"] = None,
        asset_output_settings: Optional["AssetOutputSettings"] = None,
        early_available: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword data_type_id:
        :paramtype data_type_id: str
        :keyword pass_through_data_type_input_name:
        :paramtype pass_through_data_type_input_name: str
        :keyword description:
        :paramtype description: str
        :keyword skip_processing:
        :paramtype skip_processing: bool
        :keyword is_artifact:
        :paramtype is_artifact: bool
        :keyword data_store_name:
        :paramtype data_store_name: str
        :keyword data_store_mode: Possible values include: "None", "Mount", "Download", "Upload",
         "Direct", "Hdfs", "Link".
        :paramtype data_store_mode: str or ~flow.models.AEVADataStoreMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword data_reference_name:
        :paramtype data_reference_name: str
        :keyword training_output:
        :paramtype training_output: ~flow.models.TrainingOutput
        :keyword dataset_output:
        :paramtype dataset_output: ~flow.models.DatasetOutput
        :keyword asset_output_settings:
        :paramtype asset_output_settings: ~flow.models.AssetOutputSettings
        :keyword early_available:
        :paramtype early_available: bool
        """
        super(StructuredInterfaceOutput, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.data_type_id = data_type_id
        self.pass_through_data_type_input_name = pass_through_data_type_input_name
        self.description = description
        self.skip_processing = skip_processing
        self.is_artifact = is_artifact
        self.data_store_name = data_store_name
        self.data_store_mode = data_store_mode
        self.path_on_compute = path_on_compute
        self.overwrite = overwrite
        self.data_reference_name = data_reference_name
        self.training_output = training_output
        self.dataset_output = dataset_output
        self.asset_output_settings = asset_output_settings
        self.early_available = early_available


class StructuredInterfaceParameter(msrest.serialization.Model):
    """StructuredInterfaceParameter.

    :ivar name:
    :vartype name: str
    :ivar label:
    :vartype label: str
    :ivar parameter_type: Possible values include: "Int", "Double", "Bool", "String", "Undefined".
    :vartype parameter_type: str or ~flow.models.ParameterType
    :ivar is_optional:
    :vartype is_optional: bool
    :ivar default_value:
    :vartype default_value: str
    :ivar lower_bound:
    :vartype lower_bound: str
    :ivar upper_bound:
    :vartype upper_bound: str
    :ivar enum_values:
    :vartype enum_values: list[str]
    :ivar enum_values_to_argument_strings: This is a dictionary.
    :vartype enum_values_to_argument_strings: dict[str, str]
    :ivar description:
    :vartype description: str
    :ivar set_environment_variable:
    :vartype set_environment_variable: bool
    :ivar environment_variable_override:
    :vartype environment_variable_override: str
    :ivar enabled_by_parameter_name:
    :vartype enabled_by_parameter_name: str
    :ivar enabled_by_parameter_values:
    :vartype enabled_by_parameter_values: list[str]
    :ivar ui_hint:
    :vartype ui_hint: ~flow.models.UIParameterHint
    :ivar group_names:
    :vartype group_names: list[str]
    :ivar argument_name:
    :vartype argument_name: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'label': {'key': 'label', 'type': 'str'},
        'parameter_type': {'key': 'parameterType', 'type': 'str'},
        'is_optional': {'key': 'isOptional', 'type': 'bool'},
        'default_value': {'key': 'defaultValue', 'type': 'str'},
        'lower_bound': {'key': 'lowerBound', 'type': 'str'},
        'upper_bound': {'key': 'upperBound', 'type': 'str'},
        'enum_values': {'key': 'enumValues', 'type': '[str]'},
        'enum_values_to_argument_strings': {'key': 'enumValuesToArgumentStrings', 'type': '{str}'},
        'description': {'key': 'description', 'type': 'str'},
        'set_environment_variable': {'key': 'setEnvironmentVariable', 'type': 'bool'},
        'environment_variable_override': {'key': 'environmentVariableOverride', 'type': 'str'},
        'enabled_by_parameter_name': {'key': 'enabledByParameterName', 'type': 'str'},
        'enabled_by_parameter_values': {'key': 'enabledByParameterValues', 'type': '[str]'},
        'ui_hint': {'key': 'uiHint', 'type': 'UIParameterHint'},
        'group_names': {'key': 'groupNames', 'type': '[str]'},
        'argument_name': {'key': 'argumentName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        label: Optional[str] = None,
        parameter_type: Optional[Union[str, "ParameterType"]] = None,
        is_optional: Optional[bool] = None,
        default_value: Optional[str] = None,
        lower_bound: Optional[str] = None,
        upper_bound: Optional[str] = None,
        enum_values: Optional[List[str]] = None,
        enum_values_to_argument_strings: Optional[Dict[str, str]] = None,
        description: Optional[str] = None,
        set_environment_variable: Optional[bool] = None,
        environment_variable_override: Optional[str] = None,
        enabled_by_parameter_name: Optional[str] = None,
        enabled_by_parameter_values: Optional[List[str]] = None,
        ui_hint: Optional["UIParameterHint"] = None,
        group_names: Optional[List[str]] = None,
        argument_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword label:
        :paramtype label: str
        :keyword parameter_type: Possible values include: "Int", "Double", "Bool", "String",
         "Undefined".
        :paramtype parameter_type: str or ~flow.models.ParameterType
        :keyword is_optional:
        :paramtype is_optional: bool
        :keyword default_value:
        :paramtype default_value: str
        :keyword lower_bound:
        :paramtype lower_bound: str
        :keyword upper_bound:
        :paramtype upper_bound: str
        :keyword enum_values:
        :paramtype enum_values: list[str]
        :keyword enum_values_to_argument_strings: This is a dictionary.
        :paramtype enum_values_to_argument_strings: dict[str, str]
        :keyword description:
        :paramtype description: str
        :keyword set_environment_variable:
        :paramtype set_environment_variable: bool
        :keyword environment_variable_override:
        :paramtype environment_variable_override: str
        :keyword enabled_by_parameter_name:
        :paramtype enabled_by_parameter_name: str
        :keyword enabled_by_parameter_values:
        :paramtype enabled_by_parameter_values: list[str]
        :keyword ui_hint:
        :paramtype ui_hint: ~flow.models.UIParameterHint
        :keyword group_names:
        :paramtype group_names: list[str]
        :keyword argument_name:
        :paramtype argument_name: str
        """
        super(StructuredInterfaceParameter, self).__init__(**kwargs)
        self.name = name
        self.label = label
        self.parameter_type = parameter_type
        self.is_optional = is_optional
        self.default_value = default_value
        self.lower_bound = lower_bound
        self.upper_bound = upper_bound
        self.enum_values = enum_values
        self.enum_values_to_argument_strings = enum_values_to_argument_strings
        self.description = description
        self.set_environment_variable = set_environment_variable
        self.environment_variable_override = environment_variable_override
        self.enabled_by_parameter_name = enabled_by_parameter_name
        self.enabled_by_parameter_values = enabled_by_parameter_values
        self.ui_hint = ui_hint
        self.group_names = group_names
        self.argument_name = argument_name


class StudioMigrationInfo(msrest.serialization.Model):
    """StudioMigrationInfo.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar source_workspace_id:
    :vartype source_workspace_id: str
    :ivar source_experiment_id:
    :vartype source_experiment_id: str
    :ivar source_experiment_link:
    :vartype source_experiment_link: str
    :ivar failed_node_id_list:
    :vartype failed_node_id_list: list[str]
    :ivar error_message:
    :vartype error_message: str
    """

    _validation = {
        'error_message': {'readonly': True},
    }

    _attribute_map = {
        'source_workspace_id': {'key': 'sourceWorkspaceId', 'type': 'str'},
        'source_experiment_id': {'key': 'sourceExperimentId', 'type': 'str'},
        'source_experiment_link': {'key': 'sourceExperimentLink', 'type': 'str'},
        'failed_node_id_list': {'key': 'failedNodeIdList', 'type': '[str]'},
        'error_message': {'key': 'errorMessage', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        source_workspace_id: Optional[str] = None,
        source_experiment_id: Optional[str] = None,
        source_experiment_link: Optional[str] = None,
        failed_node_id_list: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword source_workspace_id:
        :paramtype source_workspace_id: str
        :keyword source_experiment_id:
        :paramtype source_experiment_id: str
        :keyword source_experiment_link:
        :paramtype source_experiment_link: str
        :keyword failed_node_id_list:
        :paramtype failed_node_id_list: list[str]
        """
        super(StudioMigrationInfo, self).__init__(**kwargs)
        self.source_workspace_id = source_workspace_id
        self.source_experiment_id = source_experiment_id
        self.source_experiment_link = source_experiment_link
        self.failed_node_id_list = failed_node_id_list
        self.error_message = None


class SubGraphConcatenateAssignment(msrest.serialization.Model):
    """SubGraphConcatenateAssignment.

    :ivar concatenate_parameter:
    :vartype concatenate_parameter: list[~flow.models.ParameterAssignment]
    :ivar parameter_assignments:
    :vartype parameter_assignments: ~flow.models.SubPipelineParameterAssignment
    """

    _attribute_map = {
        'concatenate_parameter': {'key': 'concatenateParameter', 'type': '[ParameterAssignment]'},
        'parameter_assignments': {'key': 'parameterAssignments', 'type': 'SubPipelineParameterAssignment'},
    }

    def __init__(
        self,
        *,
        concatenate_parameter: Optional[List["ParameterAssignment"]] = None,
        parameter_assignments: Optional["SubPipelineParameterAssignment"] = None,
        **kwargs
    ):
        """
        :keyword concatenate_parameter:
        :paramtype concatenate_parameter: list[~flow.models.ParameterAssignment]
        :keyword parameter_assignments:
        :paramtype parameter_assignments: ~flow.models.SubPipelineParameterAssignment
        """
        super(SubGraphConcatenateAssignment, self).__init__(**kwargs)
        self.concatenate_parameter = concatenate_parameter
        self.parameter_assignments = parameter_assignments


class SubGraphConfiguration(msrest.serialization.Model):
    """SubGraphConfiguration.

    :ivar graph_id:
    :vartype graph_id: str
    :ivar graph_draft_id:
    :vartype graph_draft_id: str
    :ivar default_cloud_priority:
    :vartype default_cloud_priority: ~flow.models.CloudPrioritySetting
    :ivar is_dynamic:
    :vartype is_dynamic: bool
    """

    _attribute_map = {
        'graph_id': {'key': 'graphId', 'type': 'str'},
        'graph_draft_id': {'key': 'graphDraftId', 'type': 'str'},
        'default_cloud_priority': {'key': 'DefaultCloudPriority', 'type': 'CloudPrioritySetting'},
        'is_dynamic': {'key': 'IsDynamic', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        graph_id: Optional[str] = None,
        graph_draft_id: Optional[str] = None,
        default_cloud_priority: Optional["CloudPrioritySetting"] = None,
        is_dynamic: Optional[bool] = False,
        **kwargs
    ):
        """
        :keyword graph_id:
        :paramtype graph_id: str
        :keyword graph_draft_id:
        :paramtype graph_draft_id: str
        :keyword default_cloud_priority:
        :paramtype default_cloud_priority: ~flow.models.CloudPrioritySetting
        :keyword is_dynamic:
        :paramtype is_dynamic: bool
        """
        super(SubGraphConfiguration, self).__init__(**kwargs)
        self.graph_id = graph_id
        self.graph_draft_id = graph_draft_id
        self.default_cloud_priority = default_cloud_priority
        self.is_dynamic = is_dynamic


class SubGraphConnectionInfo(msrest.serialization.Model):
    """SubGraphConnectionInfo.

    :ivar node_id:
    :vartype node_id: str
    :ivar port_name:
    :vartype port_name: str
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword port_name:
        :paramtype port_name: str
        """
        super(SubGraphConnectionInfo, self).__init__(**kwargs)
        self.node_id = node_id
        self.port_name = port_name


class SubGraphDataPathParameterAssignment(msrest.serialization.Model):
    """SubGraphDataPathParameterAssignment.

    :ivar data_set_path_parameter:
    :vartype data_set_path_parameter: ~flow.models.DataSetPathParameter
    :ivar data_set_path_parameter_assignments:
    :vartype data_set_path_parameter_assignments: list[str]
    """

    _attribute_map = {
        'data_set_path_parameter': {'key': 'dataSetPathParameter', 'type': 'DataSetPathParameter'},
        'data_set_path_parameter_assignments': {'key': 'dataSetPathParameterAssignments', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        data_set_path_parameter: Optional["DataSetPathParameter"] = None,
        data_set_path_parameter_assignments: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword data_set_path_parameter:
        :paramtype data_set_path_parameter: ~flow.models.DataSetPathParameter
        :keyword data_set_path_parameter_assignments:
        :paramtype data_set_path_parameter_assignments: list[str]
        """
        super(SubGraphDataPathParameterAssignment, self).__init__(**kwargs)
        self.data_set_path_parameter = data_set_path_parameter
        self.data_set_path_parameter_assignments = data_set_path_parameter_assignments


class SubGraphInfo(msrest.serialization.Model):
    """SubGraphInfo.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar default_compute_target:
    :vartype default_compute_target: ~flow.models.ComputeSetting
    :ivar default_data_store:
    :vartype default_data_store: ~flow.models.DatastoreSetting
    :ivar id:
    :vartype id: str
    :ivar parent_graph_id:
    :vartype parent_graph_id: str
    :ivar pipeline_definition_id:
    :vartype pipeline_definition_id: str
    :ivar sub_graph_parameter_assignment:
    :vartype sub_graph_parameter_assignment: list[~flow.models.SubGraphParameterAssignment]
    :ivar sub_graph_concatenate_assignment:
    :vartype sub_graph_concatenate_assignment: list[~flow.models.SubGraphConcatenateAssignment]
    :ivar sub_graph_data_path_parameter_assignment:
    :vartype sub_graph_data_path_parameter_assignment:
     list[~flow.models.SubGraphDataPathParameterAssignment]
    :ivar sub_graph_default_compute_target_nodes:
    :vartype sub_graph_default_compute_target_nodes: list[str]
    :ivar sub_graph_default_data_store_nodes:
    :vartype sub_graph_default_data_store_nodes: list[str]
    :ivar inputs:
    :vartype inputs: list[~flow.models.SubGraphPortInfo]
    :ivar outputs:
    :vartype outputs: list[~flow.models.SubGraphPortInfo]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'default_compute_target': {'key': 'defaultComputeTarget', 'type': 'ComputeSetting'},
        'default_data_store': {'key': 'defaultDataStore', 'type': 'DatastoreSetting'},
        'id': {'key': 'id', 'type': 'str'},
        'parent_graph_id': {'key': 'parentGraphId', 'type': 'str'},
        'pipeline_definition_id': {'key': 'pipelineDefinitionId', 'type': 'str'},
        'sub_graph_parameter_assignment': {'key': 'subGraphParameterAssignment', 'type': '[SubGraphParameterAssignment]'},
        'sub_graph_concatenate_assignment': {'key': 'subGraphConcatenateAssignment', 'type': '[SubGraphConcatenateAssignment]'},
        'sub_graph_data_path_parameter_assignment': {'key': 'subGraphDataPathParameterAssignment', 'type': '[SubGraphDataPathParameterAssignment]'},
        'sub_graph_default_compute_target_nodes': {'key': 'subGraphDefaultComputeTargetNodes', 'type': '[str]'},
        'sub_graph_default_data_store_nodes': {'key': 'subGraphDefaultDataStoreNodes', 'type': '[str]'},
        'inputs': {'key': 'inputs', 'type': '[SubGraphPortInfo]'},
        'outputs': {'key': 'outputs', 'type': '[SubGraphPortInfo]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        default_compute_target: Optional["ComputeSetting"] = None,
        default_data_store: Optional["DatastoreSetting"] = None,
        id: Optional[str] = None,
        parent_graph_id: Optional[str] = None,
        pipeline_definition_id: Optional[str] = None,
        sub_graph_parameter_assignment: Optional[List["SubGraphParameterAssignment"]] = None,
        sub_graph_concatenate_assignment: Optional[List["SubGraphConcatenateAssignment"]] = None,
        sub_graph_data_path_parameter_assignment: Optional[List["SubGraphDataPathParameterAssignment"]] = None,
        sub_graph_default_compute_target_nodes: Optional[List[str]] = None,
        sub_graph_default_data_store_nodes: Optional[List[str]] = None,
        inputs: Optional[List["SubGraphPortInfo"]] = None,
        outputs: Optional[List["SubGraphPortInfo"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword default_compute_target:
        :paramtype default_compute_target: ~flow.models.ComputeSetting
        :keyword default_data_store:
        :paramtype default_data_store: ~flow.models.DatastoreSetting
        :keyword id:
        :paramtype id: str
        :keyword parent_graph_id:
        :paramtype parent_graph_id: str
        :keyword pipeline_definition_id:
        :paramtype pipeline_definition_id: str
        :keyword sub_graph_parameter_assignment:
        :paramtype sub_graph_parameter_assignment: list[~flow.models.SubGraphParameterAssignment]
        :keyword sub_graph_concatenate_assignment:
        :paramtype sub_graph_concatenate_assignment: list[~flow.models.SubGraphConcatenateAssignment]
        :keyword sub_graph_data_path_parameter_assignment:
        :paramtype sub_graph_data_path_parameter_assignment:
         list[~flow.models.SubGraphDataPathParameterAssignment]
        :keyword sub_graph_default_compute_target_nodes:
        :paramtype sub_graph_default_compute_target_nodes: list[str]
        :keyword sub_graph_default_data_store_nodes:
        :paramtype sub_graph_default_data_store_nodes: list[str]
        :keyword inputs:
        :paramtype inputs: list[~flow.models.SubGraphPortInfo]
        :keyword outputs:
        :paramtype outputs: list[~flow.models.SubGraphPortInfo]
        """
        super(SubGraphInfo, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.default_compute_target = default_compute_target
        self.default_data_store = default_data_store
        self.id = id
        self.parent_graph_id = parent_graph_id
        self.pipeline_definition_id = pipeline_definition_id
        self.sub_graph_parameter_assignment = sub_graph_parameter_assignment
        self.sub_graph_concatenate_assignment = sub_graph_concatenate_assignment
        self.sub_graph_data_path_parameter_assignment = sub_graph_data_path_parameter_assignment
        self.sub_graph_default_compute_target_nodes = sub_graph_default_compute_target_nodes
        self.sub_graph_default_data_store_nodes = sub_graph_default_data_store_nodes
        self.inputs = inputs
        self.outputs = outputs


class SubGraphParameterAssignment(msrest.serialization.Model):
    """SubGraphParameterAssignment.

    :ivar parameter:
    :vartype parameter: ~flow.models.Parameter
    :ivar parameter_assignments:
    :vartype parameter_assignments: list[~flow.models.SubPipelineParameterAssignment]
    """

    _attribute_map = {
        'parameter': {'key': 'parameter', 'type': 'Parameter'},
        'parameter_assignments': {'key': 'parameterAssignments', 'type': '[SubPipelineParameterAssignment]'},
    }

    def __init__(
        self,
        *,
        parameter: Optional["Parameter"] = None,
        parameter_assignments: Optional[List["SubPipelineParameterAssignment"]] = None,
        **kwargs
    ):
        """
        :keyword parameter:
        :paramtype parameter: ~flow.models.Parameter
        :keyword parameter_assignments:
        :paramtype parameter_assignments: list[~flow.models.SubPipelineParameterAssignment]
        """
        super(SubGraphParameterAssignment, self).__init__(**kwargs)
        self.parameter = parameter
        self.parameter_assignments = parameter_assignments


class SubGraphPortInfo(msrest.serialization.Model):
    """SubGraphPortInfo.

    :ivar name:
    :vartype name: str
    :ivar internal:
    :vartype internal: list[~flow.models.SubGraphConnectionInfo]
    :ivar external:
    :vartype external: list[~flow.models.SubGraphConnectionInfo]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'internal': {'key': 'internal', 'type': '[SubGraphConnectionInfo]'},
        'external': {'key': 'external', 'type': '[SubGraphConnectionInfo]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        internal: Optional[List["SubGraphConnectionInfo"]] = None,
        external: Optional[List["SubGraphConnectionInfo"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword internal:
        :paramtype internal: list[~flow.models.SubGraphConnectionInfo]
        :keyword external:
        :paramtype external: list[~flow.models.SubGraphConnectionInfo]
        """
        super(SubGraphPortInfo, self).__init__(**kwargs)
        self.name = name
        self.internal = internal
        self.external = external


class SubmitBulkRunRequest(msrest.serialization.Model):
    """SubmitBulkRunRequest.

    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar flow_definition_resource_id:
    :vartype flow_definition_resource_id: str
    :ivar flow_definition_data_store_name:
    :vartype flow_definition_data_store_name: str
    :ivar flow_definition_blob_path:
    :vartype flow_definition_blob_path: str
    :ivar flow_definition_data_uri:
    :vartype flow_definition_data_uri: str
    :ivar run_id:
    :vartype run_id: str
    :ivar run_display_name:
    :vartype run_display_name: str
    :ivar run_experiment_name:
    :vartype run_experiment_name: str
    :ivar node_variant:
    :vartype node_variant: str
    :ivar variant_run_id:
    :vartype variant_run_id: str
    :ivar baseline_run_id:
    :vartype baseline_run_id: str
    :ivar session_id:
    :vartype session_id: str
    :ivar session_setup_mode: Possible values include: "ClientWait", "SystemWait".
    :vartype session_setup_mode: str or ~flow.models.SessionSetupModeEnum
    :ivar session_config_mode: Possible values include: "Default", "ForceInstallPackage",
     "ForceReset".
    :vartype session_config_mode: str or ~flow.models.SessionConfigModeEnum
    :ivar flow_lineage_id:
    :vartype flow_lineage_id: str
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'flow_definition_resource_id': {'key': 'flowDefinitionResourceId', 'type': 'str'},
        'flow_definition_data_store_name': {'key': 'flowDefinitionDataStoreName', 'type': 'str'},
        'flow_definition_blob_path': {'key': 'flowDefinitionBlobPath', 'type': 'str'},
        'flow_definition_data_uri': {'key': 'flowDefinitionDataUri', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'run_display_name': {'key': 'runDisplayName', 'type': 'str'},
        'run_experiment_name': {'key': 'runExperimentName', 'type': 'str'},
        'node_variant': {'key': 'nodeVariant', 'type': 'str'},
        'variant_run_id': {'key': 'variantRunId', 'type': 'str'},
        'baseline_run_id': {'key': 'baselineRunId', 'type': 'str'},
        'session_id': {'key': 'sessionId', 'type': 'str'},
        'session_setup_mode': {'key': 'sessionSetupMode', 'type': 'str'},
        'session_config_mode': {'key': 'sessionConfigMode', 'type': 'str'},
        'flow_lineage_id': {'key': 'flowLineageId', 'type': 'str'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        flow_definition_file_path: Optional[str] = None,
        flow_definition_resource_id: Optional[str] = None,
        flow_definition_data_store_name: Optional[str] = None,
        flow_definition_blob_path: Optional[str] = None,
        flow_definition_data_uri: Optional[str] = None,
        run_id: Optional[str] = None,
        run_display_name: Optional[str] = None,
        run_experiment_name: Optional[str] = None,
        node_variant: Optional[str] = None,
        variant_run_id: Optional[str] = None,
        baseline_run_id: Optional[str] = None,
        session_id: Optional[str] = None,
        session_setup_mode: Optional[Union[str, "SessionSetupModeEnum"]] = None,
        session_config_mode: Optional[Union[str, "SessionConfigModeEnum"]] = None,
        flow_lineage_id: Optional[str] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword flow_definition_resource_id:
        :paramtype flow_definition_resource_id: str
        :keyword flow_definition_data_store_name:
        :paramtype flow_definition_data_store_name: str
        :keyword flow_definition_blob_path:
        :paramtype flow_definition_blob_path: str
        :keyword flow_definition_data_uri:
        :paramtype flow_definition_data_uri: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword run_display_name:
        :paramtype run_display_name: str
        :keyword run_experiment_name:
        :paramtype run_experiment_name: str
        :keyword node_variant:
        :paramtype node_variant: str
        :keyword variant_run_id:
        :paramtype variant_run_id: str
        :keyword baseline_run_id:
        :paramtype baseline_run_id: str
        :keyword session_id:
        :paramtype session_id: str
        :keyword session_setup_mode: Possible values include: "ClientWait", "SystemWait".
        :paramtype session_setup_mode: str or ~flow.models.SessionSetupModeEnum
        :keyword session_config_mode: Possible values include: "Default", "ForceInstallPackage",
         "ForceReset".
        :paramtype session_config_mode: str or ~flow.models.SessionConfigModeEnum
        :keyword flow_lineage_id:
        :paramtype flow_lineage_id: str
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(SubmitBulkRunRequest, self).__init__(**kwargs)
        self.flow_definition_file_path = flow_definition_file_path
        self.flow_definition_resource_id = flow_definition_resource_id
        self.flow_definition_data_store_name = flow_definition_data_store_name
        self.flow_definition_blob_path = flow_definition_blob_path
        self.flow_definition_data_uri = flow_definition_data_uri
        self.run_id = run_id
        self.run_display_name = run_display_name
        self.run_experiment_name = run_experiment_name
        self.node_variant = node_variant
        self.variant_run_id = variant_run_id
        self.baseline_run_id = baseline_run_id
        self.session_id = session_id
        self.session_setup_mode = session_setup_mode
        self.session_config_mode = session_config_mode
        self.flow_lineage_id = flow_lineage_id
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class SubmitBulkRunResponse(msrest.serialization.Model):
    """SubmitBulkRunResponse.

    :ivar next_action_interval_in_seconds:
    :vartype next_action_interval_in_seconds: int
    :ivar action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
     "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
    :vartype action_type: str or ~flow.models.ActionType
    :ivar flow_runs:
    :vartype flow_runs: list[any]
    :ivar node_runs:
    :vartype node_runs: list[any]
    :ivar error_response: The error response.
    :vartype error_response: ~flow.models.ErrorResponse
    :ivar flow_name:
    :vartype flow_name: str
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar flow_graph:
    :vartype flow_graph: ~flow.models.FlowGraph
    :ivar flow_graph_layout:
    :vartype flow_graph_layout: ~flow.models.FlowGraphLayout
    :ivar flow_run_resource_id:
    :vartype flow_run_resource_id: str
    :ivar bulk_test_id:
    :vartype bulk_test_id: str
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar created_by:
    :vartype created_by: ~flow.models.SchemaContractsCreatedBy
    :ivar created_on:
    :vartype created_on: ~datetime.datetime
    :ivar flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
     "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
    :vartype flow_run_type: str or ~flow.models.FlowRunTypeEnum
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar aml_compute_name:
    :vartype aml_compute_name: str
    :ivar flow_run_logs: Dictionary of :code:`<string>`.
    :vartype flow_run_logs: dict[str, str]
    :ivar created_run_ids:
    :vartype created_run_ids: list[str]
    :ivar flow_test_mode: Possible values include: "Sync", "Async".
    :vartype flow_test_mode: str or ~flow.models.FlowTestMode
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar working_directory:
    :vartype working_directory: str
    :ivar flow_dag_file_relative_path:
    :vartype flow_dag_file_relative_path: str
    :ivar flow_snapshot_id:
    :vartype flow_snapshot_id: str
    :ivar variant_run_to_evaluation_runs_id_mapping: Dictionary of
     <components·1mlssi7·schemas·submitbulkrunresponse·properties·variantruntoevaluationrunsidmapping·additionalproperties>.
    :vartype variant_run_to_evaluation_runs_id_mapping: dict[str, list[str]]
    """

    _attribute_map = {
        'next_action_interval_in_seconds': {'key': 'nextActionIntervalInSeconds', 'type': 'int'},
        'action_type': {'key': 'actionType', 'type': 'str'},
        'flow_runs': {'key': 'flow_runs', 'type': '[object]'},
        'node_runs': {'key': 'node_runs', 'type': '[object]'},
        'error_response': {'key': 'errorResponse', 'type': 'ErrorResponse'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'flow_graph': {'key': 'flowGraph', 'type': 'FlowGraph'},
        'flow_graph_layout': {'key': 'flowGraphLayout', 'type': 'FlowGraphLayout'},
        'flow_run_resource_id': {'key': 'flowRunResourceId', 'type': 'str'},
        'bulk_test_id': {'key': 'bulkTestId', 'type': 'str'},
        'batch_inputs': {'key': 'batchInputs', 'type': '[{object}]'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'created_by': {'key': 'createdBy', 'type': 'SchemaContractsCreatedBy'},
        'created_on': {'key': 'createdOn', 'type': 'iso-8601'},
        'flow_run_type': {'key': 'flowRunType', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'aml_compute_name': {'key': 'amlComputeName', 'type': 'str'},
        'flow_run_logs': {'key': 'flowRunLogs', 'type': '{str}'},
        'created_run_ids': {'key': 'createdRunIds', 'type': '[str]'},
        'flow_test_mode': {'key': 'flowTestMode', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'working_directory': {'key': 'workingDirectory', 'type': 'str'},
        'flow_dag_file_relative_path': {'key': 'flowDagFileRelativePath', 'type': 'str'},
        'flow_snapshot_id': {'key': 'flowSnapshotId', 'type': 'str'},
        'variant_run_to_evaluation_runs_id_mapping': {'key': 'variantRunToEvaluationRunsIdMapping', 'type': '{[str]}'},
    }

    def __init__(
        self,
        *,
        next_action_interval_in_seconds: Optional[int] = None,
        action_type: Optional[Union[str, "ActionType"]] = None,
        flow_runs: Optional[List[Any]] = None,
        node_runs: Optional[List[Any]] = None,
        error_response: Optional["ErrorResponse"] = None,
        flow_name: Optional[str] = None,
        flow_run_display_name: Optional[str] = None,
        flow_run_id: Optional[str] = None,
        flow_graph: Optional["FlowGraph"] = None,
        flow_graph_layout: Optional["FlowGraphLayout"] = None,
        flow_run_resource_id: Optional[str] = None,
        bulk_test_id: Optional[str] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        created_by: Optional["SchemaContractsCreatedBy"] = None,
        created_on: Optional[datetime.datetime] = None,
        flow_run_type: Optional[Union[str, "FlowRunTypeEnum"]] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        runtime_name: Optional[str] = None,
        aml_compute_name: Optional[str] = None,
        flow_run_logs: Optional[Dict[str, str]] = None,
        created_run_ids: Optional[List[str]] = None,
        flow_test_mode: Optional[Union[str, "FlowTestMode"]] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        working_directory: Optional[str] = None,
        flow_dag_file_relative_path: Optional[str] = None,
        flow_snapshot_id: Optional[str] = None,
        variant_run_to_evaluation_runs_id_mapping: Optional[Dict[str, List[str]]] = None,
        **kwargs
    ):
        """
        :keyword next_action_interval_in_seconds:
        :paramtype next_action_interval_in_seconds: int
        :keyword action_type: Possible values include: "SendValidationRequest", "GetValidationStatus",
         "SubmitBulkRun", "LogRunResult", "LogRunTerminatedEvent", "SubmitFlowRun".
        :paramtype action_type: str or ~flow.models.ActionType
        :keyword flow_runs:
        :paramtype flow_runs: list[any]
        :keyword node_runs:
        :paramtype node_runs: list[any]
        :keyword error_response: The error response.
        :paramtype error_response: ~flow.models.ErrorResponse
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword flow_graph:
        :paramtype flow_graph: ~flow.models.FlowGraph
        :keyword flow_graph_layout:
        :paramtype flow_graph_layout: ~flow.models.FlowGraphLayout
        :keyword flow_run_resource_id:
        :paramtype flow_run_resource_id: str
        :keyword bulk_test_id:
        :paramtype bulk_test_id: str
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword created_by:
        :paramtype created_by: ~flow.models.SchemaContractsCreatedBy
        :keyword created_on:
        :paramtype created_on: ~datetime.datetime
        :keyword flow_run_type: Possible values include: "FlowRun", "EvaluationRun",
         "PairwiseEvaluationRun", "SingleNodeRun", "FromNodeRun", "ChatGroupRun".
        :paramtype flow_run_type: str or ~flow.models.FlowRunTypeEnum
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword aml_compute_name:
        :paramtype aml_compute_name: str
        :keyword flow_run_logs: Dictionary of :code:`<string>`.
        :paramtype flow_run_logs: dict[str, str]
        :keyword created_run_ids:
        :paramtype created_run_ids: list[str]
        :keyword flow_test_mode: Possible values include: "Sync", "Async".
        :paramtype flow_test_mode: str or ~flow.models.FlowTestMode
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword working_directory:
        :paramtype working_directory: str
        :keyword flow_dag_file_relative_path:
        :paramtype flow_dag_file_relative_path: str
        :keyword flow_snapshot_id:
        :paramtype flow_snapshot_id: str
        :keyword variant_run_to_evaluation_runs_id_mapping: Dictionary of
         <components·1mlssi7·schemas·submitbulkrunresponse·properties·variantruntoevaluationrunsidmapping·additionalproperties>.
        :paramtype variant_run_to_evaluation_runs_id_mapping: dict[str, list[str]]
        """
        super(SubmitBulkRunResponse, self).__init__(**kwargs)
        self.next_action_interval_in_seconds = next_action_interval_in_seconds
        self.action_type = action_type
        self.flow_runs = flow_runs
        self.node_runs = node_runs
        self.error_response = error_response
        self.flow_name = flow_name
        self.flow_run_display_name = flow_run_display_name
        self.flow_run_id = flow_run_id
        self.flow_graph = flow_graph
        self.flow_graph_layout = flow_graph_layout
        self.flow_run_resource_id = flow_run_resource_id
        self.bulk_test_id = bulk_test_id
        self.batch_inputs = batch_inputs
        self.batch_data_input = batch_data_input
        self.created_by = created_by
        self.created_on = created_on
        self.flow_run_type = flow_run_type
        self.flow_type = flow_type
        self.runtime_name = runtime_name
        self.aml_compute_name = aml_compute_name
        self.flow_run_logs = flow_run_logs
        self.created_run_ids = created_run_ids
        self.flow_test_mode = flow_test_mode
        self.flow_test_infos = flow_test_infos
        self.working_directory = working_directory
        self.flow_dag_file_relative_path = flow_dag_file_relative_path
        self.flow_snapshot_id = flow_snapshot_id
        self.variant_run_to_evaluation_runs_id_mapping = variant_run_to_evaluation_runs_id_mapping


class SubmitExperimentRequest(msrest.serialization.Model):
    """SubmitExperimentRequest.

    :ivar experiment_template_id:
    :vartype experiment_template_id: str
    :ivar experiment_definition_source:
    :vartype experiment_definition_source: ~flow.models.ExperimentDefinitionSource
    """

    _attribute_map = {
        'experiment_template_id': {'key': 'experimentTemplateId', 'type': 'str'},
        'experiment_definition_source': {'key': 'experimentDefinitionSource', 'type': 'ExperimentDefinitionSource'},
    }

    def __init__(
        self,
        *,
        experiment_template_id: Optional[str] = None,
        experiment_definition_source: Optional["ExperimentDefinitionSource"] = None,
        **kwargs
    ):
        """
        :keyword experiment_template_id:
        :paramtype experiment_template_id: str
        :keyword experiment_definition_source:
        :paramtype experiment_definition_source: ~flow.models.ExperimentDefinitionSource
        """
        super(SubmitExperimentRequest, self).__init__(**kwargs)
        self.experiment_template_id = experiment_template_id
        self.experiment_definition_source = experiment_definition_source


class SubmitFlowRequest(msrest.serialization.Model):
    """SubmitFlowRequest.

    :ivar flow_run_id:
    :vartype flow_run_id: str
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar flow_id:
    :vartype flow_id: str
    :ivar flow:
    :vartype flow: ~flow.models.Flow
    :ivar flow_submit_run_settings:
    :vartype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
    :ivar async_submission:
    :vartype async_submission: bool
    :ivar use_workspace_connection:
    :vartype use_workspace_connection: bool
    :ivar enable_async_flow_test:
    :vartype enable_async_flow_test: bool
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    """

    _attribute_map = {
        'flow_run_id': {'key': 'flowRunId', 'type': 'str'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'flow_id': {'key': 'flowId', 'type': 'str'},
        'flow': {'key': 'flow', 'type': 'Flow'},
        'flow_submit_run_settings': {'key': 'flowSubmitRunSettings', 'type': 'FlowSubmitRunSettings'},
        'async_submission': {'key': 'asyncSubmission', 'type': 'bool'},
        'use_workspace_connection': {'key': 'useWorkspaceConnection', 'type': 'bool'},
        'enable_async_flow_test': {'key': 'enableAsyncFlowTest', 'type': 'bool'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        flow_run_id: Optional[str] = None,
        flow_run_display_name: Optional[str] = None,
        flow_id: Optional[str] = None,
        flow: Optional["Flow"] = None,
        flow_submit_run_settings: Optional["FlowSubmitRunSettings"] = None,
        async_submission: Optional[bool] = None,
        use_workspace_connection: Optional[bool] = None,
        enable_async_flow_test: Optional[bool] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        **kwargs
    ):
        """
        :keyword flow_run_id:
        :paramtype flow_run_id: str
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword flow_id:
        :paramtype flow_id: str
        :keyword flow:
        :paramtype flow: ~flow.models.Flow
        :keyword flow_submit_run_settings:
        :paramtype flow_submit_run_settings: ~flow.models.FlowSubmitRunSettings
        :keyword async_submission:
        :paramtype async_submission: bool
        :keyword use_workspace_connection:
        :paramtype use_workspace_connection: bool
        :keyword enable_async_flow_test:
        :paramtype enable_async_flow_test: bool
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        """
        super(SubmitFlowRequest, self).__init__(**kwargs)
        self.flow_run_id = flow_run_id
        self.flow_run_display_name = flow_run_display_name
        self.flow_id = flow_id
        self.flow = flow
        self.flow_submit_run_settings = flow_submit_run_settings
        self.async_submission = async_submission
        self.use_workspace_connection = use_workspace_connection
        self.enable_async_flow_test = enable_async_flow_test
        self.run_display_name_generation_type = run_display_name_generation_type


class SubmitPipelineRunRequest(msrest.serialization.Model):
    """SubmitPipelineRunRequest.

    :ivar compute_target:
    :vartype compute_target: str
    :ivar flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
    :vartype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
    :ivar step_tags: This is a dictionary.
    :vartype step_tags: dict[str, str]
    :ivar experiment_name:
    :vartype experiment_name: str
    :ivar pipeline_parameters: This is a dictionary.
    :vartype pipeline_parameters: dict[str, str]
    :ivar data_path_assignments: This is a dictionary.
    :vartype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
    :ivar data_set_definition_value_assignments: This is a dictionary.
    :vartype data_set_definition_value_assignments: dict[str, ~flow.models.DataSetDefinitionValue]
    :ivar asset_output_settings_assignments: This is a dictionary.
    :vartype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
    :ivar enable_notification:
    :vartype enable_notification: bool
    :ivar sub_pipelines_info:
    :vartype sub_pipelines_info: ~flow.models.SubPipelinesInfo
    :ivar display_name:
    :vartype display_name: str
    :ivar run_id:
    :vartype run_id: str
    :ivar parent_run_id:
    :vartype parent_run_id: str
    :ivar graph:
    :vartype graph: ~flow.models.GraphDraftEntity
    :ivar pipeline_run_settings:
    :vartype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
    :ivar module_node_run_settings:
    :vartype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
    :ivar module_node_ui_input_settings:
    :vartype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar continue_run_on_step_failure:
    :vartype continue_run_on_step_failure: bool
    :ivar description:
    :vartype description: str
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar enforce_rerun:
    :vartype enforce_rerun: bool
    :ivar dataset_access_modes: Possible values include: "Default", "DatasetInDpv2", "AssetInDpv2",
     "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
     "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
     "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
    :vartype dataset_access_modes: str or ~flow.models.DatasetAccessModes
    """

    _attribute_map = {
        'compute_target': {'key': 'computeTarget', 'type': 'str'},
        'flattened_sub_graphs': {'key': 'flattenedSubGraphs', 'type': '{PipelineSubDraft}'},
        'step_tags': {'key': 'stepTags', 'type': '{str}'},
        'experiment_name': {'key': 'experimentName', 'type': 'str'},
        'pipeline_parameters': {'key': 'pipelineParameters', 'type': '{str}'},
        'data_path_assignments': {'key': 'dataPathAssignments', 'type': '{LegacyDataPath}'},
        'data_set_definition_value_assignments': {'key': 'dataSetDefinitionValueAssignments', 'type': '{DataSetDefinitionValue}'},
        'asset_output_settings_assignments': {'key': 'assetOutputSettingsAssignments', 'type': '{AssetOutputSettings}'},
        'enable_notification': {'key': 'enableNotification', 'type': 'bool'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'display_name': {'key': 'displayName', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'parent_run_id': {'key': 'parentRunId', 'type': 'str'},
        'graph': {'key': 'graph', 'type': 'GraphDraftEntity'},
        'pipeline_run_settings': {'key': 'pipelineRunSettings', 'type': '[RunSettingParameterAssignment]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'module_node_ui_input_settings': {'key': 'moduleNodeUIInputSettings', 'type': '[GraphModuleNodeUIInputSetting]'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'continue_run_on_step_failure': {'key': 'continueRunOnStepFailure', 'type': 'bool'},
        'description': {'key': 'description', 'type': 'str'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'enforce_rerun': {'key': 'enforceRerun', 'type': 'bool'},
        'dataset_access_modes': {'key': 'datasetAccessModes', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        compute_target: Optional[str] = None,
        flattened_sub_graphs: Optional[Dict[str, "PipelineSubDraft"]] = None,
        step_tags: Optional[Dict[str, str]] = None,
        experiment_name: Optional[str] = None,
        pipeline_parameters: Optional[Dict[str, str]] = None,
        data_path_assignments: Optional[Dict[str, "LegacyDataPath"]] = None,
        data_set_definition_value_assignments: Optional[Dict[str, "DataSetDefinitionValue"]] = None,
        asset_output_settings_assignments: Optional[Dict[str, "AssetOutputSettings"]] = None,
        enable_notification: Optional[bool] = None,
        sub_pipelines_info: Optional["SubPipelinesInfo"] = None,
        display_name: Optional[str] = None,
        run_id: Optional[str] = None,
        parent_run_id: Optional[str] = None,
        graph: Optional["GraphDraftEntity"] = None,
        pipeline_run_settings: Optional[List["RunSettingParameterAssignment"]] = None,
        module_node_run_settings: Optional[List["GraphModuleNodeRunSetting"]] = None,
        module_node_ui_input_settings: Optional[List["GraphModuleNodeUIInputSetting"]] = None,
        tags: Optional[Dict[str, str]] = None,
        continue_run_on_step_failure: Optional[bool] = None,
        description: Optional[str] = None,
        properties: Optional[Dict[str, str]] = None,
        enforce_rerun: Optional[bool] = None,
        dataset_access_modes: Optional[Union[str, "DatasetAccessModes"]] = None,
        **kwargs
    ):
        """
        :keyword compute_target:
        :paramtype compute_target: str
        :keyword flattened_sub_graphs: Dictionary of :code:`<PipelineSubDraft>`.
        :paramtype flattened_sub_graphs: dict[str, ~flow.models.PipelineSubDraft]
        :keyword step_tags: This is a dictionary.
        :paramtype step_tags: dict[str, str]
        :keyword experiment_name:
        :paramtype experiment_name: str
        :keyword pipeline_parameters: This is a dictionary.
        :paramtype pipeline_parameters: dict[str, str]
        :keyword data_path_assignments: This is a dictionary.
        :paramtype data_path_assignments: dict[str, ~flow.models.LegacyDataPath]
        :keyword data_set_definition_value_assignments: This is a dictionary.
        :paramtype data_set_definition_value_assignments: dict[str,
         ~flow.models.DataSetDefinitionValue]
        :keyword asset_output_settings_assignments: This is a dictionary.
        :paramtype asset_output_settings_assignments: dict[str, ~flow.models.AssetOutputSettings]
        :keyword enable_notification:
        :paramtype enable_notification: bool
        :keyword sub_pipelines_info:
        :paramtype sub_pipelines_info: ~flow.models.SubPipelinesInfo
        :keyword display_name:
        :paramtype display_name: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword parent_run_id:
        :paramtype parent_run_id: str
        :keyword graph:
        :paramtype graph: ~flow.models.GraphDraftEntity
        :keyword pipeline_run_settings:
        :paramtype pipeline_run_settings: list[~flow.models.RunSettingParameterAssignment]
        :keyword module_node_run_settings:
        :paramtype module_node_run_settings: list[~flow.models.GraphModuleNodeRunSetting]
        :keyword module_node_ui_input_settings:
        :paramtype module_node_ui_input_settings: list[~flow.models.GraphModuleNodeUIInputSetting]
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword continue_run_on_step_failure:
        :paramtype continue_run_on_step_failure: bool
        :keyword description:
        :paramtype description: str
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword enforce_rerun:
        :paramtype enforce_rerun: bool
        :keyword dataset_access_modes: Possible values include: "Default", "DatasetInDpv2",
         "AssetInDpv2", "DatasetInDesignerUI", "DatasetInDpv2WithDatasetInDesignerUI", "Dataset",
         "AssetInDpv2WithDatasetInDesignerUI", "DatasetAndAssetInDpv2WithDatasetInDesignerUI",
         "AssetInDesignerUI", "AssetInDpv2WithAssetInDesignerUI", "Asset".
        :paramtype dataset_access_modes: str or ~flow.models.DatasetAccessModes
        """
        super(SubmitPipelineRunRequest, self).__init__(**kwargs)
        self.compute_target = compute_target
        self.flattened_sub_graphs = flattened_sub_graphs
        self.step_tags = step_tags
        self.experiment_name = experiment_name
        self.pipeline_parameters = pipeline_parameters
        self.data_path_assignments = data_path_assignments
        self.data_set_definition_value_assignments = data_set_definition_value_assignments
        self.asset_output_settings_assignments = asset_output_settings_assignments
        self.enable_notification = enable_notification
        self.sub_pipelines_info = sub_pipelines_info
        self.display_name = display_name
        self.run_id = run_id
        self.parent_run_id = parent_run_id
        self.graph = graph
        self.pipeline_run_settings = pipeline_run_settings
        self.module_node_run_settings = module_node_run_settings
        self.module_node_ui_input_settings = module_node_ui_input_settings
        self.tags = tags
        self.continue_run_on_step_failure = continue_run_on_step_failure
        self.description = description
        self.properties = properties
        self.enforce_rerun = enforce_rerun
        self.dataset_access_modes = dataset_access_modes


class SubPipelineDefinition(msrest.serialization.Model):
    """SubPipelineDefinition.

    :ivar name:
    :vartype name: str
    :ivar description:
    :vartype description: str
    :ivar default_compute_target:
    :vartype default_compute_target: ~flow.models.ComputeSetting
    :ivar default_data_store:
    :vartype default_data_store: ~flow.models.DatastoreSetting
    :ivar pipeline_function_name:
    :vartype pipeline_function_name: str
    :ivar id:
    :vartype id: str
    :ivar parent_definition_id:
    :vartype parent_definition_id: str
    :ivar from_module_name:
    :vartype from_module_name: str
    :ivar parameter_list:
    :vartype parameter_list: list[~flow.models.Kwarg]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'default_compute_target': {'key': 'defaultComputeTarget', 'type': 'ComputeSetting'},
        'default_data_store': {'key': 'defaultDataStore', 'type': 'DatastoreSetting'},
        'pipeline_function_name': {'key': 'pipelineFunctionName', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'parent_definition_id': {'key': 'parentDefinitionId', 'type': 'str'},
        'from_module_name': {'key': 'fromModuleName', 'type': 'str'},
        'parameter_list': {'key': 'parameterList', 'type': '[Kwarg]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        default_compute_target: Optional["ComputeSetting"] = None,
        default_data_store: Optional["DatastoreSetting"] = None,
        pipeline_function_name: Optional[str] = None,
        id: Optional[str] = None,
        parent_definition_id: Optional[str] = None,
        from_module_name: Optional[str] = None,
        parameter_list: Optional[List["Kwarg"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword description:
        :paramtype description: str
        :keyword default_compute_target:
        :paramtype default_compute_target: ~flow.models.ComputeSetting
        :keyword default_data_store:
        :paramtype default_data_store: ~flow.models.DatastoreSetting
        :keyword pipeline_function_name:
        :paramtype pipeline_function_name: str
        :keyword id:
        :paramtype id: str
        :keyword parent_definition_id:
        :paramtype parent_definition_id: str
        :keyword from_module_name:
        :paramtype from_module_name: str
        :keyword parameter_list:
        :paramtype parameter_list: list[~flow.models.Kwarg]
        """
        super(SubPipelineDefinition, self).__init__(**kwargs)
        self.name = name
        self.description = description
        self.default_compute_target = default_compute_target
        self.default_data_store = default_data_store
        self.pipeline_function_name = pipeline_function_name
        self.id = id
        self.parent_definition_id = parent_definition_id
        self.from_module_name = from_module_name
        self.parameter_list = parameter_list


class SubPipelineParameterAssignment(msrest.serialization.Model):
    """SubPipelineParameterAssignment.

    :ivar node_id:
    :vartype node_id: str
    :ivar parameter_name:
    :vartype parameter_name: str
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        parameter_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword parameter_name:
        :paramtype parameter_name: str
        """
        super(SubPipelineParameterAssignment, self).__init__(**kwargs)
        self.node_id = node_id
        self.parameter_name = parameter_name


class SubPipelinesInfo(msrest.serialization.Model):
    """SubPipelinesInfo.

    :ivar sub_graph_info:
    :vartype sub_graph_info: list[~flow.models.SubGraphInfo]
    :ivar node_id_to_sub_graph_id_mapping: Dictionary of :code:`<string>`.
    :vartype node_id_to_sub_graph_id_mapping: dict[str, str]
    :ivar sub_pipeline_definition:
    :vartype sub_pipeline_definition: list[~flow.models.SubPipelineDefinition]
    """

    _attribute_map = {
        'sub_graph_info': {'key': 'subGraphInfo', 'type': '[SubGraphInfo]'},
        'node_id_to_sub_graph_id_mapping': {'key': 'nodeIdToSubGraphIdMapping', 'type': '{str}'},
        'sub_pipeline_definition': {'key': 'subPipelineDefinition', 'type': '[SubPipelineDefinition]'},
    }

    def __init__(
        self,
        *,
        sub_graph_info: Optional[List["SubGraphInfo"]] = None,
        node_id_to_sub_graph_id_mapping: Optional[Dict[str, str]] = None,
        sub_pipeline_definition: Optional[List["SubPipelineDefinition"]] = None,
        **kwargs
    ):
        """
        :keyword sub_graph_info:
        :paramtype sub_graph_info: list[~flow.models.SubGraphInfo]
        :keyword node_id_to_sub_graph_id_mapping: Dictionary of :code:`<string>`.
        :paramtype node_id_to_sub_graph_id_mapping: dict[str, str]
        :keyword sub_pipeline_definition:
        :paramtype sub_pipeline_definition: list[~flow.models.SubPipelineDefinition]
        """
        super(SubPipelinesInfo, self).__init__(**kwargs)
        self.sub_graph_info = sub_graph_info
        self.node_id_to_sub_graph_id_mapping = node_id_to_sub_graph_id_mapping
        self.sub_pipeline_definition = sub_pipeline_definition


class SubStatusPeriod(msrest.serialization.Model):
    """SubStatusPeriod.

    :ivar name:
    :vartype name: str
    :ivar sub_periods:
    :vartype sub_periods: list[~flow.models.SubStatusPeriod]
    :ivar start:
    :vartype start: long
    :ivar end:
    :vartype end: long
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'sub_periods': {'key': 'subPeriods', 'type': '[SubStatusPeriod]'},
        'start': {'key': 'start', 'type': 'long'},
        'end': {'key': 'end', 'type': 'long'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        sub_periods: Optional[List["SubStatusPeriod"]] = None,
        start: Optional[int] = None,
        end: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword sub_periods:
        :paramtype sub_periods: list[~flow.models.SubStatusPeriod]
        :keyword start:
        :paramtype start: long
        :keyword end:
        :paramtype end: long
        """
        super(SubStatusPeriod, self).__init__(**kwargs)
        self.name = name
        self.sub_periods = sub_periods
        self.start = start
        self.end = end


class SweepEarlyTerminationPolicy(msrest.serialization.Model):
    """SweepEarlyTerminationPolicy.

    :ivar policy_type: Possible values include: "Bandit", "MedianStopping", "TruncationSelection".
    :vartype policy_type: str or ~flow.models.EarlyTerminationPolicyType
    :ivar evaluation_interval:
    :vartype evaluation_interval: int
    :ivar delay_evaluation:
    :vartype delay_evaluation: int
    :ivar slack_factor:
    :vartype slack_factor: float
    :ivar slack_amount:
    :vartype slack_amount: float
    :ivar truncation_percentage:
    :vartype truncation_percentage: int
    """

    _attribute_map = {
        'policy_type': {'key': 'policyType', 'type': 'str'},
        'evaluation_interval': {'key': 'evaluationInterval', 'type': 'int'},
        'delay_evaluation': {'key': 'delayEvaluation', 'type': 'int'},
        'slack_factor': {'key': 'slackFactor', 'type': 'float'},
        'slack_amount': {'key': 'slackAmount', 'type': 'float'},
        'truncation_percentage': {'key': 'truncationPercentage', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        policy_type: Optional[Union[str, "EarlyTerminationPolicyType"]] = None,
        evaluation_interval: Optional[int] = None,
        delay_evaluation: Optional[int] = None,
        slack_factor: Optional[float] = None,
        slack_amount: Optional[float] = None,
        truncation_percentage: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword policy_type: Possible values include: "Bandit", "MedianStopping",
         "TruncationSelection".
        :paramtype policy_type: str or ~flow.models.EarlyTerminationPolicyType
        :keyword evaluation_interval:
        :paramtype evaluation_interval: int
        :keyword delay_evaluation:
        :paramtype delay_evaluation: int
        :keyword slack_factor:
        :paramtype slack_factor: float
        :keyword slack_amount:
        :paramtype slack_amount: float
        :keyword truncation_percentage:
        :paramtype truncation_percentage: int
        """
        super(SweepEarlyTerminationPolicy, self).__init__(**kwargs)
        self.policy_type = policy_type
        self.evaluation_interval = evaluation_interval
        self.delay_evaluation = delay_evaluation
        self.slack_factor = slack_factor
        self.slack_amount = slack_amount
        self.truncation_percentage = truncation_percentage


class SweepSettings(msrest.serialization.Model):
    """SweepSettings.

    :ivar limits:
    :vartype limits: ~flow.models.SweepSettingsLimits
    :ivar search_space:
    :vartype search_space: list[dict[str, str]]
    :ivar sampling_algorithm: Possible values include: "Random", "Grid", "Bayesian".
    :vartype sampling_algorithm: str or ~flow.models.SamplingAlgorithmType
    :ivar early_termination:
    :vartype early_termination: ~flow.models.SweepEarlyTerminationPolicy
    """

    _attribute_map = {
        'limits': {'key': 'limits', 'type': 'SweepSettingsLimits'},
        'search_space': {'key': 'searchSpace', 'type': '[{str}]'},
        'sampling_algorithm': {'key': 'samplingAlgorithm', 'type': 'str'},
        'early_termination': {'key': 'earlyTermination', 'type': 'SweepEarlyTerminationPolicy'},
    }

    def __init__(
        self,
        *,
        limits: Optional["SweepSettingsLimits"] = None,
        search_space: Optional[List[Dict[str, str]]] = None,
        sampling_algorithm: Optional[Union[str, "SamplingAlgorithmType"]] = None,
        early_termination: Optional["SweepEarlyTerminationPolicy"] = None,
        **kwargs
    ):
        """
        :keyword limits:
        :paramtype limits: ~flow.models.SweepSettingsLimits
        :keyword search_space:
        :paramtype search_space: list[dict[str, str]]
        :keyword sampling_algorithm: Possible values include: "Random", "Grid", "Bayesian".
        :paramtype sampling_algorithm: str or ~flow.models.SamplingAlgorithmType
        :keyword early_termination:
        :paramtype early_termination: ~flow.models.SweepEarlyTerminationPolicy
        """
        super(SweepSettings, self).__init__(**kwargs)
        self.limits = limits
        self.search_space = search_space
        self.sampling_algorithm = sampling_algorithm
        self.early_termination = early_termination


class SweepSettingsLimits(msrest.serialization.Model):
    """SweepSettingsLimits.

    :ivar max_total_trials:
    :vartype max_total_trials: int
    :ivar max_concurrent_trials:
    :vartype max_concurrent_trials: int
    """

    _attribute_map = {
        'max_total_trials': {'key': 'maxTotalTrials', 'type': 'int'},
        'max_concurrent_trials': {'key': 'maxConcurrentTrials', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        max_total_trials: Optional[int] = None,
        max_concurrent_trials: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword max_total_trials:
        :paramtype max_total_trials: int
        :keyword max_concurrent_trials:
        :paramtype max_concurrent_trials: int
        """
        super(SweepSettingsLimits, self).__init__(**kwargs)
        self.max_total_trials = max_total_trials
        self.max_concurrent_trials = max_concurrent_trials


class SystemData(msrest.serialization.Model):
    """SystemData.

    :ivar created_at:
    :vartype created_at: ~datetime.datetime
    :ivar created_by:
    :vartype created_by: str
    :ivar created_by_type: Possible values include: "User", "Application", "ManagedIdentity",
     "Key".
    :vartype created_by_type: str or ~flow.models.UserType
    :ivar last_modified_at:
    :vartype last_modified_at: ~datetime.datetime
    :ivar last_modified_by:
    :vartype last_modified_by: str
    :ivar last_modified_by_type: Possible values include: "User", "Application", "ManagedIdentity",
     "Key".
    :vartype last_modified_by_type: str or ~flow.models.UserType
    """

    _attribute_map = {
        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'created_by_type': {'key': 'createdByType', 'type': 'str'},
        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        created_at: Optional[datetime.datetime] = None,
        created_by: Optional[str] = None,
        created_by_type: Optional[Union[str, "UserType"]] = None,
        last_modified_at: Optional[datetime.datetime] = None,
        last_modified_by: Optional[str] = None,
        last_modified_by_type: Optional[Union[str, "UserType"]] = None,
        **kwargs
    ):
        """
        :keyword created_at:
        :paramtype created_at: ~datetime.datetime
        :keyword created_by:
        :paramtype created_by: str
        :keyword created_by_type: Possible values include: "User", "Application", "ManagedIdentity",
         "Key".
        :paramtype created_by_type: str or ~flow.models.UserType
        :keyword last_modified_at:
        :paramtype last_modified_at: ~datetime.datetime
        :keyword last_modified_by:
        :paramtype last_modified_by: str
        :keyword last_modified_by_type: Possible values include: "User", "Application",
         "ManagedIdentity", "Key".
        :paramtype last_modified_by_type: str or ~flow.models.UserType
        """
        super(SystemData, self).__init__(**kwargs)
        self.created_at = created_at
        self.created_by = created_by
        self.created_by_type = created_by_type
        self.last_modified_at = last_modified_at
        self.last_modified_by = last_modified_by
        self.last_modified_by_type = last_modified_by_type


class SystemMeta(msrest.serialization.Model):
    """SystemMeta.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar extra_hash:
    :vartype extra_hash: str
    :ivar content_hash:
    :vartype content_hash: str
    :ivar identifier_hashes:
    :vartype identifier_hashes: ~flow.models.SystemMetaIdentifierHashes
    :ivar extra_hashes:
    :vartype extra_hashes: ~flow.models.SystemMetaExtraHashes
    """

    _attribute_map = {
        'identifier_hash': {'key': 'identifierHash', 'type': 'str'},
        'extra_hash': {'key': 'extraHash', 'type': 'str'},
        'content_hash': {'key': 'contentHash', 'type': 'str'},
        'identifier_hashes': {'key': 'identifierHashes', 'type': 'SystemMetaIdentifierHashes'},
        'extra_hashes': {'key': 'extraHashes', 'type': 'SystemMetaExtraHashes'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        extra_hash: Optional[str] = None,
        content_hash: Optional[str] = None,
        identifier_hashes: Optional["SystemMetaIdentifierHashes"] = None,
        extra_hashes: Optional["SystemMetaExtraHashes"] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword extra_hash:
        :paramtype extra_hash: str
        :keyword content_hash:
        :paramtype content_hash: str
        :keyword identifier_hashes:
        :paramtype identifier_hashes: ~flow.models.SystemMetaIdentifierHashes
        :keyword extra_hashes:
        :paramtype extra_hashes: ~flow.models.SystemMetaExtraHashes
        """
        super(SystemMeta, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.extra_hash = extra_hash
        self.content_hash = content_hash
        self.identifier_hashes = identifier_hashes
        self.extra_hashes = extra_hashes


class SystemMetaExtraHashes(msrest.serialization.Model):
    """SystemMetaExtraHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(SystemMetaExtraHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class SystemMetaIdentifierHashes(msrest.serialization.Model):
    """SystemMetaIdentifierHashes.

    :ivar identifier_hash:
    :vartype identifier_hash: str
    :ivar identifier_hash_v2:
    :vartype identifier_hash_v2: str
    """

    _attribute_map = {
        'identifier_hash': {'key': 'IdentifierHash', 'type': 'str'},
        'identifier_hash_v2': {'key': 'IdentifierHashV2', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        identifier_hash: Optional[str] = None,
        identifier_hash_v2: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword identifier_hash:
        :paramtype identifier_hash: str
        :keyword identifier_hash_v2:
        :paramtype identifier_hash_v2: str
        """
        super(SystemMetaIdentifierHashes, self).__init__(**kwargs)
        self.identifier_hash = identifier_hash
        self.identifier_hash_v2 = identifier_hash_v2


class TargetLags(msrest.serialization.Model):
    """TargetLags.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.TargetLagsMode
    :ivar values:
    :vartype values: list[int]
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'values': {'key': 'values', 'type': '[int]'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "TargetLagsMode"]] = None,
        values: Optional[List[int]] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.TargetLagsMode
        :keyword values:
        :paramtype values: list[int]
        """
        super(TargetLags, self).__init__(**kwargs)
        self.mode = mode
        self.values = values


class TargetRollingWindowSize(msrest.serialization.Model):
    """TargetRollingWindowSize.

    :ivar mode: Possible values include: "Auto", "Custom".
    :vartype mode: str or ~flow.models.TargetRollingWindowSizeMode
    :ivar value:
    :vartype value: int
    """

    _attribute_map = {
        'mode': {'key': 'mode', 'type': 'str'},
        'value': {'key': 'value', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        mode: Optional[Union[str, "TargetRollingWindowSizeMode"]] = None,
        value: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword mode: Possible values include: "Auto", "Custom".
        :paramtype mode: str or ~flow.models.TargetRollingWindowSizeMode
        :keyword value:
        :paramtype value: int
        """
        super(TargetRollingWindowSize, self).__init__(**kwargs)
        self.mode = mode
        self.value = value


class TargetSelectorConfiguration(msrest.serialization.Model):
    """TargetSelectorConfiguration.

    :ivar low_priority_vm_tolerant:
    :vartype low_priority_vm_tolerant: bool
    :ivar cluster_block_list:
    :vartype cluster_block_list: list[str]
    :ivar compute_type:
    :vartype compute_type: str
    :ivar instance_type:
    :vartype instance_type: list[str]
    :ivar instance_types:
    :vartype instance_types: list[str]
    :ivar my_resource_only:
    :vartype my_resource_only: bool
    :ivar plan_id:
    :vartype plan_id: str
    :ivar plan_region_id:
    :vartype plan_region_id: str
    :ivar region:
    :vartype region: list[str]
    :ivar regions:
    :vartype regions: list[str]
    :ivar vc_block_list:
    :vartype vc_block_list: list[str]
    """

    _attribute_map = {
        'low_priority_vm_tolerant': {'key': 'lowPriorityVMTolerant', 'type': 'bool'},
        'cluster_block_list': {'key': 'clusterBlockList', 'type': '[str]'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
        'instance_type': {'key': 'instanceType', 'type': '[str]'},
        'instance_types': {'key': 'instanceTypes', 'type': '[str]'},
        'my_resource_only': {'key': 'myResourceOnly', 'type': 'bool'},
        'plan_id': {'key': 'planId', 'type': 'str'},
        'plan_region_id': {'key': 'planRegionId', 'type': 'str'},
        'region': {'key': 'region', 'type': '[str]'},
        'regions': {'key': 'regions', 'type': '[str]'},
        'vc_block_list': {'key': 'vcBlockList', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        low_priority_vm_tolerant: Optional[bool] = None,
        cluster_block_list: Optional[List[str]] = None,
        compute_type: Optional[str] = None,
        instance_type: Optional[List[str]] = None,
        instance_types: Optional[List[str]] = None,
        my_resource_only: Optional[bool] = None,
        plan_id: Optional[str] = None,
        plan_region_id: Optional[str] = None,
        region: Optional[List[str]] = None,
        regions: Optional[List[str]] = None,
        vc_block_list: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword low_priority_vm_tolerant:
        :paramtype low_priority_vm_tolerant: bool
        :keyword cluster_block_list:
        :paramtype cluster_block_list: list[str]
        :keyword compute_type:
        :paramtype compute_type: str
        :keyword instance_type:
        :paramtype instance_type: list[str]
        :keyword instance_types:
        :paramtype instance_types: list[str]
        :keyword my_resource_only:
        :paramtype my_resource_only: bool
        :keyword plan_id:
        :paramtype plan_id: str
        :keyword plan_region_id:
        :paramtype plan_region_id: str
        :keyword region:
        :paramtype region: list[str]
        :keyword regions:
        :paramtype regions: list[str]
        :keyword vc_block_list:
        :paramtype vc_block_list: list[str]
        """
        super(TargetSelectorConfiguration, self).__init__(**kwargs)
        self.low_priority_vm_tolerant = low_priority_vm_tolerant
        self.cluster_block_list = cluster_block_list
        self.compute_type = compute_type
        self.instance_type = instance_type
        self.instance_types = instance_types
        self.my_resource_only = my_resource_only
        self.plan_id = plan_id
        self.plan_region_id = plan_region_id
        self.region = region
        self.regions = regions
        self.vc_block_list = vc_block_list


class Task(msrest.serialization.Model):
    """Task.

    Variables are only populated by the server, and will be ignored when sending a request.

    :ivar id:
    :vartype id: int
    :ivar exception: Anything.
    :vartype exception: any
    :ivar status: Possible values include: "Created", "WaitingForActivation", "WaitingToRun",
     "Running", "WaitingForChildrenToComplete", "RanToCompletion", "Canceled", "Faulted".
    :vartype status: str or ~flow.models.TaskStatus
    :ivar is_canceled:
    :vartype is_canceled: bool
    :ivar is_completed:
    :vartype is_completed: bool
    :ivar is_completed_successfully:
    :vartype is_completed_successfully: bool
    :ivar creation_options: Possible values include: "None", "PreferFairness", "LongRunning",
     "AttachedToParent", "DenyChildAttach", "HideScheduler", "RunContinuationsAsynchronously".
    :vartype creation_options: str or ~flow.models.TaskCreationOptions
    :ivar async_state: Anything.
    :vartype async_state: any
    :ivar is_faulted:
    :vartype is_faulted: bool
    """

    _validation = {
        'id': {'readonly': True},
        'exception': {'readonly': True},
        'is_canceled': {'readonly': True},
        'is_completed': {'readonly': True},
        'is_completed_successfully': {'readonly': True},
        'async_state': {'readonly': True},
        'is_faulted': {'readonly': True},
    }

    _attribute_map = {
        'id': {'key': 'id', 'type': 'int'},
        'exception': {'key': 'exception', 'type': 'object'},
        'status': {'key': 'status', 'type': 'str'},
        'is_canceled': {'key': 'isCanceled', 'type': 'bool'},
        'is_completed': {'key': 'isCompleted', 'type': 'bool'},
        'is_completed_successfully': {'key': 'isCompletedSuccessfully', 'type': 'bool'},
        'creation_options': {'key': 'creationOptions', 'type': 'str'},
        'async_state': {'key': 'asyncState', 'type': 'object'},
        'is_faulted': {'key': 'isFaulted', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        status: Optional[Union[str, "TaskStatus"]] = None,
        creation_options: Optional[Union[str, "TaskCreationOptions"]] = None,
        **kwargs
    ):
        """
        :keyword status: Possible values include: "Created", "WaitingForActivation", "WaitingToRun",
         "Running", "WaitingForChildrenToComplete", "RanToCompletion", "Canceled", "Faulted".
        :paramtype status: str or ~flow.models.TaskStatus
        :keyword creation_options: Possible values include: "None", "PreferFairness", "LongRunning",
         "AttachedToParent", "DenyChildAttach", "HideScheduler", "RunContinuationsAsynchronously".
        :paramtype creation_options: str or ~flow.models.TaskCreationOptions
        """
        super(Task, self).__init__(**kwargs)
        self.id = None
        self.exception = None
        self.status = status
        self.is_canceled = None
        self.is_completed = None
        self.is_completed_successfully = None
        self.creation_options = creation_options
        self.async_state = None
        self.is_faulted = None


class TaskControlFlowInfo(msrest.serialization.Model):
    """TaskControlFlowInfo.

    :ivar control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
    :vartype control_flow_type: str or ~flow.models.ControlFlowType
    :ivar iteration_index:
    :vartype iteration_index: int
    :ivar item_name:
    :vartype item_name: str
    :ivar parameters_overwritten: Dictionary of :code:`<string>`.
    :vartype parameters_overwritten: dict[str, str]
    :ivar is_reused:
    :vartype is_reused: bool
    """

    _attribute_map = {
        'control_flow_type': {'key': 'controlFlowType', 'type': 'str'},
        'iteration_index': {'key': 'iterationIndex', 'type': 'int'},
        'item_name': {'key': 'itemName', 'type': 'str'},
        'parameters_overwritten': {'key': 'parametersOverwritten', 'type': '{str}'},
        'is_reused': {'key': 'isReused', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        control_flow_type: Optional[Union[str, "ControlFlowType"]] = None,
        iteration_index: Optional[int] = None,
        item_name: Optional[str] = None,
        parameters_overwritten: Optional[Dict[str, str]] = None,
        is_reused: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword control_flow_type: Possible values include: "None", "DoWhile", "ParallelFor".
        :paramtype control_flow_type: str or ~flow.models.ControlFlowType
        :keyword iteration_index:
        :paramtype iteration_index: int
        :keyword item_name:
        :paramtype item_name: str
        :keyword parameters_overwritten: Dictionary of :code:`<string>`.
        :paramtype parameters_overwritten: dict[str, str]
        :keyword is_reused:
        :paramtype is_reused: bool
        """
        super(TaskControlFlowInfo, self).__init__(**kwargs)
        self.control_flow_type = control_flow_type
        self.iteration_index = iteration_index
        self.item_name = item_name
        self.parameters_overwritten = parameters_overwritten
        self.is_reused = is_reused


class TaskReuseInfo(msrest.serialization.Model):
    """TaskReuseInfo.

    :ivar experiment_id:
    :vartype experiment_id: str
    :ivar pipeline_run_id:
    :vartype pipeline_run_id: str
    :ivar node_id:
    :vartype node_id: str
    :ivar request_id:
    :vartype request_id: str
    :ivar run_id:
    :vartype run_id: str
    :ivar node_start_time:
    :vartype node_start_time: ~datetime.datetime
    :ivar node_end_time:
    :vartype node_end_time: ~datetime.datetime
    """

    _attribute_map = {
        'experiment_id': {'key': 'experimentId', 'type': 'str'},
        'pipeline_run_id': {'key': 'pipelineRunId', 'type': 'str'},
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'request_id': {'key': 'requestId', 'type': 'str'},
        'run_id': {'key': 'runId', 'type': 'str'},
        'node_start_time': {'key': 'nodeStartTime', 'type': 'iso-8601'},
        'node_end_time': {'key': 'nodeEndTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        experiment_id: Optional[str] = None,
        pipeline_run_id: Optional[str] = None,
        node_id: Optional[str] = None,
        request_id: Optional[str] = None,
        run_id: Optional[str] = None,
        node_start_time: Optional[datetime.datetime] = None,
        node_end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword experiment_id:
        :paramtype experiment_id: str
        :keyword pipeline_run_id:
        :paramtype pipeline_run_id: str
        :keyword node_id:
        :paramtype node_id: str
        :keyword request_id:
        :paramtype request_id: str
        :keyword run_id:
        :paramtype run_id: str
        :keyword node_start_time:
        :paramtype node_start_time: ~datetime.datetime
        :keyword node_end_time:
        :paramtype node_end_time: ~datetime.datetime
        """
        super(TaskReuseInfo, self).__init__(**kwargs)
        self.experiment_id = experiment_id
        self.pipeline_run_id = pipeline_run_id
        self.node_id = node_id
        self.request_id = request_id
        self.run_id = run_id
        self.node_start_time = node_start_time
        self.node_end_time = node_end_time


class TensorflowConfiguration(msrest.serialization.Model):
    """TensorflowConfiguration.

    :ivar worker_count:
    :vartype worker_count: int
    :ivar parameter_server_count:
    :vartype parameter_server_count: int
    """

    _attribute_map = {
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'parameter_server_count': {'key': 'parameterServerCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        worker_count: Optional[int] = None,
        parameter_server_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword parameter_server_count:
        :paramtype parameter_server_count: int
        """
        super(TensorflowConfiguration, self).__init__(**kwargs)
        self.worker_count = worker_count
        self.parameter_server_count = parameter_server_count


class TestDataSettings(msrest.serialization.Model):
    """TestDataSettings.

    :ivar test_data_size:
    :vartype test_data_size: float
    """

    _attribute_map = {
        'test_data_size': {'key': 'testDataSize', 'type': 'float'},
    }

    def __init__(
        self,
        *,
        test_data_size: Optional[float] = None,
        **kwargs
    ):
        """
        :keyword test_data_size:
        :paramtype test_data_size: float
        """
        super(TestDataSettings, self).__init__(**kwargs)
        self.test_data_size = test_data_size


class Tool(msrest.serialization.Model):
    """Tool.

    :ivar name:
    :vartype name: str
    :ivar type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
     "csharp", "typescript".
    :vartype type: str or ~flow.models.ToolType
    :ivar inputs: This is a dictionary.
    :vartype inputs: dict[str, ~flow.models.InputDefinition]
    :ivar outputs: This is a dictionary.
    :vartype outputs: dict[str, ~flow.models.OutputDefinition]
    :ivar description: Anything.
    :vartype description: any
    :ivar connection_type:
    :vartype connection_type: list[str or ~flow.models.ConnectionType]
    :ivar module:
    :vartype module: str
    :ivar class_name:
    :vartype class_name: str
    :ivar source:
    :vartype source: str
    :ivar lkg_code:
    :vartype lkg_code: str
    :ivar code:
    :vartype code: str
    :ivar function:
    :vartype function: str
    :ivar action_type:
    :vartype action_type: str
    :ivar provider_config: This is a dictionary.
    :vartype provider_config: dict[str, ~flow.models.InputDefinition]
    :ivar function_config: This is a dictionary.
    :vartype function_config: dict[str, ~flow.models.InputDefinition]
    :ivar icon: Anything.
    :vartype icon: any
    :ivar category:
    :vartype category: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, any]
    :ivar is_builtin:
    :vartype is_builtin: bool
    :ivar package:
    :vartype package: str
    :ivar package_version:
    :vartype package_version: str
    :ivar default_prompt:
    :vartype default_prompt: str
    :ivar enable_kwargs:
    :vartype enable_kwargs: bool
    :ivar deprecated_tools:
    :vartype deprecated_tools: list[str]
    :ivar tool_state: Possible values include: "Stable", "Preview", "Deprecated", "Archived".
    :vartype tool_state: str or ~flow.models.ToolState
    :ivar groups:
    :vartype groups: list[~flow.models.GroupDefinition]
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'inputs': {'key': 'inputs', 'type': '{InputDefinition}'},
        'outputs': {'key': 'outputs', 'type': '{OutputDefinition}'},
        'description': {'key': 'description', 'type': 'object'},
        'connection_type': {'key': 'connection_type', 'type': '[str]'},
        'module': {'key': 'module', 'type': 'str'},
        'class_name': {'key': 'class_name', 'type': 'str'},
        'source': {'key': 'source', 'type': 'str'},
        'lkg_code': {'key': 'lkgCode', 'type': 'str'},
        'code': {'key': 'code', 'type': 'str'},
        'function': {'key': 'function', 'type': 'str'},
        'action_type': {'key': 'action_type', 'type': 'str'},
        'provider_config': {'key': 'provider_config', 'type': '{InputDefinition}'},
        'function_config': {'key': 'function_config', 'type': '{InputDefinition}'},
        'icon': {'key': 'icon', 'type': 'object'},
        'category': {'key': 'category', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{object}'},
        'is_builtin': {'key': 'is_builtin', 'type': 'bool'},
        'package': {'key': 'package', 'type': 'str'},
        'package_version': {'key': 'package_version', 'type': 'str'},
        'default_prompt': {'key': 'default_prompt', 'type': 'str'},
        'enable_kwargs': {'key': 'enable_kwargs', 'type': 'bool'},
        'deprecated_tools': {'key': 'deprecated_tools', 'type': '[str]'},
        'tool_state': {'key': 'tool_state', 'type': 'str'},
        'groups': {'key': 'groups', 'type': '[GroupDefinition]'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        type: Optional[Union[str, "ToolType"]] = None,
        inputs: Optional[Dict[str, "InputDefinition"]] = None,
        outputs: Optional[Dict[str, "OutputDefinition"]] = None,
        description: Optional[Any] = None,
        connection_type: Optional[List[Union[str, "ConnectionType"]]] = None,
        module: Optional[str] = None,
        class_name: Optional[str] = None,
        source: Optional[str] = None,
        lkg_code: Optional[str] = None,
        code: Optional[str] = None,
        function: Optional[str] = None,
        action_type: Optional[str] = None,
        provider_config: Optional[Dict[str, "InputDefinition"]] = None,
        function_config: Optional[Dict[str, "InputDefinition"]] = None,
        icon: Optional[Any] = None,
        category: Optional[str] = None,
        tags: Optional[Dict[str, Any]] = None,
        is_builtin: Optional[bool] = None,
        package: Optional[str] = None,
        package_version: Optional[str] = None,
        default_prompt: Optional[str] = None,
        enable_kwargs: Optional[bool] = None,
        deprecated_tools: Optional[List[str]] = None,
        tool_state: Optional[Union[str, "ToolState"]] = None,
        groups: Optional[List["GroupDefinition"]] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword type: Possible values include: "llm", "python", "action", "prompt", "custom_llm",
         "csharp", "typescript".
        :paramtype type: str or ~flow.models.ToolType
        :keyword inputs: This is a dictionary.
        :paramtype inputs: dict[str, ~flow.models.InputDefinition]
        :keyword outputs: This is a dictionary.
        :paramtype outputs: dict[str, ~flow.models.OutputDefinition]
        :keyword description: Anything.
        :paramtype description: any
        :keyword connection_type:
        :paramtype connection_type: list[str or ~flow.models.ConnectionType]
        :keyword module:
        :paramtype module: str
        :keyword class_name:
        :paramtype class_name: str
        :keyword source:
        :paramtype source: str
        :keyword lkg_code:
        :paramtype lkg_code: str
        :keyword code:
        :paramtype code: str
        :keyword function:
        :paramtype function: str
        :keyword action_type:
        :paramtype action_type: str
        :keyword provider_config: This is a dictionary.
        :paramtype provider_config: dict[str, ~flow.models.InputDefinition]
        :keyword function_config: This is a dictionary.
        :paramtype function_config: dict[str, ~flow.models.InputDefinition]
        :keyword icon: Anything.
        :paramtype icon: any
        :keyword category:
        :paramtype category: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, any]
        :keyword is_builtin:
        :paramtype is_builtin: bool
        :keyword package:
        :paramtype package: str
        :keyword package_version:
        :paramtype package_version: str
        :keyword default_prompt:
        :paramtype default_prompt: str
        :keyword enable_kwargs:
        :paramtype enable_kwargs: bool
        :keyword deprecated_tools:
        :paramtype deprecated_tools: list[str]
        :keyword tool_state: Possible values include: "Stable", "Preview", "Deprecated", "Archived".
        :paramtype tool_state: str or ~flow.models.ToolState
        :keyword groups:
        :paramtype groups: list[~flow.models.GroupDefinition]
        """
        super(Tool, self).__init__(**kwargs)
        self.name = name
        self.type = type
        self.inputs = inputs
        self.outputs = outputs
        self.description = description
        self.connection_type = connection_type
        self.module = module
        self.class_name = class_name
        self.source = source
        self.lkg_code = lkg_code
        self.code = code
        self.function = function
        self.action_type = action_type
        self.provider_config = provider_config
        self.function_config = function_config
        self.icon = icon
        self.category = category
        self.tags = tags
        self.is_builtin = is_builtin
        self.package = package
        self.package_version = package_version
        self.default_prompt = default_prompt
        self.enable_kwargs = enable_kwargs
        self.deprecated_tools = deprecated_tools
        self.tool_state = tool_state
        self.groups = groups


class ToolFuncResponse(msrest.serialization.Model):
    """ToolFuncResponse.

    :ivar result: Anything.
    :vartype result: any
    :ivar logs: This is a dictionary.
    :vartype logs: dict[str, str]
    """

    _attribute_map = {
        'result': {'key': 'result', 'type': 'object'},
        'logs': {'key': 'logs', 'type': '{str}'},
    }

    def __init__(
        self,
        *,
        result: Optional[Any] = None,
        logs: Optional[Dict[str, str]] = None,
        **kwargs
    ):
        """
        :keyword result: Anything.
        :paramtype result: any
        :keyword logs: This is a dictionary.
        :paramtype logs: dict[str, str]
        """
        super(ToolFuncResponse, self).__init__(**kwargs)
        self.result = result
        self.logs = logs


class ToolInputDynamicList(msrest.serialization.Model):
    """ToolInputDynamicList.

    :ivar func_path:
    :vartype func_path: str
    :ivar func_kwargs:
    :vartype func_kwargs: list[dict[str, any]]
    """

    _attribute_map = {
        'func_path': {'key': 'func_path', 'type': 'str'},
        'func_kwargs': {'key': 'func_kwargs', 'type': '[{object}]'},
    }

    def __init__(
        self,
        *,
        func_path: Optional[str] = None,
        func_kwargs: Optional[List[Dict[str, Any]]] = None,
        **kwargs
    ):
        """
        :keyword func_path:
        :paramtype func_path: str
        :keyword func_kwargs:
        :paramtype func_kwargs: list[dict[str, any]]
        """
        super(ToolInputDynamicList, self).__init__(**kwargs)
        self.func_path = func_path
        self.func_kwargs = func_kwargs


class ToolInputGeneratedBy(msrest.serialization.Model):
    """ToolInputGeneratedBy.

    :ivar func_path:
    :vartype func_path: str
    :ivar func_kwargs:
    :vartype func_kwargs: list[dict[str, any]]
    :ivar reverse_func_path:
    :vartype reverse_func_path: str
    """

    _attribute_map = {
        'func_path': {'key': 'func_path', 'type': 'str'},
        'func_kwargs': {'key': 'func_kwargs', 'type': '[{object}]'},
        'reverse_func_path': {'key': 'reverse_func_path', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        func_path: Optional[str] = None,
        func_kwargs: Optional[List[Dict[str, Any]]] = None,
        reverse_func_path: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword func_path:
        :paramtype func_path: str
        :keyword func_kwargs:
        :paramtype func_kwargs: list[dict[str, any]]
        :keyword reverse_func_path:
        :paramtype reverse_func_path: str
        """
        super(ToolInputGeneratedBy, self).__init__(**kwargs)
        self.func_path = func_path
        self.func_kwargs = func_kwargs
        self.reverse_func_path = reverse_func_path


class ToolMetaDto(msrest.serialization.Model):
    """ToolMetaDto.

    :ivar tools: This is a dictionary.
    :vartype tools: dict[str, ~flow.models.Tool]
    :ivar errors: This is a dictionary.
    :vartype errors: dict[str, ~flow.models.ErrorResponse]
    """

    _attribute_map = {
        'tools': {'key': 'tools', 'type': '{Tool}'},
        'errors': {'key': 'errors', 'type': '{ErrorResponse}'},
    }

    def __init__(
        self,
        *,
        tools: Optional[Dict[str, "Tool"]] = None,
        errors: Optional[Dict[str, "ErrorResponse"]] = None,
        **kwargs
    ):
        """
        :keyword tools: This is a dictionary.
        :paramtype tools: dict[str, ~flow.models.Tool]
        :keyword errors: This is a dictionary.
        :paramtype errors: dict[str, ~flow.models.ErrorResponse]
        """
        super(ToolMetaDto, self).__init__(**kwargs)
        self.tools = tools
        self.errors = errors


class ToolSetting(msrest.serialization.Model):
    """ToolSetting.

    :ivar providers:
    :vartype providers: list[~flow.models.ProviderEntity]
    """

    _attribute_map = {
        'providers': {'key': 'providers', 'type': '[ProviderEntity]'},
    }

    def __init__(
        self,
        *,
        providers: Optional[List["ProviderEntity"]] = None,
        **kwargs
    ):
        """
        :keyword providers:
        :paramtype providers: list[~flow.models.ProviderEntity]
        """
        super(ToolSetting, self).__init__(**kwargs)
        self.providers = providers


class ToolSourceMeta(msrest.serialization.Model):
    """ToolSourceMeta.

    :ivar tool_type:
    :vartype tool_type: str
    """

    _attribute_map = {
        'tool_type': {'key': 'tool_type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        tool_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword tool_type:
        :paramtype tool_type: str
        """
        super(ToolSourceMeta, self).__init__(**kwargs)
        self.tool_type = tool_type


class TorchDistributedConfiguration(msrest.serialization.Model):
    """TorchDistributedConfiguration.

    :ivar process_count_per_node:
    :vartype process_count_per_node: int
    """

    _attribute_map = {
        'process_count_per_node': {'key': 'processCountPerNode', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        process_count_per_node: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword process_count_per_node:
        :paramtype process_count_per_node: int
        """
        super(TorchDistributedConfiguration, self).__init__(**kwargs)
        self.process_count_per_node = process_count_per_node


class TraceCosmosMetaDto(msrest.serialization.Model):
    """TraceCosmosMetaDto.

    :ivar entity_id:
    :vartype entity_id: str
    :ivar trace_cosmos_configuration: Possible values include: "None", "ReadDisabled",
     "WriteDisabled", "Disabled", "DiagnosticDisabled", "DataCleaned", "AccountDeleted".
    :vartype trace_cosmos_configuration: str or ~flow.models.TraceCosmosConfiguration
    :ivar trace_cosmos_status: Possible values include: "NotExists", "Initializing", "Initialized",
     "Deleting", "Deleted", "NotAvailable".
    :vartype trace_cosmos_status: str or ~flow.models.TraceCosmosStatus
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar account_endpoint:
    :vartype account_endpoint: str
    :ivar database_name:
    :vartype database_name: str
    :ivar resource_arm_id:
    :vartype resource_arm_id: str
    :ivar resource_type: Possible values include: "Attach", "HOBO".
    :vartype resource_type: str or ~flow.models.ResourceType
    """

    _attribute_map = {
        'entity_id': {'key': 'entityId', 'type': 'str'},
        'trace_cosmos_configuration': {'key': 'traceCosmosConfiguration', 'type': 'str'},
        'trace_cosmos_status': {'key': 'traceCosmosStatus', 'type': 'str'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'account_endpoint': {'key': 'accountEndpoint', 'type': 'str'},
        'database_name': {'key': 'databaseName', 'type': 'str'},
        'resource_arm_id': {'key': 'resourceArmId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        entity_id: Optional[str] = None,
        trace_cosmos_configuration: Optional[Union[str, "TraceCosmosConfiguration"]] = None,
        trace_cosmos_status: Optional[Union[str, "TraceCosmosStatus"]] = None,
        error: Optional["ErrorResponse"] = None,
        account_endpoint: Optional[str] = None,
        database_name: Optional[str] = None,
        resource_arm_id: Optional[str] = None,
        resource_type: Optional[Union[str, "ResourceType"]] = None,
        **kwargs
    ):
        """
        :keyword entity_id:
        :paramtype entity_id: str
        :keyword trace_cosmos_configuration: Possible values include: "None", "ReadDisabled",
         "WriteDisabled", "Disabled", "DiagnosticDisabled", "DataCleaned", "AccountDeleted".
        :paramtype trace_cosmos_configuration: str or ~flow.models.TraceCosmosConfiguration
        :keyword trace_cosmos_status: Possible values include: "NotExists", "Initializing",
         "Initialized", "Deleting", "Deleted", "NotAvailable".
        :paramtype trace_cosmos_status: str or ~flow.models.TraceCosmosStatus
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword account_endpoint:
        :paramtype account_endpoint: str
        :keyword database_name:
        :paramtype database_name: str
        :keyword resource_arm_id:
        :paramtype resource_arm_id: str
        :keyword resource_type: Possible values include: "Attach", "HOBO".
        :paramtype resource_type: str or ~flow.models.ResourceType
        """
        super(TraceCosmosMetaDto, self).__init__(**kwargs)
        self.entity_id = entity_id
        self.trace_cosmos_configuration = trace_cosmos_configuration
        self.trace_cosmos_status = trace_cosmos_status
        self.error = error
        self.account_endpoint = account_endpoint
        self.database_name = database_name
        self.resource_arm_id = resource_arm_id
        self.resource_type = resource_type


class TraceCosmosResourceDto(msrest.serialization.Model):
    """TraceCosmosResourceDto.

    :ivar container_name:
    :vartype container_name: str
    :ivar resource_url:
    :vartype resource_url: str
    :ivar resource_token:
    :vartype resource_token: str
    :ivar permission_mode:
    :vartype permission_mode: str
    :ivar time_to_live_in_seconds:
    :vartype time_to_live_in_seconds: int
    :ivar account_endpoint:
    :vartype account_endpoint: str
    :ivar database_name:
    :vartype database_name: str
    :ivar resource_arm_id:
    :vartype resource_arm_id: str
    :ivar resource_type: Possible values include: "Attach", "HOBO".
    :vartype resource_type: str or ~flow.models.ResourceType
    """

    _attribute_map = {
        'container_name': {'key': 'containerName', 'type': 'str'},
        'resource_url': {'key': 'resourceUrl', 'type': 'str'},
        'resource_token': {'key': 'resourceToken', 'type': 'str'},
        'permission_mode': {'key': 'permissionMode', 'type': 'str'},
        'time_to_live_in_seconds': {'key': 'timeToLiveInSeconds', 'type': 'int'},
        'account_endpoint': {'key': 'accountEndpoint', 'type': 'str'},
        'database_name': {'key': 'databaseName', 'type': 'str'},
        'resource_arm_id': {'key': 'resourceArmId', 'type': 'str'},
        'resource_type': {'key': 'resourceType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        container_name: Optional[str] = None,
        resource_url: Optional[str] = None,
        resource_token: Optional[str] = None,
        permission_mode: Optional[str] = None,
        time_to_live_in_seconds: Optional[int] = None,
        account_endpoint: Optional[str] = None,
        database_name: Optional[str] = None,
        resource_arm_id: Optional[str] = None,
        resource_type: Optional[Union[str, "ResourceType"]] = None,
        **kwargs
    ):
        """
        :keyword container_name:
        :paramtype container_name: str
        :keyword resource_url:
        :paramtype resource_url: str
        :keyword resource_token:
        :paramtype resource_token: str
        :keyword permission_mode:
        :paramtype permission_mode: str
        :keyword time_to_live_in_seconds:
        :paramtype time_to_live_in_seconds: int
        :keyword account_endpoint:
        :paramtype account_endpoint: str
        :keyword database_name:
        :paramtype database_name: str
        :keyword resource_arm_id:
        :paramtype resource_arm_id: str
        :keyword resource_type: Possible values include: "Attach", "HOBO".
        :paramtype resource_type: str or ~flow.models.ResourceType
        """
        super(TraceCosmosResourceDto, self).__init__(**kwargs)
        self.container_name = container_name
        self.resource_url = resource_url
        self.resource_token = resource_token
        self.permission_mode = permission_mode
        self.time_to_live_in_seconds = time_to_live_in_seconds
        self.account_endpoint = account_endpoint
        self.database_name = database_name
        self.resource_arm_id = resource_arm_id
        self.resource_type = resource_type


class TraceCosmosResourceDtos(msrest.serialization.Model):
    """TraceCosmosResourceDtos.

    :ivar resource_tokens: Dictionary of :code:`<TraceCosmosResourceDto>`.
    :vartype resource_tokens: dict[str, ~flow.models.TraceCosmosResourceDto]
    """

    _attribute_map = {
        'resource_tokens': {'key': 'resourceTokens', 'type': '{TraceCosmosResourceDto}'},
    }

    def __init__(
        self,
        *,
        resource_tokens: Optional[Dict[str, "TraceCosmosResourceDto"]] = None,
        **kwargs
    ):
        """
        :keyword resource_tokens: Dictionary of :code:`<TraceCosmosResourceDto>`.
        :paramtype resource_tokens: dict[str, ~flow.models.TraceCosmosResourceDto]
        """
        super(TraceCosmosResourceDtos, self).__init__(**kwargs)
        self.resource_tokens = resource_tokens


class TraceDbSetupRequest(msrest.serialization.Model):
    """TraceDbSetupRequest.

    :ivar resource_type: Possible values include: "Attach", "HOBO".
    :vartype resource_type: str or ~flow.models.ResourceType
    :ivar managed_cosmos_db_config:
    :vartype managed_cosmos_db_config: ~flow.models.ManagedCosmosDbConfig
    :ivar user_attached_cosmos_db_config:
    :vartype user_attached_cosmos_db_config: ~flow.models.AttachCosmosRequest
    """

    _attribute_map = {
        'resource_type': {'key': 'resourceType', 'type': 'str'},
        'managed_cosmos_db_config': {'key': 'managedCosmosDbConfig', 'type': 'ManagedCosmosDbConfig'},
        'user_attached_cosmos_db_config': {'key': 'userAttachedCosmosDbConfig', 'type': 'AttachCosmosRequest'},
    }

    def __init__(
        self,
        *,
        resource_type: Optional[Union[str, "ResourceType"]] = None,
        managed_cosmos_db_config: Optional["ManagedCosmosDbConfig"] = None,
        user_attached_cosmos_db_config: Optional["AttachCosmosRequest"] = None,
        **kwargs
    ):
        """
        :keyword resource_type: Possible values include: "Attach", "HOBO".
        :paramtype resource_type: str or ~flow.models.ResourceType
        :keyword managed_cosmos_db_config:
        :paramtype managed_cosmos_db_config: ~flow.models.ManagedCosmosDbConfig
        :keyword user_attached_cosmos_db_config:
        :paramtype user_attached_cosmos_db_config: ~flow.models.AttachCosmosRequest
        """
        super(TraceDbSetupRequest, self).__init__(**kwargs)
        self.resource_type = resource_type
        self.managed_cosmos_db_config = managed_cosmos_db_config
        self.user_attached_cosmos_db_config = user_attached_cosmos_db_config


class TrainingDiagnosticConfiguration(msrest.serialization.Model):
    """TrainingDiagnosticConfiguration.

    :ivar job_heart_beat_timeout_seconds:
    :vartype job_heart_beat_timeout_seconds: int
    """

    _attribute_map = {
        'job_heart_beat_timeout_seconds': {'key': 'jobHeartBeatTimeoutSeconds', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        job_heart_beat_timeout_seconds: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword job_heart_beat_timeout_seconds:
        :paramtype job_heart_beat_timeout_seconds: int
        """
        super(TrainingDiagnosticConfiguration, self).__init__(**kwargs)
        self.job_heart_beat_timeout_seconds = job_heart_beat_timeout_seconds


class TrainingOutput(msrest.serialization.Model):
    """TrainingOutput.

    :ivar training_output_type: Possible values include: "Metrics", "Model".
    :vartype training_output_type: str or ~flow.models.TrainingOutputType
    :ivar iteration:
    :vartype iteration: int
    :ivar metric:
    :vartype metric: str
    :ivar model_file:
    :vartype model_file: str
    """

    _attribute_map = {
        'training_output_type': {'key': 'trainingOutputType', 'type': 'str'},
        'iteration': {'key': 'iteration', 'type': 'int'},
        'metric': {'key': 'metric', 'type': 'str'},
        'model_file': {'key': 'modelFile', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        training_output_type: Optional[Union[str, "TrainingOutputType"]] = None,
        iteration: Optional[int] = None,
        metric: Optional[str] = None,
        model_file: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword training_output_type: Possible values include: "Metrics", "Model".
        :paramtype training_output_type: str or ~flow.models.TrainingOutputType
        :keyword iteration:
        :paramtype iteration: int
        :keyword metric:
        :paramtype metric: str
        :keyword model_file:
        :paramtype model_file: str
        """
        super(TrainingOutput, self).__init__(**kwargs)
        self.training_output_type = training_output_type
        self.iteration = iteration
        self.metric = metric
        self.model_file = model_file


class TrainingSettings(msrest.serialization.Model):
    """TrainingSettings.

    :ivar block_list_models:
    :vartype block_list_models: list[str]
    :ivar allow_list_models:
    :vartype allow_list_models: list[str]
    :ivar enable_dnn_training:
    :vartype enable_dnn_training: bool
    :ivar enable_onnx_compatible_models:
    :vartype enable_onnx_compatible_models: bool
    :ivar stack_ensemble_settings:
    :vartype stack_ensemble_settings: ~flow.models.StackEnsembleSettings
    :ivar enable_stack_ensemble:
    :vartype enable_stack_ensemble: bool
    :ivar enable_vote_ensemble:
    :vartype enable_vote_ensemble: bool
    :ivar ensemble_model_download_timeout:
    :vartype ensemble_model_download_timeout: str
    :ivar enable_model_explainability:
    :vartype enable_model_explainability: bool
    :ivar training_mode: Possible values include: "Distributed", "NonDistributed", "Auto".
    :vartype training_mode: str or ~flow.models.TabularTrainingMode
    """

    _attribute_map = {
        'block_list_models': {'key': 'blockListModels', 'type': '[str]'},
        'allow_list_models': {'key': 'allowListModels', 'type': '[str]'},
        'enable_dnn_training': {'key': 'enableDnnTraining', 'type': 'bool'},
        'enable_onnx_compatible_models': {'key': 'enableOnnxCompatibleModels', 'type': 'bool'},
        'stack_ensemble_settings': {'key': 'stackEnsembleSettings', 'type': 'StackEnsembleSettings'},
        'enable_stack_ensemble': {'key': 'enableStackEnsemble', 'type': 'bool'},
        'enable_vote_ensemble': {'key': 'enableVoteEnsemble', 'type': 'bool'},
        'ensemble_model_download_timeout': {'key': 'ensembleModelDownloadTimeout', 'type': 'str'},
        'enable_model_explainability': {'key': 'enableModelExplainability', 'type': 'bool'},
        'training_mode': {'key': 'trainingMode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        block_list_models: Optional[List[str]] = None,
        allow_list_models: Optional[List[str]] = None,
        enable_dnn_training: Optional[bool] = None,
        enable_onnx_compatible_models: Optional[bool] = None,
        stack_ensemble_settings: Optional["StackEnsembleSettings"] = None,
        enable_stack_ensemble: Optional[bool] = None,
        enable_vote_ensemble: Optional[bool] = None,
        ensemble_model_download_timeout: Optional[str] = None,
        enable_model_explainability: Optional[bool] = None,
        training_mode: Optional[Union[str, "TabularTrainingMode"]] = None,
        **kwargs
    ):
        """
        :keyword block_list_models:
        :paramtype block_list_models: list[str]
        :keyword allow_list_models:
        :paramtype allow_list_models: list[str]
        :keyword enable_dnn_training:
        :paramtype enable_dnn_training: bool
        :keyword enable_onnx_compatible_models:
        :paramtype enable_onnx_compatible_models: bool
        :keyword stack_ensemble_settings:
        :paramtype stack_ensemble_settings: ~flow.models.StackEnsembleSettings
        :keyword enable_stack_ensemble:
        :paramtype enable_stack_ensemble: bool
        :keyword enable_vote_ensemble:
        :paramtype enable_vote_ensemble: bool
        :keyword ensemble_model_download_timeout:
        :paramtype ensemble_model_download_timeout: str
        :keyword enable_model_explainability:
        :paramtype enable_model_explainability: bool
        :keyword training_mode: Possible values include: "Distributed", "NonDistributed", "Auto".
        :paramtype training_mode: str or ~flow.models.TabularTrainingMode
        """
        super(TrainingSettings, self).__init__(**kwargs)
        self.block_list_models = block_list_models
        self.allow_list_models = allow_list_models
        self.enable_dnn_training = enable_dnn_training
        self.enable_onnx_compatible_models = enable_onnx_compatible_models
        self.stack_ensemble_settings = stack_ensemble_settings
        self.enable_stack_ensemble = enable_stack_ensemble
        self.enable_vote_ensemble = enable_vote_ensemble
        self.ensemble_model_download_timeout = ensemble_model_download_timeout
        self.enable_model_explainability = enable_model_explainability
        self.training_mode = training_mode


class TriggerAsyncOperationStatus(msrest.serialization.Model):
    """TriggerAsyncOperationStatus.

    :ivar id:
    :vartype id: str
    :ivar operation_type: Possible values include: "Create", "Update", "Delete", "CreateOrUpdate".
    :vartype operation_type: str or ~flow.models.TriggerOperationType
    :ivar provisioning_status: Possible values include: "Creating", "Updating", "Deleting",
     "Succeeded", "Failed", "Canceled".
    :vartype provisioning_status: str or ~flow.models.ScheduleProvisioningStatus
    :ivar created_time:
    :vartype created_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    :ivar error: The error response.
    :vartype error: ~flow.models.ErrorResponse
    :ivar status_code: Possible values include: "Continue", "SwitchingProtocols", "Processing",
     "EarlyHints", "OK", "Created", "Accepted", "NonAuthoritativeInformation", "NoContent",
     "ResetContent", "PartialContent", "MultiStatus", "AlreadyReported", "IMUsed",
     "MultipleChoices", "Ambiguous", "MovedPermanently", "Moved", "Found", "Redirect", "SeeOther",
     "RedirectMethod", "NotModified", "UseProxy", "Unused", "TemporaryRedirect", "RedirectKeepVerb",
     "PermanentRedirect", "BadRequest", "Unauthorized", "PaymentRequired", "Forbidden", "NotFound",
     "MethodNotAllowed", "NotAcceptable", "ProxyAuthenticationRequired", "RequestTimeout",
     "Conflict", "Gone", "LengthRequired", "PreconditionFailed", "RequestEntityTooLarge",
     "RequestUriTooLong", "UnsupportedMediaType", "RequestedRangeNotSatisfiable",
     "ExpectationFailed", "MisdirectedRequest", "UnprocessableEntity", "Locked", "FailedDependency",
     "UpgradeRequired", "PreconditionRequired", "TooManyRequests", "RequestHeaderFieldsTooLarge",
     "UnavailableForLegalReasons", "InternalServerError", "NotImplemented", "BadGateway",
     "ServiceUnavailable", "GatewayTimeout", "HttpVersionNotSupported", "VariantAlsoNegotiates",
     "InsufficientStorage", "LoopDetected", "NotExtended", "NetworkAuthenticationRequired".
    :vartype status_code: str or ~flow.models.HttpStatusCode
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'operation_type': {'key': 'operationType', 'type': 'str'},
        'provisioning_status': {'key': 'provisioningStatus', 'type': 'str'},
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
        'error': {'key': 'error', 'type': 'ErrorResponse'},
        'status_code': {'key': 'statusCode', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        operation_type: Optional[Union[str, "TriggerOperationType"]] = None,
        provisioning_status: Optional[Union[str, "ScheduleProvisioningStatus"]] = None,
        created_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        error: Optional["ErrorResponse"] = None,
        status_code: Optional[Union[str, "HttpStatusCode"]] = None,
        **kwargs
    ):
        """
        :keyword id:
        :paramtype id: str
        :keyword operation_type: Possible values include: "Create", "Update", "Delete",
         "CreateOrUpdate".
        :paramtype operation_type: str or ~flow.models.TriggerOperationType
        :keyword provisioning_status: Possible values include: "Creating", "Updating", "Deleting",
         "Succeeded", "Failed", "Canceled".
        :paramtype provisioning_status: str or ~flow.models.ScheduleProvisioningStatus
        :keyword created_time:
        :paramtype created_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        :keyword error: The error response.
        :paramtype error: ~flow.models.ErrorResponse
        :keyword status_code: Possible values include: "Continue", "SwitchingProtocols", "Processing",
         "EarlyHints", "OK", "Created", "Accepted", "NonAuthoritativeInformation", "NoContent",
         "ResetContent", "PartialContent", "MultiStatus", "AlreadyReported", "IMUsed",
         "MultipleChoices", "Ambiguous", "MovedPermanently", "Moved", "Found", "Redirect", "SeeOther",
         "RedirectMethod", "NotModified", "UseProxy", "Unused", "TemporaryRedirect", "RedirectKeepVerb",
         "PermanentRedirect", "BadRequest", "Unauthorized", "PaymentRequired", "Forbidden", "NotFound",
         "MethodNotAllowed", "NotAcceptable", "ProxyAuthenticationRequired", "RequestTimeout",
         "Conflict", "Gone", "LengthRequired", "PreconditionFailed", "RequestEntityTooLarge",
         "RequestUriTooLong", "UnsupportedMediaType", "RequestedRangeNotSatisfiable",
         "ExpectationFailed", "MisdirectedRequest", "UnprocessableEntity", "Locked", "FailedDependency",
         "UpgradeRequired", "PreconditionRequired", "TooManyRequests", "RequestHeaderFieldsTooLarge",
         "UnavailableForLegalReasons", "InternalServerError", "NotImplemented", "BadGateway",
         "ServiceUnavailable", "GatewayTimeout", "HttpVersionNotSupported", "VariantAlsoNegotiates",
         "InsufficientStorage", "LoopDetected", "NotExtended", "NetworkAuthenticationRequired".
        :paramtype status_code: str or ~flow.models.HttpStatusCode
        """
        super(TriggerAsyncOperationStatus, self).__init__(**kwargs)
        self.id = id
        self.operation_type = operation_type
        self.provisioning_status = provisioning_status
        self.created_time = created_time
        self.end_time = end_time
        self.error = error
        self.status_code = status_code


class TuningNodeRunSetting(msrest.serialization.Model):
    """TuningNodeRunSetting.

    :ivar simulation_flow:
    :vartype simulation_flow: ~flow.models.FlowGraphReference
    :ivar simulation_flow_run_setting:
    :vartype simulation_flow_run_setting: ~flow.models.FlowRunSettingsBase
    :ivar batch_inputs:
    :vartype batch_inputs: list[dict[str, any]]
    :ivar input_universal_link:
    :vartype input_universal_link: str
    :ivar data_inputs: This is a dictionary.
    :vartype data_inputs: dict[str, str]
    :ivar flow_run_output_directory:
    :vartype flow_run_output_directory: str
    :ivar connection_overrides:
    :vartype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
    :ivar flow_run_display_name:
    :vartype flow_run_display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. This is a dictionary.
    :vartype tags: dict[str, str]
    :ivar properties: This is a dictionary.
    :vartype properties: dict[str, str]
    :ivar run_display_name_generation_type: Possible values include: "AutoAppend",
     "UserProvidedMacro".
    :vartype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
    :ivar experiment_node_name:
    :vartype experiment_node_name: str
    :ivar output_data_store:
    :vartype output_data_store: str
    :ivar flow_artifacts_root_path:
    :vartype flow_artifacts_root_path: str
    :ivar batch_data_input:
    :vartype batch_data_input: ~flow.models.BatchDataInput
    :ivar inputs_mapping: This is a dictionary.
    :vartype inputs_mapping: dict[str, str]
    :ivar environment_variables: This is a dictionary.
    :vartype environment_variables: dict[str, str]
    :ivar init_k_wargs: This is a dictionary.
    :vartype init_k_wargs: dict[str, any]
    :ivar log_file_relative_path:
    :vartype log_file_relative_path: str
    :ivar disable_trace:
    :vartype disable_trace: bool
    :ivar connections: This is a dictionary.
    :vartype connections: dict[str, dict[str, str]]
    :ivar promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
    :vartype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
    :ivar worker_count:
    :vartype worker_count: int
    :ivar timeout_in_seconds:
    :vartype timeout_in_seconds: int
    :ivar runtime_name:
    :vartype runtime_name: str
    :ivar collie_run_settings:
    :vartype collie_run_settings: ~flow.models.CollieRunSettings
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'simulation_flow': {'key': 'simulationFlow', 'type': 'FlowGraphReference'},
        'simulation_flow_run_setting': {'key': 'simulationFlowRunSetting', 'type': 'FlowRunSettingsBase'},
        'batch_inputs': {'key': 'batch_inputs', 'type': '[{object}]'},
        'input_universal_link': {'key': 'inputUniversalLink', 'type': 'str'},
        'data_inputs': {'key': 'dataInputs', 'type': '{str}'},
        'flow_run_output_directory': {'key': 'flowRunOutputDirectory', 'type': 'str'},
        'connection_overrides': {'key': 'connectionOverrides', 'type': '[ConnectionOverrideSetting]'},
        'flow_run_display_name': {'key': 'flowRunDisplayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': '{str}'},
        'run_display_name_generation_type': {'key': 'runDisplayNameGenerationType', 'type': 'str'},
        'experiment_node_name': {'key': 'experimentNodeName', 'type': 'str'},
        'output_data_store': {'key': 'outputDataStore', 'type': 'str'},
        'flow_artifacts_root_path': {'key': 'flowArtifactsRootPath', 'type': 'str'},
        'batch_data_input': {'key': 'batchDataInput', 'type': 'BatchDataInput'},
        'inputs_mapping': {'key': 'inputsMapping', 'type': '{str}'},
        'environment_variables': {'key': 'environmentVariables', 'type': '{str}'},
        'init_k_wargs': {'key': 'initKWargs', 'type': '{object}'},
        'log_file_relative_path': {'key': 'logFileRelativePath', 'type': 'str'},
        'disable_trace': {'key': 'disableTrace', 'type': 'bool'},
        'connections': {'key': 'connections', 'type': '{{str}}'},
        'promptflow_engine_type': {'key': 'promptflowEngineType', 'type': 'str'},
        'worker_count': {'key': 'workerCount', 'type': 'int'},
        'timeout_in_seconds': {'key': 'timeoutInSeconds', 'type': 'int'},
        'runtime_name': {'key': 'runtimeName', 'type': 'str'},
        'collie_run_settings': {'key': 'collieRunSettings', 'type': 'CollieRunSettings'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        simulation_flow: Optional["FlowGraphReference"] = None,
        simulation_flow_run_setting: Optional["FlowRunSettingsBase"] = None,
        batch_inputs: Optional[List[Dict[str, Any]]] = None,
        input_universal_link: Optional[str] = None,
        data_inputs: Optional[Dict[str, str]] = None,
        flow_run_output_directory: Optional[str] = None,
        connection_overrides: Optional[List["ConnectionOverrideSetting"]] = None,
        flow_run_display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional[Dict[str, str]] = None,
        run_display_name_generation_type: Optional[Union[str, "RunDisplayNameGenerationType"]] = None,
        experiment_node_name: Optional[str] = None,
        output_data_store: Optional[str] = None,
        flow_artifacts_root_path: Optional[str] = None,
        batch_data_input: Optional["BatchDataInput"] = None,
        inputs_mapping: Optional[Dict[str, str]] = None,
        environment_variables: Optional[Dict[str, str]] = None,
        init_k_wargs: Optional[Dict[str, Any]] = None,
        log_file_relative_path: Optional[str] = None,
        disable_trace: Optional[bool] = None,
        connections: Optional[Dict[str, Dict[str, str]]] = None,
        promptflow_engine_type: Optional[Union[str, "PromptflowEngineType"]] = None,
        worker_count: Optional[int] = None,
        timeout_in_seconds: Optional[int] = None,
        runtime_name: Optional[str] = None,
        collie_run_settings: Optional["CollieRunSettings"] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword simulation_flow:
        :paramtype simulation_flow: ~flow.models.FlowGraphReference
        :keyword simulation_flow_run_setting:
        :paramtype simulation_flow_run_setting: ~flow.models.FlowRunSettingsBase
        :keyword batch_inputs:
        :paramtype batch_inputs: list[dict[str, any]]
        :keyword input_universal_link:
        :paramtype input_universal_link: str
        :keyword data_inputs: This is a dictionary.
        :paramtype data_inputs: dict[str, str]
        :keyword flow_run_output_directory:
        :paramtype flow_run_output_directory: str
        :keyword connection_overrides:
        :paramtype connection_overrides: list[~flow.models.ConnectionOverrideSetting]
        :keyword flow_run_display_name:
        :paramtype flow_run_display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. This is a dictionary.
        :paramtype tags: dict[str, str]
        :keyword properties: This is a dictionary.
        :paramtype properties: dict[str, str]
        :keyword run_display_name_generation_type: Possible values include: "AutoAppend",
         "UserProvidedMacro".
        :paramtype run_display_name_generation_type: str or ~flow.models.RunDisplayNameGenerationType
        :keyword experiment_node_name:
        :paramtype experiment_node_name: str
        :keyword output_data_store:
        :paramtype output_data_store: str
        :keyword flow_artifacts_root_path:
        :paramtype flow_artifacts_root_path: str
        :keyword batch_data_input:
        :paramtype batch_data_input: ~flow.models.BatchDataInput
        :keyword inputs_mapping: This is a dictionary.
        :paramtype inputs_mapping: dict[str, str]
        :keyword environment_variables: This is a dictionary.
        :paramtype environment_variables: dict[str, str]
        :keyword init_k_wargs: This is a dictionary.
        :paramtype init_k_wargs: dict[str, any]
        :keyword log_file_relative_path:
        :paramtype log_file_relative_path: str
        :keyword disable_trace:
        :paramtype disable_trace: bool
        :keyword connections: This is a dictionary.
        :paramtype connections: dict[str, dict[str, str]]
        :keyword promptflow_engine_type: Possible values include: "FastEngine", "ScalableEngine".
        :paramtype promptflow_engine_type: str or ~flow.models.PromptflowEngineType
        :keyword worker_count:
        :paramtype worker_count: int
        :keyword timeout_in_seconds:
        :paramtype timeout_in_seconds: int
        :keyword runtime_name:
        :paramtype runtime_name: str
        :keyword collie_run_settings:
        :paramtype collie_run_settings: ~flow.models.CollieRunSettings
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(TuningNodeRunSetting, self).__init__(**kwargs)
        self.simulation_flow = simulation_flow
        self.simulation_flow_run_setting = simulation_flow_run_setting
        self.batch_inputs = batch_inputs
        self.input_universal_link = input_universal_link
        self.data_inputs = data_inputs
        self.flow_run_output_directory = flow_run_output_directory
        self.connection_overrides = connection_overrides
        self.flow_run_display_name = flow_run_display_name
        self.description = description
        self.tags = tags
        self.properties = properties
        self.run_display_name_generation_type = run_display_name_generation_type
        self.experiment_node_name = experiment_node_name
        self.output_data_store = output_data_store
        self.flow_artifacts_root_path = flow_artifacts_root_path
        self.batch_data_input = batch_data_input
        self.inputs_mapping = inputs_mapping
        self.environment_variables = environment_variables
        self.init_k_wargs = init_k_wargs
        self.log_file_relative_path = log_file_relative_path
        self.disable_trace = disable_trace
        self.connections = connections
        self.promptflow_engine_type = promptflow_engine_type
        self.worker_count = worker_count
        self.timeout_in_seconds = timeout_in_seconds
        self.runtime_name = runtime_name
        self.collie_run_settings = collie_run_settings
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class TuningNodeSetting(msrest.serialization.Model):
    """TuningNodeSetting.

    :ivar variant_ids:
    :vartype variant_ids: list[str]
    :ivar tuning_node_run_settings: This is a dictionary.
    :vartype tuning_node_run_settings: dict[str, dict[str, ~flow.models.TuningNodeRunSetting]]
    """

    _attribute_map = {
        'variant_ids': {'key': 'variantIds', 'type': '[str]'},
        'tuning_node_run_settings': {'key': 'tuningNodeRunSettings', 'type': '{{TuningNodeRunSetting}}'},
    }

    def __init__(
        self,
        *,
        variant_ids: Optional[List[str]] = None,
        tuning_node_run_settings: Optional[Dict[str, Dict[str, "TuningNodeRunSetting"]]] = None,
        **kwargs
    ):
        """
        :keyword variant_ids:
        :paramtype variant_ids: list[str]
        :keyword tuning_node_run_settings: This is a dictionary.
        :paramtype tuning_node_run_settings: dict[str, dict[str, ~flow.models.TuningNodeRunSetting]]
        """
        super(TuningNodeSetting, self).__init__(**kwargs)
        self.variant_ids = variant_ids
        self.tuning_node_run_settings = tuning_node_run_settings


class TypedAssetReference(msrest.serialization.Model):
    """TypedAssetReference.

    :ivar asset_id:
    :vartype asset_id: str
    :ivar type:
    :vartype type: str
    """

    _attribute_map = {
        'asset_id': {'key': 'assetId', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        asset_id: Optional[str] = None,
        type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword asset_id:
        :paramtype asset_id: str
        :keyword type:
        :paramtype type: str
        """
        super(TypedAssetReference, self).__init__(**kwargs)
        self.asset_id = asset_id
        self.type = type


class UIAzureOpenAIDeploymentNameSelector(msrest.serialization.Model):
    """UIAzureOpenAIDeploymentNameSelector.

    :ivar capabilities:
    :vartype capabilities: ~flow.models.UIAzureOpenAIModelCapabilities
    """

    _attribute_map = {
        'capabilities': {'key': 'Capabilities', 'type': 'UIAzureOpenAIModelCapabilities'},
    }

    def __init__(
        self,
        *,
        capabilities: Optional["UIAzureOpenAIModelCapabilities"] = None,
        **kwargs
    ):
        """
        :keyword capabilities:
        :paramtype capabilities: ~flow.models.UIAzureOpenAIModelCapabilities
        """
        super(UIAzureOpenAIDeploymentNameSelector, self).__init__(**kwargs)
        self.capabilities = capabilities


class UIAzureOpenAIModelCapabilities(msrest.serialization.Model):
    """UIAzureOpenAIModelCapabilities.

    :ivar completion:
    :vartype completion: bool
    :ivar chat_completion:
    :vartype chat_completion: bool
    :ivar embeddings:
    :vartype embeddings: bool
    """

    _attribute_map = {
        'completion': {'key': 'Completion', 'type': 'bool'},
        'chat_completion': {'key': 'ChatCompletion', 'type': 'bool'},
        'embeddings': {'key': 'Embeddings', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        completion: Optional[bool] = None,
        chat_completion: Optional[bool] = None,
        embeddings: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword completion:
        :paramtype completion: bool
        :keyword chat_completion:
        :paramtype chat_completion: bool
        :keyword embeddings:
        :paramtype embeddings: bool
        """
        super(UIAzureOpenAIModelCapabilities, self).__init__(**kwargs)
        self.completion = completion
        self.chat_completion = chat_completion
        self.embeddings = embeddings


class UIColumnPicker(msrest.serialization.Model):
    """UIColumnPicker.

    :ivar column_picker_for:
    :vartype column_picker_for: str
    :ivar column_selection_categories:
    :vartype column_selection_categories: list[str]
    :ivar single_column_selection:
    :vartype single_column_selection: bool
    """

    _attribute_map = {
        'column_picker_for': {'key': 'columnPickerFor', 'type': 'str'},
        'column_selection_categories': {'key': 'columnSelectionCategories', 'type': '[str]'},
        'single_column_selection': {'key': 'singleColumnSelection', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        column_picker_for: Optional[str] = None,
        column_selection_categories: Optional[List[str]] = None,
        single_column_selection: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword column_picker_for:
        :paramtype column_picker_for: str
        :keyword column_selection_categories:
        :paramtype column_selection_categories: list[str]
        :keyword single_column_selection:
        :paramtype single_column_selection: bool
        """
        super(UIColumnPicker, self).__init__(**kwargs)
        self.column_picker_for = column_picker_for
        self.column_selection_categories = column_selection_categories
        self.single_column_selection = single_column_selection


class UIComputeSelection(msrest.serialization.Model):
    """UIComputeSelection.

    :ivar compute_types:
    :vartype compute_types: list[str]
    :ivar require_gpu:
    :vartype require_gpu: bool
    :ivar os_types:
    :vartype os_types: list[str]
    :ivar support_serverless:
    :vartype support_serverless: bool
    :ivar compute_run_settings_mapping: Dictionary of
     <components·10my8oj·schemas·uicomputeselection·properties·computerunsettingsmapping·additionalproperties>.
    :vartype compute_run_settings_mapping: dict[str, list[~flow.models.RunSettingParameter]]
    """

    _attribute_map = {
        'compute_types': {'key': 'computeTypes', 'type': '[str]'},
        'require_gpu': {'key': 'requireGpu', 'type': 'bool'},
        'os_types': {'key': 'osTypes', 'type': '[str]'},
        'support_serverless': {'key': 'supportServerless', 'type': 'bool'},
        'compute_run_settings_mapping': {'key': 'computeRunSettingsMapping', 'type': '{[RunSettingParameter]}'},
    }

    def __init__(
        self,
        *,
        compute_types: Optional[List[str]] = None,
        require_gpu: Optional[bool] = None,
        os_types: Optional[List[str]] = None,
        support_serverless: Optional[bool] = None,
        compute_run_settings_mapping: Optional[Dict[str, List["RunSettingParameter"]]] = None,
        **kwargs
    ):
        """
        :keyword compute_types:
        :paramtype compute_types: list[str]
        :keyword require_gpu:
        :paramtype require_gpu: bool
        :keyword os_types:
        :paramtype os_types: list[str]
        :keyword support_serverless:
        :paramtype support_serverless: bool
        :keyword compute_run_settings_mapping: Dictionary of
         <components·10my8oj·schemas·uicomputeselection·properties·computerunsettingsmapping·additionalproperties>.
        :paramtype compute_run_settings_mapping: dict[str, list[~flow.models.RunSettingParameter]]
        """
        super(UIComputeSelection, self).__init__(**kwargs)
        self.compute_types = compute_types
        self.require_gpu = require_gpu
        self.os_types = os_types
        self.support_serverless = support_serverless
        self.compute_run_settings_mapping = compute_run_settings_mapping


class UIHyperparameterConfiguration(msrest.serialization.Model):
    """UIHyperparameterConfiguration.

    :ivar model_name_to_hyper_parameter_and_distribution_mapping: Dictionary of
     <components·1nrp69t·schemas·uihyperparameterconfiguration·properties·modelnametohyperparameteranddistributionmapping·additionalproperties>.
    :vartype model_name_to_hyper_parameter_and_distribution_mapping: dict[str, dict[str,
     list[str]]]
    :ivar distribution_parameters_mapping: Dictionary of
     <components·d9plq4·schemas·uihyperparameterconfiguration·properties·distributionparametersmapping·additionalproperties>.
    :vartype distribution_parameters_mapping: dict[str, list[~flow.models.DistributionParameter]]
    :ivar json_schema:
    :vartype json_schema: str
    """

    _attribute_map = {
        'model_name_to_hyper_parameter_and_distribution_mapping': {'key': 'modelNameToHyperParameterAndDistributionMapping', 'type': '{{[str]}}'},
        'distribution_parameters_mapping': {'key': 'distributionParametersMapping', 'type': '{[DistributionParameter]}'},
        'json_schema': {'key': 'jsonSchema', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        model_name_to_hyper_parameter_and_distribution_mapping: Optional[Dict[str, Dict[str, List[str]]]] = None,
        distribution_parameters_mapping: Optional[Dict[str, List["DistributionParameter"]]] = None,
        json_schema: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword model_name_to_hyper_parameter_and_distribution_mapping: Dictionary of
         <components·1nrp69t·schemas·uihyperparameterconfiguration·properties·modelnametohyperparameteranddistributionmapping·additionalproperties>.
        :paramtype model_name_to_hyper_parameter_and_distribution_mapping: dict[str, dict[str,
         list[str]]]
        :keyword distribution_parameters_mapping: Dictionary of
         <components·d9plq4·schemas·uihyperparameterconfiguration·properties·distributionparametersmapping·additionalproperties>.
        :paramtype distribution_parameters_mapping: dict[str, list[~flow.models.DistributionParameter]]
        :keyword json_schema:
        :paramtype json_schema: str
        """
        super(UIHyperparameterConfiguration, self).__init__(**kwargs)
        self.model_name_to_hyper_parameter_and_distribution_mapping = model_name_to_hyper_parameter_and_distribution_mapping
        self.distribution_parameters_mapping = distribution_parameters_mapping
        self.json_schema = json_schema


class UIInputSetting(msrest.serialization.Model):
    """UIInputSetting.

    :ivar name:
    :vartype name: str
    :ivar data_delivery_mode: Possible values include: "Read-only mount", "Read-write mount",
     "Download", "Direct", "Evaluate mount", "Evaluate download", "Hdfs".
    :vartype data_delivery_mode: str or ~flow.models.UIInputDataDeliveryMode
    :ivar path_on_compute:
    :vartype path_on_compute: str
    """

    _attribute_map = {
        'name': {'key': 'name', 'type': 'str'},
        'data_delivery_mode': {'key': 'dataDeliveryMode', 'type': 'str'},
        'path_on_compute': {'key': 'pathOnCompute', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        name: Optional[str] = None,
        data_delivery_mode: Optional[Union[str, "UIInputDataDeliveryMode"]] = None,
        path_on_compute: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword name:
        :paramtype name: str
        :keyword data_delivery_mode: Possible values include: "Read-only mount", "Read-write mount",
         "Download", "Direct", "Evaluate mount", "Evaluate download", "Hdfs".
        :paramtype data_delivery_mode: str or ~flow.models.UIInputDataDeliveryMode
        :keyword path_on_compute:
        :paramtype path_on_compute: str
        """
        super(UIInputSetting, self).__init__(**kwargs)
        self.name = name
        self.data_delivery_mode = data_delivery_mode
        self.path_on_compute = path_on_compute


class UIJsonEditor(msrest.serialization.Model):
    """UIJsonEditor.

    :ivar json_schema:
    :vartype json_schema: str
    """

    _attribute_map = {
        'json_schema': {'key': 'jsonSchema', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        json_schema: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword json_schema:
        :paramtype json_schema: str
        """
        super(UIJsonEditor, self).__init__(**kwargs)
        self.json_schema = json_schema


class UIParameterHint(msrest.serialization.Model):
    """UIParameterHint.

    :ivar ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker", "Credential",
     "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter", "SectionToggle",
     "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection", "InstanceTypeSelection",
     "ConnectionSelection", "PromptFlowConnectionSelection", "AzureOpenAIDeploymentNameSelection".
    :vartype ui_widget_type: str or ~flow.models.UIWidgetTypeEnum
    :ivar column_picker:
    :vartype column_picker: ~flow.models.UIColumnPicker
    :ivar ui_script_language: Possible values include: "None", "Python", "R", "Json", "Sql".
    :vartype ui_script_language: str or ~flow.models.UIScriptLanguageEnum
    :ivar json_editor:
    :vartype json_editor: ~flow.models.UIJsonEditor
    :ivar prompt_flow_connection_selector:
    :vartype prompt_flow_connection_selector: ~flow.models.UIPromptFlowConnectionSelector
    :ivar azure_open_ai_deployment_name_selector:
    :vartype azure_open_ai_deployment_name_selector:
     ~flow.models.UIAzureOpenAIDeploymentNameSelector
    :ivar ux_ignore:
    :vartype ux_ignore: bool
    :ivar anonymous:
    :vartype anonymous: bool
    """

    _attribute_map = {
        'ui_widget_type': {'key': 'uiWidgetType', 'type': 'str'},
        'column_picker': {'key': 'columnPicker', 'type': 'UIColumnPicker'},
        'ui_script_language': {'key': 'uiScriptLanguage', 'type': 'str'},
        'json_editor': {'key': 'jsonEditor', 'type': 'UIJsonEditor'},
        'prompt_flow_connection_selector': {'key': 'PromptFlowConnectionSelector', 'type': 'UIPromptFlowConnectionSelector'},
        'azure_open_ai_deployment_name_selector': {'key': 'AzureOpenAIDeploymentNameSelector', 'type': 'UIAzureOpenAIDeploymentNameSelector'},
        'ux_ignore': {'key': 'UxIgnore', 'type': 'bool'},
        'anonymous': {'key': 'Anonymous', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        ui_widget_type: Optional[Union[str, "UIWidgetTypeEnum"]] = None,
        column_picker: Optional["UIColumnPicker"] = None,
        ui_script_language: Optional[Union[str, "UIScriptLanguageEnum"]] = None,
        json_editor: Optional["UIJsonEditor"] = None,
        prompt_flow_connection_selector: Optional["UIPromptFlowConnectionSelector"] = None,
        azure_open_ai_deployment_name_selector: Optional["UIAzureOpenAIDeploymentNameSelector"] = None,
        ux_ignore: Optional[bool] = None,
        anonymous: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker",
         "Credential", "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter",
         "SectionToggle", "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection",
         "InstanceTypeSelection", "ConnectionSelection", "PromptFlowConnectionSelection",
         "AzureOpenAIDeploymentNameSelection".
        :paramtype ui_widget_type: str or ~flow.models.UIWidgetTypeEnum
        :keyword column_picker:
        :paramtype column_picker: ~flow.models.UIColumnPicker
        :keyword ui_script_language: Possible values include: "None", "Python", "R", "Json", "Sql".
        :paramtype ui_script_language: str or ~flow.models.UIScriptLanguageEnum
        :keyword json_editor:
        :paramtype json_editor: ~flow.models.UIJsonEditor
        :keyword prompt_flow_connection_selector:
        :paramtype prompt_flow_connection_selector: ~flow.models.UIPromptFlowConnectionSelector
        :keyword azure_open_ai_deployment_name_selector:
        :paramtype azure_open_ai_deployment_name_selector:
         ~flow.models.UIAzureOpenAIDeploymentNameSelector
        :keyword ux_ignore:
        :paramtype ux_ignore: bool
        :keyword anonymous:
        :paramtype anonymous: bool
        """
        super(UIParameterHint, self).__init__(**kwargs)
        self.ui_widget_type = ui_widget_type
        self.column_picker = column_picker
        self.ui_script_language = ui_script_language
        self.json_editor = json_editor
        self.prompt_flow_connection_selector = prompt_flow_connection_selector
        self.azure_open_ai_deployment_name_selector = azure_open_ai_deployment_name_selector
        self.ux_ignore = ux_ignore
        self.anonymous = anonymous


class UIPromptFlowConnectionSelector(msrest.serialization.Model):
    """UIPromptFlowConnectionSelector.

    :ivar prompt_flow_connection_type:
    :vartype prompt_flow_connection_type: str
    """

    _attribute_map = {
        'prompt_flow_connection_type': {'key': 'PromptFlowConnectionType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        prompt_flow_connection_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword prompt_flow_connection_type:
        :paramtype prompt_flow_connection_type: str
        """
        super(UIPromptFlowConnectionSelector, self).__init__(**kwargs)
        self.prompt_flow_connection_type = prompt_flow_connection_type


class UIWidgetMetaInfo(msrest.serialization.Model):
    """UIWidgetMetaInfo.

    :ivar module_node_id:
    :vartype module_node_id: str
    :ivar meta_module_id:
    :vartype meta_module_id: str
    :ivar parameter_name:
    :vartype parameter_name: str
    :ivar ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker", "Credential",
     "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter", "SectionToggle",
     "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection", "InstanceTypeSelection",
     "ConnectionSelection", "PromptFlowConnectionSelection", "AzureOpenAIDeploymentNameSelection".
    :vartype ui_widget_type: str or ~flow.models.UIWidgetTypeEnum
    """

    _attribute_map = {
        'module_node_id': {'key': 'moduleNodeId', 'type': 'str'},
        'meta_module_id': {'key': 'metaModuleId', 'type': 'str'},
        'parameter_name': {'key': 'parameterName', 'type': 'str'},
        'ui_widget_type': {'key': 'uiWidgetType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        module_node_id: Optional[str] = None,
        meta_module_id: Optional[str] = None,
        parameter_name: Optional[str] = None,
        ui_widget_type: Optional[Union[str, "UIWidgetTypeEnum"]] = None,
        **kwargs
    ):
        """
        :keyword module_node_id:
        :paramtype module_node_id: str
        :keyword meta_module_id:
        :paramtype meta_module_id: str
        :keyword parameter_name:
        :paramtype parameter_name: str
        :keyword ui_widget_type: Possible values include: "Default", "Mode", "ColumnPicker",
         "Credential", "Script", "ComputeSelection", "JsonEditor", "SearchSpaceParameter",
         "SectionToggle", "YamlEditor", "EnableRuntimeSweep", "DataStoreSelection",
         "InstanceTypeSelection", "ConnectionSelection", "PromptFlowConnectionSelection",
         "AzureOpenAIDeploymentNameSelection".
        :paramtype ui_widget_type: str or ~flow.models.UIWidgetTypeEnum
        """
        super(UIWidgetMetaInfo, self).__init__(**kwargs)
        self.module_node_id = module_node_id
        self.meta_module_id = meta_module_id
        self.parameter_name = parameter_name
        self.ui_widget_type = ui_widget_type


class UIYamlEditor(msrest.serialization.Model):
    """UIYamlEditor.

    :ivar json_schema:
    :vartype json_schema: str
    """

    _attribute_map = {
        'json_schema': {'key': 'jsonSchema', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        json_schema: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword json_schema:
        :paramtype json_schema: str
        """
        super(UIYamlEditor, self).__init__(**kwargs)
        self.json_schema = json_schema


class UnversionedEntityRequestDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityRequestDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject.

    :ivar unversioned_entity_ids:
    :vartype unversioned_entity_ids: list[str]
    """

    _attribute_map = {
        'unversioned_entity_ids': {'key': 'unversionedEntityIds', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        unversioned_entity_ids: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entity_ids:
        :paramtype unversioned_entity_ids: list[str]
        """
        super(UnversionedEntityRequestDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entity_ids = unversioned_entity_ids


class UnversionedEntityRequestDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityRequestDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject.

    :ivar unversioned_entity_ids:
    :vartype unversioned_entity_ids: list[str]
    """

    _attribute_map = {
        'unversioned_entity_ids': {'key': 'unversionedEntityIds', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        unversioned_entity_ids: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entity_ids:
        :paramtype unversioned_entity_ids: list[str]
        """
        super(UnversionedEntityRequestDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entity_ids = unversioned_entity_ids


class UnversionedEntityRequestDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityRequestDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject.

    :ivar unversioned_entity_ids:
    :vartype unversioned_entity_ids: list[str]
    """

    _attribute_map = {
        'unversioned_entity_ids': {'key': 'unversionedEntityIds', 'type': '[str]'},
    }

    def __init__(
        self,
        *,
        unversioned_entity_ids: Optional[List[str]] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entity_ids:
        :paramtype unversioned_entity_ids: list[str]
        """
        super(UnversionedEntityRequestDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entity_ids = unversioned_entity_ids


class UnversionedEntityResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject.

    :ivar unversioned_entities:
    :vartype unversioned_entities: list[~flow.models.ExperimentIndexEntity]
    :ivar unversioned_entity_json_schema: Anything.
    :vartype unversioned_entity_json_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'unversioned_entities': {'key': 'unversionedEntities', 'type': '[ExperimentIndexEntity]'},
        'unversioned_entity_json_schema': {'key': 'unversionedEntityJsonSchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        unversioned_entities: Optional[List["ExperimentIndexEntity"]] = None,
        unversioned_entity_json_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entities:
        :paramtype unversioned_entities: list[~flow.models.ExperimentIndexEntity]
        :keyword unversioned_entity_json_schema: Anything.
        :paramtype unversioned_entity_json_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedEntityResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entities = unversioned_entities
        self.unversioned_entity_json_schema = unversioned_entity_json_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UnversionedEntityResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject.

    :ivar unversioned_entities:
    :vartype unversioned_entities: list[~flow.models.ExperimentTemplateIndexEntity]
    :ivar unversioned_entity_json_schema: Anything.
    :vartype unversioned_entity_json_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'unversioned_entities': {'key': 'unversionedEntities', 'type': '[ExperimentTemplateIndexEntity]'},
        'unversioned_entity_json_schema': {'key': 'unversionedEntityJsonSchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        unversioned_entities: Optional[List["ExperimentTemplateIndexEntity"]] = None,
        unversioned_entity_json_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entities:
        :paramtype unversioned_entities: list[~flow.models.ExperimentTemplateIndexEntity]
        :keyword unversioned_entity_json_schema: Anything.
        :paramtype unversioned_entity_json_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedEntityResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entities = unversioned_entities
        self.unversioned_entity_json_schema = unversioned_entity_json_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UnversionedEntityResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedEntityResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject.

    :ivar unversioned_entities:
    :vartype unversioned_entities: list[~flow.models.FlowIndexEntity]
    :ivar unversioned_entity_json_schema: Anything.
    :vartype unversioned_entity_json_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'unversioned_entities': {'key': 'unversionedEntities', 'type': '[FlowIndexEntity]'},
        'unversioned_entity_json_schema': {'key': 'unversionedEntityJsonSchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        unversioned_entities: Optional[List["FlowIndexEntity"]] = None,
        unversioned_entity_json_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword unversioned_entities:
        :paramtype unversioned_entities: list[~flow.models.FlowIndexEntity]
        :keyword unversioned_entity_json_schema: Anything.
        :paramtype unversioned_entity_json_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedEntityResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject, self).__init__(**kwargs)
        self.unversioned_entities = unversioned_entities
        self.unversioned_entity_json_schema = unversioned_entity_json_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UnversionedRebuildIndexDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildIndexDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject.

    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar entity_count:
    :vartype entity_count: int
    :ivar entity_container_type:
    :vartype entity_container_type: str
    :ivar entity_type:
    :vartype entity_type: str
    :ivar resource_id:
    :vartype resource_id: str
    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar immutable_resource_id:
    :vartype immutable_resource_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    """

    _attribute_map = {
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'entity_count': {'key': 'entityCount', 'type': 'int'},
        'entity_container_type': {'key': 'entityContainerType', 'type': 'str'},
        'entity_type': {'key': 'entityType', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'immutable_resource_id': {'key': 'immutableResourceId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        continuation_token: Optional[str] = None,
        entity_count: Optional[int] = None,
        entity_container_type: Optional[str] = None,
        entity_type: Optional[str] = None,
        resource_id: Optional[str] = None,
        workspace_id: Optional[str] = None,
        immutable_resource_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword entity_count:
        :paramtype entity_count: int
        :keyword entity_container_type:
        :paramtype entity_container_type: str
        :keyword entity_type:
        :paramtype entity_type: str
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword immutable_resource_id:
        :paramtype immutable_resource_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        """
        super(UnversionedRebuildIndexDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject, self).__init__(**kwargs)
        self.continuation_token = continuation_token
        self.entity_count = entity_count
        self.entity_container_type = entity_container_type
        self.entity_type = entity_type
        self.resource_id = resource_id
        self.workspace_id = workspace_id
        self.immutable_resource_id = immutable_resource_id
        self.start_time = start_time
        self.end_time = end_time


class UnversionedRebuildIndexDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildIndexDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject.

    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar entity_count:
    :vartype entity_count: int
    :ivar entity_container_type:
    :vartype entity_container_type: str
    :ivar entity_type:
    :vartype entity_type: str
    :ivar resource_id:
    :vartype resource_id: str
    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar immutable_resource_id:
    :vartype immutable_resource_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    """

    _attribute_map = {
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'entity_count': {'key': 'entityCount', 'type': 'int'},
        'entity_container_type': {'key': 'entityContainerType', 'type': 'str'},
        'entity_type': {'key': 'entityType', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'immutable_resource_id': {'key': 'immutableResourceId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        continuation_token: Optional[str] = None,
        entity_count: Optional[int] = None,
        entity_container_type: Optional[str] = None,
        entity_type: Optional[str] = None,
        resource_id: Optional[str] = None,
        workspace_id: Optional[str] = None,
        immutable_resource_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword entity_count:
        :paramtype entity_count: int
        :keyword entity_container_type:
        :paramtype entity_container_type: str
        :keyword entity_type:
        :paramtype entity_type: str
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword immutable_resource_id:
        :paramtype immutable_resource_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        """
        super(UnversionedRebuildIndexDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject, self).__init__(**kwargs)
        self.continuation_token = continuation_token
        self.entity_count = entity_count
        self.entity_container_type = entity_container_type
        self.entity_type = entity_type
        self.resource_id = resource_id
        self.workspace_id = workspace_id
        self.immutable_resource_id = immutable_resource_id
        self.start_time = start_time
        self.end_time = end_time


class UnversionedRebuildIndexDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildIndexDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject.

    :ivar continuation_token:
    :vartype continuation_token: str
    :ivar entity_count:
    :vartype entity_count: int
    :ivar entity_container_type:
    :vartype entity_container_type: str
    :ivar entity_type:
    :vartype entity_type: str
    :ivar resource_id:
    :vartype resource_id: str
    :ivar workspace_id:
    :vartype workspace_id: str
    :ivar immutable_resource_id:
    :vartype immutable_resource_id: str
    :ivar start_time:
    :vartype start_time: ~datetime.datetime
    :ivar end_time:
    :vartype end_time: ~datetime.datetime
    """

    _attribute_map = {
        'continuation_token': {'key': 'continuationToken', 'type': 'str'},
        'entity_count': {'key': 'entityCount', 'type': 'int'},
        'entity_container_type': {'key': 'entityContainerType', 'type': 'str'},
        'entity_type': {'key': 'entityType', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'immutable_resource_id': {'key': 'immutableResourceId', 'type': 'str'},
        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
    }

    def __init__(
        self,
        *,
        continuation_token: Optional[str] = None,
        entity_count: Optional[int] = None,
        entity_container_type: Optional[str] = None,
        entity_type: Optional[str] = None,
        resource_id: Optional[str] = None,
        workspace_id: Optional[str] = None,
        immutable_resource_id: Optional[str] = None,
        start_time: Optional[datetime.datetime] = None,
        end_time: Optional[datetime.datetime] = None,
        **kwargs
    ):
        """
        :keyword continuation_token:
        :paramtype continuation_token: str
        :keyword entity_count:
        :paramtype entity_count: int
        :keyword entity_container_type:
        :paramtype entity_container_type: str
        :keyword entity_type:
        :paramtype entity_type: str
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword workspace_id:
        :paramtype workspace_id: str
        :keyword immutable_resource_id:
        :paramtype immutable_resource_id: str
        :keyword start_time:
        :paramtype start_time: ~datetime.datetime
        :keyword end_time:
        :paramtype end_time: ~datetime.datetime
        """
        super(UnversionedRebuildIndexDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject, self).__init__(**kwargs)
        self.continuation_token = continuation_token
        self.entity_count = entity_count
        self.entity_container_type = entity_container_type
        self.entity_type = entity_type
        self.resource_id = resource_id
        self.workspace_id = workspace_id
        self.immutable_resource_id = immutable_resource_id
        self.start_time = start_time
        self.end_time = end_time


class UnversionedRebuildResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject.

    :ivar entities:
    :vartype entities: ~flow.models.SegmentedResult1ExperimentIndexEntity
    :ivar unversioned_entity_schema: Anything.
    :vartype unversioned_entity_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'entities': {'key': 'entities', 'type': 'SegmentedResult1ExperimentIndexEntity'},
        'unversioned_entity_schema': {'key': 'unversionedEntitySchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        entities: Optional["SegmentedResult1ExperimentIndexEntity"] = None,
        unversioned_entity_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword entities:
        :paramtype entities: ~flow.models.SegmentedResult1ExperimentIndexEntity
        :keyword unversioned_entity_schema: Anything.
        :paramtype unversioned_entity_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedRebuildResponseDtoExperimentIndexEntityExperimentAnnotationsExperimentPropertiesExtensibleObject, self).__init__(**kwargs)
        self.entities = entities
        self.unversioned_entity_schema = unversioned_entity_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UnversionedRebuildResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject.

    :ivar entities:
    :vartype entities: ~flow.models.SegmentedResult1ExperimentTemplateIndexEntity
    :ivar unversioned_entity_schema: Anything.
    :vartype unversioned_entity_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'entities': {'key': 'entities', 'type': 'SegmentedResult1ExperimentTemplateIndexEntity'},
        'unversioned_entity_schema': {'key': 'unversionedEntitySchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        entities: Optional["SegmentedResult1ExperimentTemplateIndexEntity"] = None,
        unversioned_entity_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword entities:
        :paramtype entities: ~flow.models.SegmentedResult1ExperimentTemplateIndexEntity
        :keyword unversioned_entity_schema: Anything.
        :paramtype unversioned_entity_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedRebuildResponseDtoExperimentTemplateIndexEntityExperimentTemplateAnnotationsExperimentTemplatePropertiesExtensibleObject, self).__init__(**kwargs)
        self.entities = entities
        self.unversioned_entity_schema = unversioned_entity_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UnversionedRebuildResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject(msrest.serialization.Model):
    """UnversionedRebuildResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject.

    :ivar entities:
    :vartype entities: ~flow.models.SegmentedResult1FlowIndexEntity
    :ivar unversioned_entity_schema: Anything.
    :vartype unversioned_entity_schema: any
    :ivar normalized_request_charge:
    :vartype normalized_request_charge: float
    :ivar normalized_request_charge_period:
    :vartype normalized_request_charge_period: str
    """

    _attribute_map = {
        'entities': {'key': 'entities', 'type': 'SegmentedResult1FlowIndexEntity'},
        'unversioned_entity_schema': {'key': 'unversionedEntitySchema', 'type': 'object'},
        'normalized_request_charge': {'key': 'normalizedRequestCharge', 'type': 'float'},
        'normalized_request_charge_period': {'key': 'normalizedRequestChargePeriod', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        entities: Optional["SegmentedResult1FlowIndexEntity"] = None,
        unversioned_entity_schema: Optional[Any] = None,
        normalized_request_charge: Optional[float] = None,
        normalized_request_charge_period: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword entities:
        :paramtype entities: ~flow.models.SegmentedResult1FlowIndexEntity
        :keyword unversioned_entity_schema: Anything.
        :paramtype unversioned_entity_schema: any
        :keyword normalized_request_charge:
        :paramtype normalized_request_charge: float
        :keyword normalized_request_charge_period:
        :paramtype normalized_request_charge_period: str
        """
        super(UnversionedRebuildResponseDtoFlowIndexEntityFlowAnnotationsFlowPropertiesExtensibleObject, self).__init__(**kwargs)
        self.entities = entities
        self.unversioned_entity_schema = unversioned_entity_schema
        self.normalized_request_charge = normalized_request_charge
        self.normalized_request_charge_period = normalized_request_charge_period


class UpdateComponentRequest(msrest.serialization.Model):
    """UpdateComponentRequest.

    :ivar display_name:
    :vartype display_name: str
    :ivar description:
    :vartype description: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar module_update_operation_type: Possible values include: "SetDefaultVersion",
     "EnableModule", "DisableModule", "UpdateDisplayName", "UpdateDescription", "UpdateTags".
    :vartype module_update_operation_type: str or ~flow.models.ModuleUpdateOperationType
    :ivar module_version:
    :vartype module_version: str
    """

    _attribute_map = {
        'display_name': {'key': 'displayName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'module_update_operation_type': {'key': 'moduleUpdateOperationType', 'type': 'str'},
        'module_version': {'key': 'moduleVersion', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        display_name: Optional[str] = None,
        description: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        module_update_operation_type: Optional[Union[str, "ModuleUpdateOperationType"]] = None,
        module_version: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword display_name:
        :paramtype display_name: str
        :keyword description:
        :paramtype description: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword module_update_operation_type: Possible values include: "SetDefaultVersion",
         "EnableModule", "DisableModule", "UpdateDisplayName", "UpdateDescription", "UpdateTags".
        :paramtype module_update_operation_type: str or ~flow.models.ModuleUpdateOperationType
        :keyword module_version:
        :paramtype module_version: str
        """
        super(UpdateComponentRequest, self).__init__(**kwargs)
        self.display_name = display_name
        self.description = description
        self.tags = tags
        self.module_update_operation_type = module_update_operation_type
        self.module_version = module_version


class UpdateFlowRequest(msrest.serialization.Model):
    """UpdateFlowRequest.

    :ivar flow_run_result:
    :vartype flow_run_result: ~flow.models.FlowRunResult
    :ivar flow_test_mode: Possible values include: "Sync", "Async".
    :vartype flow_test_mode: str or ~flow.models.FlowTestMode
    :ivar flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
    :vartype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
    :ivar flow_name:
    :vartype flow_name: str
    :ivar description:
    :vartype description: str
    :ivar details:
    :vartype details: str
    :ivar tags: A set of tags. Dictionary of :code:`<string>`.
    :vartype tags: dict[str, str]
    :ivar flow:
    :vartype flow: ~flow.models.Flow
    :ivar flow_definition_file_path:
    :vartype flow_definition_file_path: str
    :ivar flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
    :vartype flow_type: str or ~flow.models.FlowType
    :ivar flow_run_settings:
    :vartype flow_run_settings: ~flow.models.FlowRunSettings
    :ivar is_archived:
    :vartype is_archived: bool
    :ivar vm_size:
    :vartype vm_size: str
    :ivar max_idle_time_seconds:
    :vartype max_idle_time_seconds: long
    :ivar identity:
    :vartype identity: str
    :ivar compute_name:
    :vartype compute_name: str
    :ivar enable_multi_container:
    :vartype enable_multi_container: bool
    """

    _attribute_map = {
        'flow_run_result': {'key': 'flowRunResult', 'type': 'FlowRunResult'},
        'flow_test_mode': {'key': 'flowTestMode', 'type': 'str'},
        'flow_test_infos': {'key': 'flowTestInfos', 'type': '{FlowTestInfo}'},
        'flow_name': {'key': 'flowName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'details': {'key': 'details', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'flow': {'key': 'flow', 'type': 'Flow'},
        'flow_definition_file_path': {'key': 'flowDefinitionFilePath', 'type': 'str'},
        'flow_type': {'key': 'flowType', 'type': 'str'},
        'flow_run_settings': {'key': 'flowRunSettings', 'type': 'FlowRunSettings'},
        'is_archived': {'key': 'isArchived', 'type': 'bool'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'max_idle_time_seconds': {'key': 'maxIdleTimeSeconds', 'type': 'long'},
        'identity': {'key': 'identity', 'type': 'str'},
        'compute_name': {'key': 'computeName', 'type': 'str'},
        'enable_multi_container': {'key': 'enableMultiContainer', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        flow_run_result: Optional["FlowRunResult"] = None,
        flow_test_mode: Optional[Union[str, "FlowTestMode"]] = None,
        flow_test_infos: Optional[Dict[str, "FlowTestInfo"]] = None,
        flow_name: Optional[str] = None,
        description: Optional[str] = None,
        details: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        flow: Optional["Flow"] = None,
        flow_definition_file_path: Optional[str] = None,
        flow_type: Optional[Union[str, "FlowType"]] = None,
        flow_run_settings: Optional["FlowRunSettings"] = None,
        is_archived: Optional[bool] = None,
        vm_size: Optional[str] = None,
        max_idle_time_seconds: Optional[int] = None,
        identity: Optional[str] = None,
        compute_name: Optional[str] = None,
        enable_multi_container: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword flow_run_result:
        :paramtype flow_run_result: ~flow.models.FlowRunResult
        :keyword flow_test_mode: Possible values include: "Sync", "Async".
        :paramtype flow_test_mode: str or ~flow.models.FlowTestMode
        :keyword flow_test_infos: Dictionary of :code:`<FlowTestInfo>`.
        :paramtype flow_test_infos: dict[str, ~flow.models.FlowTestInfo]
        :keyword flow_name:
        :paramtype flow_name: str
        :keyword description:
        :paramtype description: str
        :keyword details:
        :paramtype details: str
        :keyword tags: A set of tags. Dictionary of :code:`<string>`.
        :paramtype tags: dict[str, str]
        :keyword flow:
        :paramtype flow: ~flow.models.Flow
        :keyword flow_definition_file_path:
        :paramtype flow_definition_file_path: str
        :keyword flow_type: Possible values include: "Default", "Evaluation", "Chat", "Rag".
        :paramtype flow_type: str or ~flow.models.FlowType
        :keyword flow_run_settings:
        :paramtype flow_run_settings: ~flow.models.FlowRunSettings
        :keyword is_archived:
        :paramtype is_archived: bool
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword max_idle_time_seconds:
        :paramtype max_idle_time_seconds: long
        :keyword identity:
        :paramtype identity: str
        :keyword compute_name:
        :paramtype compute_name: str
        :keyword enable_multi_container:
        :paramtype enable_multi_container: bool
        """
        super(UpdateFlowRequest, self).__init__(**kwargs)
        self.flow_run_result = flow_run_result
        self.flow_test_mode = flow_test_mode
        self.flow_test_infos = flow_test_infos
        self.flow_name = flow_name
        self.description = description
        self.details = details
        self.tags = tags
        self.flow = flow
        self.flow_definition_file_path = flow_definition_file_path
        self.flow_type = flow_type
        self.flow_run_settings = flow_run_settings
        self.is_archived = is_archived
        self.vm_size = vm_size
        self.max_idle_time_seconds = max_idle_time_seconds
        self.identity = identity
        self.compute_name = compute_name
        self.enable_multi_container = enable_multi_container


class UpdateFlowRuntimeRequest(msrest.serialization.Model):
    """UpdateFlowRuntimeRequest.

    :ivar runtime_description:
    :vartype runtime_description: str
    :ivar environment:
    :vartype environment: str
    :ivar instance_count:
    :vartype instance_count: int
    """

    _attribute_map = {
        'runtime_description': {'key': 'runtimeDescription', 'type': 'str'},
        'environment': {'key': 'environment', 'type': 'str'},
        'instance_count': {'key': 'instanceCount', 'type': 'int'},
    }

    def __init__(
        self,
        *,
        runtime_description: Optional[str] = None,
        environment: Optional[str] = None,
        instance_count: Optional[int] = None,
        **kwargs
    ):
        """
        :keyword runtime_description:
        :paramtype runtime_description: str
        :keyword environment:
        :paramtype environment: str
        :keyword instance_count:
        :paramtype instance_count: int
        """
        super(UpdateFlowRuntimeRequest, self).__init__(**kwargs)
        self.runtime_description = runtime_description
        self.environment = environment
        self.instance_count = instance_count


class UpdateFlowStatusRequest(msrest.serialization.Model):
    """UpdateFlowStatusRequest.

    :ivar flow_run_status: Possible values include: "Started", "Completed", "Failed", "Cancelled",
     "NotStarted", "Running", "Queued", "Paused", "Unapproved", "Starting", "Preparing",
     "CancelRequested", "Pausing", "Finalizing", "Canceled", "Bypassed", "Unavailable".
    :vartype flow_run_status: str or ~flow.models.FlowRunStatusEnum
    :ivar error_response: The error response.
    :vartype error_response: ~flow.models.ErrorResponse
    """

    _attribute_map = {
        'flow_run_status': {'key': 'flowRunStatus', 'type': 'str'},
        'error_response': {'key': 'errorResponse', 'type': 'ErrorResponse'},
    }

    def __init__(
        self,
        *,
        flow_run_status: Optional[Union[str, "FlowRunStatusEnum"]] = None,
        error_response: Optional["ErrorResponse"] = None,
        **kwargs
    ):
        """
        :keyword flow_run_status: Possible values include: "Started", "Completed", "Failed",
         "Cancelled", "NotStarted", "Running", "Queued", "Paused", "Unapproved", "Starting",
         "Preparing", "CancelRequested", "Pausing", "Finalizing", "Canceled", "Bypassed", "Unavailable".
        :paramtype flow_run_status: str or ~flow.models.FlowRunStatusEnum
        :keyword error_response: The error response.
        :paramtype error_response: ~flow.models.ErrorResponse
        """
        super(UpdateFlowStatusRequest, self).__init__(**kwargs)
        self.flow_run_status = flow_run_status
        self.error_response = error_response


class UpdateRegistryComponentRequest(msrest.serialization.Model):
    """UpdateRegistryComponentRequest.

    :ivar registry_name:
    :vartype registry_name: str
    :ivar component_name:
    :vartype component_name: str
    :ivar component_version:
    :vartype component_version: str
    :ivar update_type:  The only acceptable values to pass in are None and "SetDefaultVersion". The
     default value is None.
    :vartype update_type: str
    """

    _attribute_map = {
        'registry_name': {'key': 'registryName', 'type': 'str'},
        'component_name': {'key': 'componentName', 'type': 'str'},
        'component_version': {'key': 'componentVersion', 'type': 'str'},
        'update_type': {'key': 'updateType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        registry_name: Optional[str] = None,
        component_name: Optional[str] = None,
        component_version: Optional[str] = None,
        update_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword registry_name:
        :paramtype registry_name: str
        :keyword component_name:
        :paramtype component_name: str
        :keyword component_version:
        :paramtype component_version: str
        :keyword update_type:  The only acceptable values to pass in are None and "SetDefaultVersion".
         The default value is None.
        :paramtype update_type: str
        """
        super(UpdateRegistryComponentRequest, self).__init__(**kwargs)
        self.registry_name = registry_name
        self.component_name = component_name
        self.component_version = component_version
        self.update_type = update_type


class UploadOptions(msrest.serialization.Model):
    """UploadOptions.

    :ivar overwrite:
    :vartype overwrite: bool
    :ivar source_globs:
    :vartype source_globs: ~flow.models.ExecutionGlobsOptions
    """

    _attribute_map = {
        'overwrite': {'key': 'overwrite', 'type': 'bool'},
        'source_globs': {'key': 'sourceGlobs', 'type': 'ExecutionGlobsOptions'},
    }

    def __init__(
        self,
        *,
        overwrite: Optional[bool] = None,
        source_globs: Optional["ExecutionGlobsOptions"] = None,
        **kwargs
    ):
        """
        :keyword overwrite:
        :paramtype overwrite: bool
        :keyword source_globs:
        :paramtype source_globs: ~flow.models.ExecutionGlobsOptions
        """
        super(UploadOptions, self).__init__(**kwargs)
        self.overwrite = overwrite
        self.source_globs = source_globs


class UriReference(msrest.serialization.Model):
    """UriReference.

    :ivar path:
    :vartype path: str
    :ivar is_file:
    :vartype is_file: bool
    """

    _attribute_map = {
        'path': {'key': 'path', 'type': 'str'},
        'is_file': {'key': 'isFile', 'type': 'bool'},
    }

    def __init__(
        self,
        *,
        path: Optional[str] = None,
        is_file: Optional[bool] = None,
        **kwargs
    ):
        """
        :keyword path:
        :paramtype path: str
        :keyword is_file:
        :paramtype is_file: bool
        """
        super(UriReference, self).__init__(**kwargs)
        self.path = path
        self.is_file = is_file


class User(msrest.serialization.Model):
    """User.

    :ivar user_object_id: A user or service principal's object ID.
     This is EUPI and may only be logged to warm path telemetry.
    :vartype user_object_id: str
    :ivar user_pu_id: A user or service principal's PuID.
     This is PII and should never be logged.
    :vartype user_pu_id: str
    :ivar user_idp: A user identity provider. Eg live.com
     This is PII and should never be logged.
    :vartype user_idp: str
    :ivar user_alt_sec_id: A user alternate sec id. This represents the user in a different
     identity provider system Eg.1:live.com:puid
     This is PII and should never be logged.
    :vartype user_alt_sec_id: str
    :ivar user_iss: The issuer which issed the token for this user.
     This is PII and should never be logged.
    :vartype user_iss: str
    :ivar user_tenant_id: A user or service principal's tenant ID.
    :vartype user_tenant_id: str
    :ivar user_name: A user's full name or a service principal's app ID.
     This is PII and should never be logged.
    :vartype user_name: str
    :ivar upn: A user's Principal name (upn)
     This is PII andshould never be logged.
    :vartype upn: str
    """

    _attribute_map = {
        'user_object_id': {'key': 'userObjectId', 'type': 'str'},
        'user_pu_id': {'key': 'userPuId', 'type': 'str'},
        'user_idp': {'key': 'userIdp', 'type': 'str'},
        'user_alt_sec_id': {'key': 'userAltSecId', 'type': 'str'},
        'user_iss': {'key': 'userIss', 'type': 'str'},
        'user_tenant_id': {'key': 'userTenantId', 'type': 'str'},
        'user_name': {'key': 'userName', 'type': 'str'},
        'upn': {'key': 'upn', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        user_object_id: Optional[str] = None,
        user_pu_id: Optional[str] = None,
        user_idp: Optional[str] = None,
        user_alt_sec_id: Optional[str] = None,
        user_iss: Optional[str] = None,
        user_tenant_id: Optional[str] = None,
        user_name: Optional[str] = None,
        upn: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword user_object_id: A user or service principal's object ID.
         This is EUPI and may only be logged to warm path telemetry.
        :paramtype user_object_id: str
        :keyword user_pu_id: A user or service principal's PuID.
         This is PII and should never be logged.
        :paramtype user_pu_id: str
        :keyword user_idp: A user identity provider. Eg live.com
         This is PII and should never be logged.
        :paramtype user_idp: str
        :keyword user_alt_sec_id: A user alternate sec id. This represents the user in a different
         identity provider system Eg.1:live.com:puid
         This is PII and should never be logged.
        :paramtype user_alt_sec_id: str
        :keyword user_iss: The issuer which issed the token for this user.
         This is PII and should never be logged.
        :paramtype user_iss: str
        :keyword user_tenant_id: A user or service principal's tenant ID.
        :paramtype user_tenant_id: str
        :keyword user_name: A user's full name or a service principal's app ID.
         This is PII and should never be logged.
        :paramtype user_name: str
        :keyword upn: A user's Principal name (upn)
         This is PII andshould never be logged.
        :paramtype upn: str
        """
        super(User, self).__init__(**kwargs)
        self.user_object_id = user_object_id
        self.user_pu_id = user_pu_id
        self.user_idp = user_idp
        self.user_alt_sec_id = user_alt_sec_id
        self.user_iss = user_iss
        self.user_tenant_id = user_tenant_id
        self.user_name = user_name
        self.upn = upn


class UserAssignedIdentity(msrest.serialization.Model):
    """UserAssignedIdentity.

    :ivar principal_id:
    :vartype principal_id: str
    :ivar client_id:
    :vartype client_id: str
    """

    _attribute_map = {
        'principal_id': {'key': 'principalId', 'type': 'str'},
        'client_id': {'key': 'clientId', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        principal_id: Optional[str] = None,
        client_id: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword principal_id:
        :paramtype principal_id: str
        :keyword client_id:
        :paramtype client_id: str
        """
        super(UserAssignedIdentity, self).__init__(**kwargs)
        self.principal_id = principal_id
        self.client_id = client_id


class ValidationDataSettings(msrest.serialization.Model):
    """ValidationDataSettings.

    :ivar n_cross_validations:
    :vartype n_cross_validations: ~flow.models.NCrossValidations
    :ivar validation_data_size:
    :vartype validation_data_size: float
    :ivar cv_split_column_names:
    :vartype cv_split_column_names: list[str]
    :ivar validation_type:
    :vartype validation_type: str
    """

    _attribute_map = {
        'n_cross_validations': {'key': 'nCrossValidations', 'type': 'NCrossValidations'},
        'validation_data_size': {'key': 'validationDataSize', 'type': 'float'},
        'cv_split_column_names': {'key': 'cvSplitColumnNames', 'type': '[str]'},
        'validation_type': {'key': 'validationType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        n_cross_validations: Optional["NCrossValidations"] = None,
        validation_data_size: Optional[float] = None,
        cv_split_column_names: Optional[List[str]] = None,
        validation_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword n_cross_validations:
        :paramtype n_cross_validations: ~flow.models.NCrossValidations
        :keyword validation_data_size:
        :paramtype validation_data_size: float
        :keyword cv_split_column_names:
        :paramtype cv_split_column_names: list[str]
        :keyword validation_type:
        :paramtype validation_type: str
        """
        super(ValidationDataSettings, self).__init__(**kwargs)
        self.n_cross_validations = n_cross_validations
        self.validation_data_size = validation_data_size
        self.cv_split_column_names = cv_split_column_names
        self.validation_type = validation_type


class VariantIdentifier(msrest.serialization.Model):
    """VariantIdentifier.

    :ivar variant_id:
    :vartype variant_id: str
    :ivar tuning_node_name:
    :vartype tuning_node_name: str
    """

    _attribute_map = {
        'variant_id': {'key': 'variantId', 'type': 'str'},
        'tuning_node_name': {'key': 'tuningNodeName', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        variant_id: Optional[str] = None,
        tuning_node_name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword variant_id:
        :paramtype variant_id: str
        :keyword tuning_node_name:
        :paramtype tuning_node_name: str
        """
        super(VariantIdentifier, self).__init__(**kwargs)
        self.variant_id = variant_id
        self.tuning_node_name = tuning_node_name


class VariantNode(msrest.serialization.Model):
    """VariantNode.

    :ivar node:
    :vartype node: ~flow.models.Node
    :ivar description:
    :vartype description: str
    """

    _attribute_map = {
        'node': {'key': 'node', 'type': 'Node'},
        'description': {'key': 'description', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node: Optional["Node"] = None,
        description: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node:
        :paramtype node: ~flow.models.Node
        :keyword description:
        :paramtype description: str
        """
        super(VariantNode, self).__init__(**kwargs)
        self.node = node
        self.description = description


class Volume(msrest.serialization.Model):
    """Volume.

    :ivar source:
    :vartype source: str
    :ivar target:
    :vartype target: str
    :ivar bind_options:
    :vartype bind_options: ~flow.models.BindOptions
    """

    _attribute_map = {
        'source': {'key': 'source', 'type': 'str'},
        'target': {'key': 'target', 'type': 'str'},
        'bind_options': {'key': 'bindOptions', 'type': 'BindOptions'},
    }

    def __init__(
        self,
        *,
        source: Optional[str] = None,
        target: Optional[str] = None,
        bind_options: Optional["BindOptions"] = None,
        **kwargs
    ):
        """
        :keyword source:
        :paramtype source: str
        :keyword target:
        :paramtype target: str
        :keyword bind_options:
        :paramtype bind_options: ~flow.models.BindOptions
        """
        super(Volume, self).__init__(**kwargs)
        self.source = source
        self.target = target
        self.bind_options = bind_options


class Webhook(msrest.serialization.Model):
    """Webhook.

    :ivar webhook_type:  The only acceptable values to pass in are None and "AzureDevOps". The
     default value is None.
    :vartype webhook_type: str
    :ivar event_type:
    :vartype event_type: str
    """

    _attribute_map = {
        'webhook_type': {'key': 'webhookType', 'type': 'str'},
        'event_type': {'key': 'eventType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        webhook_type: Optional[str] = None,
        event_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword webhook_type:  The only acceptable values to pass in are None and "AzureDevOps". The
         default value is None.
        :paramtype webhook_type: str
        :keyword event_type:
        :paramtype event_type: str
        """
        super(Webhook, self).__init__(**kwargs)
        self.webhook_type = webhook_type
        self.event_type = event_type


class WebServiceComputeMetaInfo(msrest.serialization.Model):
    """WebServiceComputeMetaInfo.

    :ivar node_count:
    :vartype node_count: int
    :ivar is_ssl_enabled:
    :vartype is_ssl_enabled: bool
    :ivar aks_not_found:
    :vartype aks_not_found: bool
    :ivar cluster_purpose:
    :vartype cluster_purpose: str
    :ivar public_ip_address:
    :vartype public_ip_address: str
    :ivar vm_size:
    :vartype vm_size: str
    :ivar location:
    :vartype location: str
    :ivar provisioning_state:
    :vartype provisioning_state: str
    :ivar state:
    :vartype state: str
    :ivar os_type:
    :vartype os_type: str
    :ivar id:
    :vartype id: str
    :ivar name:
    :vartype name: str
    :ivar created_by_studio:
    :vartype created_by_studio: bool
    :ivar is_gpu_type:
    :vartype is_gpu_type: bool
    :ivar resource_id:
    :vartype resource_id: str
    :ivar compute_type:
    :vartype compute_type: str
    """

    _attribute_map = {
        'node_count': {'key': 'nodeCount', 'type': 'int'},
        'is_ssl_enabled': {'key': 'isSslEnabled', 'type': 'bool'},
        'aks_not_found': {'key': 'aksNotFound', 'type': 'bool'},
        'cluster_purpose': {'key': 'clusterPurpose', 'type': 'str'},
        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
        'vm_size': {'key': 'vmSize', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'state': {'key': 'state', 'type': 'str'},
        'os_type': {'key': 'osType', 'type': 'str'},
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'created_by_studio': {'key': 'createdByStudio', 'type': 'bool'},
        'is_gpu_type': {'key': 'isGpuType', 'type': 'bool'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'compute_type': {'key': 'computeType', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_count: Optional[int] = None,
        is_ssl_enabled: Optional[bool] = None,
        aks_not_found: Optional[bool] = None,
        cluster_purpose: Optional[str] = None,
        public_ip_address: Optional[str] = None,
        vm_size: Optional[str] = None,
        location: Optional[str] = None,
        provisioning_state: Optional[str] = None,
        state: Optional[str] = None,
        os_type: Optional[str] = None,
        id: Optional[str] = None,
        name: Optional[str] = None,
        created_by_studio: Optional[bool] = None,
        is_gpu_type: Optional[bool] = None,
        resource_id: Optional[str] = None,
        compute_type: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_count:
        :paramtype node_count: int
        :keyword is_ssl_enabled:
        :paramtype is_ssl_enabled: bool
        :keyword aks_not_found:
        :paramtype aks_not_found: bool
        :keyword cluster_purpose:
        :paramtype cluster_purpose: str
        :keyword public_ip_address:
        :paramtype public_ip_address: str
        :keyword vm_size:
        :paramtype vm_size: str
        :keyword location:
        :paramtype location: str
        :keyword provisioning_state:
        :paramtype provisioning_state: str
        :keyword state:
        :paramtype state: str
        :keyword os_type:
        :paramtype os_type: str
        :keyword id:
        :paramtype id: str
        :keyword name:
        :paramtype name: str
        :keyword created_by_studio:
        :paramtype created_by_studio: bool
        :keyword is_gpu_type:
        :paramtype is_gpu_type: bool
        :keyword resource_id:
        :paramtype resource_id: str
        :keyword compute_type:
        :paramtype compute_type: str
        """
        super(WebServiceComputeMetaInfo, self).__init__(**kwargs)
        self.node_count = node_count
        self.is_ssl_enabled = is_ssl_enabled
        self.aks_not_found = aks_not_found
        self.cluster_purpose = cluster_purpose
        self.public_ip_address = public_ip_address
        self.vm_size = vm_size
        self.location = location
        self.provisioning_state = provisioning_state
        self.state = state
        self.os_type = os_type
        self.id = id
        self.name = name
        self.created_by_studio = created_by_studio
        self.is_gpu_type = is_gpu_type
        self.resource_id = resource_id
        self.compute_type = compute_type


class WebServicePort(msrest.serialization.Model):
    """WebServicePort.

    :ivar node_id:
    :vartype node_id: str
    :ivar port_name:
    :vartype port_name: str
    :ivar name:
    :vartype name: str
    """

    _attribute_map = {
        'node_id': {'key': 'nodeId', 'type': 'str'},
        'port_name': {'key': 'portName', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        node_id: Optional[str] = None,
        port_name: Optional[str] = None,
        name: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword node_id:
        :paramtype node_id: str
        :keyword port_name:
        :paramtype port_name: str
        :keyword name:
        :paramtype name: str
        """
        super(WebServicePort, self).__init__(**kwargs)
        self.node_id = node_id
        self.port_name = port_name
        self.name = name


class WorkspaceConnectionSpec(msrest.serialization.Model):
    """WorkspaceConnectionSpec.

    :ivar connection_category: Possible values include: "PythonFeed", "ACR", "Git", "S3",
     "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics", "AzureMySqlDb", "AzurePostgresDb",
     "AzureDataLakeGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices", "CognitiveSearch",
     "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
     "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
     "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
     "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
     "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
     "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
     "Sybase", "Teradata", "Vertica", "Cassandra", "Couchbase", "MongoDbV2", "MongoDbAtlas",
     "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
     "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
     "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
     "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
     "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
     "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
     "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "OpenAI", "Serp", "BingLLMSearch",
     "Serverless".
    :vartype connection_category: str or ~flow.models.ConnectionCategory
    :ivar flow_value_type: Possible values include: "int", "double", "bool", "string", "secret",
     "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
     "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
     "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
     "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
     "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
     "assistant_definition", "ServerlessConnection", "AIServicesConnection".
    :vartype flow_value_type: str or ~flow.models.ValueType
    :ivar connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
     "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
     "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
    :vartype connection_type: str or ~flow.models.ConnectionType
    :ivar connection_type_display_name:
    :vartype connection_type_display_name: str
    :ivar config_specs:
    :vartype config_specs: list[~flow.models.ConnectionConfigSpec]
    :ivar module:
    :vartype module: str
    """

    _attribute_map = {
        'connection_category': {'key': 'connectionCategory', 'type': 'str'},
        'flow_value_type': {'key': 'flowValueType', 'type': 'str'},
        'connection_type': {'key': 'connectionType', 'type': 'str'},
        'connection_type_display_name': {'key': 'connectionTypeDisplayName', 'type': 'str'},
        'config_specs': {'key': 'configSpecs', 'type': '[ConnectionConfigSpec]'},
        'module': {'key': 'module', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        connection_category: Optional[Union[str, "ConnectionCategory"]] = None,
        flow_value_type: Optional[Union[str, "ValueType"]] = None,
        connection_type: Optional[Union[str, "ConnectionType"]] = None,
        connection_type_display_name: Optional[str] = None,
        config_specs: Optional[List["ConnectionConfigSpec"]] = None,
        module: Optional[str] = None,
        **kwargs
    ):
        """
        :keyword connection_category: Possible values include: "PythonFeed", "ACR", "Git", "S3",
         "Snowflake", "AzureSqlDb", "AzureSynapseAnalytics", "AzureMySqlDb", "AzurePostgresDb",
         "AzureDataLakeGen2", "Redis", "ApiKey", "AzureOpenAI", "AIServices", "CognitiveSearch",
         "CognitiveService", "CustomKeys", "AzureBlob", "AzureOneLake", "CosmosDb",
         "CosmosDbMongoDbApi", "AzureDataExplorer", "AzureMariaDb", "AzureDatabricksDeltaLake",
         "AzureSqlMi", "AzureTableStorage", "AmazonRdsForOracle", "AmazonRdsForSqlServer",
         "AmazonRedshift", "Db2", "Drill", "GoogleBigQuery", "Greenplum", "Hbase", "Hive", "Impala",
         "Informix", "MariaDb", "MicrosoftAccess", "MySql", "Netezza", "Oracle", "Phoenix",
         "PostgreSql", "Presto", "SapOpenHub", "SapBw", "SapHana", "SapTable", "Spark", "SqlServer",
         "Sybase", "Teradata", "Vertica", "Cassandra", "Couchbase", "MongoDbV2", "MongoDbAtlas",
         "AmazonS3Compatible", "FileServer", "FtpServer", "GoogleCloudStorage", "Hdfs",
         "OracleCloudStorage", "Sftp", "GenericHttp", "ODataRest", "Odbc", "GenericRest", "AmazonMws",
         "Concur", "Dynamics", "DynamicsAx", "DynamicsCrm", "GoogleAdWords", "Hubspot", "Jira",
         "Magento", "Marketo", "Office365", "Eloqua", "Responsys", "OracleServiceCloud", "PayPal",
         "QuickBooks", "Salesforce", "SalesforceServiceCloud", "SalesforceMarketingCloud",
         "SapCloudForCustomer", "SapEcc", "ServiceNow", "SharePointOnlineList", "Shopify", "Square",
         "WebTable", "Xero", "Zoho", "GenericContainerRegistry", "OpenAI", "Serp", "BingLLMSearch",
         "Serverless".
        :paramtype connection_category: str or ~flow.models.ConnectionCategory
        :keyword flow_value_type: Possible values include: "int", "double", "bool", "string", "secret",
         "prompt_template", "object", "list", "BingConnection", "OpenAIConnection",
         "AzureOpenAIConnection", "AzureContentModeratorConnection", "CustomConnection",
         "AzureContentSafetyConnection", "SerpConnection", "CognitiveSearchConnection",
         "SubstrateLLMConnection", "PineconeConnection", "QdrantConnection", "WeaviateConnection",
         "function_list", "function_str", "FormRecognizerConnection", "file_path", "image",
         "assistant_definition", "ServerlessConnection", "AIServicesConnection".
        :paramtype flow_value_type: str or ~flow.models.ValueType
        :keyword connection_type: Possible values include: "OpenAI", "AzureOpenAI", "Serp", "Bing",
         "AzureContentModerator", "Custom", "AzureContentSafety", "CognitiveSearch", "SubstrateLLM",
         "Pinecone", "Qdrant", "Weaviate", "FormRecognizer", "Serverless", "AIServices".
        :paramtype connection_type: str or ~flow.models.ConnectionType
        :keyword connection_type_display_name:
        :paramtype connection_type_display_name: str
        :keyword config_specs:
        :paramtype config_specs: list[~flow.models.ConnectionConfigSpec]
        :keyword module:
        :paramtype module: str
        """
        super(WorkspaceConnectionSpec, self).__init__(**kwargs)
        self.connection_category = connection_category
        self.flow_value_type = flow_value_type
        self.connection_type = connection_type
        self.connection_type_display_name = connection_type_display_name
        self.config_specs = config_specs
        self.module = module
