# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from odahuflow.sdk.models.base_model_ import Model
from odahuflow.sdk.models import util


class TargetSchema(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, connection_types: List[str]=None, default: str=None, name: str=None, required: bool=None):  # noqa: E501
        """TargetSchema - a model defined in Swagger

        :param connection_types: The connection_types of this TargetSchema.  # noqa: E501
        :type connection_types: List[str]
        :param default: The default of this TargetSchema.  # noqa: E501
        :type default: str
        :param name: The name of this TargetSchema.  # noqa: E501
        :type name: str
        :param required: The required of this TargetSchema.  # noqa: E501
        :type required: bool
        """
        self.swagger_types = {
            'connection_types': List[str],
            'default': str,
            'name': str,
            'required': bool
        }

        self.attribute_map = {
            'connection_types': 'connectionTypes',
            'default': 'default',
            'name': 'name',
            'required': 'required'
        }

        self._connection_types = connection_types
        self._default = default
        self._name = name
        self._required = required

    @classmethod
    def from_dict(cls, dikt) -> 'TargetSchema':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The TargetSchema of this TargetSchema.  # noqa: E501
        :rtype: TargetSchema
        """
        return util.deserialize_model(dikt, cls)

    @property
    def connection_types(self) -> List[str]:
        """Gets the connection_types of this TargetSchema.


        :return: The connection_types of this TargetSchema.
        :rtype: List[str]
        """
        return self._connection_types

    @connection_types.setter
    def connection_types(self, connection_types: List[str]):
        """Sets the connection_types of this TargetSchema.


        :param connection_types: The connection_types of this TargetSchema.
        :type connection_types: List[str]
        """

        self._connection_types = connection_types

    @property
    def default(self) -> str:
        """Gets the default of this TargetSchema.


        :return: The default of this TargetSchema.
        :rtype: str
        """
        return self._default

    @default.setter
    def default(self, default: str):
        """Sets the default of this TargetSchema.


        :param default: The default of this TargetSchema.
        :type default: str
        """

        self._default = default

    @property
    def name(self) -> str:
        """Gets the name of this TargetSchema.


        :return: The name of this TargetSchema.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """Sets the name of this TargetSchema.


        :param name: The name of this TargetSchema.
        :type name: str
        """

        self._name = name

    @property
    def required(self) -> bool:
        """Gets the required of this TargetSchema.


        :return: The required of this TargetSchema.
        :rtype: bool
        """
        return self._required

    @required.setter
    def required(self, required: bool):
        """Sets the required of this TargetSchema.


        :param required: The required of this TargetSchema.
        :type required: bool
        """

        self._required = required
