/**
 * Adyen Recurring API
 * The Recurring APIs allow you to manage and remove your tokens or saved payment details. Tokens should be created with validation during a payment request.  For more information, refer to our [Tokenization documentation](https://docs.adyen.com/online-payments/tokenization). ## Authentication To connect to the Recurring API, you must use your basic authentication credentials. For this, create your web service user, as described in [How to get the WS user password](https://docs.adyen.com/development-resources/api-credentials). Then use its credentials to authenticate your request, for example:  ``` curl -U \"ws@Company.YourCompany\":\"YourWsPassword\" \\ -H \"Content-Type: application/json\" \\ ... ``` Note that when going live, you need to generate new web service user credentials to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).  ## Versioning Recurring API supports versioning of its endpoints through a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.  For example: ``` https://pal-test.adyen.com/pal/servlet/Recurring/v49/disable ```
 *
 * The version of the OpenAPI document: 49
 * Contact: developer-experience@adyen.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import {Address} from './address';
import {BankAccount} from './bankAccount';
import {Card} from './card';
import {Name} from './name';

export class RecurringDetail {
    /**
    * This field contains additional data, which may be returned in a particular response.  The additionalData object consists of entries, each of which includes the key and value.
    */
    'additionalData'?: { [key: string]: string; };
    /**
    * The alias of the credit card number.  Applies only to recurring contracts storing credit card details
    */
    'alias'?: string;
    /**
    * The alias type of the credit card number.  Applies only to recurring contracts storing credit card details.
    */
    'aliasType'?: string;
    'bank'?: BankAccount;
    'billingAddress'?: Address;
    'card'?: Card;
    /**
    * Types of recurring contracts.
    */
    'contractTypes'?: Array<string>;
    /**
    * The date when the recurring details were created.
    */
    'creationDate'?: Date;
    /**
    * The `pspReference` of the first recurring payment that created the recurring detail.
    */
    'firstPspReference'?: string;
    /**
    * An optional descriptive name for this recurring detail.
    */
    'name'?: string;
    /**
    * The  type or sub-brand of a payment method used, e.g. Visa Debit, Visa Corporate, etc. For more information, refer to [PaymentMethodVariant](https://docs.adyen.com/development-resources/paymentmethodvariant).
    */
    'paymentMethodVariant'?: string;
    /**
    * The reference that uniquely identifies the recurring detail.
    */
    'recurringDetailReference': string;
    'shopperName'?: Name;
    /**
    * A shopper\'s social security number (only in countries where it is legal to collect).
    */
    'socialSecurityNumber'?: string;
    /**
    * The payment method, such as “mc\", \"visa\", \"ideal\", \"paypal\".
    */
    'variant': string;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "additionalData",
            "baseName": "additionalData",
            "type": "{ [key: string]: string; }"
        },
        {
            "name": "alias",
            "baseName": "alias",
            "type": "string"
        },
        {
            "name": "aliasType",
            "baseName": "aliasType",
            "type": "string"
        },
        {
            "name": "bank",
            "baseName": "bank",
            "type": "BankAccount"
        },
        {
            "name": "billingAddress",
            "baseName": "billingAddress",
            "type": "Address"
        },
        {
            "name": "card",
            "baseName": "card",
            "type": "Card"
        },
        {
            "name": "contractTypes",
            "baseName": "contractTypes",
            "type": "Array<string>"
        },
        {
            "name": "creationDate",
            "baseName": "creationDate",
            "type": "Date"
        },
        {
            "name": "firstPspReference",
            "baseName": "firstPspReference",
            "type": "string"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "paymentMethodVariant",
            "baseName": "paymentMethodVariant",
            "type": "string"
        },
        {
            "name": "recurringDetailReference",
            "baseName": "recurringDetailReference",
            "type": "string"
        },
        {
            "name": "shopperName",
            "baseName": "shopperName",
            "type": "Name"
        },
        {
            "name": "socialSecurityNumber",
            "baseName": "socialSecurityNumber",
            "type": "string"
        },
        {
            "name": "variant",
            "baseName": "variant",
            "type": "string"
        }    ];

    static getAttributeTypeMap() {
        return RecurringDetail.attributeTypeMap;
    }
}

