"""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.ach_verification import (
    AchVerification,
)
from visaacceptancemergedspec.models.avs import (
    Avs,
)
from visaacceptancemergedspec.models.card_verification import (
    CardVerification,
)
from visaacceptancemergedspec.models.consumer_authentication_response import (
    ConsumerAuthenticationResponse,
)
from visaacceptancemergedspec.models.customer_2 import (
    Customer2,
)
from visaacceptancemergedspec.models.electronic_verification_results import (
    ElectronicVerificationResults,
)
from visaacceptancemergedspec.models.merchant_advice import (
    MerchantAdvice,
)
from visaacceptancemergedspec.models.routing import (
    Routing,
)
from visaacceptancemergedspec.models.seller_protection import (
    SellerProtection,
)


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

    Attributes:
        auth_indicator (str): Flag that specifies the purpose of the authorization.
            Possible values:  - `0`: Preauthorization  - `1`: Final authorization
        approval_code (str): Authorization code. Returned only when the processor
            returns this value.  The length of this value depends on your processor.
            Returned by authorization service.  #### PIN debit Authorization code
            that is returned by the processor.  Returned by PIN debit credit.  ####
            Elavon Encrypted Account Number Program The returned value is OFFLINE.
            #### TSYS Acquiring Solutions The returned value for a successful zero
            amount authorization is 000000.
        card_reference_data (str): The Scheme reference data is a variable length
            data element up to a maximum of 56 characters. It may be sent by the
            acquirer in the authorisation response message, and by the terminal
            (unchanged) in subsequent authorisation request messages associated with
            the same transaction. This field is used by Streamline and HSBC UK only,
            at present.
        transaction_id (str): Network transaction identifier (TID). You can use this
            value to identify a specific transaction when you are discussing the
            transaction with your processor. Not all processors provide this value.
            Returned by the authorization service.  #### PIN debit Transaction
            identifier generated by the processor.  Returned by PIN debit credit.
            #### GPX Processor transaction ID.  #### Cielo For Cielo, this value is
            the non-sequential unit (NSU) and is supported for all transactions. The
            value is generated by Cielo or the issuing bank.  #### Comercio Latino
            For Comercio Latino, this value is the proof of sale or non-sequential
            unit (NSU) number generated by the acquirers Cielo and Rede, or the
            issuing bank.  #### Visa Acceptance through VisaNet and GPN For details
            about this value for Visa Acceptance through VisaNet and GPN, see
            "processorInformation.networkTransactionId" in [REST API Fields](  ####
            Moneris This value identifies the transaction on a host system. It
            contains the following information: - Terminal used to process the
            transaction - Shift during which the transaction took place - Batch
            number - Transaction number within the batch You must store this value.
            If you give the customer a receipt, display this value on the receipt.
            **Example** For the value 66012345001069003: - Terminal ID = 66012345 -
            Shift number = 001 - Batch number = 069 - Transaction number = 003
        network_transaction_id (str): Same value as
            `processorInformation.transactionId`
        response_code (str): For most processors, this is the error message sent
            directly from the bank. Returned only when the processor returns this
            value.  **Important** Do not use this field to evaluate the result of the
            authorization.  #### PIN debit Response value that is returned by the
            processor or bank. **Important** Do not use this field to evaluate the
            results of the transaction request.  Returned by PIN debit credit, PIN
            debit purchase, and PIN debit reversal.  #### AIBMS If this value is
            `08`, you can accept the transaction if the customer provides you with
            identification.  #### Atos This value is the response code sent from Atos
            and it might also include the response code from the bank. Format:
            `aa,bb` with the two values separated by a comma and where: - `aa` is the
            two-digit error message from Atos. - `bb` is the optional two-digit error
            message from the bank.  #### Comercio Latino This value is the status
            code and the error or response code received from the processor separated
            by a colon. Format: [status code]:E[error code] or [status
            code]:R[response code] Example `2:R06`  #### JCN Gateway
            Processor-defined detail error code. The associated response category
            code is in the `processorInformation.responseCategoryCode` field. String
            (3)  #### paypalgateway Processor generated ID for the itemized detail.
        response_code_source (str): Used by Visa only and contains the response
            source/reason code that identifies the source of the response decision.
        response_details (str): This field might contain information about a decline.
            This field is supported only for **Visa Acceptance through VisaNet**.
        response_category_code (str): Processor-defined response category code. The
            associated detail error code is in the
            `processorInformation.responseCode` or `issuerInformation.responseCode`
            field of the service you requested.  This field is supported only for:
            - Japanese issuers  - Domestic transactions in Japan  - Comercio
            Latino—processor transaction ID required for troubleshooting  ####
            Maximum length for processors   - Comercio Latino: 36  - All other
            processors: 3
        forwarded_acquirer_code (str): Name of the Japanese acquirer that processed
            the transaction. Returned only for JCN Gateway. Please contact the Visa
            Acceptance Japan Support Group for more information.
        settlement_date (str): Field contains a settlement date. The date is in mmdd
            format, where: mm = month and dd = day.
        sequence_number (str): This field serves as a unique identifier for initial
            and subsequent recurring transactions, specific to the payment brand, and
            is crucial for transaction tracking and recurrence management. Not all
            processors provide this value. Returned by the authorization service.
        avs (Avs): The model property of type Avs.
        card_verification (CardVerification): The model property of type
            CardVerification.
        merchant_advice (MerchantAdvice): The model property of type MerchantAdvice.
        electronic_verification_results (ElectronicVerificationResults): The model
            property of type ElectronicVerificationResults.
        ach_verification (AchVerification): The model property of type
            AchVerification.
        customer (Customer2): The model property of type Customer2.
        consumer_authentication_response (ConsumerAuthenticationResponse): The model
            property of type ConsumerAuthenticationResponse.
        system_trace_audit_number (str): This field is returned only for **American
            Express Direct** and **Visa Acceptance through VisaNet**. Returned by
            authorization and incremental authorization services.  #### American
            Express Direct  System trace audit number (STAN). This value identifies
            the transaction and is useful when investigating a chargeback dispute.
            #### Visa Acceptance through VisaNet  System trace number that must be
            printed on the customer’s receipt.
        payment_account_reference_number (str): Payment Account Reference (PAR) is a
            non-financial reference assigned to each unique payment account and used
            to link a payment account to associated network tokens, i.e. the same PAR
            is returned for PAN-based and tokenized transactions, such as from
            digital wallets. PAR can be returned in authorisation responses for
            requests initiated with both real PANs and tokenized PANs. PAR can be
            used by merchants for fraud detection and regulatory compliance across
            different channels and digital wallets. PAR allows all participants in
            the payments chain to have a single, non-sensitive value assigned to a
            consumer. This value can be used in place of sensitive card holder
            identification fields, and transmitted across the payments ecosystem to
            facilitate card holder identification.  **Note** On Visa Acceptance
            through VisaNet, the value for this field corresponds to the following
            data in the TC 33 capture file: - Record: CP01 TCR8 - Position: 79-110 -
            Field: Payment Account Reference  The TC 33 Capture file contains
            information about the purchases and refunds that a merchant submits to
            Visa Acceptance. Visa Acceptance through VisaNet creates the TC 33
            Capture file at the end of the day and sends it to the merchant’s
            acquirer, who uses this information to facilitate end-of-day clearing
            processing with payment networks.
        transaction_integrity_code (str): Transaction integrity classification
            provided by Mastercard. This value specifies Mastercard’s evaluation of
            the transaction’s safety and security. This field is returned only for
            **Visa Acceptance through VisaNet**.  For card-present transactions,
            possible values:   - `A1`: EMV or token in a secure, trusted environment
            - `B1`: EMV or chip equivalent  - `C1`: Magnetic stripe  - `E1`: Key
            entered  - `U0`: Unclassified  For card-not-present transactions,
            possible values:   - `A2`: Digital transactions  - `B2`: Authenticated
            checkout  - `C2`: Transaction validation  - `D2`: Enhanced data  - `E2`:
            Generic messaging  - `U0`: Unclassified  For information about these
            values, contact Mastercard or your acquirer.  #### Visa Acceptance
            through VisaNet  The value for this field corresponds to the following
            data in the TC 33 capture file,<sup>1</sup>: - Record: CP01 TCR6 -
            Position: 136-137 - Field: Mastercard Transaction Integrity
            Classification  <sup>1</sup> The TC 33 Capture file contains information
            about the purchases and refunds that a merchant submits to Visa
            Acceptance. Visa Acceptance through VisaNet creates the TC 33 Capture
            file at the end of the day and sends it to the merchant’s acquirer, who
            uses this information to facilitate end-of-day clearing processing with
            payment networks.
        amex_verbal_auth_reference_number (str): Referral response number for a
            verbal authorization with FDMS Nashville when using an American Express
            card. Give this number to American Express when you call them for the
            verbal authorization.
        master_card_service_code (str): Mastercard service that was used for the
            transaction. Mastercard provides this value to Visa Acceptance.  Possible
            value:  - 53: Mastercard card-on-file token service  #### Visa Acceptance
            through VisaNet The value for this field corresponds to the following
            data in the TC 33 capture file: - Record: CP01 TCR6 - Position: 133-134 -
            Field: Mastercard Merchant on-behalf service. **Note** This field is
            returned only for Visa Acceptance through VisaNet.
        master_card_service_reply_code (str): Result of the Mastercard card-on-file
            token service. Mastercard provides this value to Visa Acceptance.
            Possible values:   - `C`: Service completed successfully.  - `F`: One of
            the following:    - Incorrect Mastercard POS entry mode. The Mastercard
            POS entry mode should be 81 for an authorization or      authorization
            reversal.    - Incorrect Mastercard POS entry mode. The Mastercard POS
            entry mode should be 01 for a tokenized request.    - Token requestor ID
            is missing or formatted incorrectly.  - `I`: One of the following:    -
            Invalid token requestor ID.    - Suspended or deactivated token.    -
            Invalid token (not in mapping table).  - `T`: Invalid combination of
            token requestor ID and token.  - `U`: Expired token.  - `W`: Primary
            account number (PAN) listed in electronic warning bulletin.  **Note**
            This field is returned only for **Visa Acceptance through VisaNet**.
        master_card_authentication_type (str): Type of authentication for which the
            transaction qualifies as determined by the Mastercard authentication
            service, which confirms the identity of the cardholder. Mastercard
            provides this value to Visa Acceptance.  Possible values:   - `1`:
            Transaction qualifies for Mastercard authentication type 1.  - `2`:
            Transaction qualifies for Mastercard authentication type 2.  #### Visa
            Acceptance through VisaNet The value for this field corresponds to the
            following data in the TC 33 capture file: - Record: CP01 TCR6 - Position:
            132 - Field: Mastercard Member Defined service. **Note** This field is
            returned only for Visa Acceptance through VisaNet.
        name (str): Name of the Processor.
        routing (Routing): The model property of type Routing.
        merchant_number (str): Identifier that was assigned to you by your acquirer.
            This value must be printed on the receipt.  #### Returned by
            Authorizations and Credits.  This reply field is only supported by
            merchants who have installed client software on their POS terminals and
            use these processors: - American Express Direct - Credit Mutuel-CIC - FDC
            Nashville Global - OmniPay Direct - SIX
        retrieval_reference_number (str): #### Ingenico ePayments Unique number that
            Visa Acceptance generates to identify the transaction. You can use this
            value to identify transactions in the Ingenico ePayments Collections
            Report, which provides settlement information. Contact customer support
            for information about the report.  ### Visa Acceptance through VisaNet
            Retrieval request number.
        payment_url (str): Direct the customer to this URL to complete the payment.
        complete_url (str): The redirect URL for forwarding the consumer to complete
            page.  This redirect needed by PSP to track browser information of
            consumer. PSP then redirect consumer to merchant success URL.
        signature (str): The model property of type str.
        public_key (str): The model property of type str.
        seller_protection (SellerProtection): The model property of type
            SellerProtection.
        transaction_expiry_date (str): The date on which the transaction expires and
            payment cannot be made.
        custom_url (str): For merchants to declare customs Customs declaration
            service URL.
        scheme_assigned_id (str): Unique id assigned to a merchant by the APM and not
            PSP The merchant ID, as boarded with Alipay
        device_url (str): The QR code value. Convert this value into an image and
            send it to the POS terminal to be displayed. The terminal can also
            perform the conversion. The value is a URL like in the example below:
        disbursement_mode (str): The funds are released to the merchant immediately.
            INSTANT The funds are released to the merchant immediately. DELAYED The
            funds are held for a finite number of days. The actual duration depends
            on the region and type of integration. You can release the funds through
            a referenced payout. Otherwise, the funds disbursed automatically after
            the specified duration.
        update_time_utc (str): The date and time when the transaction was last
            updated, in Internet date and time format.
        expiration_time_utc (str): The date and time when the authorized payment
            expires, in Internet date and time format.
        order_id (str): The id of the order
        order_status (str): The order status.  Possible values: - `CREATED` -
            `VOIDED` - `COMPLETED` - `PAYER_ACTION_REQUIRED`
        merchant_risk_prediction (str): Mastercard is introducing the Merchant Risk
            Predict Service in the middle East/Africa Region. A newly launched
            service comprised of seven independent artificial intelligence
            (AI)-powered scores intended to augment existing merchant risk management
            practices.
        additional_properties (Dict[str, Any]): The additional properties for the
            model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "auth_indicator": "authIndicator",
        "approval_code": "approvalCode",
        "card_reference_data": "cardReferenceData",
        "transaction_id": "transactionId",
        "network_transaction_id": "networkTransactionId",
        "response_code": "responseCode",
        "response_code_source": "responseCodeSource",
        "response_details": "responseDetails",
        "response_category_code": "responseCategoryCode",
        "forwarded_acquirer_code": "forwardedAcquirerCode",
        "settlement_date": "settlementDate",
        "sequence_number": "sequenceNumber",
        "avs": "avs",
        "card_verification": "cardVerification",
        "merchant_advice": "merchantAdvice",
        "electronic_verification_results": "electronicVerificationResults",
        "ach_verification": "achVerification",
        "customer": "customer",
        "consumer_authentication_response": "consumerAuthenticationResponse",
        "system_trace_audit_number": "systemTraceAuditNumber",
        "payment_account_reference_number": "paymentAccountReferenceNumber",
        "transaction_integrity_code": "transactionIntegrityCode",
        "amex_verbal_auth_reference_number": "amexVerbalAuthReferenceNumber",
        "master_card_service_code": "masterCardServiceCode",
        "master_card_service_reply_code": "masterCardServiceReplyCode",
        "master_card_authentication_type": "masterCardAuthenticationType",
        "name": "name",
        "routing": "routing",
        "merchant_number": "merchantNumber",
        "retrieval_reference_number": "retrievalReferenceNumber",
        "payment_url": "paymentUrl",
        "complete_url": "completeUrl",
        "signature": "signature",
        "public_key": "publicKey",
        "seller_protection": "sellerProtection",
        "transaction_expiry_date": "transactionExpiryDate",
        "custom_url": "customUrl",
        "scheme_assigned_id": "schemeAssignedId",
        "device_url": "deviceUrl",
        "disbursement_mode": "disbursementMode",
        "update_time_utc": "updateTimeUtc",
        "expiration_time_utc": "expirationTimeUtc",
        "order_id": "orderId",
        "order_status": "orderStatus",
        "merchant_risk_prediction": "merchantRiskPrediction",
    }

    _optionals = [
        "auth_indicator",
        "approval_code",
        "card_reference_data",
        "transaction_id",
        "network_transaction_id",
        "response_code",
        "response_code_source",
        "response_details",
        "response_category_code",
        "forwarded_acquirer_code",
        "settlement_date",
        "sequence_number",
        "avs",
        "card_verification",
        "merchant_advice",
        "electronic_verification_results",
        "ach_verification",
        "customer",
        "consumer_authentication_response",
        "system_trace_audit_number",
        "payment_account_reference_number",
        "transaction_integrity_code",
        "amex_verbal_auth_reference_number",
        "master_card_service_code",
        "master_card_service_reply_code",
        "master_card_authentication_type",
        "name",
        "routing",
        "merchant_number",
        "retrieval_reference_number",
        "payment_url",
        "complete_url",
        "signature",
        "public_key",
        "seller_protection",
        "transaction_expiry_date",
        "custom_url",
        "scheme_assigned_id",
        "device_url",
        "disbursement_mode",
        "update_time_utc",
        "expiration_time_utc",
        "order_id",
        "order_status",
        "merchant_risk_prediction",
    ]

    def __init__(
        self,
        auth_indicator=APIHelper.SKIP,
        approval_code=APIHelper.SKIP,
        card_reference_data=APIHelper.SKIP,
        transaction_id=APIHelper.SKIP,
        network_transaction_id=APIHelper.SKIP,
        response_code=APIHelper.SKIP,
        response_code_source=APIHelper.SKIP,
        response_details=APIHelper.SKIP,
        response_category_code=APIHelper.SKIP,
        forwarded_acquirer_code=APIHelper.SKIP,
        settlement_date=APIHelper.SKIP,
        sequence_number=APIHelper.SKIP,
        avs=APIHelper.SKIP,
        card_verification=APIHelper.SKIP,
        merchant_advice=APIHelper.SKIP,
        electronic_verification_results=APIHelper.SKIP,
        ach_verification=APIHelper.SKIP,
        customer=APIHelper.SKIP,
        consumer_authentication_response=APIHelper.SKIP,
        system_trace_audit_number=APIHelper.SKIP,
        payment_account_reference_number=APIHelper.SKIP,
        transaction_integrity_code=APIHelper.SKIP,
        amex_verbal_auth_reference_number=APIHelper.SKIP,
        master_card_service_code=APIHelper.SKIP,
        master_card_service_reply_code=APIHelper.SKIP,
        master_card_authentication_type=APIHelper.SKIP,
        name=APIHelper.SKIP,
        routing=APIHelper.SKIP,
        merchant_number=APIHelper.SKIP,
        retrieval_reference_number=APIHelper.SKIP,
        payment_url=APIHelper.SKIP,
        complete_url=APIHelper.SKIP,
        signature=APIHelper.SKIP,
        public_key=APIHelper.SKIP,
        seller_protection=APIHelper.SKIP,
        transaction_expiry_date=APIHelper.SKIP,
        custom_url=APIHelper.SKIP,
        scheme_assigned_id=APIHelper.SKIP,
        device_url=APIHelper.SKIP,
        disbursement_mode=APIHelper.SKIP,
        update_time_utc=APIHelper.SKIP,
        expiration_time_utc=APIHelper.SKIP,
        order_id=APIHelper.SKIP,
        order_status=APIHelper.SKIP,
        merchant_risk_prediction=APIHelper.SKIP,
        additional_properties=None):
        """Initialize a ProcessorInformation1 instance."""
        # Initialize members of the class
        if auth_indicator is not APIHelper.SKIP:
            self.auth_indicator = auth_indicator
        if approval_code is not APIHelper.SKIP:
            self.approval_code = approval_code
        if card_reference_data is not APIHelper.SKIP:
            self.card_reference_data = card_reference_data
        if transaction_id is not APIHelper.SKIP:
            self.transaction_id = transaction_id
        if network_transaction_id is not APIHelper.SKIP:
            self.network_transaction_id = network_transaction_id
        if response_code is not APIHelper.SKIP:
            self.response_code = response_code
        if response_code_source is not APIHelper.SKIP:
            self.response_code_source = response_code_source
        if response_details is not APIHelper.SKIP:
            self.response_details = response_details
        if response_category_code is not APIHelper.SKIP:
            self.response_category_code = response_category_code
        if forwarded_acquirer_code is not APIHelper.SKIP:
            self.forwarded_acquirer_code = forwarded_acquirer_code
        if settlement_date is not APIHelper.SKIP:
            self.settlement_date = settlement_date
        if sequence_number is not APIHelper.SKIP:
            self.sequence_number = sequence_number
        if avs is not APIHelper.SKIP:
            self.avs = avs
        if card_verification is not APIHelper.SKIP:
            self.card_verification = card_verification
        if merchant_advice is not APIHelper.SKIP:
            self.merchant_advice = merchant_advice
        if electronic_verification_results is not APIHelper.SKIP:
            self.electronic_verification_results = electronic_verification_results
        if ach_verification is not APIHelper.SKIP:
            self.ach_verification = ach_verification
        if customer is not APIHelper.SKIP:
            self.customer = customer
        if consumer_authentication_response is not APIHelper.SKIP:
            self.consumer_authentication_response = consumer_authentication_response
        if system_trace_audit_number is not APIHelper.SKIP:
            self.system_trace_audit_number = system_trace_audit_number
        if payment_account_reference_number is not APIHelper.SKIP:
            self.payment_account_reference_number = payment_account_reference_number
        if transaction_integrity_code is not APIHelper.SKIP:
            self.transaction_integrity_code = transaction_integrity_code
        if amex_verbal_auth_reference_number is not APIHelper.SKIP:
            self.amex_verbal_auth_reference_number =\
                 amex_verbal_auth_reference_number
        if master_card_service_code is not APIHelper.SKIP:
            self.master_card_service_code = master_card_service_code
        if master_card_service_reply_code is not APIHelper.SKIP:
            self.master_card_service_reply_code = master_card_service_reply_code
        if master_card_authentication_type is not APIHelper.SKIP:
            self.master_card_authentication_type = master_card_authentication_type
        if name is not APIHelper.SKIP:
            self.name = name
        if routing is not APIHelper.SKIP:
            self.routing = routing
        if merchant_number is not APIHelper.SKIP:
            self.merchant_number = merchant_number
        if retrieval_reference_number is not APIHelper.SKIP:
            self.retrieval_reference_number = retrieval_reference_number
        if payment_url is not APIHelper.SKIP:
            self.payment_url = payment_url
        if complete_url is not APIHelper.SKIP:
            self.complete_url = complete_url
        if signature is not APIHelper.SKIP:
            self.signature = signature
        if public_key is not APIHelper.SKIP:
            self.public_key = public_key
        if seller_protection is not APIHelper.SKIP:
            self.seller_protection = seller_protection
        if transaction_expiry_date is not APIHelper.SKIP:
            self.transaction_expiry_date = transaction_expiry_date
        if custom_url is not APIHelper.SKIP:
            self.custom_url = custom_url
        if scheme_assigned_id is not APIHelper.SKIP:
            self.scheme_assigned_id = scheme_assigned_id
        if device_url is not APIHelper.SKIP:
            self.device_url = device_url
        if disbursement_mode is not APIHelper.SKIP:
            self.disbursement_mode = disbursement_mode
        if update_time_utc is not APIHelper.SKIP:
            self.update_time_utc = update_time_utc
        if expiration_time_utc is not APIHelper.SKIP:
            self.expiration_time_utc = expiration_time_utc
        if order_id is not APIHelper.SKIP:
            self.order_id = order_id
        if order_status is not APIHelper.SKIP:
            self.order_status = order_status
        if merchant_risk_prediction is not APIHelper.SKIP:
            self.merchant_risk_prediction = merchant_risk_prediction

        # 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_indicator =\
            dictionary.get("authIndicator")\
            if dictionary.get("authIndicator")\
                else APIHelper.SKIP
        approval_code =\
            dictionary.get("approvalCode")\
            if dictionary.get("approvalCode")\
                else APIHelper.SKIP
        card_reference_data =\
            dictionary.get("cardReferenceData")\
            if dictionary.get("cardReferenceData")\
                else APIHelper.SKIP
        transaction_id =\
            dictionary.get("transactionId")\
            if dictionary.get("transactionId")\
                else APIHelper.SKIP
        network_transaction_id =\
            dictionary.get("networkTransactionId")\
            if dictionary.get("networkTransactionId")\
                else APIHelper.SKIP
        response_code =\
            dictionary.get("responseCode")\
            if dictionary.get("responseCode")\
                else APIHelper.SKIP
        response_code_source =\
            dictionary.get("responseCodeSource")\
            if dictionary.get("responseCodeSource")\
                else APIHelper.SKIP
        response_details =\
            dictionary.get("responseDetails")\
            if dictionary.get("responseDetails")\
                else APIHelper.SKIP
        response_category_code =\
            dictionary.get("responseCategoryCode")\
            if dictionary.get("responseCategoryCode")\
                else APIHelper.SKIP
        forwarded_acquirer_code =\
            dictionary.get("forwardedAcquirerCode")\
            if dictionary.get("forwardedAcquirerCode")\
                else APIHelper.SKIP
        settlement_date =\
            dictionary.get("settlementDate")\
            if dictionary.get("settlementDate")\
                else APIHelper.SKIP
        sequence_number =\
            dictionary.get("sequenceNumber")\
            if dictionary.get("sequenceNumber")\
                else APIHelper.SKIP
        avs =\
            Avs.from_dictionary(
                dictionary.get("avs"))\
                if "avs" in dictionary.keys()\
                else APIHelper.SKIP
        card_verification =\
            CardVerification.from_dictionary(
                dictionary.get("cardVerification"))\
                if "cardVerification" in dictionary.keys()\
                else APIHelper.SKIP
        merchant_advice =\
            MerchantAdvice.from_dictionary(
                dictionary.get("merchantAdvice"))\
                if "merchantAdvice" in dictionary.keys()\
                else APIHelper.SKIP
        electronic_verification_results =\
            ElectronicVerificationResults.from_dictionary(
                dictionary.get("electronicVerificationResults"))\
                if "electronicVerificationResults" in dictionary.keys()\
                else APIHelper.SKIP
        ach_verification =\
            AchVerification.from_dictionary(
                dictionary.get("achVerification"))\
                if "achVerification" in dictionary.keys()\
                else APIHelper.SKIP
        customer =\
            Customer2.from_dictionary(
                dictionary.get("customer"))\
                if "customer" in dictionary.keys()\
                else APIHelper.SKIP
        consumer_authentication_response =\
            ConsumerAuthenticationResponse.from_dictionary(
                dictionary.get("consumerAuthenticationResponse"))\
                if "consumerAuthenticationResponse" in dictionary.keys()\
                else APIHelper.SKIP
        system_trace_audit_number =\
            dictionary.get("systemTraceAuditNumber")\
            if dictionary.get("systemTraceAuditNumber")\
                else APIHelper.SKIP
        payment_account_reference_number =\
            dictionary.get("paymentAccountReferenceNumber")\
            if dictionary.get("paymentAccountReferenceNumber")\
                else APIHelper.SKIP
        transaction_integrity_code =\
            dictionary.get("transactionIntegrityCode")\
            if dictionary.get("transactionIntegrityCode")\
                else APIHelper.SKIP
        amex_verbal_auth_reference_number =\
            dictionary.get("amexVerbalAuthReferenceNumber")\
            if dictionary.get("amexVerbalAuthReferenceNumber")\
                else APIHelper.SKIP
        master_card_service_code =\
            dictionary.get("masterCardServiceCode")\
            if dictionary.get("masterCardServiceCode")\
                else APIHelper.SKIP
        master_card_service_reply_code =\
            dictionary.get("masterCardServiceReplyCode")\
            if dictionary.get("masterCardServiceReplyCode")\
                else APIHelper.SKIP
        master_card_authentication_type =\
            dictionary.get("masterCardAuthenticationType")\
            if dictionary.get("masterCardAuthenticationType")\
                else APIHelper.SKIP
        name =\
            dictionary.get("name")\
            if dictionary.get("name")\
                else APIHelper.SKIP
        routing =\
            Routing.from_dictionary(
                dictionary.get("routing"))\
                if "routing" in dictionary.keys()\
                else APIHelper.SKIP
        merchant_number =\
            dictionary.get("merchantNumber")\
            if dictionary.get("merchantNumber")\
                else APIHelper.SKIP
        retrieval_reference_number =\
            dictionary.get("retrievalReferenceNumber")\
            if dictionary.get("retrievalReferenceNumber")\
                else APIHelper.SKIP
        payment_url =\
            dictionary.get("paymentUrl")\
            if dictionary.get("paymentUrl")\
                else APIHelper.SKIP
        complete_url =\
            dictionary.get("completeUrl")\
            if dictionary.get("completeUrl")\
                else APIHelper.SKIP
        signature =\
            dictionary.get("signature")\
            if dictionary.get("signature")\
                else APIHelper.SKIP
        public_key =\
            dictionary.get("publicKey")\
            if dictionary.get("publicKey")\
                else APIHelper.SKIP
        seller_protection =\
            SellerProtection.from_dictionary(
                dictionary.get("sellerProtection"))\
                if "sellerProtection" in dictionary.keys()\
                else APIHelper.SKIP
        transaction_expiry_date =\
            dictionary.get("transactionExpiryDate")\
            if dictionary.get("transactionExpiryDate")\
                else APIHelper.SKIP
        custom_url =\
            dictionary.get("customUrl")\
            if dictionary.get("customUrl")\
                else APIHelper.SKIP
        scheme_assigned_id =\
            dictionary.get("schemeAssignedId")\
            if dictionary.get("schemeAssignedId")\
                else APIHelper.SKIP
        device_url =\
            dictionary.get("deviceUrl")\
            if dictionary.get("deviceUrl")\
                else APIHelper.SKIP
        disbursement_mode =\
            dictionary.get("disbursementMode")\
            if dictionary.get("disbursementMode")\
                else APIHelper.SKIP
        update_time_utc =\
            dictionary.get("updateTimeUtc")\
            if dictionary.get("updateTimeUtc")\
                else APIHelper.SKIP
        expiration_time_utc =\
            dictionary.get("expirationTimeUtc")\
            if dictionary.get("expirationTimeUtc")\
                else APIHelper.SKIP
        order_id =\
            dictionary.get("orderId")\
            if dictionary.get("orderId")\
                else APIHelper.SKIP
        order_status =\
            dictionary.get("orderStatus")\
            if dictionary.get("orderStatus")\
                else APIHelper.SKIP
        merchant_risk_prediction =\
            dictionary.get("merchantRiskPrediction")\
            if dictionary.get("merchantRiskPrediction")\
                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_indicator,
                   approval_code,
                   card_reference_data,
                   transaction_id,
                   network_transaction_id,
                   response_code,
                   response_code_source,
                   response_details,
                   response_category_code,
                   forwarded_acquirer_code,
                   settlement_date,
                   sequence_number,
                   avs,
                   card_verification,
                   merchant_advice,
                   electronic_verification_results,
                   ach_verification,
                   customer,
                   consumer_authentication_response,
                   system_trace_audit_number,
                   payment_account_reference_number,
                   transaction_integrity_code,
                   amex_verbal_auth_reference_number,
                   master_card_service_code,
                   master_card_service_reply_code,
                   master_card_authentication_type,
                   name,
                   routing,
                   merchant_number,
                   retrieval_reference_number,
                   payment_url,
                   complete_url,
                   signature,
                   public_key,
                   seller_protection,
                   transaction_expiry_date,
                   custom_url,
                   scheme_assigned_id,
                   device_url,
                   disbursement_mode,
                   update_time_utc,
                   expiration_time_utc,
                   order_id,
                   order_status,
                   merchant_risk_prediction,
                   additional_properties)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _auth_indicator=(
            self.auth_indicator
            if hasattr(self, "auth_indicator")
            else None
        )
        _approval_code=(
            self.approval_code
            if hasattr(self, "approval_code")
            else None
        )
        _card_reference_data=(
            self.card_reference_data
            if hasattr(self, "card_reference_data")
            else None
        )
        _transaction_id=(
            self.transaction_id
            if hasattr(self, "transaction_id")
            else None
        )
        _network_transaction_id=(
            self.network_transaction_id
            if hasattr(self, "network_transaction_id")
            else None
        )
        _response_code=(
            self.response_code
            if hasattr(self, "response_code")
            else None
        )
        _response_code_source=(
            self.response_code_source
            if hasattr(self, "response_code_source")
            else None
        )
        _response_details=(
            self.response_details
            if hasattr(self, "response_details")
            else None
        )
        _response_category_code=(
            self.response_category_code
            if hasattr(self, "response_category_code")
            else None
        )
        _forwarded_acquirer_code=(
            self.forwarded_acquirer_code
            if hasattr(self, "forwarded_acquirer_code")
            else None
        )
        _settlement_date=(
            self.settlement_date
            if hasattr(self, "settlement_date")
            else None
        )
        _sequence_number=(
            self.sequence_number
            if hasattr(self, "sequence_number")
            else None
        )
        _avs=(
            self.avs
            if hasattr(self, "avs")
            else None
        )
        _card_verification=(
            self.card_verification
            if hasattr(self, "card_verification")
            else None
        )
        _merchant_advice=(
            self.merchant_advice
            if hasattr(self, "merchant_advice")
            else None
        )
        _electronic_verification_results=(
            self.electronic_verification_results
            if hasattr(self, "electronic_verification_results")
            else None
        )
        _ach_verification=(
            self.ach_verification
            if hasattr(self, "ach_verification")
            else None
        )
        _customer=(
            self.customer
            if hasattr(self, "customer")
            else None
        )
        _consumer_authentication_response=(
            self.consumer_authentication_response
            if hasattr(self, "consumer_authentication_response")
            else None
        )
        _system_trace_audit_number=(
            self.system_trace_audit_number
            if hasattr(self, "system_trace_audit_number")
            else None
        )
        _payment_account_reference_number=(
            self.payment_account_reference_number
            if hasattr(self, "payment_account_reference_number")
            else None
        )
        _transaction_integrity_code=(
            self.transaction_integrity_code
            if hasattr(self, "transaction_integrity_code")
            else None
        )
        _amex_verbal_auth_reference_number=(
            self.amex_verbal_auth_reference_number
            if hasattr(self, "amex_verbal_auth_reference_number")
            else None
        )
        _master_card_service_code=(
            self.master_card_service_code
            if hasattr(self, "master_card_service_code")
            else None
        )
        _master_card_service_reply_code=(
            self.master_card_service_reply_code
            if hasattr(self, "master_card_service_reply_code")
            else None
        )
        _master_card_authentication_type=(
            self.master_card_authentication_type
            if hasattr(self, "master_card_authentication_type")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _routing=(
            self.routing
            if hasattr(self, "routing")
            else None
        )
        _merchant_number=(
            self.merchant_number
            if hasattr(self, "merchant_number")
            else None
        )
        _retrieval_reference_number=(
            self.retrieval_reference_number
            if hasattr(self, "retrieval_reference_number")
            else None
        )
        _payment_url=(
            self.payment_url
            if hasattr(self, "payment_url")
            else None
        )
        _complete_url=(
            self.complete_url
            if hasattr(self, "complete_url")
            else None
        )
        _signature=(
            self.signature
            if hasattr(self, "signature")
            else None
        )
        _public_key=(
            self.public_key
            if hasattr(self, "public_key")
            else None
        )
        _seller_protection=(
            self.seller_protection
            if hasattr(self, "seller_protection")
            else None
        )
        _transaction_expiry_date=(
            self.transaction_expiry_date
            if hasattr(self, "transaction_expiry_date")
            else None
        )
        _custom_url=(
            self.custom_url
            if hasattr(self, "custom_url")
            else None
        )
        _scheme_assigned_id=(
            self.scheme_assigned_id
            if hasattr(self, "scheme_assigned_id")
            else None
        )
        _device_url=(
            self.device_url
            if hasattr(self, "device_url")
            else None
        )
        _disbursement_mode=(
            self.disbursement_mode
            if hasattr(self, "disbursement_mode")
            else None
        )
        _update_time_utc=(
            self.update_time_utc
            if hasattr(self, "update_time_utc")
            else None
        )
        _expiration_time_utc=(
            self.expiration_time_utc
            if hasattr(self, "expiration_time_utc")
            else None
        )
        _order_id=(
            self.order_id
            if hasattr(self, "order_id")
            else None
        )
        _order_status=(
            self.order_status
            if hasattr(self, "order_status")
            else None
        )
        _merchant_risk_prediction=(
            self.merchant_risk_prediction
            if hasattr(self, "merchant_risk_prediction")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"auth_indicator={_auth_indicator!r}, "
            f"approval_code={_approval_code!r}, "
            f"card_reference_data={_card_reference_data!r}, "
            f"transaction_id={_transaction_id!r}, "
            f"network_transaction_id={_network_transaction_id!r}, "
            f"response_code={_response_code!r}, "
            f"response_code_source={_response_code_source!r}, "
            f"response_details={_response_details!r}, "
            f"response_category_code={_response_category_code!r}, "
            f"forwarded_acquirer_code={_forwarded_acquirer_code!r}, "
            f"settlement_date={_settlement_date!r}, "
            f"sequence_number={_sequence_number!r}, "
            f"avs={_avs!r}, "
            f"card_verification={_card_verification!r}, "
            f"merchant_advice={_merchant_advice!r}, "
            f"electronic_verification_results={_electronic_verification_results!r}, "
            f"ach_verification={_ach_verification!r}, "
            f"customer={_customer!r}, "
            f"consumer_authentication_response={_consumer_authentication_response!r}, "
            f"system_trace_audit_number={_system_trace_audit_number!r}, "
            f"payment_account_reference_number={_payment_account_reference_number!r}, "
            f"transaction_integrity_code={_transaction_integrity_code!r}, "
            f"amex_verbal_auth_reference_number={_amex_verbal_auth_reference_number!r}, "
            f"master_card_service_code={_master_card_service_code!r}, "
            f"master_card_service_reply_code={_master_card_service_reply_code!r}, "
            f"master_card_authentication_type={_master_card_authentication_type!r}, "
            f"name={_name!r}, "
            f"routing={_routing!r}, "
            f"merchant_number={_merchant_number!r}, "
            f"retrieval_reference_number={_retrieval_reference_number!r}, "
            f"payment_url={_payment_url!r}, "
            f"complete_url={_complete_url!r}, "
            f"signature={_signature!r}, "
            f"public_key={_public_key!r}, "
            f"seller_protection={_seller_protection!r}, "
            f"transaction_expiry_date={_transaction_expiry_date!r}, "
            f"custom_url={_custom_url!r}, "
            f"scheme_assigned_id={_scheme_assigned_id!r}, "
            f"device_url={_device_url!r}, "
            f"disbursement_mode={_disbursement_mode!r}, "
            f"update_time_utc={_update_time_utc!r}, "
            f"expiration_time_utc={_expiration_time_utc!r}, "
            f"order_id={_order_id!r}, "
            f"order_status={_order_status!r}, "
            f"merchant_risk_prediction={_merchant_risk_prediction!r}, "
            f"additional_properties={_additional_properties!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _auth_indicator=(
            self.auth_indicator
            if hasattr(self, "auth_indicator")
            else None
        )
        _approval_code=(
            self.approval_code
            if hasattr(self, "approval_code")
            else None
        )
        _card_reference_data=(
            self.card_reference_data
            if hasattr(self, "card_reference_data")
            else None
        )
        _transaction_id=(
            self.transaction_id
            if hasattr(self, "transaction_id")
            else None
        )
        _network_transaction_id=(
            self.network_transaction_id
            if hasattr(self, "network_transaction_id")
            else None
        )
        _response_code=(
            self.response_code
            if hasattr(self, "response_code")
            else None
        )
        _response_code_source=(
            self.response_code_source
            if hasattr(self, "response_code_source")
            else None
        )
        _response_details=(
            self.response_details
            if hasattr(self, "response_details")
            else None
        )
        _response_category_code=(
            self.response_category_code
            if hasattr(self, "response_category_code")
            else None
        )
        _forwarded_acquirer_code=(
            self.forwarded_acquirer_code
            if hasattr(self, "forwarded_acquirer_code")
            else None
        )
        _settlement_date=(
            self.settlement_date
            if hasattr(self, "settlement_date")
            else None
        )
        _sequence_number=(
            self.sequence_number
            if hasattr(self, "sequence_number")
            else None
        )
        _avs=(
            self.avs
            if hasattr(self, "avs")
            else None
        )
        _card_verification=(
            self.card_verification
            if hasattr(self, "card_verification")
            else None
        )
        _merchant_advice=(
            self.merchant_advice
            if hasattr(self, "merchant_advice")
            else None
        )
        _electronic_verification_results=(
            self.electronic_verification_results
            if hasattr(self, "electronic_verification_results")
            else None
        )
        _ach_verification=(
            self.ach_verification
            if hasattr(self, "ach_verification")
            else None
        )
        _customer=(
            self.customer
            if hasattr(self, "customer")
            else None
        )
        _consumer_authentication_response=(
            self.consumer_authentication_response
            if hasattr(self, "consumer_authentication_response")
            else None
        )
        _system_trace_audit_number=(
            self.system_trace_audit_number
            if hasattr(self, "system_trace_audit_number")
            else None
        )
        _payment_account_reference_number=(
            self.payment_account_reference_number
            if hasattr(self, "payment_account_reference_number")
            else None
        )
        _transaction_integrity_code=(
            self.transaction_integrity_code
            if hasattr(self, "transaction_integrity_code")
            else None
        )
        _amex_verbal_auth_reference_number=(
            self.amex_verbal_auth_reference_number
            if hasattr(self, "amex_verbal_auth_reference_number")
            else None
        )
        _master_card_service_code=(
            self.master_card_service_code
            if hasattr(self, "master_card_service_code")
            else None
        )
        _master_card_service_reply_code=(
            self.master_card_service_reply_code
            if hasattr(self, "master_card_service_reply_code")
            else None
        )
        _master_card_authentication_type=(
            self.master_card_authentication_type
            if hasattr(self, "master_card_authentication_type")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _routing=(
            self.routing
            if hasattr(self, "routing")
            else None
        )
        _merchant_number=(
            self.merchant_number
            if hasattr(self, "merchant_number")
            else None
        )
        _retrieval_reference_number=(
            self.retrieval_reference_number
            if hasattr(self, "retrieval_reference_number")
            else None
        )
        _payment_url=(
            self.payment_url
            if hasattr(self, "payment_url")
            else None
        )
        _complete_url=(
            self.complete_url
            if hasattr(self, "complete_url")
            else None
        )
        _signature=(
            self.signature
            if hasattr(self, "signature")
            else None
        )
        _public_key=(
            self.public_key
            if hasattr(self, "public_key")
            else None
        )
        _seller_protection=(
            self.seller_protection
            if hasattr(self, "seller_protection")
            else None
        )
        _transaction_expiry_date=(
            self.transaction_expiry_date
            if hasattr(self, "transaction_expiry_date")
            else None
        )
        _custom_url=(
            self.custom_url
            if hasattr(self, "custom_url")
            else None
        )
        _scheme_assigned_id=(
            self.scheme_assigned_id
            if hasattr(self, "scheme_assigned_id")
            else None
        )
        _device_url=(
            self.device_url
            if hasattr(self, "device_url")
            else None
        )
        _disbursement_mode=(
            self.disbursement_mode
            if hasattr(self, "disbursement_mode")
            else None
        )
        _update_time_utc=(
            self.update_time_utc
            if hasattr(self, "update_time_utc")
            else None
        )
        _expiration_time_utc=(
            self.expiration_time_utc
            if hasattr(self, "expiration_time_utc")
            else None
        )
        _order_id=(
            self.order_id
            if hasattr(self, "order_id")
            else None
        )
        _order_status=(
            self.order_status
            if hasattr(self, "order_status")
            else None
        )
        _merchant_risk_prediction=(
            self.merchant_risk_prediction
            if hasattr(self, "merchant_risk_prediction")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"auth_indicator={_auth_indicator!s}, "
            f"approval_code={_approval_code!s}, "
            f"card_reference_data={_card_reference_data!s}, "
            f"transaction_id={_transaction_id!s}, "
            f"network_transaction_id={_network_transaction_id!s}, "
            f"response_code={_response_code!s}, "
            f"response_code_source={_response_code_source!s}, "
            f"response_details={_response_details!s}, "
            f"response_category_code={_response_category_code!s}, "
            f"forwarded_acquirer_code={_forwarded_acquirer_code!s}, "
            f"settlement_date={_settlement_date!s}, "
            f"sequence_number={_sequence_number!s}, "
            f"avs={_avs!s}, "
            f"card_verification={_card_verification!s}, "
            f"merchant_advice={_merchant_advice!s}, "
            f"electronic_verification_results={_electronic_verification_results!s}, "
            f"ach_verification={_ach_verification!s}, "
            f"customer={_customer!s}, "
            f"consumer_authentication_response={_consumer_authentication_response!s}, "
            f"system_trace_audit_number={_system_trace_audit_number!s}, "
            f"payment_account_reference_number={_payment_account_reference_number!s}, "
            f"transaction_integrity_code={_transaction_integrity_code!s}, "
            f"amex_verbal_auth_reference_number={_amex_verbal_auth_reference_number!s}, "
            f"master_card_service_code={_master_card_service_code!s}, "
            f"master_card_service_reply_code={_master_card_service_reply_code!s}, "
            f"master_card_authentication_type={_master_card_authentication_type!s}, "
            f"name={_name!s}, "
            f"routing={_routing!s}, "
            f"merchant_number={_merchant_number!s}, "
            f"retrieval_reference_number={_retrieval_reference_number!s}, "
            f"payment_url={_payment_url!s}, "
            f"complete_url={_complete_url!s}, "
            f"signature={_signature!s}, "
            f"public_key={_public_key!s}, "
            f"seller_protection={_seller_protection!s}, "
            f"transaction_expiry_date={_transaction_expiry_date!s}, "
            f"custom_url={_custom_url!s}, "
            f"scheme_assigned_id={_scheme_assigned_id!s}, "
            f"device_url={_device_url!s}, "
            f"disbursement_mode={_disbursement_mode!s}, "
            f"update_time_utc={_update_time_utc!s}, "
            f"expiration_time_utc={_expiration_time_utc!s}, "
            f"order_id={_order_id!s}, "
            f"order_status={_order_status!s}, "
            f"merchant_risk_prediction={_merchant_risk_prediction!s}, "
            f"additional_properties={_additional_properties!s}, "
            f")"
        )
