"""visaacceptancemergedspec.

This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
"""

# ruff: noqa: E501
from visaacceptancemergedspec.api_helper import (
    APIHelper,
)
from visaacceptancemergedspec.models.initiator import (
    Initiator,
)


class AuthorizationOptions(object):
    """Implementation of the 'AuthorizationOptions' model.

    Attributes:
        auth_type (str): Authorization type. Possible values:   - `AUTOCAPTURE`:
            automatic capture.  - `STANDARDCAPTURE`: standard capture.  - `VERBAL`:
            forced capture. Include it in the payment request for a forced capture.
            Include it in the capture request for a verbal payment.  #### Asia,
            Middle East, and Africa Gateway; Cielo; Comercio Latino; and Visa
            Acceptance Latin American Processing Set this field to `AUTOCAPTURE` and
            include it in a bundled request to indicate that you are requesting an
            automatic capture. If your account is configured to enable automatic
            captures, set this field to `STANDARDCAPTURE` and include it in a
            standard authorization or bundled request to indicate that you are
            overriding an automatic capture.  #### Forced Capture Set this field to
            `VERBAL` and include it in the authorization request to indicate that you
            are performing a forced capture; therefore, you receive the authorization
            code outside the Visa Acceptance system.  #### Verbal Authorization Set
            this field to `VERBAL` and include it in the capture request to indicate
            that the request is for a verbal authorization.  #### for PayPal
            ptsV2CreateOrderPost400Response Set this field to 'AUTHORIZE' or
            'CAPTURE' depending on whether you want to invoke delayed capture or sale
            respectively.
        pan_return_indicator (str): #### Visa Platform Connect The field contains the
            PAN translation indicator for American Express Contactless Transaction.
            Valid value is   1- Expresspay Translation, PAN request 2- Expresspay
            Translation, PAN and Expiry date request
        verbal_auth_code (str): Authorization code.  #### Forced Capture Use this
            field to send the authorization code you received from a payment that you
            authorized outside the Visa Acceptance system.  #### PIN debit
            Authorization code that is returned by the processor.  Returned by PIN
            debit purchase.  #### Verbal Authorization Use this field in CAPTURE API
            to send the verbally received authorization code.
        verbal_auth_transaction_id (str): Transaction ID (TID).  #### FDMS South This
            field is required for verbal authorizations and forced captures with the
            American Express card type to comply with the CAPN requirements: - Forced
            capture: Obtain the value for this field from the authorization response.
            - Verbal authorization: You cannot obtain a value for this field so Visa
            Acceptance uses the default value of `000000000000000` (15 zeros).
        auth_indicator (str): Flag that specifies the purpose of the authorization.
            Possible values:  - **0**: Preauthorization  - **1**: Final authorization
            To set the default for this field, contact Visa Acceptance Customer
            Support.  #### Barclays and Elavon The default for Barclays and Elavon is
            1 (final authorization). To change the default for this field, contact
            Visa Acceptance Customer Support.  #### Visa Acceptance through VisaNet
            When the value for this field is 0, it corresponds to the following data
            in the TC 33 capture file:  - Record: CP01 TCR0  - Position: 164  -
            Field: Additional Authorization Indicators When the value for this field
            is 1, it does not correspond to any data in the TC 33 capture file.
        partial_auth_indicator (bool): Flag that indicates whether the transaction is
            enabled for partial authorization. When the request includes this field,
            this value overrides the information in your account. Possible values: -
            `true`: Enable the transaction for partial authorization. - `false`: Do
            not enable the transaction for partial authorization.  #### PIN debit
            Required field for partial authorizations that use PIN debit purchase;
            otherwise, not used.  #### Used by **Authorization** Optional field.
            #### Visa Acceptance through VisaNet To set the default for this field,
            contact Visa Acceptance Customer Support. The value for this field
            corresponds to the following data in the TC 33 capture file5: - Record:
            CP01 TCR0 - Position: 164 - Field: Additional Authorization Indicators
        extend_auth_indicator (str): Indicates Authorization extension transaction.
            Extension transaction is used to prolong the settlement period by one
            additional settlement cycle period.  Possible values: - true: Transaction
            is an Authorization Extension transaction.  - false: Transaction is not
            an Authorization Extension transaction.
        balance_inquiry (bool): Flag that indicates whether to return balance
            information.  Possible values: - `true`: Return balance information. -
            `false`: Do not return balance information.  #### Used by
            **Authorization** Required for a balance inquiry; otherwise, not used.
            #### PIN debit Required for a balance inquiry request of a PIN debit
            purchase; otherwise, not used.
        ignore_avs_result (bool): Flag for a sale request that indicates whether to
            allow the capture service to run even when the authorization receives an
            AVS decline, as indicated by a reply flag value of DAVSNO.  Possible
            values: - `true`: Ignore the results of AVS checking and run the capture
            service. - `false` (default): If the authorization receives an AVS
            decline, do not run the capture service. When the value of this field is
            `true`, the list in the
            `processingInformation.authorizationOptions.declineAvsFlags` field is
            ignored.  #### Used by **Authorization** Optional field. String (3)
        decline_avs_flags (List[str]): Comma-separated list of AVS flags that cause
            the reply flag `DAVSNO` to be returned.  **Important** To receive
            declines for the AVS code `N`, you must include the value `N` in the
            comma-separated list.    ### AVS Codes for Cielo 3.0 and Visa Acceptance
            Latin American Processing    **Note** Visa Acceptance Latin American
            Processing is the name of a specific processing connection that Visa
            Acceptance supports.   In the Visa Acceptance API documentation, Visa
            Acceptance Latin American Processing does not refer to the general topic
            of processing in Latin America.   The information in this section is for
            the specific processing connection called Visa Acceptance Latin American
            Processing.   It is not for any other Latin American processors that Visa
            Acceptance supports.  |AVS Code|Description| |--- |--- | |D|Partial
            match: postal code and address match.| |E|Not supported: AVS is not
            supported for this card type. _or_ Invalid: the acquirer returned an
            unrecognized value for the AVS response.| |F|Partial match: postal code
            matches, but CPF and address do not match.*| |G|Not supported: AVS not
            supported or not verified.| |I|No match: AVS information is not
            available.| |K|Partial match: CPF matches, but postal code and address do
            not match.*| |L|Partial match: postal code and CPF match, but address
            does not match.*| |N|No match: postal code, CPF, and address do not
            match.*| |O|Partial match: CPF and address match, but postal code does
            not match.*| |R|Not supported: your implementation does not support AVS
            _or_ System unavailable.| |T|Partial match: address matches, but postal
            code and CPF do not match.*| |V|Match: postal code, CPF, and address
            match.*| |* CPF (Cadastro de Pessoas Fisicas) is required only for
            Redecard in Brazil.||  ### AVS Codes for All Other Processors  **Note**
            The list of AVS codes for all other processors follows these descriptions
            of the processor-specific information for these codes.  #### American
            Express Cards For American Express cards only, you can receive Visa and
            Visa Acceptance AVS codes in addition to the American Express AVS codes.
            **Note** For Visa Acceptance through VisaNet, the American Express AVS
            codes are converted to Visa AVS codes before they are returned to you. As
            a result, you will not receive American Express AVS codes for the
            American Express card type.<br/><br/>  _American Express Card codes_:
            `F`, `H`, `K`, `L`, `O`, `T`, `V`  #### Domestic and International Visa
            Cards The international and domestic alphabetic AVS codes are the Visa
            standard AVS codes. Visa Acceptance maps the standard AVS return codes
            for other types of payment cards, including American Express cards, to
            the Visa standard AVS codes.  AVS is considered either domestic or
            international, depending on the location of the bank that issued the
            customer's payment card: - When the bank is in the U.S., the AVS is
            domestic. - When the bank is outside the U.S., the AVS is international.
            You should be prepared to handle both domestic and international AVS
            result codes: - For international cards, you can receive domestic AVS
            codes in addition to the international AVS codes. - For domestic cards,
            you can receive international AVS codes in addition to the domestic AVS
            codes.  _International Visa Codes_: `B`, `C`, `D`, `G`, `I`, `M`, `P`
            _Domestic Visa Codes_: `A`, `E`,`N`, `R`, `S`, `U`, `W`, `X`, `Y`, `Z`
            #### Visa Acceptance Codes The numeric AVS codes are created by Visa
            Acceptance and are not standard Visa codes. These AVS codes can be
            returned for any card type.  _Visa Acceptance Codes_: `1`, `2`, `3`, `4`
            ### Table of AVS Codes for All Other Processors  |AVS Code|Description|
            |--- |--- | |A|Partial match: street address matches, but 5-digit and
            9-digit postal codes do not match.| |B|Partial match: street address
            matches, but postal code is not verified. Returned only for Visa cards
            not issued in the U.S.| |C|No match: street address and postal code do
            not match. Returned only for Visa cards not issued in the U.S.| |D &
            M|Match: street address and postal code match. Returned only for Visa
            cards not issued in the U.S.| |E|Invalid: AVS data is invalid or AVS is
            not allowed for this card type.| |F|Partial match: card member’s name
            does not match, but billing postal code matches.| |G|Not supported:
            issuing bank outside the U.S. does not support AVS.| |H|Partial match:
            card member’s name does not match, but street address and postal code
            match. Returned only for the American Express card type.| |I|No match:
            address not verified. Returned only for Visa cards not issued in the
            U.S.| |K|Partial match: card member’s name matches, but billing address
            and billing postal code do not match. Returned only for the American
            Express card type.| |L|Partial match: card member’s name and billing
            postal code match, but billing address does not match. Returned only for
            the American Express card type.| |M|See the entry for D & M.| |N|No
            match: one of the following: street address and postal code do not match
            _or_ (American Express card type only) card member’s name, street
            address, and postal code do not match.| |O|Partial match: card member’s
            name and billing address match, but billing postal code does not match.
            Returned only for the American Express card type.| |P|Partial match:
            postal code matches, but street address not verified. Returned only for
            Visa cards not issued in the U.S.| |R|System unavailable.| |S|Not
            supported: issuing bank in the U.S. does not support AVS.| |T|Partial
            match: card member’s name does not match, but street address matches.
            Returned only for the American Express card type.| |U|System unavailable:
            address information unavailable for one of these reasons: The U.S. bank
            does not support AVS outside the U.S. _or_ The AVS in a U.S. bank is not
            functioning properly.| |V|Match: card member’s name, billing address, and
            billing postal code match. Returned only for the American Express card
            type.| |W|Partial match: street address does not match, but 9-digit
            postal code matches.| |X|Match: street address and 9-digit postal code
            match.| |Y|Match: street address and 5-digit postal code match.|
            |Z|Partial match: street address does not match, but 5-digit postal code
            matches.| |1|Not supported: one of the following: AVS is not supported
            for this processor or card type _or_ AVS is disabled for your Visa
            Acceptance account. To enable AVS, contact Visa Acceptance Customer
            Support.| |2|Unrecognized: the processor returned an unrecognized value
            for the AVS response.| |3|Match: address is confirmed. Returned only for
            PayPal Express Checkout.| |4|No match: address is not confirmed. Returned
            only for PayPal Express Checkout.| |5|No match: no AVS code was returned
            by the processor.|
        ignore_cv_result (bool): Flag for a sale request that indicates whether to
            allow the capture service to run even when the authorization receives a
            CVN decline, as indicated by an
            `processorInformation.cardVerification.resultCode` value of `D` or `N`.
            Possible values: - `true`: Ignore the results of CVN checking and run the
            capture service. - `false` (default): If the authorization receives a CVN
            decline, do not run the capture service.  #### Used by **Authorization**
            Optional field.
        initiator (Initiator): The model property of type Initiator.
        bill_payment (bool): Indicates payment for bill or payment towards existing
            contractual loan.  Possible values: - `true`: Bill payment or loan
            payment. - `false` (default): Not a bill payment or loan payment.
            Optional request field.
        bill_payment_type (str): Reason for the payment.  Possible values: - 001:
            Public utilities / Utility payment - 002: Government services - 003:
            Cellular / Mobile phone top-up - 004: Coupon payment - 005: Installment
            based repayment - 006: Billing payment - 007: Tax payment - 008: Tax
            payment refunds  The value for this field corresponds to the following
            data in the TC 33A capture file (applicable to Brazil): - Record: CP07
            TCR0 - Position: 48-50 - Field: Bill Payment Transaction Type Identifier
            The value for this field corresponds to the following data in the TC 33A
            capture file (applicable to Installment) based Repayment): - Record: CP01
            TCR6 - Position: 154-156 - Field: Bill Payment Transaction Type
            Identifier   This field is supported for 1. Bill payments in Brazil with
            Mastercard on Visa Acceptance through VisaNet. 2. Installment based
            repayment transactions on Visa Acceptance through VisaNet.
        redemption_inquiry (bool): Flag that indicates the payment request is a
            redemption inquiry.  Possible values:   - `true`   - `false`
        transportation_mode (str): Type of transportation mode :  Possible Values: -
            00 = Unknown - 01 = Urban bus - 02 = Interurban bus -
            03=Lighttrainmasstransit(Underground Metro LTR) - 04 = Train - 05 =
            Commuter train - 06 = Water-borne vehicle - 07 = Toll - 08 = Parking - 09
            = Taxi - 10 = High-speed train - 11 = Rural bus - 12 = Express commuter
            train - 13 = Para transit - 14 = Self drive vehicle - 15 = Coach - 16 =
            Locomotive - 17 = Powered motor coach - 18 = Trailer - 19 = Regional
            train - 20 = Inter-city - 21 = Funicular train - 22 = Cable car
        aggregated_auth_indicator (str): Indicates if transaction is an aggregated
            auth  Possible values: - **true** - **false**
        debt_recovery_indicator (str): Indicates if transaction is a debt recovery
            request  Possible values: - **true** - **false**
        deferred_auth_indicator (bool): Flag that indicates whether the authorization
            request was delayed because connectivity was interrupted.  Possible
            values:   - `true` (Deferred authorization)   - `false` (default: Not a
            deferred authorization)
        cash_advance_indicator (bool): This API field enables the merchant to
            indicate that a given transaction is Cash Advance.  Cash advance or Cash
            disbursement functionality allows a merchant to dispense cash at a point
            of sale. It provides the ability of a POS system to act like an ATM.
            These terminals are typically seen in bank branches where customers can
            use their card and withdraw cash or at merchant locations where ATMs are
            sparse.  Possible values:   - `true` (Cash advance is supported)   -
            `false` (default: cash advance is not supported)
        split_payment_transaction (bool): #### Visa Platform Connect Indicates split
            payment transaction. A split payment allows the use of two payment
            methods for a single transaction.  Possible values:   - `true` (split
            payment transaction is supported)   - `false` (default: split payment
            transaction is not supported)
        card_verification_indicator (bool): This API field will indicate whether a
            card verification check is being performed during the transaction
            Possible values:   - `true`   - `false` (default value)
        transaction_mode (str): Transaction mode identifier. Identifies the specific
            channel from which the transaction originates.  Possible values: - M –
            Mobile Order - T – Telephone Order
        aft_indicator (bool): Indicates whether the transaction is an Account Funding
            Transaction (AFT).  This field is mandatory for Account Funding
            Transactions (AFT).   Possible values:   - `true` (This is an AFT
            transaction)   - `false` (default value) (This is not an AFT transaction)
        service_type (str): Field is used for back-to-back funding transaction and
            can be defined as a payment flow that automatically transfers funds
            through a real-time  funding or a live-load. This type of transaction can
            also be connected to a purchase.  In back-to-back funding of general
            purpose card that is used to make a purchase, two separate accounts are
            involved:  - account one is used to make the purchase - account two is
            used to automatically fund or reimburse account one  Possible values: -
            0B = back to back funding transaction - 00 = normal transaction - 01 =
            originator hold - 02 = Visa deferred OCT hold, default interval - 03 =
            Visa deferred OCT hold, user-defined interval - 09 = Cancel pending
            deferred OCT request - 0I = Visa Direct custom program 1 - 0Q = uery the
            status of the deferred OCT - A0 = Alias Directory 2
        balance_update (bool): Merchant to inform Visa Acceptance whether a
            transaction is Money load with Balance Update.  Possible values:   -
            `true` (This is a Money load with balance update transaction)   - `false`
            (default value) (This is not a Money load with balance update transaction)
        money_load (bool): Merchant to inform Visa Acceptance whether a transaction
            is Money load with Money load only.  Possible values:   - `true` (This is
            a money load transaction)   - `false` (default value) (This is not a
            money load transaction)
        additional_properties (Dict[str, Any]): The additional properties for the
            model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "auth_type": "authType",
        "pan_return_indicator": "panReturnIndicator",
        "verbal_auth_code": "verbalAuthCode",
        "verbal_auth_transaction_id": "verbalAuthTransactionId",
        "auth_indicator": "authIndicator",
        "partial_auth_indicator": "partialAuthIndicator",
        "extend_auth_indicator": "extendAuthIndicator",
        "balance_inquiry": "balanceInquiry",
        "ignore_avs_result": "ignoreAvsResult",
        "decline_avs_flags": "declineAvsFlags",
        "ignore_cv_result": "ignoreCvResult",
        "initiator": "initiator",
        "bill_payment": "billPayment",
        "bill_payment_type": "billPaymentType",
        "redemption_inquiry": "redemptionInquiry",
        "transportation_mode": "transportationMode",
        "aggregated_auth_indicator": "aggregatedAuthIndicator",
        "debt_recovery_indicator": "debtRecoveryIndicator",
        "deferred_auth_indicator": "deferredAuthIndicator",
        "cash_advance_indicator": "cashAdvanceIndicator",
        "split_payment_transaction": "splitPaymentTransaction",
        "card_verification_indicator": "cardVerificationIndicator",
        "transaction_mode": "transactionMode",
        "aft_indicator": "aftIndicator",
        "service_type": "serviceType",
        "balance_update": "balanceUpdate",
        "money_load": "moneyLoad",
    }

    _optionals = [
        "auth_type",
        "pan_return_indicator",
        "verbal_auth_code",
        "verbal_auth_transaction_id",
        "auth_indicator",
        "partial_auth_indicator",
        "extend_auth_indicator",
        "balance_inquiry",
        "ignore_avs_result",
        "decline_avs_flags",
        "ignore_cv_result",
        "initiator",
        "bill_payment",
        "bill_payment_type",
        "redemption_inquiry",
        "transportation_mode",
        "aggregated_auth_indicator",
        "debt_recovery_indicator",
        "deferred_auth_indicator",
        "cash_advance_indicator",
        "split_payment_transaction",
        "card_verification_indicator",
        "transaction_mode",
        "aft_indicator",
        "service_type",
        "balance_update",
        "money_load",
    ]

    def __init__(
        self,
        auth_type=APIHelper.SKIP,
        pan_return_indicator=APIHelper.SKIP,
        verbal_auth_code=APIHelper.SKIP,
        verbal_auth_transaction_id=APIHelper.SKIP,
        auth_indicator=APIHelper.SKIP,
        partial_auth_indicator=APIHelper.SKIP,
        extend_auth_indicator=APIHelper.SKIP,
        balance_inquiry=APIHelper.SKIP,
        ignore_avs_result=False,
        decline_avs_flags=APIHelper.SKIP,
        ignore_cv_result=False,
        initiator=APIHelper.SKIP,
        bill_payment=APIHelper.SKIP,
        bill_payment_type=APIHelper.SKIP,
        redemption_inquiry=APIHelper.SKIP,
        transportation_mode=APIHelper.SKIP,
        aggregated_auth_indicator=APIHelper.SKIP,
        debt_recovery_indicator=APIHelper.SKIP,
        deferred_auth_indicator=APIHelper.SKIP,
        cash_advance_indicator=APIHelper.SKIP,
        split_payment_transaction=APIHelper.SKIP,
        card_verification_indicator=APIHelper.SKIP,
        transaction_mode=APIHelper.SKIP,
        aft_indicator=APIHelper.SKIP,
        service_type=APIHelper.SKIP,
        balance_update=APIHelper.SKIP,
        money_load=APIHelper.SKIP,
        additional_properties=None):
        """Initialize a AuthorizationOptions instance."""
        # Initialize members of the class
        if auth_type is not APIHelper.SKIP:
            self.auth_type = auth_type
        if pan_return_indicator is not APIHelper.SKIP:
            self.pan_return_indicator = pan_return_indicator
        if verbal_auth_code is not APIHelper.SKIP:
            self.verbal_auth_code = verbal_auth_code
        if verbal_auth_transaction_id is not APIHelper.SKIP:
            self.verbal_auth_transaction_id = verbal_auth_transaction_id
        if auth_indicator is not APIHelper.SKIP:
            self.auth_indicator = auth_indicator
        if partial_auth_indicator is not APIHelper.SKIP:
            self.partial_auth_indicator = partial_auth_indicator
        if extend_auth_indicator is not APIHelper.SKIP:
            self.extend_auth_indicator = extend_auth_indicator
        if balance_inquiry is not APIHelper.SKIP:
            self.balance_inquiry = balance_inquiry
        self.ignore_avs_result = ignore_avs_result
        if decline_avs_flags is not APIHelper.SKIP:
            self.decline_avs_flags = decline_avs_flags
        self.ignore_cv_result = ignore_cv_result
        if initiator is not APIHelper.SKIP:
            self.initiator = initiator
        if bill_payment is not APIHelper.SKIP:
            self.bill_payment = bill_payment
        if bill_payment_type is not APIHelper.SKIP:
            self.bill_payment_type = bill_payment_type
        if redemption_inquiry is not APIHelper.SKIP:
            self.redemption_inquiry = redemption_inquiry
        if transportation_mode is not APIHelper.SKIP:
            self.transportation_mode = transportation_mode
        if aggregated_auth_indicator is not APIHelper.SKIP:
            self.aggregated_auth_indicator = aggregated_auth_indicator
        if debt_recovery_indicator is not APIHelper.SKIP:
            self.debt_recovery_indicator = debt_recovery_indicator
        if deferred_auth_indicator is not APIHelper.SKIP:
            self.deferred_auth_indicator = deferred_auth_indicator
        if cash_advance_indicator is not APIHelper.SKIP:
            self.cash_advance_indicator = cash_advance_indicator
        if split_payment_transaction is not APIHelper.SKIP:
            self.split_payment_transaction = split_payment_transaction
        if card_verification_indicator is not APIHelper.SKIP:
            self.card_verification_indicator = card_verification_indicator
        if transaction_mode is not APIHelper.SKIP:
            self.transaction_mode = transaction_mode
        if aft_indicator is not APIHelper.SKIP:
            self.aft_indicator = aft_indicator
        if service_type is not APIHelper.SKIP:
            self.service_type = service_type
        if balance_update is not APIHelper.SKIP:
            self.balance_update = balance_update
        if money_load is not APIHelper.SKIP:
            self.money_load = money_load

        # Add additional model properties to the instance
        if additional_properties is None:
            additional_properties = {}
        self.additional_properties = additional_properties

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Create an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """
        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        auth_type =\
            dictionary.get("authType")\
            if dictionary.get("authType")\
                else APIHelper.SKIP
        pan_return_indicator =\
            dictionary.get("panReturnIndicator")\
            if dictionary.get("panReturnIndicator")\
                else APIHelper.SKIP
        verbal_auth_code =\
            dictionary.get("verbalAuthCode")\
            if dictionary.get("verbalAuthCode")\
                else APIHelper.SKIP
        verbal_auth_transaction_id =\
            dictionary.get("verbalAuthTransactionId")\
            if dictionary.get("verbalAuthTransactionId")\
                else APIHelper.SKIP
        auth_indicator =\
            dictionary.get("authIndicator")\
            if dictionary.get("authIndicator")\
                else APIHelper.SKIP
        partial_auth_indicator =\
            dictionary.get("partialAuthIndicator")\
            if "partialAuthIndicator" in dictionary.keys()\
                else APIHelper.SKIP
        extend_auth_indicator =\
            dictionary.get("extendAuthIndicator")\
            if dictionary.get("extendAuthIndicator")\
                else APIHelper.SKIP
        balance_inquiry =\
            dictionary.get("balanceInquiry")\
            if "balanceInquiry" in dictionary.keys()\
                else APIHelper.SKIP
        ignore_avs_result =\
            dictionary.get("ignoreAvsResult")\
            if dictionary.get("ignoreAvsResult")\
                else False
        decline_avs_flags =\
            dictionary.get("declineAvsFlags")\
            if dictionary.get("declineAvsFlags")\
                else APIHelper.SKIP
        ignore_cv_result =\
            dictionary.get("ignoreCvResult")\
            if dictionary.get("ignoreCvResult")\
                else False
        initiator =\
            Initiator.from_dictionary(
                dictionary.get("initiator"))\
                if "initiator" in dictionary.keys()\
                else APIHelper.SKIP
        bill_payment =\
            dictionary.get("billPayment")\
            if "billPayment" in dictionary.keys()\
                else APIHelper.SKIP
        bill_payment_type =\
            dictionary.get("billPaymentType")\
            if dictionary.get("billPaymentType")\
                else APIHelper.SKIP
        redemption_inquiry =\
            dictionary.get("redemptionInquiry")\
            if "redemptionInquiry" in dictionary.keys()\
                else APIHelper.SKIP
        transportation_mode =\
            dictionary.get("transportationMode")\
            if dictionary.get("transportationMode")\
                else APIHelper.SKIP
        aggregated_auth_indicator =\
            dictionary.get("aggregatedAuthIndicator")\
            if dictionary.get("aggregatedAuthIndicator")\
                else APIHelper.SKIP
        debt_recovery_indicator =\
            dictionary.get("debtRecoveryIndicator")\
            if dictionary.get("debtRecoveryIndicator")\
                else APIHelper.SKIP
        deferred_auth_indicator =\
            dictionary.get("deferredAuthIndicator")\
            if "deferredAuthIndicator" in dictionary.keys()\
                else APIHelper.SKIP
        cash_advance_indicator =\
            dictionary.get("cashAdvanceIndicator")\
            if "cashAdvanceIndicator" in dictionary.keys()\
                else APIHelper.SKIP
        split_payment_transaction =\
            dictionary.get("splitPaymentTransaction")\
            if "splitPaymentTransaction" in dictionary.keys()\
                else APIHelper.SKIP
        card_verification_indicator =\
            dictionary.get("cardVerificationIndicator")\
            if "cardVerificationIndicator" in dictionary.keys()\
                else APIHelper.SKIP
        transaction_mode =\
            dictionary.get("transactionMode")\
            if dictionary.get("transactionMode")\
                else APIHelper.SKIP
        aft_indicator =\
            dictionary.get("aftIndicator")\
            if "aftIndicator" in dictionary.keys()\
                else APIHelper.SKIP
        service_type =\
            dictionary.get("serviceType")\
            if dictionary.get("serviceType")\
                else APIHelper.SKIP
        balance_update =\
            dictionary.get("balanceUpdate")\
            if "balanceUpdate" in dictionary.keys()\
                else APIHelper.SKIP
        money_load =\
            dictionary.get("moneyLoad")\
            if "moneyLoad" in dictionary.keys()\
                else APIHelper.SKIP

        additional_properties = APIHelper.get_additional_properties(
            dictionary={k: v for k, v in dictionary.items()
                        if k not in cls._names.values()},
            unboxing_function=lambda value: value)

        # Return an object of this model
        return cls(auth_type,
                   pan_return_indicator,
                   verbal_auth_code,
                   verbal_auth_transaction_id,
                   auth_indicator,
                   partial_auth_indicator,
                   extend_auth_indicator,
                   balance_inquiry,
                   ignore_avs_result,
                   decline_avs_flags,
                   ignore_cv_result,
                   initiator,
                   bill_payment,
                   bill_payment_type,
                   redemption_inquiry,
                   transportation_mode,
                   aggregated_auth_indicator,
                   debt_recovery_indicator,
                   deferred_auth_indicator,
                   cash_advance_indicator,
                   split_payment_transaction,
                   card_verification_indicator,
                   transaction_mode,
                   aft_indicator,
                   service_type,
                   balance_update,
                   money_load,
                   additional_properties)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _auth_type=(
            self.auth_type
            if hasattr(self, "auth_type")
            else None
        )
        _pan_return_indicator=(
            self.pan_return_indicator
            if hasattr(self, "pan_return_indicator")
            else None
        )
        _verbal_auth_code=(
            self.verbal_auth_code
            if hasattr(self, "verbal_auth_code")
            else None
        )
        _verbal_auth_transaction_id=(
            self.verbal_auth_transaction_id
            if hasattr(self, "verbal_auth_transaction_id")
            else None
        )
        _auth_indicator=(
            self.auth_indicator
            if hasattr(self, "auth_indicator")
            else None
        )
        _partial_auth_indicator=(
            self.partial_auth_indicator
            if hasattr(self, "partial_auth_indicator")
            else None
        )
        _extend_auth_indicator=(
            self.extend_auth_indicator
            if hasattr(self, "extend_auth_indicator")
            else None
        )
        _balance_inquiry=(
            self.balance_inquiry
            if hasattr(self, "balance_inquiry")
            else None
        )
        _ignore_avs_result=(
            self.ignore_avs_result
            if hasattr(self, "ignore_avs_result")
            else None
        )
        _decline_avs_flags=(
            self.decline_avs_flags
            if hasattr(self, "decline_avs_flags")
            else None
        )
        _ignore_cv_result=(
            self.ignore_cv_result
            if hasattr(self, "ignore_cv_result")
            else None
        )
        _initiator=(
            self.initiator
            if hasattr(self, "initiator")
            else None
        )
        _bill_payment=(
            self.bill_payment
            if hasattr(self, "bill_payment")
            else None
        )
        _bill_payment_type=(
            self.bill_payment_type
            if hasattr(self, "bill_payment_type")
            else None
        )
        _redemption_inquiry=(
            self.redemption_inquiry
            if hasattr(self, "redemption_inquiry")
            else None
        )
        _transportation_mode=(
            self.transportation_mode
            if hasattr(self, "transportation_mode")
            else None
        )
        _aggregated_auth_indicator=(
            self.aggregated_auth_indicator
            if hasattr(self, "aggregated_auth_indicator")
            else None
        )
        _debt_recovery_indicator=(
            self.debt_recovery_indicator
            if hasattr(self, "debt_recovery_indicator")
            else None
        )
        _deferred_auth_indicator=(
            self.deferred_auth_indicator
            if hasattr(self, "deferred_auth_indicator")
            else None
        )
        _cash_advance_indicator=(
            self.cash_advance_indicator
            if hasattr(self, "cash_advance_indicator")
            else None
        )
        _split_payment_transaction=(
            self.split_payment_transaction
            if hasattr(self, "split_payment_transaction")
            else None
        )
        _card_verification_indicator=(
            self.card_verification_indicator
            if hasattr(self, "card_verification_indicator")
            else None
        )
        _transaction_mode=(
            self.transaction_mode
            if hasattr(self, "transaction_mode")
            else None
        )
        _aft_indicator=(
            self.aft_indicator
            if hasattr(self, "aft_indicator")
            else None
        )
        _service_type=(
            self.service_type
            if hasattr(self, "service_type")
            else None
        )
        _balance_update=(
            self.balance_update
            if hasattr(self, "balance_update")
            else None
        )
        _money_load=(
            self.money_load
            if hasattr(self, "money_load")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"auth_type={_auth_type!r}, "
            f"pan_return_indicator={_pan_return_indicator!r}, "
            f"verbal_auth_code={_verbal_auth_code!r}, "
            f"verbal_auth_transaction_id={_verbal_auth_transaction_id!r}, "
            f"auth_indicator={_auth_indicator!r}, "
            f"partial_auth_indicator={_partial_auth_indicator!r}, "
            f"extend_auth_indicator={_extend_auth_indicator!r}, "
            f"balance_inquiry={_balance_inquiry!r}, "
            f"ignore_avs_result={_ignore_avs_result!r}, "
            f"decline_avs_flags={_decline_avs_flags!r}, "
            f"ignore_cv_result={_ignore_cv_result!r}, "
            f"initiator={_initiator!r}, "
            f"bill_payment={_bill_payment!r}, "
            f"bill_payment_type={_bill_payment_type!r}, "
            f"redemption_inquiry={_redemption_inquiry!r}, "
            f"transportation_mode={_transportation_mode!r}, "
            f"aggregated_auth_indicator={_aggregated_auth_indicator!r}, "
            f"debt_recovery_indicator={_debt_recovery_indicator!r}, "
            f"deferred_auth_indicator={_deferred_auth_indicator!r}, "
            f"cash_advance_indicator={_cash_advance_indicator!r}, "
            f"split_payment_transaction={_split_payment_transaction!r}, "
            f"card_verification_indicator={_card_verification_indicator!r}, "
            f"transaction_mode={_transaction_mode!r}, "
            f"aft_indicator={_aft_indicator!r}, "
            f"service_type={_service_type!r}, "
            f"balance_update={_balance_update!r}, "
            f"money_load={_money_load!r}, "
            f"additional_properties={_additional_properties!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _auth_type=(
            self.auth_type
            if hasattr(self, "auth_type")
            else None
        )
        _pan_return_indicator=(
            self.pan_return_indicator
            if hasattr(self, "pan_return_indicator")
            else None
        )
        _verbal_auth_code=(
            self.verbal_auth_code
            if hasattr(self, "verbal_auth_code")
            else None
        )
        _verbal_auth_transaction_id=(
            self.verbal_auth_transaction_id
            if hasattr(self, "verbal_auth_transaction_id")
            else None
        )
        _auth_indicator=(
            self.auth_indicator
            if hasattr(self, "auth_indicator")
            else None
        )
        _partial_auth_indicator=(
            self.partial_auth_indicator
            if hasattr(self, "partial_auth_indicator")
            else None
        )
        _extend_auth_indicator=(
            self.extend_auth_indicator
            if hasattr(self, "extend_auth_indicator")
            else None
        )
        _balance_inquiry=(
            self.balance_inquiry
            if hasattr(self, "balance_inquiry")
            else None
        )
        _ignore_avs_result=(
            self.ignore_avs_result
            if hasattr(self, "ignore_avs_result")
            else None
        )
        _decline_avs_flags=(
            self.decline_avs_flags
            if hasattr(self, "decline_avs_flags")
            else None
        )
        _ignore_cv_result=(
            self.ignore_cv_result
            if hasattr(self, "ignore_cv_result")
            else None
        )
        _initiator=(
            self.initiator
            if hasattr(self, "initiator")
            else None
        )
        _bill_payment=(
            self.bill_payment
            if hasattr(self, "bill_payment")
            else None
        )
        _bill_payment_type=(
            self.bill_payment_type
            if hasattr(self, "bill_payment_type")
            else None
        )
        _redemption_inquiry=(
            self.redemption_inquiry
            if hasattr(self, "redemption_inquiry")
            else None
        )
        _transportation_mode=(
            self.transportation_mode
            if hasattr(self, "transportation_mode")
            else None
        )
        _aggregated_auth_indicator=(
            self.aggregated_auth_indicator
            if hasattr(self, "aggregated_auth_indicator")
            else None
        )
        _debt_recovery_indicator=(
            self.debt_recovery_indicator
            if hasattr(self, "debt_recovery_indicator")
            else None
        )
        _deferred_auth_indicator=(
            self.deferred_auth_indicator
            if hasattr(self, "deferred_auth_indicator")
            else None
        )
        _cash_advance_indicator=(
            self.cash_advance_indicator
            if hasattr(self, "cash_advance_indicator")
            else None
        )
        _split_payment_transaction=(
            self.split_payment_transaction
            if hasattr(self, "split_payment_transaction")
            else None
        )
        _card_verification_indicator=(
            self.card_verification_indicator
            if hasattr(self, "card_verification_indicator")
            else None
        )
        _transaction_mode=(
            self.transaction_mode
            if hasattr(self, "transaction_mode")
            else None
        )
        _aft_indicator=(
            self.aft_indicator
            if hasattr(self, "aft_indicator")
            else None
        )
        _service_type=(
            self.service_type
            if hasattr(self, "service_type")
            else None
        )
        _balance_update=(
            self.balance_update
            if hasattr(self, "balance_update")
            else None
        )
        _money_load=(
            self.money_load
            if hasattr(self, "money_load")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"auth_type={_auth_type!s}, "
            f"pan_return_indicator={_pan_return_indicator!s}, "
            f"verbal_auth_code={_verbal_auth_code!s}, "
            f"verbal_auth_transaction_id={_verbal_auth_transaction_id!s}, "
            f"auth_indicator={_auth_indicator!s}, "
            f"partial_auth_indicator={_partial_auth_indicator!s}, "
            f"extend_auth_indicator={_extend_auth_indicator!s}, "
            f"balance_inquiry={_balance_inquiry!s}, "
            f"ignore_avs_result={_ignore_avs_result!s}, "
            f"decline_avs_flags={_decline_avs_flags!s}, "
            f"ignore_cv_result={_ignore_cv_result!s}, "
            f"initiator={_initiator!s}, "
            f"bill_payment={_bill_payment!s}, "
            f"bill_payment_type={_bill_payment_type!s}, "
            f"redemption_inquiry={_redemption_inquiry!s}, "
            f"transportation_mode={_transportation_mode!s}, "
            f"aggregated_auth_indicator={_aggregated_auth_indicator!s}, "
            f"debt_recovery_indicator={_debt_recovery_indicator!s}, "
            f"deferred_auth_indicator={_deferred_auth_indicator!s}, "
            f"cash_advance_indicator={_cash_advance_indicator!s}, "
            f"split_payment_transaction={_split_payment_transaction!s}, "
            f"card_verification_indicator={_card_verification_indicator!s}, "
            f"transaction_mode={_transaction_mode!s}, "
            f"aft_indicator={_aft_indicator!s}, "
            f"service_type={_service_type!s}, "
            f"balance_update={_balance_update!s}, "
            f"money_load={_money_load!s}, "
            f"additional_properties={_additional_properties!s}, "
            f")"
        )
