diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8358f5fe2..285be38ef 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.448.0" + ".": "0.449.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 165ec440d..71f54a569 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 232 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-985e738d362cc4d7dce557163d9e57b9a3a254718d862bdeb2758b6c265584b9.yml -openapi_spec_hash: aa0b0b7eb6ca282b6e607dcc0408fafe +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-8bcd1f04377ee8ae354a1cb3b1c214232c8b448a93c98502ea92b696bf0757bf.yml +openapi_spec_hash: c338b176720c2dc69dd3f7db351ea8a5 config_hash: d15ecbf4dc8a7a0ef99397d11b557444 diff --git a/CHANGELOG.md b/CHANGELOG.md index 904d83efe..6a564ea66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.449.0 (2026-03-05) + +Full Changelog: [v0.448.0...v0.449.0](https://github.com/Increase/increase-java/compare/v0.448.0...v0.449.0) + +### Features + +* **api:** api update ([917f6b8](https://github.com/Increase/increase-java/commit/917f6b86401823744ec289561eb91505b785dc87)) + ## 0.448.0 (2026-03-05) Full Changelog: [v0.447.0...v0.448.0](https://github.com/Increase/increase-java/compare/v0.447.0...v0.448.0) diff --git a/README.md b/README.md index 7208f2770..1027431bc 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.448.0) -[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.448.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.448.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.449.0) +[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.449.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.449.0) @@ -13,7 +13,7 @@ The Increase Java SDK is similar to the Increase Kotlin SDK but with minor diffe -The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.448.0). +The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.449.0). @@ -24,7 +24,7 @@ The REST API documentation can be found on [increase.com](https://increase.com/d ### Gradle ```kotlin -implementation("com.increase.api:increase-java:0.448.0") +implementation("com.increase.api:increase-java:0.449.0") ``` ### Maven @@ -33,7 +33,7 @@ implementation("com.increase.api:increase-java:0.448.0") com.increase.api increase-java - 0.448.0 + 0.449.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index c578080e2..1c0bf3d6b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.increase.api" - version = "0.448.0" // x-release-please-version + version = "0.449.0" // x-release-please-version } subprojects { diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/cardpayments/CardPayment.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cardpayments/CardPayment.kt index 4fb40e28e..c3b13c43e 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/cardpayments/CardPayment.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cardpayments/CardPayment.kt @@ -1778,6 +1778,11 @@ private constructor( private val purchaseAmount: JsonField, private val purchaseCurrency: JsonField, private val realTimeDecisionId: JsonField, + private val requestorAuthenticationIndicator: + JsonField, + private val requestorChallengeIndicator: JsonField, + private val requestorName: JsonField, + private val requestorUrl: JsonField, private val status: JsonField, private val type: JsonField, private val additionalProperties: MutableMap, @@ -1858,6 +1863,20 @@ private constructor( @JsonProperty("real_time_decision_id") @ExcludeMissing realTimeDecisionId: JsonField = JsonMissing.of(), + @JsonProperty("requestor_authentication_indicator") + @ExcludeMissing + requestorAuthenticationIndicator: JsonField = + JsonMissing.of(), + @JsonProperty("requestor_challenge_indicator") + @ExcludeMissing + requestorChallengeIndicator: JsonField = + JsonMissing.of(), + @JsonProperty("requestor_name") + @ExcludeMissing + requestorName: JsonField = JsonMissing.of(), + @JsonProperty("requestor_url") + @ExcludeMissing + requestorUrl: JsonField = JsonMissing.of(), @JsonProperty("status") @ExcludeMissing status: JsonField = JsonMissing.of(), @@ -1888,6 +1907,10 @@ private constructor( purchaseAmount, purchaseCurrency, realTimeDecisionId, + requestorAuthenticationIndicator, + requestorChallengeIndicator, + requestorName, + requestorUrl, status, type, mutableMapOf(), @@ -2128,6 +2151,43 @@ private constructor( fun realTimeDecisionId(): Optional = realTimeDecisionId.getOptional("real_time_decision_id") + /** + * The 3DS requestor authentication indicator describes why the authentication attempt + * is performed, such as for a recurring transaction. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. + * if the server responded with an unexpected value). + */ + fun requestorAuthenticationIndicator(): Optional = + requestorAuthenticationIndicator.getOptional("requestor_authentication_indicator") + + /** + * Indicates whether a challenge is requested for this transaction. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. + * if the server responded with an unexpected value). + */ + fun requestorChallengeIndicator(): Optional = + requestorChallengeIndicator.getOptional("requestor_challenge_indicator") + + /** + * The name of the 3DS requestor. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type or is + * unexpectedly missing or null (e.g. if the server responded with an unexpected + * value). + */ + fun requestorName(): String = requestorName.getRequired("requestor_name") + + /** + * The URL of the 3DS requestor. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type or is + * unexpectedly missing or null (e.g. if the server responded with an unexpected + * value). + */ + fun requestorUrl(): String = requestorUrl.getRequired("requestor_url") + /** * The status of the card authentication. * @@ -2391,6 +2451,48 @@ private constructor( @ExcludeMissing fun _realTimeDecisionId(): JsonField = realTimeDecisionId + /** + * Returns the raw JSON value of [requestorAuthenticationIndicator]. + * + * Unlike [requestorAuthenticationIndicator], this method doesn't throw if the JSON + * field has an unexpected type. + */ + @JsonProperty("requestor_authentication_indicator") + @ExcludeMissing + fun _requestorAuthenticationIndicator(): JsonField = + requestorAuthenticationIndicator + + /** + * Returns the raw JSON value of [requestorChallengeIndicator]. + * + * Unlike [requestorChallengeIndicator], this method doesn't throw if the JSON field has + * an unexpected type. + */ + @JsonProperty("requestor_challenge_indicator") + @ExcludeMissing + fun _requestorChallengeIndicator(): JsonField = + requestorChallengeIndicator + + /** + * Returns the raw JSON value of [requestorName]. + * + * Unlike [requestorName], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("requestor_name") + @ExcludeMissing + fun _requestorName(): JsonField = requestorName + + /** + * Returns the raw JSON value of [requestorUrl]. + * + * Unlike [requestorUrl], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("requestor_url") + @ExcludeMissing + fun _requestorUrl(): JsonField = requestorUrl + /** * Returns the raw JSON value of [status]. * @@ -2449,6 +2551,10 @@ private constructor( * .purchaseAmount() * .purchaseCurrency() * .realTimeDecisionId() + * .requestorAuthenticationIndicator() + * .requestorChallengeIndicator() + * .requestorName() + * .requestorUrl() * .status() * .type() * ``` @@ -2484,6 +2590,13 @@ private constructor( private var purchaseAmount: JsonField? = null private var purchaseCurrency: JsonField? = null private var realTimeDecisionId: JsonField? = null + private var requestorAuthenticationIndicator: + JsonField? = + null + private var requestorChallengeIndicator: JsonField? = + null + private var requestorName: JsonField? = null + private var requestorUrl: JsonField? = null private var status: JsonField? = null private var type: JsonField? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -2515,6 +2628,11 @@ private constructor( purchaseAmount = cardAuthentication.purchaseAmount purchaseCurrency = cardAuthentication.purchaseCurrency realTimeDecisionId = cardAuthentication.realTimeDecisionId + requestorAuthenticationIndicator = + cardAuthentication.requestorAuthenticationIndicator + requestorChallengeIndicator = cardAuthentication.requestorChallengeIndicator + requestorName = cardAuthentication.requestorName + requestorUrl = cardAuthentication.requestorUrl status = cardAuthentication.status type = cardAuthentication.type additionalProperties = cardAuthentication.additionalProperties.toMutableMap() @@ -3028,6 +3146,91 @@ private constructor( this.realTimeDecisionId = realTimeDecisionId } + /** + * The 3DS requestor authentication indicator describes why the authentication + * attempt is performed, such as for a recurring transaction. + */ + fun requestorAuthenticationIndicator( + requestorAuthenticationIndicator: RequestorAuthenticationIndicator? + ) = + requestorAuthenticationIndicator( + JsonField.ofNullable(requestorAuthenticationIndicator) + ) + + /** + * Alias for calling [Builder.requestorAuthenticationIndicator] with + * `requestorAuthenticationIndicator.orElse(null)`. + */ + fun requestorAuthenticationIndicator( + requestorAuthenticationIndicator: Optional + ) = requestorAuthenticationIndicator(requestorAuthenticationIndicator.getOrNull()) + + /** + * Sets [Builder.requestorAuthenticationIndicator] to an arbitrary JSON value. + * + * You should usually call [Builder.requestorAuthenticationIndicator] with a + * well-typed [RequestorAuthenticationIndicator] value instead. This method is + * primarily for setting the field to an undocumented or not yet supported value. + */ + fun requestorAuthenticationIndicator( + requestorAuthenticationIndicator: JsonField + ) = apply { + this.requestorAuthenticationIndicator = requestorAuthenticationIndicator + } + + /** Indicates whether a challenge is requested for this transaction. */ + fun requestorChallengeIndicator( + requestorChallengeIndicator: RequestorChallengeIndicator? + ) = requestorChallengeIndicator(JsonField.ofNullable(requestorChallengeIndicator)) + + /** + * Alias for calling [Builder.requestorChallengeIndicator] with + * `requestorChallengeIndicator.orElse(null)`. + */ + fun requestorChallengeIndicator( + requestorChallengeIndicator: Optional + ) = requestorChallengeIndicator(requestorChallengeIndicator.getOrNull()) + + /** + * Sets [Builder.requestorChallengeIndicator] to an arbitrary JSON value. + * + * You should usually call [Builder.requestorChallengeIndicator] with a well-typed + * [RequestorChallengeIndicator] value instead. This method is primarily for setting + * the field to an undocumented or not yet supported value. + */ + fun requestorChallengeIndicator( + requestorChallengeIndicator: JsonField + ) = apply { this.requestorChallengeIndicator = requestorChallengeIndicator } + + /** The name of the 3DS requestor. */ + fun requestorName(requestorName: String) = + requestorName(JsonField.of(requestorName)) + + /** + * Sets [Builder.requestorName] to an arbitrary JSON value. + * + * You should usually call [Builder.requestorName] with a well-typed [String] value + * instead. This method is primarily for setting the field to an undocumented or not + * yet supported value. + */ + fun requestorName(requestorName: JsonField) = apply { + this.requestorName = requestorName + } + + /** The URL of the 3DS requestor. */ + fun requestorUrl(requestorUrl: String) = requestorUrl(JsonField.of(requestorUrl)) + + /** + * Sets [Builder.requestorUrl] to an arbitrary JSON value. + * + * You should usually call [Builder.requestorUrl] with a well-typed [String] value + * instead. This method is primarily for setting the field to an undocumented or not + * yet supported value. + */ + fun requestorUrl(requestorUrl: JsonField) = apply { + this.requestorUrl = requestorUrl + } + /** The status of the card authentication. */ fun status(status: Status) = status(JsonField.of(status)) @@ -3109,6 +3312,10 @@ private constructor( * .purchaseAmount() * .purchaseCurrency() * .realTimeDecisionId() + * .requestorAuthenticationIndicator() + * .requestorChallengeIndicator() + * .requestorName() + * .requestorUrl() * .status() * .type() * ``` @@ -3142,6 +3349,13 @@ private constructor( checkRequired("purchaseAmount", purchaseAmount), checkRequired("purchaseCurrency", purchaseCurrency), checkRequired("realTimeDecisionId", realTimeDecisionId), + checkRequired( + "requestorAuthenticationIndicator", + requestorAuthenticationIndicator, + ), + checkRequired("requestorChallengeIndicator", requestorChallengeIndicator), + checkRequired("requestorName", requestorName), + checkRequired("requestorUrl", requestorUrl), checkRequired("status", status), checkRequired("type", type), additionalProperties.toMutableMap(), @@ -3180,6 +3394,10 @@ private constructor( purchaseAmount() purchaseCurrency() realTimeDecisionId() + requestorAuthenticationIndicator().ifPresent { it.validate() } + requestorChallengeIndicator().ifPresent { it.validate() } + requestorName() + requestorUrl() status().validate() type().validate() validated = true @@ -3226,6 +3444,10 @@ private constructor( (if (purchaseAmount.asKnown().isPresent) 1 else 0) + (if (purchaseCurrency.asKnown().isPresent) 1 else 0) + (if (realTimeDecisionId.asKnown().isPresent) 1 else 0) + + (requestorAuthenticationIndicator.asKnown().getOrNull()?.validity() ?: 0) + + (requestorChallengeIndicator.asKnown().getOrNull()?.validity() ?: 0) + + (if (requestorName.asKnown().isPresent) 1 else 0) + + (if (requestorUrl.asKnown().isPresent) 1 else 0) + (status.asKnown().getOrNull()?.validity() ?: 0) + (type.asKnown().getOrNull()?.validity() ?: 0) @@ -5377,6 +5599,450 @@ private constructor( "DeviceChannel{browser=$browser, category=$category, additionalProperties=$additionalProperties}" } + /** + * The 3DS requestor authentication indicator describes why the authentication attempt + * is performed, such as for a recurring transaction. + */ + class RequestorAuthenticationIndicator + @JsonCreator + private constructor(private val value: JsonField) : Enum { + + /** + * Returns this class instance's raw value. + * + * This is usually only useful if this instance was deserialized from data that + * doesn't match any known member, and you want to know that value. For example, if + * the SDK is on an older version than the API, then the API may respond with new + * members that the SDK is unaware of. + */ + @com.fasterxml.jackson.annotation.JsonValue fun _value(): JsonField = value + + companion object { + + /** The authentication is for a payment transaction. */ + @JvmField val PAYMENT_TRANSACTION = of("payment_transaction") + + /** The authentication is for a recurring transaction. */ + @JvmField val RECURRING_TRANSACTION = of("recurring_transaction") + + /** The authentication is for an installment transaction. */ + @JvmField val INSTALLMENT_TRANSACTION = of("installment_transaction") + + /** The authentication is for adding a card. */ + @JvmField val ADD_CARD = of("add_card") + + /** The authentication is for maintaining a card. */ + @JvmField val MAINTAIN_CARD = of("maintain_card") + + /** The authentication is for EMV token cardholder verification. */ + @JvmField + val EMV_TOKEN_CARDHOLDER_VERIFICATION = of("emv_token_cardholder_verification") + + /** The authentication is for a billing agreement. */ + @JvmField val BILLING_AGREEMENT = of("billing_agreement") + + @JvmStatic + fun of(value: String) = RequestorAuthenticationIndicator(JsonField.of(value)) + } + + /** An enum containing [RequestorAuthenticationIndicator]'s known values. */ + enum class Known { + /** The authentication is for a payment transaction. */ + PAYMENT_TRANSACTION, + /** The authentication is for a recurring transaction. */ + RECURRING_TRANSACTION, + /** The authentication is for an installment transaction. */ + INSTALLMENT_TRANSACTION, + /** The authentication is for adding a card. */ + ADD_CARD, + /** The authentication is for maintaining a card. */ + MAINTAIN_CARD, + /** The authentication is for EMV token cardholder verification. */ + EMV_TOKEN_CARDHOLDER_VERIFICATION, + /** The authentication is for a billing agreement. */ + BILLING_AGREEMENT, + } + + /** + * An enum containing [RequestorAuthenticationIndicator]'s known values, as well as + * an [_UNKNOWN] member. + * + * An instance of [RequestorAuthenticationIndicator] can contain an unknown value in + * a couple of cases: + * - It was deserialized from data that doesn't match any known member. For example, + * if the SDK is on an older version than the API, then the API may respond with + * new members that the SDK is unaware of. + * - It was constructed with an arbitrary value using the [of] method. + */ + enum class Value { + /** The authentication is for a payment transaction. */ + PAYMENT_TRANSACTION, + /** The authentication is for a recurring transaction. */ + RECURRING_TRANSACTION, + /** The authentication is for an installment transaction. */ + INSTALLMENT_TRANSACTION, + /** The authentication is for adding a card. */ + ADD_CARD, + /** The authentication is for maintaining a card. */ + MAINTAIN_CARD, + /** The authentication is for EMV token cardholder verification. */ + EMV_TOKEN_CARDHOLDER_VERIFICATION, + /** The authentication is for a billing agreement. */ + BILLING_AGREEMENT, + /** + * An enum member indicating that [RequestorAuthenticationIndicator] was + * instantiated with an unknown value. + */ + _UNKNOWN, + } + + /** + * Returns an enum member corresponding to this class instance's value, or + * [Value._UNKNOWN] if the class was instantiated with an unknown value. + * + * Use the [known] method instead if you're certain the value is always known or if + * you want to throw for the unknown case. + */ + fun value(): Value = + when (this) { + PAYMENT_TRANSACTION -> Value.PAYMENT_TRANSACTION + RECURRING_TRANSACTION -> Value.RECURRING_TRANSACTION + INSTALLMENT_TRANSACTION -> Value.INSTALLMENT_TRANSACTION + ADD_CARD -> Value.ADD_CARD + MAINTAIN_CARD -> Value.MAINTAIN_CARD + EMV_TOKEN_CARDHOLDER_VERIFICATION -> Value.EMV_TOKEN_CARDHOLDER_VERIFICATION + BILLING_AGREEMENT -> Value.BILLING_AGREEMENT + else -> Value._UNKNOWN + } + + /** + * Returns an enum member corresponding to this class instance's value. + * + * Use the [value] method instead if you're uncertain the value is always known and + * don't want to throw for the unknown case. + * + * @throws IncreaseInvalidDataException if this class instance's value is a not a + * known member. + */ + fun known(): Known = + when (this) { + PAYMENT_TRANSACTION -> Known.PAYMENT_TRANSACTION + RECURRING_TRANSACTION -> Known.RECURRING_TRANSACTION + INSTALLMENT_TRANSACTION -> Known.INSTALLMENT_TRANSACTION + ADD_CARD -> Known.ADD_CARD + MAINTAIN_CARD -> Known.MAINTAIN_CARD + EMV_TOKEN_CARDHOLDER_VERIFICATION -> Known.EMV_TOKEN_CARDHOLDER_VERIFICATION + BILLING_AGREEMENT -> Known.BILLING_AGREEMENT + else -> + throw IncreaseInvalidDataException( + "Unknown RequestorAuthenticationIndicator: $value" + ) + } + + /** + * Returns this class instance's primitive wire representation. + * + * This differs from the [toString] method because that method is primarily for + * debugging and generally doesn't throw. + * + * @throws IncreaseInvalidDataException if this class instance's value does not have + * the expected primitive type. + */ + fun asString(): String = + _value().asString().orElseThrow { + IncreaseInvalidDataException("Value is not a String") + } + + private var validated: Boolean = false + + fun validate(): RequestorAuthenticationIndicator = apply { + if (validated) { + return@apply + } + + known() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: IncreaseInvalidDataException) { + false + } + + /** + * Returns a score indicating how many valid values are contained in this object + * recursively. + * + * Used for best match union deserialization. + */ + @JvmSynthetic internal fun validity(): Int = if (value() == Value._UNKNOWN) 0 else 1 + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return other is RequestorAuthenticationIndicator && value == other.value + } + + override fun hashCode() = value.hashCode() + + override fun toString() = value.toString() + } + + /** Indicates whether a challenge is requested for this transaction. */ + class RequestorChallengeIndicator + @JsonCreator + private constructor(private val value: JsonField) : Enum { + + /** + * Returns this class instance's raw value. + * + * This is usually only useful if this instance was deserialized from data that + * doesn't match any known member, and you want to know that value. For example, if + * the SDK is on an older version than the API, then the API may respond with new + * members that the SDK is unaware of. + */ + @com.fasterxml.jackson.annotation.JsonValue fun _value(): JsonField = value + + companion object { + + /** No preference. */ + @JvmField val NO_PREFERENCE = of("no_preference") + + /** No challenge requested. */ + @JvmField val NO_CHALLENGE_REQUESTED = of("no_challenge_requested") + + /** Challenge requested, 3DS Requestor preference. */ + @JvmField + val CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE = + of("challenge_requested_3ds_requestor_preference") + + /** Challenge requested, mandate. */ + @JvmField val CHALLENGE_REQUESTED_MANDATE = of("challenge_requested_mandate") + + /** No challenge requested, transactional risk analysis already performed. */ + @JvmField + val NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED = + of("no_challenge_requested_transactional_risk_analysis_already_performed") + + /** No challenge requested, data share only. */ + @JvmField + val NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY = + of("no_challenge_requested_data_share_only") + + /** No challenge requested, strong consumer authentication already performed. */ + @JvmField + val NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED = + of( + "no_challenge_requested_strong_consumer_authentication_already_performed" + ) + + /** + * No challenge requested, utilize whitelist exemption if no challenge required. + */ + @JvmField + val NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED = + of( + "no_challenge_requested_utilize_whitelist_exemption_if_no_challenge_required" + ) + + /** Challenge requested, whitelist prompt requested if challenge required. */ + @JvmField + val CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED = + of("challenge_requested_whitelist_prompt_requested_if_challenge_required") + + @JvmStatic + fun of(value: String) = RequestorChallengeIndicator(JsonField.of(value)) + } + + /** An enum containing [RequestorChallengeIndicator]'s known values. */ + enum class Known { + /** No preference. */ + NO_PREFERENCE, + /** No challenge requested. */ + NO_CHALLENGE_REQUESTED, + /** Challenge requested, 3DS Requestor preference. */ + CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE, + /** Challenge requested, mandate. */ + CHALLENGE_REQUESTED_MANDATE, + /** No challenge requested, transactional risk analysis already performed. */ + NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED, + /** No challenge requested, data share only. */ + NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY, + /** No challenge requested, strong consumer authentication already performed. */ + NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED, + /** + * No challenge requested, utilize whitelist exemption if no challenge required. + */ + NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED, + /** Challenge requested, whitelist prompt requested if challenge required. */ + CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED, + } + + /** + * An enum containing [RequestorChallengeIndicator]'s known values, as well as an + * [_UNKNOWN] member. + * + * An instance of [RequestorChallengeIndicator] can contain an unknown value in a + * couple of cases: + * - It was deserialized from data that doesn't match any known member. For example, + * if the SDK is on an older version than the API, then the API may respond with + * new members that the SDK is unaware of. + * - It was constructed with an arbitrary value using the [of] method. + */ + enum class Value { + /** No preference. */ + NO_PREFERENCE, + /** No challenge requested. */ + NO_CHALLENGE_REQUESTED, + /** Challenge requested, 3DS Requestor preference. */ + CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE, + /** Challenge requested, mandate. */ + CHALLENGE_REQUESTED_MANDATE, + /** No challenge requested, transactional risk analysis already performed. */ + NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED, + /** No challenge requested, data share only. */ + NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY, + /** No challenge requested, strong consumer authentication already performed. */ + NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED, + /** + * No challenge requested, utilize whitelist exemption if no challenge required. + */ + NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED, + /** Challenge requested, whitelist prompt requested if challenge required. */ + CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED, + /** + * An enum member indicating that [RequestorChallengeIndicator] was instantiated + * with an unknown value. + */ + _UNKNOWN, + } + + /** + * Returns an enum member corresponding to this class instance's value, or + * [Value._UNKNOWN] if the class was instantiated with an unknown value. + * + * Use the [known] method instead if you're certain the value is always known or if + * you want to throw for the unknown case. + */ + fun value(): Value = + when (this) { + NO_PREFERENCE -> Value.NO_PREFERENCE + NO_CHALLENGE_REQUESTED -> Value.NO_CHALLENGE_REQUESTED + CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE -> + Value.CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE + CHALLENGE_REQUESTED_MANDATE -> Value.CHALLENGE_REQUESTED_MANDATE + NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED -> + Value + .NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED + NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY -> + Value.NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY + NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED -> + Value + .NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED + NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED -> + Value + .NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED + CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED -> + Value + .CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED + else -> Value._UNKNOWN + } + + /** + * Returns an enum member corresponding to this class instance's value. + * + * Use the [value] method instead if you're uncertain the value is always known and + * don't want to throw for the unknown case. + * + * @throws IncreaseInvalidDataException if this class instance's value is a not a + * known member. + */ + fun known(): Known = + when (this) { + NO_PREFERENCE -> Known.NO_PREFERENCE + NO_CHALLENGE_REQUESTED -> Known.NO_CHALLENGE_REQUESTED + CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE -> + Known.CHALLENGE_REQUESTED_3DS_REQUESTOR_PREFERENCE + CHALLENGE_REQUESTED_MANDATE -> Known.CHALLENGE_REQUESTED_MANDATE + NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED -> + Known + .NO_CHALLENGE_REQUESTED_TRANSACTIONAL_RISK_ANALYSIS_ALREADY_PERFORMED + NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY -> + Known.NO_CHALLENGE_REQUESTED_DATA_SHARE_ONLY + NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED -> + Known + .NO_CHALLENGE_REQUESTED_STRONG_CONSUMER_AUTHENTICATION_ALREADY_PERFORMED + NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED -> + Known + .NO_CHALLENGE_REQUESTED_UTILIZE_WHITELIST_EXEMPTION_IF_NO_CHALLENGE_REQUIRED + CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED -> + Known + .CHALLENGE_REQUESTED_WHITELIST_PROMPT_REQUESTED_IF_CHALLENGE_REQUIRED + else -> + throw IncreaseInvalidDataException( + "Unknown RequestorChallengeIndicator: $value" + ) + } + + /** + * Returns this class instance's primitive wire representation. + * + * This differs from the [toString] method because that method is primarily for + * debugging and generally doesn't throw. + * + * @throws IncreaseInvalidDataException if this class instance's value does not have + * the expected primitive type. + */ + fun asString(): String = + _value().asString().orElseThrow { + IncreaseInvalidDataException("Value is not a String") + } + + private var validated: Boolean = false + + fun validate(): RequestorChallengeIndicator = apply { + if (validated) { + return@apply + } + + known() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: IncreaseInvalidDataException) { + false + } + + /** + * Returns a score indicating how many valid values are contained in this object + * recursively. + * + * Used for best match union deserialization. + */ + @JvmSynthetic internal fun validity(): Int = if (value() == Value._UNKNOWN) 0 else 1 + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return other is RequestorChallengeIndicator && value == other.value + } + + override fun hashCode() = value.hashCode() + + override fun toString() = value.toString() + } + /** The status of the card authentication. */ class Status @JsonCreator private constructor(private val value: JsonField) : Enum { @@ -5738,6 +6404,10 @@ private constructor( purchaseAmount == other.purchaseAmount && purchaseCurrency == other.purchaseCurrency && realTimeDecisionId == other.realTimeDecisionId && + requestorAuthenticationIndicator == other.requestorAuthenticationIndicator && + requestorChallengeIndicator == other.requestorChallengeIndicator && + requestorName == other.requestorName && + requestorUrl == other.requestorUrl && status == other.status && type == other.type && additionalProperties == other.additionalProperties @@ -5770,6 +6440,10 @@ private constructor( purchaseAmount, purchaseCurrency, realTimeDecisionId, + requestorAuthenticationIndicator, + requestorChallengeIndicator, + requestorName, + requestorUrl, status, type, additionalProperties, @@ -5779,7 +6453,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "CardAuthentication{id=$id, billingAddressCity=$billingAddressCity, billingAddressCountry=$billingAddressCountry, billingAddressLine1=$billingAddressLine1, billingAddressLine2=$billingAddressLine2, billingAddressLine3=$billingAddressLine3, billingAddressPostalCode=$billingAddressPostalCode, billingAddressState=$billingAddressState, cardId=$cardId, cardPaymentId=$cardPaymentId, cardholderEmail=$cardholderEmail, cardholderName=$cardholderName, category=$category, challenge=$challenge, createdAt=$createdAt, denyReason=$denyReason, deviceChannel=$deviceChannel, merchantAcceptorId=$merchantAcceptorId, merchantCategoryCode=$merchantCategoryCode, merchantCountry=$merchantCountry, merchantName=$merchantName, priorCardAuthenticationId=$priorCardAuthenticationId, purchaseAmount=$purchaseAmount, purchaseCurrency=$purchaseCurrency, realTimeDecisionId=$realTimeDecisionId, status=$status, type=$type, additionalProperties=$additionalProperties}" + "CardAuthentication{id=$id, billingAddressCity=$billingAddressCity, billingAddressCountry=$billingAddressCountry, billingAddressLine1=$billingAddressLine1, billingAddressLine2=$billingAddressLine2, billingAddressLine3=$billingAddressLine3, billingAddressPostalCode=$billingAddressPostalCode, billingAddressState=$billingAddressState, cardId=$cardId, cardPaymentId=$cardPaymentId, cardholderEmail=$cardholderEmail, cardholderName=$cardholderName, category=$category, challenge=$challenge, createdAt=$createdAt, denyReason=$denyReason, deviceChannel=$deviceChannel, merchantAcceptorId=$merchantAcceptorId, merchantCategoryCode=$merchantCategoryCode, merchantCountry=$merchantCountry, merchantName=$merchantName, priorCardAuthenticationId=$priorCardAuthenticationId, purchaseAmount=$purchaseAmount, purchaseCurrency=$purchaseCurrency, realTimeDecisionId=$realTimeDecisionId, requestorAuthenticationIndicator=$requestorAuthenticationIndicator, requestorChallengeIndicator=$requestorChallengeIndicator, requestorName=$requestorName, requestorUrl=$requestorUrl, status=$status, type=$type, additionalProperties=$additionalProperties}" } /** diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentListPageResponseTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentListPageResponseTest.kt index 380c9aa1d..176c611ac 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentListPageResponseTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentListPageResponseTest.kt @@ -121,6 +121,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -2221,6 +2233,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -4321,6 +4345,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -6421,6 +6457,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -8559,6 +8607,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -10541,6 +10601,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -12523,6 +12595,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -14505,6 +14589,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -16535,6 +16631,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -18635,6 +18743,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -20735,6 +20855,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -22835,6 +22967,18 @@ internal class CardPaymentListPageResponseTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentTest.kt index 8430169f4..304be8897 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cardpayments/CardPaymentTest.kt @@ -108,6 +108,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -1968,6 +1980,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -3828,6 +3852,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -5688,6 +5724,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -7575,6 +7623,17 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication.RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status.VALIDATING_CHALLENGE ) @@ -9245,6 +9304,17 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication.RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status.VALIDATING_CHALLENGE ) @@ -10915,6 +10985,17 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication.RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status.VALIDATING_CHALLENGE ) @@ -12585,6 +12666,17 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication.RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status.VALIDATING_CHALLENGE ) @@ -14302,6 +14394,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -16162,6 +16266,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -18022,6 +18138,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE @@ -19882,6 +20010,18 @@ internal class CardPaymentTest { .purchaseAmount(1000L) .purchaseCurrency("USD") .realTimeDecisionId(null) + .requestorAuthenticationIndicator( + CardPayment.Element.CardAuthentication + .RequestorAuthenticationIndicator + .PAYMENT_TRANSACTION + ) + .requestorChallengeIndicator( + CardPayment.Element.CardAuthentication + .RequestorChallengeIndicator + .NO_PREFERENCE + ) + .requestorName("Example Requestor") + .requestorUrl("https://example.com") .status( CardPayment.Element.CardAuthentication.Status .VALIDATING_CHALLENGE