/*
 *                       ######
 *                       ######
 * ############    ####( ######  #####. ######  ############   ############
 * #############  #####( ######  #####. ######  #############  #############
 *        ######  #####( ######  #####. ######  #####  ######  #####  ######
 * ###### ######  #####( ######  #####. ######  #####  #####   #####  ######
 * ###### ######  #####( ######  #####. ######  #####          #####  ######
 * #############  #############  #############  #############  #####  ######
 *  ############   ############  #############   ############  #####  ######
 *                                      ######
 *                               #############
 *                               ############
 * Adyen NodeJS API Library
 * Copyright (c) 2021 Adyen B.V.
 * This file is open source and available under the MIT license.
 * See the LICENSE file for more info.
 */
 
/**
 * Adyen Checkout API
 * Adyen Checkout API provides a simple and flexible way to initiate and authorise online payments. You can use the same integration for payments made with cards (including 3D Secure), mobile wallets, and local payment methods (for example, iDEAL and Sofort).  This API reference provides information on available endpoints and how to interact with them. To learn more about the API, visit [Checkout documentation](https://docs.adyen.com/online-payments).  ## Authentication Each request to the Checkout API must be signed with an API key. For this, obtain an API Key from your Customer Area, as described in [How to get the API key](https://docs.adyen.com/development-resources/api-credentials#generate-api-key). Then set this key to the `X-API-Key` header value, for example:  ``` curl -H \"Content-Type: application/json\" \\ -H \"X-API-Key: Your_Checkout_API_key\" \\ ... ``` Note that when going live, you need to generate a new API Key to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).  ## Versioning Checkout 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://checkout-test.adyen.com/v67/payments ```
 *
 * The version of the OpenAPI document: 67
 * 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.
 */

