"""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.ivr import (
    Ivr,
)
from visaacceptancemergedspec.models.strong_authentication_1 import (
    StrongAuthentication1,
)


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

    Attributes:
        access_token (str): JSON Web Token (JWT) used to authenticate the consumer
            with the authentication provider, such as, CardinalCommerce or Rupay.
            Note - Max Length of this field is 2048 characters.
        acs_rendering_type (str): Identifies the UI Type the ACS will use to complete
            the challenge. **NOTE**: Only available for App transactions using the
            Cardinal Mobile SDK.
        acs_transaction_id (str): Unique transaction identifier assigned by the ACS
            to identify a single transaction.
        acs_url (str): URL for the card-issuing bank’s authentication form that you
            receive when the card is enrolled. The value can be very large.
        authentication_path (str): Indicates what displays to the customer during the
            authentication process. This field can contain one of these values: -
            `ADS`: (Card not enrolled) customer prompted to activate the card during
            the checkout process. - `ATTEMPTS`: (Attempts processing) Processing
            briefly displays before the checkout process is completed. - `ENROLLED`:
            (Card enrolled) the card issuer’s authentication window displays. -
            `UNKNOWN`: Card enrollment status cannot be determined. - `NOREDIRECT`:
            (Card not enrolled, authentication unavailable, or error occurred)
            nothing displays to the customer.  The following values can be returned
            if you are using rules-based payer authentication. - `RIBA`: The
            card-issuing bank supports risk-based authentication, but whether the
            cardholder is likely to be challenged cannot be determined. -
            `RIBA_PASS`: The card-issuing bank supports risk-based authentication and
            it is likely that the cardholder will not be challenged to provide
            credentials, also known as _silent authentication_.
        authorization_payload (str): The Base64 encoded JSON Payload of CB specific
            Authorization Values returned in the challenge Flow
        authentication_transaction_id (str): Payer authentication transaction
            identifier is used to link the check enrollment and validate
            authentication messages. For Rupay, this field should be passed as
            request only for Resend OTP use case.
        cardholder_message (str): Text provided by the ACS/Issuer to Cardholder
            during a Frictionless or Decoupled transaction.The Issuer can provide
            information to Cardholder. For example, “Additional authentication is
            needed for this transaction, please contact (Issuer Name) at
            xxx-xxx-xxxx.”. The Issuing Bank can optionally support this value.
        cavv (str): Unique identifier generated by the card-issuing bank for Visa,
            American Express, JCB, Diners Club, and Discover transactions after the
            customer is authenticated. The value is in base64. When you request the
            card authorization service, Visa Acceptance automatically converts the
            value, not the field name, to the format required by your payment
            processor.
        cavv_algorithm (str): Field that is returned only when the CAVV is generated,
            which occurs when paresStatus contains the values Y (successful
            authentication) or A (attempted authentication). If you use the ATOS
            processor, send the value of this field in the `cavv_algorithm` request
            field of the authorization service. This field contains one of these
            values: - `2`: Visa, American Express, JCB, Diners Club, and Discover -
            `3`: Mastercard
        challenge_cancel_code (str): An indicator as to why the transaction was
            canceled. Possible Values:  - `01`: Cardholder selected Cancel. - `02`:
            Reserved for future EMVCo use (values invalid until defined by EMVCo). -
            `03`: Transaction Timed Out—Decoupled Authentication - `04`: Transaction
            timed out at ACS—other timeouts - `05`: Transaction Timed out at ACS -
            First CReq not received by ACS - `06`: Transaction Error - `07`: Unknown
            - `08`: Transaction Timed Out at SDK
        challenge_required (str): Indicates whether a challenge is required in order
            to complete authentication. **Note** Regional mandates might determine
            that a challenge is required.  Possible values: - `Y`: Challenge required
            - `N`: Challenge not required **Note**  Used by the Hybrid integration.
        decoupled_authentication_indicator (str): Indicates whether the 3DS Requestor
            requests the ACS to utilize Decoupled Authentication and agrees to
            utilize Decoupled Authentication if the ACS confirms its use.  Possible
            Values:  Y - Decoupled Authentication is supported and preferred if
            challenge is necessary  N - Do not use Decoupled Authentication
            **Default Value**: N
        directory_server_error_code (str): The directory server error code indicating
            a problem with this transaction. Note - Max Length of this field is
            typically 3 characters.
        directory_server_error_description (str): Directory server text and
            additional detail about the error for this transaction.
        ecommerce_indicator (str): Commerce indicator for cards not enrolled. This
            field contains one of these values: - `internet`: Card not enrolled, or
            card type not supported by payer authentication. No liability shift. -
            `js_attempted`: Card not enrolled, but attempt to authenticate is
            recorded. Liability shift. - `js_failure`: J/Secure directory service is
            not available. No liability shift. - `spa`: Mastercard card not enrolled
            in the SecureCode program. No liability shift. - `vbv_attempted`: Card
            not enrolled, but attempt to authenticate is recorded. Liability shift. -
            `vbv_failure`: For payment processor Barclays, Streamline, AIBMS, or FDC
            Germany, you receive this result if Visa’s directory service is not
            available. No liability shift.
        eci (str): Note This field applies only to non-U.S-issued cards.  For enroll,
            Numeric electronic commerce indicator (ECI) returned only for Visa,
            American Express, JCB, Diners Club, and Discover transactions when the
            card is not enrolled. For more information, see "Interpreting the Reply,"
            page 22.  If you are not using the Visa Acceptance payment services, you
            must send this value to your payment processor in the subsequent request
            for card authorization. This field contains one of these values: - `06`:
            The card can be enrolled. Liability shift. - `07`: The card cannot be
            enrolled. No liability shift.  For validate, Numeric electronic commerce
            indicator (ECI) returned only for Visa, American Express, JCB, Diners
            Club, and Discover transactions. The field is absent when authentication
            fails. You must send this value to your payment processor in the
            subsequent request for card authorization. This field contains one of
            these values: - `05`: Successful authentication - `06`: Authentication
            attempted - `07`: Failed authentication (No response from the merchant
            because of a problem.)
        eci_raw (str): ECI value that can be returned for Visa, Mastercard, American
            Express, JCB, Diners Club, and Discover. The field is absent when
            authentication fails. If your payment processor is Streamline, you must
            pass the value of this field instead of the value of `eci` or
            `ucafCollectionIndicator`.  This field can contain one of these values: -
            `01`: Authentication attempted (Mastercard) - `02`: Successful
            authentication (Mastercard) - `05`: Successful authentication (Visa,
            American Express, JCB, Diners Club, and Discover) - `06`: Authentication
            attempted (Visa, American Express, JCB, Diners Club, and Discover)
        effective_authentication_type (str): This field describes the type of 3DS
            transaction flow that took place.  It can be one of three possible flows;
            CH - Challenge FR - Frictionless FD - Frictionless with delegation,
            (challenge not generated by the issuer but by the scheme on behalf of the
            issuer).
        ivr (Ivr): The model property of type Ivr.
        strong_authentication (StrongAuthentication1): The model property of type
            StrongAuthentication1.
        network_score (str): The global score calculated by the CB scoring platform
            and returned to merchants.
        pareq (str): Payer authentication request (PAReq) message that you need to
            forward to the ACS. The value can be very large. The value is in base64.
        pares_status (str): Raw result of the authentication check. If you are
            configured for Asia, Middle East, and Africa Gateway Processing, you need
            to send the value of this field in your authorization request. This field
            can contain one of these values: - `A`: Proof of authentication attempt
            was generated. - `N`: Customer failed or canceled authentication.
            Transaction denied. - `U`: Authentication not completed regardless of the
            reason. - `Y`: Customer was successfully authenticated.
        proof_xml (str): Date and time of the enrollment check combined with the
            VEReq and VERes elements. If you ever need to show proof of enrollment
            checking, you may need to parse the string for the information required
            by the payment card company. The value can be very large.  For cards
            issued in the U.S. or Canada, Visa may require this data for specific
            merchant category codes.For cards not issued in the U.S. or Canada, your
            bank may require this data as proof of enrollment checking for any payer
            authentication transaction that you re-present because of a chargeback.
        proxy_pan (str): Encrypted version of the card number used in the payer
            authentication request message.
        sdk_transaction_id (str): SDK unique transaction identifier that is generated
            on each new transaction.
        signed_pares_status_reason (str): Provides additional information as to why
            the PAResStatus has a specific value.
        specification_version (str): This field contains the 3D Secure version that
            was used to process the transaction. For example: 2.2.0
        step_up_url (str): The fully qualified URL that the merchant uses to post a
            form to the cardholder in order to complete the Consumer Authentication
            transaction for the Cardinal Cruise API integration.
        three_ds_server_transaction_id (str): Unique transaction identifier assigned
            by the 3DS Server to identify a single transaction.
        ucaf_authentication_data (str): AAV is a unique identifier generated by the
            card-issuing bank for Mastercard Identity Check transactions after the
            customer is authenticated. The value is in base64. Include the data in
            the card authorization request.
        ucaf_collection_indicator (str): For enroll, Returned only for Mastercard
            transactions. Indicates that authentication is not required because the
            customer is not enrolled. Add the value of this field to the
            authorization field ucaf_collection_indicator. This field can contain
            these values: 0, 1.  For validate, Numeric electronic commerce indicator
            (ECI) returned only for Mastercard Identity Check transactions. The field
            is absent when authentication fails. You must send this value to your
            payment processor in the request for card authorization. This field
            contain one of these values: - `0`: Authentication data not collected,
            and customer authentication was not completed. - `1`: Authentication data
            not collected because customer authentication was not completed. - `2`:
            Authentication data collected because customer completed authentication.
        veres_enrolled (str): Result of the enrollment check. This field can contain
            one of these values: - `Y`: Card enrolled or can be enrolled; you must
            authenticate. Liability shift. - `N`: Card not enrolled; proceed with
            authorization. Liability shift. - `U`: Unable to authenticate regardless
            of the reason. No liability shift.  **Note** This field only applies to
            the Asia, Middle East, and Africa Gateway. If you are configured for this
            processor, you must send the value of this field in your authorization
            request.  The following value can be returned if you are using
            rules-based Payer Authentication: - `B`: Indicates that authentication
            was bypassed.
        white_list_status_source (str): This data element will be populated by the
            system setting Whitelist Status. Possible Values: 01 - 3DS/ Server/ 02 –
            DS/03 - ACS
        xid (str): Transaction identifier generated by Visa Acceptance for successful
            enrollment or validation checks. Use this value, which is in base64, to
            match an outgoing PAReq with an incoming PARes. Visa Acceptance forwards
            the XID with the card authorization service to these payment processors
            in these cases: - Barclays - Streamline (when the
            **ecommerceIndicator**`=spa`)
        directory_server_transaction_id (str): The Directory Server Transaction ID is
            generated by the Mastercard Directory Server during the authentication
            transaction and passed back to the merchant with the authentication
            results. For Visa Acceptance Through Visanet Gateway: The value for this
            field corresponds to the following data in the TC 33 capture file3:
            Record: CP01 TCR7, Position: 114-149, Field: MC AVV
            Verification—Directory Server Transaction ID
        data_quality_indicator (str): The field is used to indicate that a
            transaction does not meet the Visa Secure authentication data quality
            requirements.
        authentication_result (str): Raw authentication data that comes from the
            cardissuing bank. Primary authentication field that indicates if
            authentication was successful and if liability shift occurred. You should
            examine first the result of this field. This field contains one of these
            values: - `-1`: Invalid PARes. - `0`: Successful validation. - `1`:
            Cardholder is not participating, but the attempt to authenticate was
            recorded. - `6`: Issuer unable to perform authentication. - `9`:
            Cardholder did not complete authentication.
        authentication_status_msg (str): Message that explains the
            authenticationResult reply field.
        indicator (str): Indicator used to differentiate Internet transactions from
            other types. The authentication failed if this field is not returned. For
            Visa, if your payment processor is Streamline, Barclays, AIBMS, or FDC
            Germany, you receive the value vbv_failure instead of internet when eci
            is 07. The value of this field is passed automatically to the
            authorization service if you request the services together. This field
            contains one of these values: - `aesk`: American Express SafeKey
            authentication verified successfully. - `aesk_attempted`: Card not
            enrolled in American Express SafeKey, but the attempt to authenticate was
            recorded. - `dipb`: Discover ProtectBuy authentication verified
            successfully. - `dipb_attempted`: Card not enrolled in Discover
            ProtectBuy, but the attempt to authenticate was recorded. - `internet`:
            Authentication was not verified successfully. - `js`: J/Secure
            authentication verified successfully. - `js_attempted`: Card not enrolled
            in J/Secure, but the attempt to authenticate was recorded. - `moto`: Mail
            or telephone order. - `pb_attempted`: Card not enrolled in Diners Club
            ProtectBuy, but the attempt to authenticate was recorded. - `recurring`:
            Recurring transaction. - `spa`: Mastercard Identity Check authentication
            verified successfully. - `spa_failure`: Mastercard Identity Check failed
            authentication. - `vbv`: Visa Secure authentication verified
            successfully. - `vbv_attempted`: Card not enrolled in Visa Secure, but
            the attempt to authenticate was recorded. - `vbv_failure`: Visa Secure
            authentication unavailable.
        interaction_counter (str): Indicates the number of authentication cycles
            attempted by the cardholder and is tracked by the Issuing Banks
            ACS.Example: if customer gets the challenge window and enter in their one
            time password and hit submit then that interaction counter should just be
            1. When customer gets the challenge window and the bank asks if they want
            to have the one time password  sent to their phone or their email and
            they have to choose before going to the next screen to enter in their one
            time password then this interaction count would be 2. One for the
            selection of how they want the one time password delivered and another
            with them actually entering in the one time password and hitting the
            submit button.
        white_list_status (str): Enables the communication of trusted
            beneficiary/whitelist status between the ACS, the DS and the 3DS
            Requestor.  Possible Values:  Y - 3DS Requestor is whitelisted by
            cardholder  N - 3DS Requestor is not whitelisted by cardholder
        additional_properties (Dict[str, Any]): The additional properties for the
            model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "access_token": "accessToken",
        "acs_rendering_type": "acsRenderingType",
        "acs_transaction_id": "acsTransactionId",
        "acs_url": "acsUrl",
        "authentication_path": "authenticationPath",
        "authorization_payload": "authorizationPayload",
        "authentication_transaction_id": "authenticationTransactionId",
        "cardholder_message": "cardholderMessage",
        "cavv": "cavv",
        "cavv_algorithm": "cavvAlgorithm",
        "challenge_cancel_code": "challengeCancelCode",
        "challenge_required": "challengeRequired",
        "decoupled_authentication_indicator": "decoupledAuthenticationIndicator",
        "directory_server_error_code": "directoryServerErrorCode",
        "directory_server_error_description": "directoryServerErrorDescription",
        "ecommerce_indicator": "ecommerceIndicator",
        "eci": "eci",
        "eci_raw": "eciRaw",
        "effective_authentication_type": "effectiveAuthenticationType",
        "ivr": "ivr",
        "strong_authentication": "strongAuthentication",
        "network_score": "networkScore",
        "pareq": "pareq",
        "pares_status": "paresStatus",
        "proof_xml": "proofXml",
        "proxy_pan": "proxyPan",
        "sdk_transaction_id": "sdkTransactionId",
        "signed_pares_status_reason": "signedParesStatusReason",
        "specification_version": "specificationVersion",
        "step_up_url": "stepUpUrl",
        "three_ds_server_transaction_id": "threeDSServerTransactionId",
        "ucaf_authentication_data": "ucafAuthenticationData",
        "ucaf_collection_indicator": "ucafCollectionIndicator",
        "veres_enrolled": "veresEnrolled",
        "white_list_status_source": "whiteListStatusSource",
        "xid": "xid",
        "directory_server_transaction_id": "directoryServerTransactionId",
        "data_quality_indicator": "dataQualityIndicator",
        "authentication_result": "authenticationResult",
        "authentication_status_msg": "authenticationStatusMsg",
        "indicator": "indicator",
        "interaction_counter": "interactionCounter",
        "white_list_status": "whiteListStatus",
    }

    _optionals = [
        "access_token",
        "acs_rendering_type",
        "acs_transaction_id",
        "acs_url",
        "authentication_path",
        "authorization_payload",
        "authentication_transaction_id",
        "cardholder_message",
        "cavv",
        "cavv_algorithm",
        "challenge_cancel_code",
        "challenge_required",
        "decoupled_authentication_indicator",
        "directory_server_error_code",
        "directory_server_error_description",
        "ecommerce_indicator",
        "eci",
        "eci_raw",
        "effective_authentication_type",
        "ivr",
        "strong_authentication",
        "network_score",
        "pareq",
        "pares_status",
        "proof_xml",
        "proxy_pan",
        "sdk_transaction_id",
        "signed_pares_status_reason",
        "specification_version",
        "step_up_url",
        "three_ds_server_transaction_id",
        "ucaf_authentication_data",
        "ucaf_collection_indicator",
        "veres_enrolled",
        "white_list_status_source",
        "xid",
        "directory_server_transaction_id",
        "data_quality_indicator",
        "authentication_result",
        "authentication_status_msg",
        "indicator",
        "interaction_counter",
        "white_list_status",
    ]

    def __init__(
        self,
        access_token=APIHelper.SKIP,
        acs_rendering_type=APIHelper.SKIP,
        acs_transaction_id=APIHelper.SKIP,
        acs_url=APIHelper.SKIP,
        authentication_path=APIHelper.SKIP,
        authorization_payload=APIHelper.SKIP,
        authentication_transaction_id=APIHelper.SKIP,
        cardholder_message=APIHelper.SKIP,
        cavv=APIHelper.SKIP,
        cavv_algorithm=APIHelper.SKIP,
        challenge_cancel_code=APIHelper.SKIP,
        challenge_required=APIHelper.SKIP,
        decoupled_authentication_indicator=APIHelper.SKIP,
        directory_server_error_code=APIHelper.SKIP,
        directory_server_error_description=APIHelper.SKIP,
        ecommerce_indicator=APIHelper.SKIP,
        eci=APIHelper.SKIP,
        eci_raw=APIHelper.SKIP,
        effective_authentication_type=APIHelper.SKIP,
        ivr=APIHelper.SKIP,
        strong_authentication=APIHelper.SKIP,
        network_score=APIHelper.SKIP,
        pareq=APIHelper.SKIP,
        pares_status=APIHelper.SKIP,
        proof_xml=APIHelper.SKIP,
        proxy_pan=APIHelper.SKIP,
        sdk_transaction_id=APIHelper.SKIP,
        signed_pares_status_reason=APIHelper.SKIP,
        specification_version=APIHelper.SKIP,
        step_up_url=APIHelper.SKIP,
        three_ds_server_transaction_id=APIHelper.SKIP,
        ucaf_authentication_data=APIHelper.SKIP,
        ucaf_collection_indicator=APIHelper.SKIP,
        veres_enrolled=APIHelper.SKIP,
        white_list_status_source=APIHelper.SKIP,
        xid=APIHelper.SKIP,
        directory_server_transaction_id=APIHelper.SKIP,
        data_quality_indicator=APIHelper.SKIP,
        authentication_result=APIHelper.SKIP,
        authentication_status_msg=APIHelper.SKIP,
        indicator=APIHelper.SKIP,
        interaction_counter=APIHelper.SKIP,
        white_list_status=APIHelper.SKIP,
        additional_properties=None):
        """Initialize a ConsumerAuthenticationInformation1 instance."""
        # Initialize members of the class
        if access_token is not APIHelper.SKIP:
            self.access_token = access_token
        if acs_rendering_type is not APIHelper.SKIP:
            self.acs_rendering_type = acs_rendering_type
        if acs_transaction_id is not APIHelper.SKIP:
            self.acs_transaction_id = acs_transaction_id
        if acs_url is not APIHelper.SKIP:
            self.acs_url = acs_url
        if authentication_path is not APIHelper.SKIP:
            self.authentication_path = authentication_path
        if authorization_payload is not APIHelper.SKIP:
            self.authorization_payload = authorization_payload
        if authentication_transaction_id is not APIHelper.SKIP:
            self.authentication_transaction_id = authentication_transaction_id
        if cardholder_message is not APIHelper.SKIP:
            self.cardholder_message = cardholder_message
        if cavv is not APIHelper.SKIP:
            self.cavv = cavv
        if cavv_algorithm is not APIHelper.SKIP:
            self.cavv_algorithm = cavv_algorithm
        if challenge_cancel_code is not APIHelper.SKIP:
            self.challenge_cancel_code = challenge_cancel_code
        if challenge_required is not APIHelper.SKIP:
            self.challenge_required = challenge_required
        if decoupled_authentication_indicator is not APIHelper.SKIP:
            self.decoupled_authentication_indicator =\
                 decoupled_authentication_indicator
        if directory_server_error_code is not APIHelper.SKIP:
            self.directory_server_error_code = directory_server_error_code
        if directory_server_error_description is not APIHelper.SKIP:
            self.directory_server_error_description =\
                 directory_server_error_description
        if ecommerce_indicator is not APIHelper.SKIP:
            self.ecommerce_indicator = ecommerce_indicator
        if eci is not APIHelper.SKIP:
            self.eci = eci
        if eci_raw is not APIHelper.SKIP:
            self.eci_raw = eci_raw
        if effective_authentication_type is not APIHelper.SKIP:
            self.effective_authentication_type = effective_authentication_type
        if ivr is not APIHelper.SKIP:
            self.ivr = ivr
        if strong_authentication is not APIHelper.SKIP:
            self.strong_authentication = strong_authentication
        if network_score is not APIHelper.SKIP:
            self.network_score = network_score
        if pareq is not APIHelper.SKIP:
            self.pareq = pareq
        if pares_status is not APIHelper.SKIP:
            self.pares_status = pares_status
        if proof_xml is not APIHelper.SKIP:
            self.proof_xml = proof_xml
        if proxy_pan is not APIHelper.SKIP:
            self.proxy_pan = proxy_pan
        if sdk_transaction_id is not APIHelper.SKIP:
            self.sdk_transaction_id = sdk_transaction_id
        if signed_pares_status_reason is not APIHelper.SKIP:
            self.signed_pares_status_reason = signed_pares_status_reason
        if specification_version is not APIHelper.SKIP:
            self.specification_version = specification_version
        if step_up_url is not APIHelper.SKIP:
            self.step_up_url = step_up_url
        if three_ds_server_transaction_id is not APIHelper.SKIP:
            self.three_ds_server_transaction_id = three_ds_server_transaction_id
        if ucaf_authentication_data is not APIHelper.SKIP:
            self.ucaf_authentication_data = ucaf_authentication_data
        if ucaf_collection_indicator is not APIHelper.SKIP:
            self.ucaf_collection_indicator = ucaf_collection_indicator
        if veres_enrolled is not APIHelper.SKIP:
            self.veres_enrolled = veres_enrolled
        if white_list_status_source is not APIHelper.SKIP:
            self.white_list_status_source = white_list_status_source
        if xid is not APIHelper.SKIP:
            self.xid = xid
        if directory_server_transaction_id is not APIHelper.SKIP:
            self.directory_server_transaction_id = directory_server_transaction_id
        if data_quality_indicator is not APIHelper.SKIP:
            self.data_quality_indicator = data_quality_indicator
        if authentication_result is not APIHelper.SKIP:
            self.authentication_result = authentication_result
        if authentication_status_msg is not APIHelper.SKIP:
            self.authentication_status_msg = authentication_status_msg
        if indicator is not APIHelper.SKIP:
            self.indicator = indicator
        if interaction_counter is not APIHelper.SKIP:
            self.interaction_counter = interaction_counter
        if white_list_status is not APIHelper.SKIP:
            self.white_list_status = white_list_status

        # 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
        access_token =\
            dictionary.get("accessToken")\
            if dictionary.get("accessToken")\
                else APIHelper.SKIP
        acs_rendering_type =\
            dictionary.get("acsRenderingType")\
            if dictionary.get("acsRenderingType")\
                else APIHelper.SKIP
        acs_transaction_id =\
            dictionary.get("acsTransactionId")\
            if dictionary.get("acsTransactionId")\
                else APIHelper.SKIP
        acs_url =\
            dictionary.get("acsUrl")\
            if dictionary.get("acsUrl")\
                else APIHelper.SKIP
        authentication_path =\
            dictionary.get("authenticationPath")\
            if dictionary.get("authenticationPath")\
                else APIHelper.SKIP
        authorization_payload =\
            dictionary.get("authorizationPayload")\
            if dictionary.get("authorizationPayload")\
                else APIHelper.SKIP
        authentication_transaction_id =\
            dictionary.get("authenticationTransactionId")\
            if dictionary.get("authenticationTransactionId")\
                else APIHelper.SKIP
        cardholder_message =\
            dictionary.get("cardholderMessage")\
            if dictionary.get("cardholderMessage")\
                else APIHelper.SKIP
        cavv =\
            dictionary.get("cavv")\
            if dictionary.get("cavv")\
                else APIHelper.SKIP
        cavv_algorithm =\
            dictionary.get("cavvAlgorithm")\
            if dictionary.get("cavvAlgorithm")\
                else APIHelper.SKIP
        challenge_cancel_code =\
            dictionary.get("challengeCancelCode")\
            if dictionary.get("challengeCancelCode")\
                else APIHelper.SKIP
        challenge_required =\
            dictionary.get("challengeRequired")\
            if dictionary.get("challengeRequired")\
                else APIHelper.SKIP
        decoupled_authentication_indicator =\
            dictionary.get("decoupledAuthenticationIndicator")\
            if dictionary.get("decoupledAuthenticationIndicator")\
                else APIHelper.SKIP
        directory_server_error_code =\
            dictionary.get("directoryServerErrorCode")\
            if dictionary.get("directoryServerErrorCode")\
                else APIHelper.SKIP
        directory_server_error_description =\
            dictionary.get("directoryServerErrorDescription")\
            if dictionary.get("directoryServerErrorDescription")\
                else APIHelper.SKIP
        ecommerce_indicator =\
            dictionary.get("ecommerceIndicator")\
            if dictionary.get("ecommerceIndicator")\
                else APIHelper.SKIP
        eci =\
            dictionary.get("eci")\
            if dictionary.get("eci")\
                else APIHelper.SKIP
        eci_raw =\
            dictionary.get("eciRaw")\
            if dictionary.get("eciRaw")\
                else APIHelper.SKIP
        effective_authentication_type =\
            dictionary.get("effectiveAuthenticationType")\
            if dictionary.get("effectiveAuthenticationType")\
                else APIHelper.SKIP
        ivr =\
            Ivr.from_dictionary(
                dictionary.get("ivr"))\
                if "ivr" in dictionary.keys()\
                else APIHelper.SKIP
        strong_authentication =\
            StrongAuthentication1.from_dictionary(
                dictionary.get("strongAuthentication"))\
                if "strongAuthentication" in dictionary.keys()\
                else APIHelper.SKIP
        network_score =\
            dictionary.get("networkScore")\
            if dictionary.get("networkScore")\
                else APIHelper.SKIP
        pareq =\
            dictionary.get("pareq")\
            if dictionary.get("pareq")\
                else APIHelper.SKIP
        pares_status =\
            dictionary.get("paresStatus")\
            if dictionary.get("paresStatus")\
                else APIHelper.SKIP
        proof_xml =\
            dictionary.get("proofXml")\
            if dictionary.get("proofXml")\
                else APIHelper.SKIP
        proxy_pan =\
            dictionary.get("proxyPan")\
            if dictionary.get("proxyPan")\
                else APIHelper.SKIP
        sdk_transaction_id =\
            dictionary.get("sdkTransactionId")\
            if dictionary.get("sdkTransactionId")\
                else APIHelper.SKIP
        signed_pares_status_reason =\
            dictionary.get("signedParesStatusReason")\
            if dictionary.get("signedParesStatusReason")\
                else APIHelper.SKIP
        specification_version =\
            dictionary.get("specificationVersion")\
            if dictionary.get("specificationVersion")\
                else APIHelper.SKIP
        step_up_url =\
            dictionary.get("stepUpUrl")\
            if dictionary.get("stepUpUrl")\
                else APIHelper.SKIP
        three_ds_server_transaction_id =\
            dictionary.get("threeDSServerTransactionId")\
            if dictionary.get("threeDSServerTransactionId")\
                else APIHelper.SKIP
        ucaf_authentication_data =\
            dictionary.get("ucafAuthenticationData")\
            if dictionary.get("ucafAuthenticationData")\
                else APIHelper.SKIP
        ucaf_collection_indicator =\
            dictionary.get("ucafCollectionIndicator")\
            if dictionary.get("ucafCollectionIndicator")\
                else APIHelper.SKIP
        veres_enrolled =\
            dictionary.get("veresEnrolled")\
            if dictionary.get("veresEnrolled")\
                else APIHelper.SKIP
        white_list_status_source =\
            dictionary.get("whiteListStatusSource")\
            if dictionary.get("whiteListStatusSource")\
                else APIHelper.SKIP
        xid =\
            dictionary.get("xid")\
            if dictionary.get("xid")\
                else APIHelper.SKIP
        directory_server_transaction_id =\
            dictionary.get("directoryServerTransactionId")\
            if dictionary.get("directoryServerTransactionId")\
                else APIHelper.SKIP
        data_quality_indicator =\
            dictionary.get("dataQualityIndicator")\
            if dictionary.get("dataQualityIndicator")\
                else APIHelper.SKIP
        authentication_result =\
            dictionary.get("authenticationResult")\
            if dictionary.get("authenticationResult")\
                else APIHelper.SKIP
        authentication_status_msg =\
            dictionary.get("authenticationStatusMsg")\
            if dictionary.get("authenticationStatusMsg")\
                else APIHelper.SKIP
        indicator =\
            dictionary.get("indicator")\
            if dictionary.get("indicator")\
                else APIHelper.SKIP
        interaction_counter =\
            dictionary.get("interactionCounter")\
            if dictionary.get("interactionCounter")\
                else APIHelper.SKIP
        white_list_status =\
            dictionary.get("whiteListStatus")\
            if dictionary.get("whiteListStatus")\
                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(access_token,
                   acs_rendering_type,
                   acs_transaction_id,
                   acs_url,
                   authentication_path,
                   authorization_payload,
                   authentication_transaction_id,
                   cardholder_message,
                   cavv,
                   cavv_algorithm,
                   challenge_cancel_code,
                   challenge_required,
                   decoupled_authentication_indicator,
                   directory_server_error_code,
                   directory_server_error_description,
                   ecommerce_indicator,
                   eci,
                   eci_raw,
                   effective_authentication_type,
                   ivr,
                   strong_authentication,
                   network_score,
                   pareq,
                   pares_status,
                   proof_xml,
                   proxy_pan,
                   sdk_transaction_id,
                   signed_pares_status_reason,
                   specification_version,
                   step_up_url,
                   three_ds_server_transaction_id,
                   ucaf_authentication_data,
                   ucaf_collection_indicator,
                   veres_enrolled,
                   white_list_status_source,
                   xid,
                   directory_server_transaction_id,
                   data_quality_indicator,
                   authentication_result,
                   authentication_status_msg,
                   indicator,
                   interaction_counter,
                   white_list_status,
                   additional_properties)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _access_token=(
            self.access_token
            if hasattr(self, "access_token")
            else None
        )
        _acs_rendering_type=(
            self.acs_rendering_type
            if hasattr(self, "acs_rendering_type")
            else None
        )
        _acs_transaction_id=(
            self.acs_transaction_id
            if hasattr(self, "acs_transaction_id")
            else None
        )
        _acs_url=(
            self.acs_url
            if hasattr(self, "acs_url")
            else None
        )
        _authentication_path=(
            self.authentication_path
            if hasattr(self, "authentication_path")
            else None
        )
        _authorization_payload=(
            self.authorization_payload
            if hasattr(self, "authorization_payload")
            else None
        )
        _authentication_transaction_id=(
            self.authentication_transaction_id
            if hasattr(self, "authentication_transaction_id")
            else None
        )
        _cardholder_message=(
            self.cardholder_message
            if hasattr(self, "cardholder_message")
            else None
        )
        _cavv=(
            self.cavv
            if hasattr(self, "cavv")
            else None
        )
        _cavv_algorithm=(
            self.cavv_algorithm
            if hasattr(self, "cavv_algorithm")
            else None
        )
        _challenge_cancel_code=(
            self.challenge_cancel_code
            if hasattr(self, "challenge_cancel_code")
            else None
        )
        _challenge_required=(
            self.challenge_required
            if hasattr(self, "challenge_required")
            else None
        )
        _decoupled_authentication_indicator=(
            self.decoupled_authentication_indicator
            if hasattr(self, "decoupled_authentication_indicator")
            else None
        )
        _directory_server_error_code=(
            self.directory_server_error_code
            if hasattr(self, "directory_server_error_code")
            else None
        )
        _directory_server_error_description=(
            self.directory_server_error_description
            if hasattr(self, "directory_server_error_description")
            else None
        )
        _ecommerce_indicator=(
            self.ecommerce_indicator
            if hasattr(self, "ecommerce_indicator")
            else None
        )
        _eci=(
            self.eci
            if hasattr(self, "eci")
            else None
        )
        _eci_raw=(
            self.eci_raw
            if hasattr(self, "eci_raw")
            else None
        )
        _effective_authentication_type=(
            self.effective_authentication_type
            if hasattr(self, "effective_authentication_type")
            else None
        )
        _ivr=(
            self.ivr
            if hasattr(self, "ivr")
            else None
        )
        _strong_authentication=(
            self.strong_authentication
            if hasattr(self, "strong_authentication")
            else None
        )
        _network_score=(
            self.network_score
            if hasattr(self, "network_score")
            else None
        )
        _pareq=(
            self.pareq
            if hasattr(self, "pareq")
            else None
        )
        _pares_status=(
            self.pares_status
            if hasattr(self, "pares_status")
            else None
        )
        _proof_xml=(
            self.proof_xml
            if hasattr(self, "proof_xml")
            else None
        )
        _proxy_pan=(
            self.proxy_pan
            if hasattr(self, "proxy_pan")
            else None
        )
        _sdk_transaction_id=(
            self.sdk_transaction_id
            if hasattr(self, "sdk_transaction_id")
            else None
        )
        _signed_pares_status_reason=(
            self.signed_pares_status_reason
            if hasattr(self, "signed_pares_status_reason")
            else None
        )
        _specification_version=(
            self.specification_version
            if hasattr(self, "specification_version")
            else None
        )
        _step_up_url=(
            self.step_up_url
            if hasattr(self, "step_up_url")
            else None
        )
        _three_ds_server_transaction_id=(
            self.three_ds_server_transaction_id
            if hasattr(self, "three_ds_server_transaction_id")
            else None
        )
        _ucaf_authentication_data=(
            self.ucaf_authentication_data
            if hasattr(self, "ucaf_authentication_data")
            else None
        )
        _ucaf_collection_indicator=(
            self.ucaf_collection_indicator
            if hasattr(self, "ucaf_collection_indicator")
            else None
        )
        _veres_enrolled=(
            self.veres_enrolled
            if hasattr(self, "veres_enrolled")
            else None
        )
        _white_list_status_source=(
            self.white_list_status_source
            if hasattr(self, "white_list_status_source")
            else None
        )
        _xid=(
            self.xid
            if hasattr(self, "xid")
            else None
        )
        _directory_server_transaction_id=(
            self.directory_server_transaction_id
            if hasattr(self, "directory_server_transaction_id")
            else None
        )
        _data_quality_indicator=(
            self.data_quality_indicator
            if hasattr(self, "data_quality_indicator")
            else None
        )
        _authentication_result=(
            self.authentication_result
            if hasattr(self, "authentication_result")
            else None
        )
        _authentication_status_msg=(
            self.authentication_status_msg
            if hasattr(self, "authentication_status_msg")
            else None
        )
        _indicator=(
            self.indicator
            if hasattr(self, "indicator")
            else None
        )
        _interaction_counter=(
            self.interaction_counter
            if hasattr(self, "interaction_counter")
            else None
        )
        _white_list_status=(
            self.white_list_status
            if hasattr(self, "white_list_status")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"access_token={_access_token!r}, "
            f"acs_rendering_type={_acs_rendering_type!r}, "
            f"acs_transaction_id={_acs_transaction_id!r}, "
            f"acs_url={_acs_url!r}, "
            f"authentication_path={_authentication_path!r}, "
            f"authorization_payload={_authorization_payload!r}, "
            f"authentication_transaction_id={_authentication_transaction_id!r}, "
            f"cardholder_message={_cardholder_message!r}, "
            f"cavv={_cavv!r}, "
            f"cavv_algorithm={_cavv_algorithm!r}, "
            f"challenge_cancel_code={_challenge_cancel_code!r}, "
            f"challenge_required={_challenge_required!r}, "
            f"decoupled_authentication_indicator={_decoupled_authentication_indicator!r}, "
            f"directory_server_error_code={_directory_server_error_code!r}, "
            f"directory_server_error_description={_directory_server_error_description!r}, "
            f"ecommerce_indicator={_ecommerce_indicator!r}, "
            f"eci={_eci!r}, "
            f"eci_raw={_eci_raw!r}, "
            f"effective_authentication_type={_effective_authentication_type!r}, "
            f"ivr={_ivr!r}, "
            f"strong_authentication={_strong_authentication!r}, "
            f"network_score={_network_score!r}, "
            f"pareq={_pareq!r}, "
            f"pares_status={_pares_status!r}, "
            f"proof_xml={_proof_xml!r}, "
            f"proxy_pan={_proxy_pan!r}, "
            f"sdk_transaction_id={_sdk_transaction_id!r}, "
            f"signed_pares_status_reason={_signed_pares_status_reason!r}, "
            f"specification_version={_specification_version!r}, "
            f"step_up_url={_step_up_url!r}, "
            f"three_ds_server_transaction_id={_three_ds_server_transaction_id!r}, "
            f"ucaf_authentication_data={_ucaf_authentication_data!r}, "
            f"ucaf_collection_indicator={_ucaf_collection_indicator!r}, "
            f"veres_enrolled={_veres_enrolled!r}, "
            f"white_list_status_source={_white_list_status_source!r}, "
            f"xid={_xid!r}, "
            f"directory_server_transaction_id={_directory_server_transaction_id!r}, "
            f"data_quality_indicator={_data_quality_indicator!r}, "
            f"authentication_result={_authentication_result!r}, "
            f"authentication_status_msg={_authentication_status_msg!r}, "
            f"indicator={_indicator!r}, "
            f"interaction_counter={_interaction_counter!r}, "
            f"white_list_status={_white_list_status!r}, "
            f"additional_properties={_additional_properties!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _access_token=(
            self.access_token
            if hasattr(self, "access_token")
            else None
        )
        _acs_rendering_type=(
            self.acs_rendering_type
            if hasattr(self, "acs_rendering_type")
            else None
        )
        _acs_transaction_id=(
            self.acs_transaction_id
            if hasattr(self, "acs_transaction_id")
            else None
        )
        _acs_url=(
            self.acs_url
            if hasattr(self, "acs_url")
            else None
        )
        _authentication_path=(
            self.authentication_path
            if hasattr(self, "authentication_path")
            else None
        )
        _authorization_payload=(
            self.authorization_payload
            if hasattr(self, "authorization_payload")
            else None
        )
        _authentication_transaction_id=(
            self.authentication_transaction_id
            if hasattr(self, "authentication_transaction_id")
            else None
        )
        _cardholder_message=(
            self.cardholder_message
            if hasattr(self, "cardholder_message")
            else None
        )
        _cavv=(
            self.cavv
            if hasattr(self, "cavv")
            else None
        )
        _cavv_algorithm=(
            self.cavv_algorithm
            if hasattr(self, "cavv_algorithm")
            else None
        )
        _challenge_cancel_code=(
            self.challenge_cancel_code
            if hasattr(self, "challenge_cancel_code")
            else None
        )
        _challenge_required=(
            self.challenge_required
            if hasattr(self, "challenge_required")
            else None
        )
        _decoupled_authentication_indicator=(
            self.decoupled_authentication_indicator
            if hasattr(self, "decoupled_authentication_indicator")
            else None
        )
        _directory_server_error_code=(
            self.directory_server_error_code
            if hasattr(self, "directory_server_error_code")
            else None
        )
        _directory_server_error_description=(
            self.directory_server_error_description
            if hasattr(self, "directory_server_error_description")
            else None
        )
        _ecommerce_indicator=(
            self.ecommerce_indicator
            if hasattr(self, "ecommerce_indicator")
            else None
        )
        _eci=(
            self.eci
            if hasattr(self, "eci")
            else None
        )
        _eci_raw=(
            self.eci_raw
            if hasattr(self, "eci_raw")
            else None
        )
        _effective_authentication_type=(
            self.effective_authentication_type
            if hasattr(self, "effective_authentication_type")
            else None
        )
        _ivr=(
            self.ivr
            if hasattr(self, "ivr")
            else None
        )
        _strong_authentication=(
            self.strong_authentication
            if hasattr(self, "strong_authentication")
            else None
        )
        _network_score=(
            self.network_score
            if hasattr(self, "network_score")
            else None
        )
        _pareq=(
            self.pareq
            if hasattr(self, "pareq")
            else None
        )
        _pares_status=(
            self.pares_status
            if hasattr(self, "pares_status")
            else None
        )
        _proof_xml=(
            self.proof_xml
            if hasattr(self, "proof_xml")
            else None
        )
        _proxy_pan=(
            self.proxy_pan
            if hasattr(self, "proxy_pan")
            else None
        )
        _sdk_transaction_id=(
            self.sdk_transaction_id
            if hasattr(self, "sdk_transaction_id")
            else None
        )
        _signed_pares_status_reason=(
            self.signed_pares_status_reason
            if hasattr(self, "signed_pares_status_reason")
            else None
        )
        _specification_version=(
            self.specification_version
            if hasattr(self, "specification_version")
            else None
        )
        _step_up_url=(
            self.step_up_url
            if hasattr(self, "step_up_url")
            else None
        )
        _three_ds_server_transaction_id=(
            self.three_ds_server_transaction_id
            if hasattr(self, "three_ds_server_transaction_id")
            else None
        )
        _ucaf_authentication_data=(
            self.ucaf_authentication_data
            if hasattr(self, "ucaf_authentication_data")
            else None
        )
        _ucaf_collection_indicator=(
            self.ucaf_collection_indicator
            if hasattr(self, "ucaf_collection_indicator")
            else None
        )
        _veres_enrolled=(
            self.veres_enrolled
            if hasattr(self, "veres_enrolled")
            else None
        )
        _white_list_status_source=(
            self.white_list_status_source
            if hasattr(self, "white_list_status_source")
            else None
        )
        _xid=(
            self.xid
            if hasattr(self, "xid")
            else None
        )
        _directory_server_transaction_id=(
            self.directory_server_transaction_id
            if hasattr(self, "directory_server_transaction_id")
            else None
        )
        _data_quality_indicator=(
            self.data_quality_indicator
            if hasattr(self, "data_quality_indicator")
            else None
        )
        _authentication_result=(
            self.authentication_result
            if hasattr(self, "authentication_result")
            else None
        )
        _authentication_status_msg=(
            self.authentication_status_msg
            if hasattr(self, "authentication_status_msg")
            else None
        )
        _indicator=(
            self.indicator
            if hasattr(self, "indicator")
            else None
        )
        _interaction_counter=(
            self.interaction_counter
            if hasattr(self, "interaction_counter")
            else None
        )
        _white_list_status=(
            self.white_list_status
            if hasattr(self, "white_list_status")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"access_token={_access_token!s}, "
            f"acs_rendering_type={_acs_rendering_type!s}, "
            f"acs_transaction_id={_acs_transaction_id!s}, "
            f"acs_url={_acs_url!s}, "
            f"authentication_path={_authentication_path!s}, "
            f"authorization_payload={_authorization_payload!s}, "
            f"authentication_transaction_id={_authentication_transaction_id!s}, "
            f"cardholder_message={_cardholder_message!s}, "
            f"cavv={_cavv!s}, "
            f"cavv_algorithm={_cavv_algorithm!s}, "
            f"challenge_cancel_code={_challenge_cancel_code!s}, "
            f"challenge_required={_challenge_required!s}, "
            f"decoupled_authentication_indicator={_decoupled_authentication_indicator!s}, "
            f"directory_server_error_code={_directory_server_error_code!s}, "
            f"directory_server_error_description={_directory_server_error_description!s}, "
            f"ecommerce_indicator={_ecommerce_indicator!s}, "
            f"eci={_eci!s}, "
            f"eci_raw={_eci_raw!s}, "
            f"effective_authentication_type={_effective_authentication_type!s}, "
            f"ivr={_ivr!s}, "
            f"strong_authentication={_strong_authentication!s}, "
            f"network_score={_network_score!s}, "
            f"pareq={_pareq!s}, "
            f"pares_status={_pares_status!s}, "
            f"proof_xml={_proof_xml!s}, "
            f"proxy_pan={_proxy_pan!s}, "
            f"sdk_transaction_id={_sdk_transaction_id!s}, "
            f"signed_pares_status_reason={_signed_pares_status_reason!s}, "
            f"specification_version={_specification_version!s}, "
            f"step_up_url={_step_up_url!s}, "
            f"three_ds_server_transaction_id={_three_ds_server_transaction_id!s}, "
            f"ucaf_authentication_data={_ucaf_authentication_data!s}, "
            f"ucaf_collection_indicator={_ucaf_collection_indicator!s}, "
            f"veres_enrolled={_veres_enrolled!s}, "
            f"white_list_status_source={_white_list_status_source!s}, "
            f"xid={_xid!s}, "
            f"directory_server_transaction_id={_directory_server_transaction_id!s}, "
            f"data_quality_indicator={_data_quality_indicator!s}, "
            f"authentication_result={_authentication_result!s}, "
            f"authentication_status_msg={_authentication_status_msg!s}, "
            f"indicator={_indicator!s}, "
            f"interaction_counter={_interaction_counter!s}, "
            f"white_list_status={_white_list_status!s}, "
            f"additional_properties={_additional_properties!s}, "
            f")"
        )
