# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class CreditCardModel(Model):
    """The model sent to the client in response to a GET request for a credit
    card.

    :param id: Gets or sets the identifier.
    :type id: int
    :param token: The payment token for the credit card.
    :type token: str
    :param card_holder_name: The name of the cardholder, as it appears on the
     front of the credit card.
    :type card_holder_name: str
    :param card_number: The obfuscated credit card number for the credit card,
     such as xxxxxxxxxxxx1234
    :type card_number: str
    :param expiration_month: The expiration month of the credit card.
    :type expiration_month: int
    :param expiration_year: The expiration year of the credit card.
    :type expiration_year: int
    :param billing_address: The billing address for the credit card holder.
    :type billing_address: ~softheon.wallet.api.client.models.Address
    :param email: The email address for the credit card holder.
    :type email: str
    :param card_state: The state that the credit card is in. Possible values
     include: 'Unknown', 'New', 'Authorized', 'Expired', 'Deleted', 'Invalid'
    :type card_state: str or ~softheon.wallet.api.client.models.enum
    :param card_type: Gets or sets the type of the card. Possible values
     include: 'Unknown', 'Visa', 'MasterCard', 'Amex', 'Discover'
    :type card_type: str or ~softheon.wallet.api.client.models.enum
    :param reference_id: The client application provided reference ID for the
     credit card.
    :type reference_id: str
    :param created_time: The timestamp indicating when the credit card was
     created.
    :type created_time: datetime
    :param modified_time: The timestamp indicating the last time that the
     details of the credit card were modified.
    :type modified_time: datetime
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'int'},
        'token': {'key': 'token', 'type': 'str'},
        'card_holder_name': {'key': 'cardHolderName', 'type': 'str'},
        'card_number': {'key': 'cardNumber', 'type': 'str'},
        'expiration_month': {'key': 'expirationMonth', 'type': 'int'},
        'expiration_year': {'key': 'expirationYear', 'type': 'int'},
        'billing_address': {'key': 'billingAddress', 'type': 'Address'},
        'email': {'key': 'email', 'type': 'str'},
        'card_state': {'key': 'cardState', 'type': 'str'},
        'card_type': {'key': 'cardType', 'type': 'str'},
        'reference_id': {'key': 'referenceId', 'type': 'str'},
        'created_time': {'key': 'createdTime', 'type': 'iso-8601'},
        'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'},
    }

    def __init__(self, id=None, token=None, card_holder_name=None, card_number=None, expiration_month=None, expiration_year=None, billing_address=None, email=None, card_state=None, card_type=None, reference_id=None, created_time=None, modified_time=None):
        super(CreditCardModel, self).__init__()
        self.id = id
        self.token = token
        self.card_holder_name = card_holder_name
        self.card_number = card_number
        self.expiration_month = expiration_month
        self.expiration_year = expiration_year
        self.billing_address = billing_address
        self.email = email
        self.card_state = card_state
        self.card_type = card_type
        self.reference_id = reference_id
        self.created_time = created_time
        self.modified_time = modified_time
