# coding: utf-8

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

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server.models.card_embossing import CardEmbossing  # noqa: F401,E501
from swagger_server.models.contact_information import ContactInformation  # noqa: F401,E501
from swagger_server.models.personal_identity_document_info import PersonalIdentityDocumentInfo  # noqa: F401,E501
from swagger_server import util


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

    Do not edit the class manually.
    """
    def __init__(self, cardholder_type: str=None, full_name: str=None, card_data: CardEmbossing=None, identity_document_number: str=None, other_identity_document_number: PersonalIdentityDocumentInfo=None, birth_date: str=None, nationality: str=None, gender: str=None, civil_status: str=None, contact_information: ContactInformation=None):  # noqa: E501
        """CardholderData - a model defined in Swagger

        :param cardholder_type: The cardholder_type of this CardholderData.  # noqa: E501
        :type cardholder_type: str
        :param full_name: The full_name of this CardholderData.  # noqa: E501
        :type full_name: str
        :param card_data: The card_data of this CardholderData.  # noqa: E501
        :type card_data: CardEmbossing
        :param identity_document_number: The identity_document_number of this CardholderData.  # noqa: E501
        :type identity_document_number: str
        :param other_identity_document_number: The other_identity_document_number of this CardholderData.  # noqa: E501
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        :param birth_date: The birth_date of this CardholderData.  # noqa: E501
        :type birth_date: str
        :param nationality: The nationality of this CardholderData.  # noqa: E501
        :type nationality: str
        :param gender: The gender of this CardholderData.  # noqa: E501
        :type gender: str
        :param civil_status: The civil_status of this CardholderData.  # noqa: E501
        :type civil_status: str
        :param contact_information: The contact_information of this CardholderData.  # noqa: E501
        :type contact_information: ContactInformation
        """
        self.swagger_types = {
            'cardholder_type': str,
            'full_name': str,
            'card_data': CardEmbossing,
            'identity_document_number': str,
            'other_identity_document_number': PersonalIdentityDocumentInfo,
            'birth_date': str,
            'nationality': str,
            'gender': str,
            'civil_status': str,
            'contact_information': ContactInformation
        }

        self.attribute_map = {
            'cardholder_type': 'cardholderType',
            'full_name': 'fullName',
            'card_data': 'cardData',
            'identity_document_number': 'identityDocumentNumber',
            'other_identity_document_number': 'otherIdentityDocumentNumber',
            'birth_date': 'birthDate',
            'nationality': 'nationality',
            'gender': 'gender',
            'civil_status': 'civilStatus',
            'contact_information': 'contactInformation'
        }
        self._cardholder_type = cardholder_type
        self._full_name = full_name
        self._card_data = card_data
        self._identity_document_number = identity_document_number
        self._other_identity_document_number = other_identity_document_number
        self._birth_date = birth_date
        self._nationality = nationality
        self._gender = gender
        self._civil_status = civil_status
        self._contact_information = contact_information

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

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

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

        Tipo de portador (\"main\" - Titular ou \"additional\" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador (\"main\" - Titular ou \"additional\" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ["main", "additional"]  # noqa: E501
        if cardholder_type not in allowed_values:
            raise ValueError(
                "Invalid value for `cardholder_type` ({0}), must be one of {1}"
                .format(cardholder_type, allowed_values)
            )

        self._cardholder_type = cardholder_type

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

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :return: The full_name of this CardholderData.
        :rtype: str
        """
        return self._full_name

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError("Invalid value for `full_name`, must not be `None`")  # noqa: E501

        self._full_name = full_name

    @property
    def card_data(self) -> CardEmbossing:
        """Gets the card_data of this CardholderData.


        :return: The card_data of this CardholderData.
        :rtype: CardEmbossing
        """
        return self._card_data

    @card_data.setter
    def card_data(self, card_data: CardEmbossing):
        """Sets the card_data of this CardholderData.


        :param card_data: The card_data of this CardholderData.
        :type card_data: CardEmbossing
        """
        if card_data is None:
            raise ValueError("Invalid value for `card_data`, must not be `None`")  # noqa: E501

        self._card_data = card_data

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number

    @identity_document_number.setter
    def identity_document_number(self, identity_document_number: str):
        """Sets the identity_document_number of this CardholderData.

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :param identity_document_number: The identity_document_number of this CardholderData.
        :type identity_document_number: str
        """
        if identity_document_number is None:
            raise ValueError("Invalid value for `identity_document_number`, must not be `None`")  # noqa: E501

        self._identity_document_number = identity_document_number

    @property
    def other_identity_document_number(self) -> PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number

    @other_identity_document_number.setter
    def other_identity_document_number(self, other_identity_document_number: PersonalIdentityDocumentInfo):
        """Sets the other_identity_document_number of this CardholderData.


        :param other_identity_document_number: The other_identity_document_number of this CardholderData.
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        """

        self._other_identity_document_number = other_identity_document_number

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

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :return: The birth_date of this CardholderData.
        :rtype: str
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError("Invalid value for `birth_date`, must not be `None`")  # noqa: E501

        self._birth_date = birth_date

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

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :return: The nationality of this CardholderData.
        :rtype: str
        """
        return self._nationality

    @nationality.setter
    def nationality(self, nationality: str):
        """Sets the nationality of this CardholderData.

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :param nationality: The nationality of this CardholderData.
        :type nationality: str
        """
        if nationality is None:
            raise ValueError("Invalid value for `nationality`, must not be `None`")  # noqa: E501

        self._nationality = nationality

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ["male", "female", "other"]  # noqa: E501
        if gender not in allowed_values:
            raise ValueError(
                "Invalid value for `gender` ({0}), must be one of {1}"
                .format(gender, allowed_values)
            )

        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ["single", "married", "divorced", "widowed", "other"]  # noqa: E501
        if civil_status not in allowed_values:
            raise ValueError(
                "Invalid value for `civil_status` ({0}), must be one of {1}"
                .format(civil_status, allowed_values)
            )

        self._civil_status = civil_status

    @property
    def contact_information(self) -> ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information

    @contact_information.setter
    def contact_information(self, contact_information: ContactInformation):
        """Sets the contact_information of this CardholderData.


        :param contact_information: The contact_information of this CardholderData.
        :type contact_information: ContactInformation
        """

        self._contact_information = contact_information

ed58f9a055bc3ed38e0b27840b0b06ca0e148acc
<mask token>


class CardholderData(Model):
    <mask token>
    <mask token>

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

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

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

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ['main', 'additional']
        if cardholder_type not in allowed_values:
            raise ValueError(
                'Invalid value for `cardholder_type` ({0}), must be one of {1}'
                .format(cardholder_type, allowed_values))
        self._cardholder_type = cardholder_type
    <mask token>

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError(
                'Invalid value for `full_name`, must not be `None`')
        self._full_name = full_name
    <mask token>
    <mask token>

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number
    <mask token>

    @property
    def other_identity_document_number(self) ->PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number
    <mask token>
    <mask token>

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError(
                'Invalid value for `birth_date`, must not be `None`')
        self._birth_date = birth_date
    <mask token>
    <mask token>

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ['male', 'female', 'other']
        if gender not in allowed_values:
            raise ValueError(
                'Invalid value for `gender` ({0}), must be one of {1}'.
                format(gender, allowed_values))
        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ['single', 'married', 'divorced', 'widowed', 'other']
        if civil_status not in allowed_values:
            raise ValueError(
                'Invalid value for `civil_status` ({0}), must be one of {1}'
                .format(civil_status, allowed_values))
        self._civil_status = civil_status

    @property
    def contact_information(self) ->ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information
    <mask token>

<mask token>


class CardholderData(Model):
    <mask token>
    <mask token>

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

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

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

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ['main', 'additional']
        if cardholder_type not in allowed_values:
            raise ValueError(
                'Invalid value for `cardholder_type` ({0}), must be one of {1}'
                .format(cardholder_type, allowed_values))
        self._cardholder_type = cardholder_type
    <mask token>

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError(
                'Invalid value for `full_name`, must not be `None`')
        self._full_name = full_name

    @property
    def card_data(self) ->CardEmbossing:
        """Gets the card_data of this CardholderData.


        :return: The card_data of this CardholderData.
        :rtype: CardEmbossing
        """
        return self._card_data

    @card_data.setter
    def card_data(self, card_data: CardEmbossing):
        """Sets the card_data of this CardholderData.


        :param card_data: The card_data of this CardholderData.
        :type card_data: CardEmbossing
        """
        if card_data is None:
            raise ValueError(
                'Invalid value for `card_data`, must not be `None`')
        self._card_data = card_data

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number
    <mask token>

    @property
    def other_identity_document_number(self) ->PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number
    <mask token>

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

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :return: The birth_date of this CardholderData.
        :rtype: str
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError(
                'Invalid value for `birth_date`, must not be `None`')
        self._birth_date = birth_date

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

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :return: The nationality of this CardholderData.
        :rtype: str
        """
        return self._nationality
    <mask token>

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ['male', 'female', 'other']
        if gender not in allowed_values:
            raise ValueError(
                'Invalid value for `gender` ({0}), must be one of {1}'.
                format(gender, allowed_values))
        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ['single', 'married', 'divorced', 'widowed', 'other']
        if civil_status not in allowed_values:
            raise ValueError(
                'Invalid value for `civil_status` ({0}), must be one of {1}'
                .format(civil_status, allowed_values))
        self._civil_status = civil_status

    @property
    def contact_information(self) ->ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information
    <mask token>

