feat(router): add three_ds decision rule execute api#8148
Merged
Gnanasundari24 merged 29 commits intomainfrom Jun 6, 2025
Merged
feat(router): add three_ds decision rule execute api#8148Gnanasundari24 merged 29 commits intomainfrom
Gnanasundari24 merged 29 commits intomainfrom
Conversation
…odels of business_profile
…b.com:juspay/hyperswitch into add-three-ds-rule-execute-api-with-routing-id
prajjwalkumar17
previously approved these changes
Jun 3, 2025
Member
prajjwalkumar17
left a comment
There was a problem hiding this comment.
Euclid integation seems fine, shall we test normal routing flows as well.
…b.com:juspay/hyperswitch into add-three-ds-rule-execute-api-with-routing-id
ShankarSinghC
approved these changes
Jun 5, 2025
prajjwalkumar17
approved these changes
Jun 5, 2025
Aprabhat19
reviewed
Jun 6, 2025
| payment: payment_input, | ||
| payment_method: payment_method_input, | ||
| mandate: mandate_data, | ||
| acquirer_data: None, |
Contributor
There was a problem hiding this comment.
For payments we would never pass this data is it?
Contributor
Author
There was a problem hiding this comment.
Nope (let's say acquirer_data can not be used to configure connectors because we get acquirers once the connector is decided)
Aprabhat19
reviewed
Jun 6, 2025
| ) | ||
| .await | ||
| .to_not_found_response(errors::ApiErrorResponse::ResourceIdNotFound)?; | ||
| let algorithm: Algorithm = routing_algorithm |
Contributor
There was a problem hiding this comment.
Can we check if can directly parse it as a Program, instead of deserializing it to a algo and then to a program
Contributor
Author
There was a problem hiding this comment.
While storing in routing table, we store program as key value pair (data: program). So, during read as well we can't directly parse it into program
su-shivanshmathur
approved these changes
Jun 6, 2025
pixincreate
added a commit
that referenced
this pull request
Jun 9, 2025
…nktransfer * 'main' of github.com:juspay/hyperswitch: (211 commits) feat(tokenio): Add OpenBanking Redirection Flow (#8152) fix: Unified scarf setup (#8238) feat(health): Health check for Decision engine (#8243) chore: Update apple pay currency filter configs (#8217) refactor(customers_v2): Remove merchant reference id from v2 customer update (#7879) chore(version): 2025.06.09.0 chore(postman): update Postman collection files ci(postman): add tunnel collection to postman tests (#8269) feat(connector): Added recurring payments support for split payments in Stripe (#8271) feat(connector): [STRIPE] Added Connector Tokenization Flow for Cards (#8248) refactor(core): introduce new field in payment_intent to handle longer return_url (#8135) fix(connector): [AUTHORIZEDOTNET] Remove country PM filters (#8278) refactor(config): redact config urls for hyperswitch vault (#8276) feat(vsaas): enable onboarding of Standard Merchant Accounts in Platform Organization (#8231) feat(router): add three_ds decision rule execute api (#8148) feat(router): Save payment method on payments confirm (V2) (#8090) ci(cypress): Add Airwallex Connector Test (#8187) feat(payment_methods): add `external_vault_details` for payments v2 sdk session call (#8003) fix(connector): [facilitapay] cpf is a required field (#8274) fix: Fixed spell check (#8227) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type of Change
Description
add three_ds decision rule execute api
This pull request introduces a new feature for executing 3DS decision rules, along with supporting changes across multiple modules. The changes include adding new structures for handling 3DS decision rule inputs and outputs, integrating these structures into the backend and frontend systems, and updating associated tests and documentation.
New Feature: 3DS Decision Rule Execution
post /three_ds_decision_rule/execute).three_ds_decision_rulemodule incrates/api_modelswith structs for handling request and response data (ThreeDsDecisionRuleExecuteRequestandThreeDsDecisionRuleExecuteResponse).ThreeDsDecisionRuletoApiEventsTypeand implemented a method to retrieve decisions inThreeDSDecisionRule. [1] [2]Backend Integration
BackendInputincrates/euclid/src/backend/inputs.rsto include new fields for acquirer, customer device, and issuer data.Contextimplementation incrates/euclid/src/backend/vir_interpreter/types.rsto process the new input fields and map them toEuclidValue.Frontend and Testing Updates
ToSchematrait to relevant enums incrates/euclid/src/frontend/dir/enums.rsfor better schema integration. [1] [2]crates/euclid/src/backend/vir_interpreter.rsto include the new input fields (acquirer_data,customer_device_data, andissuer_data). [1] [2]Tested wasm change - get_all_keys (Not to include 3DS Decision Keys)

Documentation and Configuration
api-reference/mint.json.euclidas a dependency incrates/openapi/Cargo.toml.Additional Changes
Motivation and Context
How did you test it?
Tested Manually
Create a Three DS Decision Rule using Routing Create Config API
CURL
Response
Call Execute API with appropriate Routing ID and Input Data
CURL
Response
Checklist
cargo +nightly fmt --allcargo clippy