export class AdditionalDataAirline {
    /**
    * Reference number for the invoice, issued by the agency. * minLength: 1 * maxLength: 6
    */
    'airline_agency_invoice_number'?: string;
    /**
    * 2-letter agency plan identifier; alphabetical. * minLength: 2 * maxLength: 2
    */
    'airline_agency_plan_name'?: string;
    /**
    * [IATA](https://www.iata.org/services/pages/codes.aspx) 3-digit accounting code (PAX); numeric. It identifies the carrier. * Format: IATA 3-digit accounting code (PAX) * Example: KLM = 074 * minLength: 3 * maxLength: 3
    */
    'airline_airline_code'?: string;
    /**
    * [IATA](https://www.iata.org/services/pages/codes.aspx) 2-letter accounting code (PAX); alphabetical. It identifies the carrier. * Format: [IATA](https://www.iata.org/services/pages/codes.aspx) 2-letter airline code * Example: KLM = KL * minLength: 2 * maxLength: 2
    */
    'airline_airline_designator_code'?: string;
    /**
    * Chargeable amount for boarding the plane. The transaction amount needs to be represented in minor units according to the [following table](https://docs.adyen.com/development-resources/currency-codes). * minLength: 1 * maxLength: 18
    */
    'airline_boarding_fee'?: string;
    /**
    * The [CRS](https://en.wikipedia.org/wiki/Computer_reservation_system) used to make the reservation and purchase the ticket. * Format: alphanumeric. * minLength: 4 * maxLength: 4
    */
    'airline_computerized_reservation_system'?: string;
    /**
    * Reference number; alphanumeric. * minLength: 0 * maxLength: 20
    */
    'airline_customer_reference_number'?: string;
    /**
    * Optional 2-digit code; alphanumeric. It identifies the type of product of the transaction. The description of the code may appear on credit card statements. * Format: 2-digit code * Example: Passenger ticket = 01 * minLength: 2 * maxLength: 2
    */
    'airline_document_type'?: string;
    /**
    * Flight departure date. Local time `(HH:mm)` is optional. * Date format: `yyyy-MM-dd` * Date and time format: `yyyy-MM-dd HH:mm` * minLength: 10 * maxLength: 16
    */
    'airline_flight_date'?: string;
    /**
    * [IATA](https://www.iata.org/services/pages/codes.aspx) 2-letter accounting code (PAX); alphabetical. It identifies the carrier. This field is required/mandatory if the airline data includes leg details. * Format: IATA 2-letter airline code * Example: KLM = KL * minLength: 2 * maxLength: 2
    */
    'airline_leg_carrier_code'?: string;
    /**
    * 1-letter travel class identifier; alphabetical. There is no standard; however, the following codes are used rather consistently: * F: first class * J: business class * Y: economy class * W: premium economy  Limitations: * minLength: 1 * maxLength: 1
    */
    'airline_leg_class_of_travel'?: string;
    /**
    *   Date and time of travel. [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)-compliant. * Format: `yyyy-MM-dd HH:mm` * minLength: 16 * maxLength: 16
    */
    'airline_leg_date_of_travel'?: string;
    /**
    * Alphabetical identifier of the departure airport. This field is required if the airline data includes leg details. * Format: [IATA](https://www.iata.org/services/pages/codes.aspx) 3-letter airport code. * Example: Amsterdam = AMS * minLength: 3 * maxLength: 3
    */
    'airline_leg_depart_airport'?: string;
    /**
    * [Departure tax](https://en.wikipedia.org/wiki/Departure_tax). Amount charged by a country to an individual upon their leaving. The transaction amount needs to be represented in minor units according to the [following table](https://docs.adyen.com/development-resources/currency-codes). * minLength: 1 * maxLength: 12
    */
    'airline_leg_depart_tax'?: string;
    /**
    * Alphabetical identifier of the destination/arrival airport. This field is required/mandatory if the airline data includes leg details. * Format: [IATA](https://www.iata.org/services/pages/codes.aspx) 3-letter airport code. * Example: Amsterdam = AMS * minLength: 3 * maxLength: 3
    */
    'airline_leg_destination_code'?: string;
    /**
    * [Fare basis code](https://en.wikipedia.org/wiki/Fare_basis_code); alphanumeric. * minLength: 1 * maxLength: 7
    */
    'airline_leg_fare_base_code'?: string;
    /**
    * The flight identifier. * minLength: 1 * maxLength: 5
    */
    'airline_leg_flight_number'?: string;
    /**
    * 1-letter code that indicates whether the passenger is entitled to make a stopover. Only two types of characters are allowed: * O: Stopover allowed * X: Stopover not allowed  Limitations: * minLength: 1 * maxLength: 1
    */
    'airline_leg_stop_over_code'?: string;
    /**
    * Date of birth of the passenger.  Date format: `yyyy-MM-dd` * minLength: 10 * maxLength: 10
    */
    'airline_passenger_date_of_birth'?: string;
    /**
    * Passenger first name/given name. > This field is required/mandatory if the airline data includes passenger details or leg details.
    */
    'airline_passenger_first_name'?: string;
    /**
    * Passenger last name/family name. > This field is required/mandatory if the airline data includes passenger details or leg details.
    */
    'airline_passenger_last_name'?: string;
    /**
    * Telephone number of the passenger, including country code. This is an alphanumeric field that can include the \'+\' and \'-\' signs. * minLength: 3 * maxLength: 30
    */
    'airline_passenger_telephone_number'?: string;
    /**
    * Passenger type code (PTC). IATA PTC values are 3-letter alphabetical. Example: ADT, SRC, CNN, INS.  However, several carriers use non-standard codes that can be up to 5 alphanumeric characters. * minLength: 3 * maxLength: 6
    */
    'airline_passenger_traveller_type'?: string;
    /**
    * Passenger name, initials, and a title. * Format: last name + first name or initials + title. * Example: *FLYER / MARY MS*. * minLength: 1 * maxLength: 49
    */
    'airline_passenger_name': string;
    /**
    * Address of the place/agency that issued the ticket. * minLength: 0 * maxLength: 16
    */
    'airline_ticket_issue_address'?: string;
    /**
    * The ticket\'s unique identifier. * minLength: 1 * maxLength: 150
    */
    'airline_ticket_number'?: string;
    /**
    * IATA number, also ARC number or ARC/IATA number. Unique identifier number for travel agencies. * minLength: 1 * maxLength: 8
    */
    'airline_travel_agency_code'?: string;
    /**
    * The name of the travel agency. * minLength: 1 * maxLength: 25
    */
    'airline_travel_agency_name'?: string;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "airline_agency_invoice_number",
            "baseName": "airline.agency_invoice_number",
            "type": "string"
        },
        {
            "name": "airline_agency_plan_name",
            "baseName": "airline.agency_plan_name",
            "type": "string"
        },
        {
            "name": "airline_airline_code",
            "baseName": "airline.airline_code",
            "type": "string"
        },
        {
            "name": "airline_airline_designator_code",
            "baseName": "airline.airline_designator_code",
            "type": "string"
        },
        {
            "name": "airline_boarding_fee",
            "baseName": "airline.boarding_fee",
            "type": "string"
        },
        {
            "name": "airline_computerized_reservation_system",
            "baseName": "airline.computerized_reservation_system",
            "type": "string"
        },
        {
            "name": "airline_customer_reference_number",
            "baseName": "airline.customer_reference_number",
            "type": "string"
        },
        {
            "name": "airline_document_type",
            "baseName": "airline.document_type",
            "type": "string"
        },
        {
            "name": "airline_flight_date",
            "baseName": "airline.flight_date",
            "type": "string"
        },
        {
            "name": "airline_leg_carrier_code",
            "baseName": "airline.leg.carrier_code",
            "type": "string"
        },
        {
            "name": "airline_leg_class_of_travel",
            "baseName": "airline.leg.class_of_travel",
            "type": "string"
        },
        {
            "name": "airline_leg_date_of_travel",
            "baseName": "airline.leg.date_of_travel",
            "type": "string"
        },
        {
            "name": "airline_leg_depart_airport",
            "baseName": "airline.leg.depart_airport",
            "type": "string"
        },
        {
            "name": "airline_leg_depart_tax",
            "baseName": "airline.leg.depart_tax",
            "type": "string"
        },
        {
            "name": "airline_leg_destination_code",
            "baseName": "airline.leg.destination_code",
            "type": "string"
        },
        {
            "name": "airline_leg_fare_base_code",
            "baseName": "airline.leg.fare_base_code",
            "type": "string"
        },
        {
            "name": "airline_leg_flight_number",
            "baseName": "airline.leg.flight_number",
            "type": "string"
        },
        {
            "name": "airline_leg_stop_over_code",
            "baseName": "airline.leg.stop_over_code",
            "type": "string"
        },
        {
            "name": "airline_passenger_date_of_birth",
            "baseName": "airline.passenger.date_of_birth",
            "type": "string"
        },
        {
            "name": "airline_passenger_first_name",
            "baseName": "airline.passenger.first_name",
            "type": "string"
        },
        {
            "name": "airline_passenger_last_name",
            "baseName": "airline.passenger.last_name",
            "type": "string"
        },
        {
            "name": "airline_passenger_telephone_number",
            "baseName": "airline.passenger.telephone_number",
            "type": "string"
        },
        {
            "name": "airline_passenger_traveller_type",
            "baseName": "airline.passenger.traveller_type",
            "type": "string"
        },
        {
            "name": "airline_passenger_name",
            "baseName": "airline.passenger_name",
            "type": "string"
        },
        {
            "name": "airline_ticket_issue_address",
            "baseName": "airline.ticket_issue_address",
            "type": "string"
        },
        {
            "name": "airline_ticket_number",
            "baseName": "airline.ticket_number",
            "type": "string"
        },
        {
            "name": "airline_travel_agency_code",
            "baseName": "airline.travel_agency_code",
            "type": "string"
        },
        {
            "name": "airline_travel_agency_name",
            "baseName": "airline.travel_agency_name",
            "type": "string"
        }    ];

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