<mask token>


class CardholderData(Model):
    <mask token>
    <mask token>

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

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

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

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ['main', 'additional']
        if cardholder_type not in allowed_values:
            raise ValueError(
                'Invalid value for `cardholder_type` ({0}), must be one of {1}'
                .format(cardholder_type, allowed_values))
        self._cardholder_type = cardholder_type
    <mask token>

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError(
                'Invalid value for `full_name`, must not be `None`')
        self._full_name = full_name

    @property
    def card_data(self) ->CardEmbossing:
        """Gets the card_data of this CardholderData.


        :return: The card_data of this CardholderData.
        :rtype: CardEmbossing
        """
        return self._card_data

    @card_data.setter
    def card_data(self, card_data: CardEmbossing):
        """Sets the card_data of this CardholderData.


        :param card_data: The card_data of this CardholderData.
        :type card_data: CardEmbossing
        """
        if card_data is None:
            raise ValueError(
                'Invalid value for `card_data`, must not be `None`')
        self._card_data = card_data

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number
    <mask token>

    @property
    def other_identity_document_number(self) ->PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number
    <mask token>

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

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :return: The birth_date of this CardholderData.
        :rtype: str
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError(
                'Invalid value for `birth_date`, must not be `None`')
        self._birth_date = birth_date

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

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :return: The nationality of this CardholderData.
        :rtype: str
        """
        return self._nationality

    @nationality.setter
    def nationality(self, nationality: str):
        """Sets the nationality of this CardholderData.

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :param nationality: The nationality of this CardholderData.
        :type nationality: str
        """
        if nationality is None:
            raise ValueError(
                'Invalid value for `nationality`, must not be `None`')
        self._nationality = nationality

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ['male', 'female', 'other']
        if gender not in allowed_values:
            raise ValueError(
                'Invalid value for `gender` ({0}), must be one of {1}'.
                format(gender, allowed_values))
        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ['single', 'married', 'divorced', 'widowed', 'other']
        if civil_status not in allowed_values:
            raise ValueError(
                'Invalid value for `civil_status` ({0}), must be one of {1}'
                .format(civil_status, allowed_values))
        self._civil_status = civil_status

    @property
    def contact_information(self) ->ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information
    <mask token>

<mask token>


class CardholderData(Model):
    <mask token>

    def __init__(self, cardholder_type: str=None, full_name: str=None,
        card_data: CardEmbossing=None, identity_document_number: str=None,
        other_identity_document_number: PersonalIdentityDocumentInfo=None,
        birth_date: str=None, nationality: str=None, gender: str=None,
        civil_status: str=None, contact_information: ContactInformation=None):
        """CardholderData - a model defined in Swagger

        :param cardholder_type: The cardholder_type of this CardholderData.  # noqa: E501
        :type cardholder_type: str
        :param full_name: The full_name of this CardholderData.  # noqa: E501
        :type full_name: str
        :param card_data: The card_data of this CardholderData.  # noqa: E501
        :type card_data: CardEmbossing
        :param identity_document_number: The identity_document_number of this CardholderData.  # noqa: E501
        :type identity_document_number: str
        :param other_identity_document_number: The other_identity_document_number of this CardholderData.  # noqa: E501
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        :param birth_date: The birth_date of this CardholderData.  # noqa: E501
        :type birth_date: str
        :param nationality: The nationality of this CardholderData.  # noqa: E501
        :type nationality: str
        :param gender: The gender of this CardholderData.  # noqa: E501
        :type gender: str
        :param civil_status: The civil_status of this CardholderData.  # noqa: E501
        :type civil_status: str
        :param contact_information: The contact_information of this CardholderData.  # noqa: E501
        :type contact_information: ContactInformation
        """
        self.swagger_types = {'cardholder_type': str, 'full_name': str,
            'card_data': CardEmbossing, 'identity_document_number': str,
            'other_identity_document_number': PersonalIdentityDocumentInfo,
            'birth_date': str, 'nationality': str, 'gender': str,
            'civil_status': str, 'contact_information': ContactInformation}
        self.attribute_map = {'cardholder_type': 'cardholderType',
            'full_name': 'fullName', 'card_data': 'cardData',
            'identity_document_number': 'identityDocumentNumber',
            'other_identity_document_number': 'otherIdentityDocumentNumber',
            'birth_date': 'birthDate', 'nationality': 'nationality',
            'gender': 'gender', 'civil_status': 'civilStatus',
            'contact_information': 'contactInformation'}
        self._cardholder_type = cardholder_type
        self._full_name = full_name
        self._card_data = card_data
        self._identity_document_number = identity_document_number
        self._other_identity_document_number = other_identity_document_number
        self._birth_date = birth_date
        self._nationality = nationality
        self._gender = gender
        self._civil_status = civil_status
        self._contact_information = contact_information

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

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

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

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador ("main" - Titular ou "additional" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ['main', 'additional']
        if cardholder_type not in allowed_values:
            raise ValueError(
                'Invalid value for `cardholder_type` ({0}), must be one of {1}'
                .format(cardholder_type, allowed_values))
        self._cardholder_type = cardholder_type

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

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :return: The full_name of this CardholderData.
        :rtype: str
        """
        return self._full_name

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError(
                'Invalid value for `full_name`, must not be `None`')
        self._full_name = full_name

    @property
    def card_data(self) ->CardEmbossing:
        """Gets the card_data of this CardholderData.


        :return: The card_data of this CardholderData.
        :rtype: CardEmbossing
        """
        return self._card_data

    @card_data.setter
    def card_data(self, card_data: CardEmbossing):
        """Sets the card_data of this CardholderData.


        :param card_data: The card_data of this CardholderData.
        :type card_data: CardEmbossing
        """
        if card_data is None:
            raise ValueError(
                'Invalid value for `card_data`, must not be `None`')
        self._card_data = card_data

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number
    <mask token>

    @property
    def other_identity_document_number(self) ->PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number

    @other_identity_document_number.setter
    def other_identity_document_number(self, other_identity_document_number:
        PersonalIdentityDocumentInfo):
        """Sets the other_identity_document_number of this CardholderData.


        :param other_identity_document_number: The other_identity_document_number of this CardholderData.
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        """
        self._other_identity_document_number = other_identity_document_number

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

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :return: The birth_date of this CardholderData.
        :rtype: str
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError(
                'Invalid value for `birth_date`, must not be `None`')
        self._birth_date = birth_date

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

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :return: The nationality of this CardholderData.
        :rtype: str
        """
        return self._nationality

    @nationality.setter
    def nationality(self, nationality: str):
        """Sets the nationality of this CardholderData.

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :param nationality: The nationality of this CardholderData.
        :type nationality: str
        """
        if nationality is None:
            raise ValueError(
                'Invalid value for `nationality`, must not be `None`')
        self._nationality = nationality

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ['male', 'female', 'other']
        if gender not in allowed_values:
            raise ValueError(
                'Invalid value for `gender` ({0}), must be one of {1}'.
                format(gender, allowed_values))
        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ['single', 'married', 'divorced', 'widowed', 'other']
        if civil_status not in allowed_values:
            raise ValueError(
                'Invalid value for `civil_status` ({0}), must be one of {1}'
                .format(civil_status, allowed_values))
        self._civil_status = civil_status

    @property
    def contact_information(self) ->ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information

    @contact_information.setter
    def contact_information(self, contact_information: ContactInformation):
        """Sets the contact_information of this CardholderData.


        :param contact_information: The contact_information of this CardholderData.
        :type contact_information: ContactInformation
        """
        self._contact_information = contact_information

# coding: utf-8

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

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server.models.card_embossing import CardEmbossing  # noqa: F401,E501
from swagger_server.models.contact_information import ContactInformation  # noqa: F401,E501
from swagger_server.models.personal_identity_document_info import PersonalIdentityDocumentInfo  # noqa: F401,E501
from swagger_server import util


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

    Do not edit the class manually.
    """
    def __init__(self, cardholder_type: str=None, full_name: str=None, card_data: CardEmbossing=None, identity_document_number: str=None, other_identity_document_number: PersonalIdentityDocumentInfo=None, birth_date: str=None, nationality: str=None, gender: str=None, civil_status: str=None, contact_information: ContactInformation=None):  # noqa: E501
        """CardholderData - a model defined in Swagger

        :param cardholder_type: The cardholder_type of this CardholderData.  # noqa: E501
        :type cardholder_type: str
        :param full_name: The full_name of this CardholderData.  # noqa: E501
        :type full_name: str
        :param card_data: The card_data of this CardholderData.  # noqa: E501
        :type card_data: CardEmbossing
        :param identity_document_number: The identity_document_number of this CardholderData.  # noqa: E501
        :type identity_document_number: str
        :param other_identity_document_number: The other_identity_document_number of this CardholderData.  # noqa: E501
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        :param birth_date: The birth_date of this CardholderData.  # noqa: E501
        :type birth_date: str
        :param nationality: The nationality of this CardholderData.  # noqa: E501
        :type nationality: str
        :param gender: The gender of this CardholderData.  # noqa: E501
        :type gender: str
        :param civil_status: The civil_status of this CardholderData.  # noqa: E501
        :type civil_status: str
        :param contact_information: The contact_information of this CardholderData.  # noqa: E501
        :type contact_information: ContactInformation
        """
        self.swagger_types = {
            'cardholder_type': str,
            'full_name': str,
            'card_data': CardEmbossing,
            'identity_document_number': str,
            'other_identity_document_number': PersonalIdentityDocumentInfo,
            'birth_date': str,
            'nationality': str,
            'gender': str,
            'civil_status': str,
            'contact_information': ContactInformation
        }

        self.attribute_map = {
            'cardholder_type': 'cardholderType',
            'full_name': 'fullName',
            'card_data': 'cardData',
            'identity_document_number': 'identityDocumentNumber',
            'other_identity_document_number': 'otherIdentityDocumentNumber',
            'birth_date': 'birthDate',
            'nationality': 'nationality',
            'gender': 'gender',
            'civil_status': 'civilStatus',
            'contact_information': 'contactInformation'
        }
        self._cardholder_type = cardholder_type
        self._full_name = full_name
        self._card_data = card_data
        self._identity_document_number = identity_document_number
        self._other_identity_document_number = other_identity_document_number
        self._birth_date = birth_date
        self._nationality = nationality
        self._gender = gender
        self._civil_status = civil_status
        self._contact_information = contact_information

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

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

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

        Tipo de portador (\"main\" - Titular ou \"additional\" - Adicional)  # noqa: E501

        :return: The cardholder_type of this CardholderData.
        :rtype: str
        """
        return self._cardholder_type

    @cardholder_type.setter
    def cardholder_type(self, cardholder_type: str):
        """Sets the cardholder_type of this CardholderData.

        Tipo de portador (\"main\" - Titular ou \"additional\" - Adicional)  # noqa: E501

        :param cardholder_type: The cardholder_type of this CardholderData.
        :type cardholder_type: str
        """
        allowed_values = ["main", "additional"]  # noqa: E501
        if cardholder_type not in allowed_values:
            raise ValueError(
                "Invalid value for `cardholder_type` ({0}), must be one of {1}"
                .format(cardholder_type, allowed_values)
            )

        self._cardholder_type = cardholder_type

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

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :return: The full_name of this CardholderData.
        :rtype: str
        """
        return self._full_name

    @full_name.setter
    def full_name(self, full_name: str):
        """Sets the full_name of this CardholderData.

        Nome completo do portador, ou razão social se for pessoa jurídica.  # noqa: E501

        :param full_name: The full_name of this CardholderData.
        :type full_name: str
        """
        if full_name is None:
            raise ValueError("Invalid value for `full_name`, must not be `None`")  # noqa: E501

        self._full_name = full_name

    @property
    def card_data(self) -> CardEmbossing:
        """Gets the card_data of this CardholderData.


        :return: The card_data of this CardholderData.
        :rtype: CardEmbossing
        """
        return self._card_data

    @card_data.setter
    def card_data(self, card_data: CardEmbossing):
        """Sets the card_data of this CardholderData.


        :param card_data: The card_data of this CardholderData.
        :type card_data: CardEmbossing
        """
        if card_data is None:
            raise ValueError("Invalid value for `card_data`, must not be `None`")  # noqa: E501

        self._card_data = card_data

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

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :return: The identity_document_number of this CardholderData.
        :rtype: str
        """
        return self._identity_document_number

    @identity_document_number.setter
    def identity_document_number(self, identity_document_number: str):
        """Sets the identity_document_number of this CardholderData.

        No Brasil, usar CPF ou CNPJ do portador.  # noqa: E501

        :param identity_document_number: The identity_document_number of this CardholderData.
        :type identity_document_number: str
        """
        if identity_document_number is None:
            raise ValueError("Invalid value for `identity_document_number`, must not be `None`")  # noqa: E501

        self._identity_document_number = identity_document_number

    @property
    def other_identity_document_number(self) -> PersonalIdentityDocumentInfo:
        """Gets the other_identity_document_number of this CardholderData.


        :return: The other_identity_document_number of this CardholderData.
        :rtype: PersonalIdentityDocumentInfo
        """
        return self._other_identity_document_number

    @other_identity_document_number.setter
    def other_identity_document_number(self, other_identity_document_number: PersonalIdentityDocumentInfo):
        """Sets the other_identity_document_number of this CardholderData.


        :param other_identity_document_number: The other_identity_document_number of this CardholderData.
        :type other_identity_document_number: PersonalIdentityDocumentInfo
        """

        self._other_identity_document_number = other_identity_document_number

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

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :return: The birth_date of this CardholderData.
        :rtype: str
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date: str):
        """Sets the birth_date of this CardholderData.

        Data de nascimento no formato dd/MM/yyyy  # noqa: E501

        :param birth_date: The birth_date of this CardholderData.
        :type birth_date: str
        """
        if birth_date is None:
            raise ValueError("Invalid value for `birth_date`, must not be `None`")  # noqa: E501

        self._birth_date = birth_date

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

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :return: The nationality of this CardholderData.
        :rtype: str
        """
        return self._nationality

    @nationality.setter
    def nationality(self, nationality: str):
        """Sets the nationality of this CardholderData.

        Nome do país de nascimento ou de naturalização do portador.  # noqa: E501

        :param nationality: The nationality of this CardholderData.
        :type nationality: str
        """
        if nationality is None:
            raise ValueError("Invalid value for `nationality`, must not be `None`")  # noqa: E501

        self._nationality = nationality

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

        Gênero  # noqa: E501

        :return: The gender of this CardholderData.
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender: str):
        """Sets the gender of this CardholderData.

        Gênero  # noqa: E501

        :param gender: The gender of this CardholderData.
        :type gender: str
        """
        allowed_values = ["male", "female", "other"]  # noqa: E501
        if gender not in allowed_values:
            raise ValueError(
                "Invalid value for `gender` ({0}), must be one of {1}"
                .format(gender, allowed_values)
            )

        self._gender = gender

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

        Estado civil.  # noqa: E501

        :return: The civil_status of this CardholderData.
        :rtype: str
        """
        return self._civil_status

    @civil_status.setter
    def civil_status(self, civil_status: str):
        """Sets the civil_status of this CardholderData.

        Estado civil.  # noqa: E501

        :param civil_status: The civil_status of this CardholderData.
        :type civil_status: str
        """
        allowed_values = ["single", "married", "divorced", "widowed", "other"]  # noqa: E501
        if civil_status not in allowed_values:
            raise ValueError(
                "Invalid value for `civil_status` ({0}), must be one of {1}"
                .format(civil_status, allowed_values)
            )

        self._civil_status = civil_status

    @property
    def contact_information(self) -> ContactInformation:
        """Gets the contact_information of this CardholderData.


        :return: The contact_information of this CardholderData.
        :rtype: ContactInformation
        """
        return self._contact_information

    @contact_information.setter
    def contact_information(self, contact_information: ContactInformation):
        """Sets the contact_information of this CardholderData.


        :param contact_information: The contact_information of this CardholderData.
        :type contact_information: ContactInformation
        """

        self._contact_information = contact_information
