├── .env ├── .github ├── ci-cd-workflows.png └── workflows │ ├── daily-heavy-tests.yml │ ├── deploy-to-ghcr.yml │ ├── deploy-to-integ.yml │ ├── develop-push-merge.yml │ ├── jar-publish.yml │ ├── manual-heavy-tests.yml │ ├── pull-requests.yml │ ├── tag-release-candidate-push.yml │ └── tag-release-push.yml ├── .gitignore ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── .prettierignore ├── LICENSE ├── Makefile ├── README.md ├── README_DOCKERHUB.md ├── backend.checkstyle.xml ├── backend.pmd-ruleset.xml ├── consent-ui ├── .browserslist ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .prettierignore ├── .prettierrc ├── Dockerfile ├── README.md ├── angular.json ├── cypress.config.ts ├── cypress │ ├── e2e │ │ └── spec.cy.ts │ ├── fixtures │ │ └── example.json │ ├── support │ │ ├── commands.ts │ │ ├── component.ts │ │ └── e2e.ts │ └── tsconfig.json ├── entry.sh ├── eslint.config.js ├── jest.config.js ├── nginx.conf ├── package.json ├── proxy-conf-dev-backend.js ├── proxy-conf-docker-backend.json ├── proxy-conf-local-backend.json ├── src │ ├── app │ │ ├── ais │ │ │ ├── ais-routing.module.ts │ │ │ ├── ais.module.ts │ │ │ ├── common │ │ │ │ ├── consent-util.ts │ │ │ │ ├── constant │ │ │ │ │ └── constant.ts │ │ │ │ ├── cookie-renewal │ │ │ │ │ ├── CookieRenewalService.spec.ts │ │ │ │ │ └── CookieRenewalService.ts │ │ │ │ ├── date-util.ts │ │ │ │ ├── dto │ │ │ │ │ ├── ais-consent.ts │ │ │ │ │ └── auth-state.ts │ │ │ │ └── stub-util-tests.ts │ │ │ ├── components │ │ │ │ └── consent-info │ │ │ │ │ ├── consent-info.component.html │ │ │ │ │ ├── consent-info.component.scss │ │ │ │ │ ├── consent-info.component.spec.ts │ │ │ │ │ └── consent-info.component.ts │ │ │ ├── enter-pin-page │ │ │ │ ├── enter-pin-page.component.html │ │ │ │ ├── enter-pin-page.component.scss │ │ │ │ ├── enter-pin-page.component.spec.ts │ │ │ │ └── enter-pin-page.component.ts │ │ │ ├── enter-tan-page │ │ │ │ ├── enter-tan-page.component.html │ │ │ │ ├── enter-tan-page.component.scss │ │ │ │ ├── enter-tan-page.component.spec.ts │ │ │ │ └── enter-tan-page.component.ts │ │ │ ├── entry-page │ │ │ │ ├── entry-page.component.html │ │ │ │ ├── entry-page.component.scss │ │ │ │ ├── entry-page.component.spec.ts │ │ │ │ ├── entry-page.component.ts │ │ │ │ └── initiation │ │ │ │ │ ├── accounts │ │ │ │ │ ├── accounts-consent-review │ │ │ │ │ │ ├── accounts-consent-review.component.html │ │ │ │ │ │ ├── accounts-consent-review.component.scss │ │ │ │ │ │ ├── accounts-consent-review.component.spec.ts │ │ │ │ │ │ └── accounts-consent-review.component.ts │ │ │ │ │ └── entry-page-accounts │ │ │ │ │ │ ├── entry-page-accounts.component.html │ │ │ │ │ │ ├── entry-page-accounts.component.scss │ │ │ │ │ │ ├── entry-page-accounts.component.spec.ts │ │ │ │ │ │ └── entry-page-accounts.component.ts │ │ │ │ │ ├── common │ │ │ │ │ ├── accounts-reference │ │ │ │ │ │ ├── accounts-reference.component.html │ │ │ │ │ │ ├── accounts-reference.component.scss │ │ │ │ │ │ ├── accounts-reference.component.spec.ts │ │ │ │ │ │ └── accounts-reference.component.ts │ │ │ │ │ ├── dedicated-access │ │ │ │ │ │ ├── dedicated-access.component.html │ │ │ │ │ │ ├── dedicated-access.component.scss │ │ │ │ │ │ ├── dedicated-access.component.spec.ts │ │ │ │ │ │ └── dedicated-access.component.ts │ │ │ │ │ ├── dynamic-inputs │ │ │ │ │ │ ├── dynamic-inputs.component.html │ │ │ │ │ │ ├── dynamic-inputs.component.scss │ │ │ │ │ │ ├── dynamic-inputs.component.spec.ts │ │ │ │ │ │ └── dynamic-inputs.component.ts │ │ │ │ │ ├── initial-consent │ │ │ │ │ │ ├── consent-account-access-selection.component.html │ │ │ │ │ │ ├── consent-account-access-selection.component.scss │ │ │ │ │ │ ├── consent-account-access-selection.component.spec.ts │ │ │ │ │ │ └── consent-account-access-selection.component.ts │ │ │ │ │ └── shared-routes.ts │ │ │ │ │ ├── consent-initiate │ │ │ │ │ ├── consent-initiate.component.html │ │ │ │ │ ├── consent-initiate.component.scss │ │ │ │ │ ├── consent-initiate.component.spec.ts │ │ │ │ │ └── consent-initiate.component.ts │ │ │ │ │ ├── consent-sharing │ │ │ │ │ ├── consent-sharing.component.html │ │ │ │ │ ├── consent-sharing.component.scss │ │ │ │ │ ├── consent-sharing.component.spec.ts │ │ │ │ │ └── consent-sharing.component.ts │ │ │ │ │ └── transactions │ │ │ │ │ ├── entry-page-transactions │ │ │ │ │ ├── entry-page-transactions.component.html │ │ │ │ │ ├── entry-page-transactions.component.scss │ │ │ │ │ ├── entry-page-transactions.component.spec.ts │ │ │ │ │ └── entry-page-transactions.component.ts │ │ │ │ │ └── transactions-consent-review │ │ │ │ │ ├── transactions-consent-review.component.html │ │ │ │ │ ├── transactions-consent-review.component.scss │ │ │ │ │ ├── transactions-consent-review.component.spec.ts │ │ │ │ │ └── transactions-consent-review.component.ts │ │ │ ├── error-page │ │ │ │ ├── error-page.component.html │ │ │ │ ├── error-page.component.scss │ │ │ │ ├── error-page.component.spec.ts │ │ │ │ └── error-page.component.ts │ │ │ ├── restore-session-page │ │ │ │ ├── restore-session-page.component.html │ │ │ │ ├── restore-session-page.component.scss │ │ │ │ └── restore-session-page.component.ts │ │ │ ├── result-page │ │ │ │ ├── result-page.component.html │ │ │ │ ├── result-page.component.scss │ │ │ │ ├── result-page.component.spec.ts │ │ │ │ └── result-page.component.ts │ │ │ ├── route-based-card-with-sidebar │ │ │ │ ├── route-based-card-with-sidebar.component.html │ │ │ │ ├── route-based-card-with-sidebar.component.scss │ │ │ │ ├── route-based-card-with-sidebar.component.spec.ts │ │ │ │ └── route-based-card-with-sidebar.component.ts │ │ │ ├── sca-select-page │ │ │ │ ├── sca-select-page.component.html │ │ │ │ ├── sca-select-page.component.scss │ │ │ │ ├── sca-select-page.component.spec.ts │ │ │ │ └── sca-select-page.component.ts │ │ │ ├── sidebar │ │ │ │ ├── sidebar.component.html │ │ │ │ ├── sidebar.component.scss │ │ │ │ ├── sidebar.component.spec.ts │ │ │ │ └── sidebar.component.ts │ │ │ ├── to-aspsp-page │ │ │ │ ├── to-aspsp-redirection.component.html │ │ │ │ ├── to-aspsp-redirection.component.scss │ │ │ │ ├── to-aspsp-redirection.component.spec.ts │ │ │ │ └── to-aspsp-redirection.component.ts │ │ │ └── wait-for-decoupled │ │ │ │ ├── wait-for-decoupled.component.html │ │ │ │ ├── wait-for-decoupled.component.scss │ │ │ │ └── wait-for-decoupled.component.ts │ │ ├── api-auth │ │ │ ├── .gitignore │ │ │ ├── .openapi-generator-ignore │ │ │ ├── .openapi-generator │ │ │ │ └── VERSION │ │ │ ├── README.md │ │ │ ├── api.module.ts │ │ │ ├── api │ │ │ │ ├── api.ts │ │ │ │ ├── psuAuthentication.service.ts │ │ │ │ └── psuAuthenticationAndConsentApproval.service.ts │ │ │ ├── configuration.ts │ │ │ ├── encoder.ts │ │ │ ├── git_push.sh │ │ │ ├── index.ts │ │ │ ├── model │ │ │ │ ├── generalError.ts │ │ │ │ ├── loginResponse.ts │ │ │ │ ├── models.ts │ │ │ │ └── psuAuthBody.ts │ │ │ └── variables.ts │ │ ├── api │ │ │ ├── .gitignore │ │ │ ├── .openapi-generator-ignore │ │ │ ├── .openapi-generator │ │ │ │ └── VERSION │ │ │ ├── README.md │ │ │ ├── api.headers.ts │ │ │ ├── api.module.ts │ │ │ ├── api │ │ │ │ ├── api.ts │ │ │ │ ├── authStateConsentAuthorization.service.ts │ │ │ │ ├── fromASPSPConsentAuthorization.service.ts │ │ │ │ └── updateConsentAuthorization.service.ts │ │ │ ├── configuration.ts │ │ │ ├── encoder.ts │ │ │ ├── git_push.sh │ │ │ ├── index.ts │ │ │ ├── model │ │ │ │ ├── accountBalance.ts │ │ │ │ ├── accountDetails.ts │ │ │ │ ├── accountReference.ts │ │ │ │ ├── accountStatus.ts │ │ │ │ ├── accountType.ts │ │ │ │ ├── address.ts │ │ │ │ ├── aisAccountAccessInfo.ts │ │ │ │ ├── aisConsentRequest.ts │ │ │ │ ├── amount.ts │ │ │ │ ├── authViolation.ts │ │ │ │ ├── balanceType.ts │ │ │ │ ├── bulkPayment.ts │ │ │ │ ├── challengeData.ts │ │ │ │ ├── consentAuth.ts │ │ │ │ ├── models.ts │ │ │ │ ├── paymentProduct.ts │ │ │ │ ├── paymentStatus.ts │ │ │ │ ├── periodicPayment.ts │ │ │ │ ├── psuAuthRequest.ts │ │ │ │ ├── psuMessage.ts │ │ │ │ ├── scaStatus.ts │ │ │ │ ├── scaUserData.ts │ │ │ │ └── singlePayment.ts │ │ │ └── variables.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── anonymous │ │ │ │ ├── anonymous.component.html │ │ │ │ ├── anonymous.component.spec.ts │ │ │ │ └── anonymous.component.ts │ │ │ ├── auth-routing.module.ts │ │ │ ├── auth.component.scss │ │ │ ├── auth.module.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ └── register │ │ │ │ ├── register.component.html │ │ │ │ ├── register.component.spec.ts │ │ │ │ └── register.component.ts │ │ ├── common │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── enter-pin │ │ │ │ ├── enter-pin.component.html │ │ │ │ ├── enter-pin.component.scss │ │ │ │ ├── enter-pin.component.spec.ts │ │ │ │ └── enter-pin.component.ts │ │ │ ├── enter-tan │ │ │ │ ├── enter-tan.component.html │ │ │ │ ├── enter-tan.component.scss │ │ │ │ ├── enter-tan.component.spec.ts │ │ │ │ └── enter-tan.component.ts │ │ │ ├── restore-session │ │ │ │ ├── restore-session.component.html │ │ │ │ ├── restore-session.component.scss │ │ │ │ ├── restore-session.component.spec.ts │ │ │ │ └── restore-session.component.ts │ │ │ ├── result │ │ │ │ ├── result.component.html │ │ │ │ ├── result.component.scss │ │ │ │ ├── result.component.spec.ts │ │ │ │ └── result.component.ts │ │ │ ├── select-sca │ │ │ │ ├── select-sca.component.html │ │ │ │ ├── select-sca.component.scss │ │ │ │ ├── select-sca.component.spec.ts │ │ │ │ └── select-sca.component.ts │ │ │ ├── session.service.spec.ts │ │ │ ├── session.service.ts │ │ │ ├── shared.module.ts │ │ │ ├── to-aspsp │ │ │ │ ├── to-aspsp.component.html │ │ │ │ ├── to-aspsp.component.scss │ │ │ │ ├── to-aspsp.component.spec.ts │ │ │ │ └── to-aspsp.component.ts │ │ │ └── utils │ │ │ │ ├── action.ts │ │ │ │ └── stub-util.ts │ │ ├── errorsHandler │ │ │ ├── error.service.spec.ts │ │ │ ├── error.service.ts │ │ │ ├── global-errors-handler.ts │ │ │ └── info │ │ │ │ ├── info-options.ts │ │ │ │ ├── info.component.html │ │ │ │ ├── info.component.scss │ │ │ │ ├── info.component.ts │ │ │ │ ├── info.module.ts │ │ │ │ └── info.service.ts │ │ ├── guards │ │ │ ├── auth.guard.spec.ts │ │ │ └── auth.guard.ts │ │ ├── pis │ │ │ ├── common │ │ │ │ ├── models │ │ │ │ │ └── pis-payment.model.ts │ │ │ │ └── payment-util.ts │ │ │ ├── consent-payment-access-selection │ │ │ │ ├── consent-payment-access-selection.component.html │ │ │ │ ├── consent-payment-access-selection.component.scss │ │ │ │ ├── consent-payment-access-selection.component.spec.ts │ │ │ │ └── consent-payment-access-selection.component.ts │ │ │ ├── dynamic-inputs │ │ │ │ ├── dynamic-inputs.component.html │ │ │ │ ├── dynamic-inputs.component.scss │ │ │ │ ├── dynamic-inputs.component.spec.ts │ │ │ │ └── dynamic-inputs.component.ts │ │ │ ├── enter-pin-page │ │ │ │ ├── enter-pin-page.component.html │ │ │ │ ├── enter-pin-page.component.scss │ │ │ │ ├── enter-pin-page.component.spec.ts │ │ │ │ └── enter-pin-page.component.ts │ │ │ ├── enter-tan-page │ │ │ │ ├── enter-tan-page.component.html │ │ │ │ ├── enter-tan-page.component.scss │ │ │ │ ├── enter-tan-page.component.spec.ts │ │ │ │ └── enter-tan-page.component.ts │ │ │ ├── entry-page-payments │ │ │ │ ├── entry-page-payments.component.html │ │ │ │ ├── entry-page-payments.component.scss │ │ │ │ ├── entry-page-payments.component.spec.ts │ │ │ │ └── entry-page-payments.component.ts │ │ │ ├── entry-page │ │ │ │ ├── entry-page.component.html │ │ │ │ ├── entry-page.component.scss │ │ │ │ ├── entry-page.component.spec.ts │ │ │ │ └── entry-page.component.ts │ │ │ ├── initiation │ │ │ │ ├── payment-initiate.component.html │ │ │ │ ├── payment-initiate.component.scss │ │ │ │ ├── payment-initiate.component.spec.ts │ │ │ │ └── payment-initiate.component.ts │ │ │ ├── payment-info │ │ │ │ ├── payment-info.component.html │ │ │ │ ├── payment-info.component.scss │ │ │ │ ├── payment-info.component.spec.ts │ │ │ │ └── payment-info.component.ts │ │ │ ├── payments-consent-review │ │ │ │ ├── payments-consent-review.component.html │ │ │ │ ├── payments-consent-review.component.scss │ │ │ │ ├── payments-consent-review.component.spec.ts │ │ │ │ └── payments-consent-review.component.ts │ │ │ ├── pis-routing.module.ts │ │ │ ├── pis.module.ts │ │ │ ├── restore-session-page │ │ │ │ ├── restore-session-page.component.html │ │ │ │ ├── restore-session-page.component.scss │ │ │ │ └── restore-session-page.component.ts │ │ │ ├── result-page │ │ │ │ ├── result-page.component.html │ │ │ │ ├── result-page.component.scss │ │ │ │ ├── result-page.component.spec.ts │ │ │ │ └── result-page.component.ts │ │ │ ├── select-sca-page │ │ │ │ ├── select-sca-page.component.html │ │ │ │ ├── select-sca-page.component.scss │ │ │ │ ├── select-sca-page.component.spec.ts │ │ │ │ └── select-sca-page.component.ts │ │ │ ├── to-aspsp-page │ │ │ │ ├── to-aspsp-page.component.html │ │ │ │ ├── to-aspsp-page.component.scss │ │ │ │ ├── to-aspsp-page.component.spec.ts │ │ │ │ └── to-aspsp-page.component.ts │ │ │ └── wait-for-decoupled │ │ │ │ ├── wait-for-decoupled.component.html │ │ │ │ ├── wait-for-decoupled.component.scss │ │ │ │ └── wait-for-decoupled.component.ts │ │ ├── services │ │ │ ├── customize.service.spec.ts │ │ │ └── customize.service.ts │ │ └── utilities │ │ │ ├── customValidators.spec.ts │ │ │ ├── customValidators.ts │ │ │ ├── ngx-chiptan │ │ │ ├── flicker.ts │ │ │ └── ngx-chiptan.component.ts │ │ │ └── simple-timer.ts │ ├── assets │ │ ├── UI │ │ │ └── Logo_OPBA.png │ │ ├── custom │ │ │ └── favicon.png │ │ ├── fonts │ │ │ └── Geometric │ │ │ │ ├── URWGeometric-Bold.otf │ │ │ │ ├── URWGeometric-Light.otf │ │ │ │ ├── URWGeometric-Medium.otf │ │ │ │ ├── URWGeometric-Regular.otf │ │ │ │ ├── URWGeometric-SemiBold.otf │ │ │ │ ├── URWGeometricCond-Bold.otf │ │ │ │ ├── URWGeometricCond-ExtraBold.otf │ │ │ │ ├── URWGeometricCond-Medium.otf │ │ │ │ ├── URWGeometricCond-Regular.otf │ │ │ │ └── URWGeometricCond-SemiBold.otf │ │ ├── icons │ │ │ ├── card_payment.png │ │ │ ├── icons8-approval.png │ │ │ ├── icons8-bank_cards.svg │ │ │ ├── icons8-checked.png │ │ │ ├── icons8-last_24_hours.png │ │ │ ├── icons8-mark_view_as_non_hidden.png │ │ │ ├── minus.png │ │ │ ├── plus.png │ │ │ └── receive_dollar.png │ │ └── themes │ │ │ ├── _bootstrap-overrides.scss │ │ │ ├── _fonts.scss │ │ │ ├── _mobile.scss │ │ │ ├── _variables.scss │ │ │ └── base-card.scss │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ └── styles.scss ├── tsconfig.app.json ├── tsconfig.cypress.json ├── tsconfig.json └── tsconfig.spec.json ├── docker-compose-dev.yml ├── docker-compose.yml ├── docs ├── ContributionGuidelines.md ├── architecture │ ├── 1-loginWithFinTech.md │ ├── 2-searchBank.md │ ├── 3-selectBank.md │ ├── 4a-aisListOfAccounts.md │ ├── 4b-aisListOfTransactions.md │ ├── 5-redirectPsuToConsentAPI.md │ ├── 5a-psuAuthEmbeddedConsent.md │ ├── 5b-psuAuthRedirectConsent.md │ ├── 6-consume_api.md │ ├── big-picture.drawio │ ├── building_blocks │ │ ├── 01.Application_context.md │ │ ├── 01.application_context.puml │ │ ├── 02.Component_diagrams.md │ │ ├── 02.whitebox_overall.puml │ │ └── 021.whitebox_bankingprotocol.puml │ ├── concepts │ │ ├── fundamentals-of-redirect.md │ │ ├── psu-device-redirection.md │ │ └── psu-security-concept.md │ ├── diagrams │ │ ├── components │ │ │ ├── ideal-result-mappings.svg │ │ │ ├── psu-identities.puml │ │ │ └── redirect.puml │ │ ├── service-request.puml │ │ └── useCases │ │ │ ├── 1-loginWithFinTech.puml │ │ │ ├── 2-searchBank.puml │ │ │ ├── 2a-searchBankLocal.puml │ │ │ ├── 3-selectBank.puml │ │ │ ├── 4a-aisListOfAccounts.puml │ │ │ ├── 4b-aisListOfTransactions.puml │ │ │ ├── 5-redirectPsuToConsentAPI.puml │ │ │ ├── 5a-psuAuthEmbeddedConsent.puml │ │ │ ├── 5b-psuAuthRedirectConsent.puml │ │ │ ├── 6-consume_api.puml │ │ │ ├── psu-security attack.puml │ │ │ └── psu-security.puml │ ├── dictionary-sort-script.sh │ ├── dictionary.md │ ├── drafts │ │ ├── implementation-draft-v0.puml │ │ ├── implementation-v0-bird-view.puml │ │ ├── implementation-v0-consent.puml │ │ ├── implementation-v0-full-flow-payment.puml │ │ ├── implementation-v0-full-flow-tx-list.puml │ │ ├── implementation-v0-generic.puml │ │ ├── implementation-v0-tx-list.puml │ │ ├── initial_requirements.md │ │ ├── payment-dynamic-param.puml │ │ ├── payment-static-param.puml │ │ └── session-cookie.puml │ ├── error-response-layer-diagram.drawio │ ├── framework-security.md │ ├── technical-details.md │ └── use_cases.md ├── deliverables_deployment.md ├── demo_env.md ├── getting_started.md ├── img │ ├── big-picture.png │ ├── demo │ │ ├── fintech-cookie-handling.drawio │ │ ├── fintech-cookie-handling.png │ │ ├── fintech-get-account-list.png │ │ ├── fintech-login.png │ │ ├── fintech-redirect-to-opba.png │ │ ├── fintech-select-accounts.png │ │ ├── fintech-select-bank.png │ │ ├── opba-consent-granted.png │ │ ├── opba-consent.png │ │ ├── opba-login.png │ │ ├── opba-register.png │ │ └── opba-review-consent.png │ ├── open-banking-gateway-arch-14-01-2020.png │ ├── open-banking-gateway-psu-interface.png │ ├── redir │ │ ├── API-Redir-Browser-NativeApp.png │ │ ├── API-Redir-In-Browser.png │ │ ├── All-Redirs.png │ │ ├── RedirectAbstract.png │ │ ├── UI-Redir-Browser-NativeApp.png │ │ ├── UI-Redir-In-Browser.png │ │ ├── client-server.png │ │ ├── idp-client-server.png │ │ └── oauth2-flow.png │ ├── security-concept.png │ ├── security-details │ │ ├── anonymous-security-concept-details.png │ │ └── authenticated-security-concept-details.png │ └── technical-architecture.svg ├── initial_requirements.md ├── opba-register.png │ └── Selection_058.png ├── release-notes │ ├── releasenotes-1.0.2.md │ └── releasenotes.md ├── release_process.md ├── releasenotes.md ├── roadmap.md └── version_policy.md ├── fintech-examples ├── CookieManagement.md ├── README.md ├── fintech-api │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── fintech │ │ │ └── api │ │ │ ├── config │ │ │ ├── EnableFinTechApi.java │ │ │ └── FinTechApiConfig.java │ │ │ └── resource │ │ │ ├── AccountInformationResource.java │ │ │ ├── AuthorizationResource.java │ │ │ └── BankSearchResource.java │ │ └── resources │ │ └── static │ │ └── fintech_api.yml ├── fintech-db-schema │ ├── .gitignore │ ├── README.md │ ├── liquibase.example.properties │ ├── pom.xml │ └── src │ │ └── main │ │ └── resources │ │ ├── init.sql │ │ └── migration │ │ ├── master.xml │ │ └── migrations │ │ ├── 0000-init-schema.xml │ │ └── README.txt ├── fintech-example-tests │ ├── pom.xml │ └── src │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── fintech │ │ │ └── tests │ │ │ └── e2e │ │ │ ├── FintechConsentUiSmokeE2ETest.java │ │ │ ├── FintechPaymentSmokeE2ETest.java │ │ │ ├── JGivenConfig.java │ │ │ ├── config │ │ │ ├── ConsentAuthApproachState.java │ │ │ ├── FintechCookieProperties.java │ │ │ ├── RetryableConfig.java │ │ │ └── SmokeConfig.java │ │ │ └── steps │ │ │ ├── FintechServer.java │ │ │ ├── FintechStagesUtils.java │ │ │ ├── UserInformationResult.java │ │ │ └── WebDriverBasedUserInfoFintech.java │ │ └── resources │ │ └── application-test-smoke-fintech.yml ├── fintech-impl │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── fintech │ │ │ └── impl │ │ │ ├── config │ │ │ ├── DateTimeFormatConfig.java │ │ │ ├── EnableFinTechImplConfig.java │ │ │ ├── FeignConfig.java │ │ │ ├── FeignDateTimeFormatConfig.java │ │ │ ├── FinTechImplConfig.java │ │ │ ├── FintechRequestSigningConfig.java │ │ │ ├── FintechUiConfig.java │ │ │ ├── GmailOauth2Config.java │ │ │ ├── Oauth2Config.java │ │ │ ├── Oauth2Provider.java │ │ │ ├── PasswordEncoderConfig.java │ │ │ ├── RestRequestContextConfig.java │ │ │ ├── ServiceAccountsConfig.java │ │ │ └── UserRegistrationConfig.java │ │ │ ├── controller │ │ │ ├── FinTechAccountInformationImpl.java │ │ │ ├── FinTechAuthorizationImpl.java │ │ │ ├── FinTechBankSearchImpl.java │ │ │ ├── FinTechIbanSearchImpl.java │ │ │ ├── FinTechOauth2AuthenticationImpl.java │ │ │ ├── FintechRetrievalConsentImpl.java │ │ │ ├── FintechRetrieveAllSinglePaymentsImpl.java │ │ │ ├── FintechSinglePaymentInitiationImpl.java │ │ │ ├── GenericControllerAdvice.java │ │ │ └── utils │ │ │ │ ├── LoARetrievalInformation.java │ │ │ │ ├── LoTRetrievalInformation.java │ │ │ │ ├── OkOrNotOk.java │ │ │ │ └── RestRequestContext.java │ │ │ ├── database │ │ │ ├── entities │ │ │ │ ├── ConsentEntity.java │ │ │ │ ├── LoginEntity.java │ │ │ │ ├── OauthSessionEntity.java │ │ │ │ ├── PaymentEntity.java │ │ │ │ ├── RedirectUrlsEntity.java │ │ │ │ ├── SessionEntity.java │ │ │ │ └── UserEntity.java │ │ │ ├── hibernate │ │ │ │ └── PrefixAndSnakeCasePhysicalNamingStrategy.java │ │ │ └── repositories │ │ │ │ ├── ConsentRepository.java │ │ │ │ ├── LoginRepository.java │ │ │ │ ├── OauthSessionEntityRepository.java │ │ │ │ ├── PaymentRepository.java │ │ │ │ ├── RedirectUrlRepository.java │ │ │ │ ├── SessionRepository.java │ │ │ │ └── UserRepository.java │ │ │ ├── exceptions │ │ │ ├── ConsentException.java │ │ │ ├── EmailNotAllowed.java │ │ │ ├── EmailNotVerified.java │ │ │ ├── GlobalExceptionHandler.java │ │ │ ├── InvalidIbanException.java │ │ │ └── Oauth2UnauthorizedException.java │ │ │ ├── mapper │ │ │ ├── AccountListMapper.java │ │ │ ├── BankDescriptorMapper.java │ │ │ ├── BankInfoMapper.java │ │ │ ├── BankProfileDescriptorMapper.java │ │ │ ├── ManualMapper.java │ │ │ ├── PaymentInitiationWithStatusResponseMapper.java │ │ │ └── TransactionsResponseMapper.java │ │ │ ├── properties │ │ │ ├── CookieConfigProperties.java │ │ │ ├── CookieConfigPropertiesSpecific.java │ │ │ └── TppProperties.java │ │ │ ├── service │ │ │ ├── AccountService.java │ │ │ ├── AuthorizeService.java │ │ │ ├── BankSearchService.java │ │ │ ├── ConsentRetrievalService.java │ │ │ ├── ConsentService.java │ │ │ ├── FinTechTokenService.java │ │ │ ├── HandleAcceptedService.java │ │ │ ├── IbanSearchService.java │ │ │ ├── PaymentService.java │ │ │ ├── RedirectHandlerService.java │ │ │ ├── ServiceAccountsOper.java │ │ │ ├── SessionLogicService.java │ │ │ ├── TransactionService.java │ │ │ └── oauth2 │ │ │ │ ├── BaseOauth2AuthorizationCodeAuthenticator.java │ │ │ │ ├── GmailOauth2AuthenticateService.java │ │ │ │ ├── Oauth2AuthResult.java │ │ │ │ ├── Oauth2Authenticator.java │ │ │ │ └── Oauth2Const.java │ │ │ └── tppclients │ │ │ ├── Actions.java │ │ │ ├── AisErrorDecoder.java │ │ │ ├── ConsentType.java │ │ │ ├── Consts.java │ │ │ ├── HeaderFields.java │ │ │ ├── QueryFields.java │ │ │ ├── TppAisClient.java │ │ │ ├── TppBankSearchClient.java │ │ │ ├── TppConsentClient.java │ │ │ ├── TppIbanSearchClient.java │ │ │ ├── TppPaymentClient.java │ │ │ ├── TppPisPaymentStatusClient.java │ │ │ └── TppPisSinglePaymentClient.java │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── fintech │ │ │ └── impl │ │ │ ├── ReplaceAuthIDTest.java │ │ │ ├── database │ │ │ ├── DatabaseTest.java │ │ │ ├── RedirectUrlDatabaseTest.java │ │ │ └── entities │ │ │ │ └── TestHashing.java │ │ │ ├── mapper │ │ │ └── MapperTest.java │ │ │ └── service │ │ │ ├── BankSearchServiceTest.java │ │ │ └── RedirectHandlerServiceTest.java │ │ └── resources │ │ ├── application.yml │ │ └── logback-test.xml ├── fintech-last-module-codecoverage │ ├── pom.xml │ └── src │ │ └── main │ │ ├── dtd │ │ └── jacoco │ │ │ └── report.dtd │ │ └── xsl │ │ └── analyse.jacoco.result.xsl ├── fintech-server │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── deb │ │ └── control │ │ │ ├── control │ │ │ └── postinst │ │ ├── main │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── fintech │ │ │ │ └── server │ │ │ │ └── FinTechServer.java │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── logback.xml │ │ │ └── static │ │ │ └── index.html │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── fintech │ │ │ └── server │ │ │ ├── AuthorizationApiTest.java │ │ │ ├── AuthorizationServiceAccountApiTest.java │ │ │ ├── FinTechApiBaseTest.java │ │ │ ├── FinTechBankSearchApiTest.java │ │ │ ├── FinTechIbanSearchApiTest.java │ │ │ ├── FinTechListAccountsTest.java │ │ │ ├── FinTechListTransactionsTest.java │ │ │ ├── GmailOAuth2AuthenticationTest.java │ │ │ ├── LoginBody.java │ │ │ ├── OffsetDateTimeAdapter.java │ │ │ ├── config │ │ │ └── TestConfig.java │ │ │ └── feignmocks │ │ │ ├── TppAisClientFeignMock.java │ │ │ └── TppBankSearchClientFeignMock.java │ │ └── resources │ │ ├── TPP_BankProfileResponse-356938ab-9561-408f-ac7a-a9089c1623b7.json │ │ ├── TPP_BankProfileResponse-af062b06-ee6e-45f9-9163-b97320c6881a.json │ │ ├── TPP_BankSearchResponse-affe-1-2.json │ │ ├── TPP_LIST_ACCOUNTS.json │ │ ├── TPP_LIST_TRANSACTIONS.json │ │ ├── application-service-account.yml │ │ ├── application.yml │ │ ├── init.sql │ │ └── wiremock │ │ └── gmail-oauth │ │ ├── __files │ │ └── body-token-RbOSS.json │ │ └── mappings │ │ └── mapping-token-RbOSS.json ├── fintech-ui │ ├── .browserslist │ ├── .dockerignore │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── Dockerfile │ ├── README.md │ ├── angular.json │ ├── cypress.config.ts │ ├── cypress │ │ ├── e2e │ │ │ └── spec.cy.ts │ │ ├── fixtures │ │ │ └── example.json │ │ ├── support │ │ │ ├── commands.ts │ │ │ ├── component-index.html │ │ │ ├── component.ts │ │ │ └── e2e.ts │ │ └── tsconfig.json │ ├── docker-root │ │ ├── entry.sh │ │ └── etc │ │ │ └── nginx │ │ │ └── conf.d │ │ │ └── default.conf.erb │ ├── eslint.config.js │ ├── karma.conf.js │ ├── package.json │ ├── proxy-conf-dev-backend.js │ ├── proxy-dev.conf.json │ ├── proxy-docker.conf.json │ ├── proxy.conf.json │ ├── src │ │ ├── app │ │ │ ├── api │ │ │ │ ├── .gitignore │ │ │ │ ├── .openapi-generator-ignore │ │ │ │ ├── .openapi-generator │ │ │ │ │ └── VERSION │ │ │ │ ├── README.md │ │ │ │ ├── api.module.ts │ │ │ │ ├── api │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── finTechAccountInformation.service.ts │ │ │ │ │ ├── finTechAuthorization.service.ts │ │ │ │ │ ├── finTechBankSearch.service.ts │ │ │ │ │ ├── finTechGmailAuthentication.service.ts │ │ │ │ │ ├── finTechOauth2Authentication.service.ts │ │ │ │ │ ├── fintechRetrieveAllSinglePayments.service.ts │ │ │ │ │ ├── fintechRetrieveConsent.service.ts │ │ │ │ │ └── fintechSinglePaymentInitiation.service.ts │ │ │ │ ├── configuration.ts │ │ │ │ ├── encoder.ts │ │ │ │ ├── git_push.sh │ │ │ │ ├── index.ts │ │ │ │ ├── model-classes │ │ │ │ │ └── ClassSinglePaymentInitiationRequest.ts │ │ │ │ ├── model │ │ │ │ │ ├── accountBalance.ts │ │ │ │ │ ├── accountDetails.ts │ │ │ │ │ ├── accountList.ts │ │ │ │ │ ├── accountReference.ts │ │ │ │ │ ├── accountReport.ts │ │ │ │ │ ├── accountStatus.ts │ │ │ │ │ ├── address.ts │ │ │ │ │ ├── aisAccountAccessInfo.ts │ │ │ │ │ ├── aisConsentRequest.ts │ │ │ │ │ ├── amount.ts │ │ │ │ │ ├── analyticsReportDetails.ts │ │ │ │ │ ├── balanceAccount.ts │ │ │ │ │ ├── bankDescriptor.ts │ │ │ │ │ ├── bankProfile.ts │ │ │ │ │ ├── errorResponse.ts │ │ │ │ │ ├── generalError.ts │ │ │ │ │ ├── hrefType.ts │ │ │ │ │ ├── inlineResponse200.ts │ │ │ │ │ ├── inlineResponse2001.ts │ │ │ │ │ ├── inlineResponse2002.ts │ │ │ │ │ ├── inlineResponse2003.ts │ │ │ │ │ ├── inlineResponse2004.ts │ │ │ │ │ ├── linksAccountDetails.ts │ │ │ │ │ ├── loginRequest.ts │ │ │ │ │ ├── models.ts │ │ │ │ │ ├── paymentInitiationWithStatusResponse.ts │ │ │ │ │ ├── psuMessage.ts │ │ │ │ │ ├── purposeCode.ts │ │ │ │ │ ├── reportExchangeRate.ts │ │ │ │ │ ├── searchInput.ts │ │ │ │ │ ├── searchMaxResult.ts │ │ │ │ │ ├── searchStartIndex.ts │ │ │ │ │ ├── searchTotalResult.ts │ │ │ │ │ ├── singlePaymentInitiationRequest.ts │ │ │ │ │ ├── transactionDetails.ts │ │ │ │ │ ├── transactionsResponse.ts │ │ │ │ │ └── userProfile.ts │ │ │ │ └── variables.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.routes.ts │ │ │ ├── bank-search │ │ │ │ ├── bank-search.component.html │ │ │ │ ├── bank-search.component.scss │ │ │ │ ├── bank-search.component.spec.ts │ │ │ │ ├── bank-search.component.ts │ │ │ │ └── services │ │ │ │ │ ├── bank-profile.service.spec.ts │ │ │ │ │ ├── bank-profile.service.ts │ │ │ │ │ ├── bank-search.service.spec.ts │ │ │ │ │ └── bank-search.service.ts │ │ │ ├── bank │ │ │ │ ├── bank.component.html │ │ │ │ ├── bank.component.scss │ │ │ │ ├── bank.component.spec.ts │ │ │ │ ├── bank.component.ts │ │ │ │ ├── bank.routes.ts │ │ │ │ ├── common │ │ │ │ │ ├── account-card │ │ │ │ │ │ ├── account-card.component.html │ │ │ │ │ │ ├── account-card.component.scss │ │ │ │ │ │ ├── account-card.component.spec.ts │ │ │ │ │ │ └── account-card.component.ts │ │ │ │ │ ├── payment-card │ │ │ │ │ │ ├── payment-card.component.html │ │ │ │ │ │ ├── payment-card.component.spec.ts │ │ │ │ │ │ └── payment-card.component.ts │ │ │ │ │ ├── payment-transaction-card.scss │ │ │ │ │ └── transaction-card │ │ │ │ │ │ ├── transaction-card.component.html │ │ │ │ │ │ ├── transaction-card.component.spec.ts │ │ │ │ │ │ └── transaction-card.component.ts │ │ │ │ ├── list-accounts │ │ │ │ │ ├── list-accounts.component.html │ │ │ │ │ ├── list-accounts.component.scss │ │ │ │ │ ├── list-accounts.component.ts │ │ │ │ │ ├── list-accounts.routes.ts │ │ │ │ │ └── list.accounts.component.spec.ts │ │ │ │ ├── list-transactions │ │ │ │ │ ├── list-transactions.component.html │ │ │ │ │ ├── list-transactions.component.scss │ │ │ │ │ ├── list-transactions.component.ts │ │ │ │ │ └── list.transactions.component.spec.ts │ │ │ │ ├── payment │ │ │ │ │ ├── payment-account-payments │ │ │ │ │ │ ├── payment-account-payments.component.html │ │ │ │ │ │ ├── payment-account-payments.component.scss │ │ │ │ │ │ ├── payment-account-payments.component.spec.ts │ │ │ │ │ │ └── payment-account-payments.component.ts │ │ │ │ │ ├── payment-account │ │ │ │ │ │ ├── payment-account.component.html │ │ │ │ │ │ ├── payment-account.component.scss │ │ │ │ │ │ ├── payment-account.component.spec.ts │ │ │ │ │ │ └── payment-account.component.ts │ │ │ │ │ ├── payment-accounts │ │ │ │ │ │ ├── payment-accounts.component.html │ │ │ │ │ │ ├── payment-accounts.component.scss │ │ │ │ │ │ ├── payment-accounts.component.spec.ts │ │ │ │ │ │ └── payment-accounts.component.ts │ │ │ │ │ ├── payment-confirm │ │ │ │ │ │ ├── confirm.component.html │ │ │ │ │ │ ├── confirm.component.scss │ │ │ │ │ │ ├── confirm.component.spec.ts │ │ │ │ │ │ ├── confirm.component.ts │ │ │ │ │ │ └── confirm.data.ts │ │ │ │ │ ├── payment-initiate │ │ │ │ │ │ ├── initiate.component.html │ │ │ │ │ │ ├── initiate.component.scss │ │ │ │ │ │ ├── initiate.component.spec.ts │ │ │ │ │ │ └── initiate.component.ts │ │ │ │ │ ├── payment-result │ │ │ │ │ │ ├── result.component.html │ │ │ │ │ │ ├── result.component.scss │ │ │ │ │ │ ├── result.component.spec.ts │ │ │ │ │ │ └── result.component.ts │ │ │ │ │ ├── payment.component.html │ │ │ │ │ ├── payment.component.scss │ │ │ │ │ ├── payment.component.spec.ts │ │ │ │ │ ├── payment.component.ts │ │ │ │ │ └── payment.routes.ts │ │ │ │ ├── redirect-page │ │ │ │ │ ├── redirect-page.component.html │ │ │ │ │ ├── redirect-page.component.scss │ │ │ │ │ ├── redirect-page.component.spec.ts │ │ │ │ │ ├── redirect-page.component.ts │ │ │ │ │ └── redirect-struct.ts │ │ │ │ ├── services │ │ │ │ │ ├── ais.service.spec.ts │ │ │ │ │ ├── ais.service.ts │ │ │ │ │ ├── consent-authorization.service.spec.ts │ │ │ │ │ └── consent-authorization.service.ts │ │ │ │ ├── settings │ │ │ │ │ ├── settings.component.html │ │ │ │ │ ├── settings.component.scss │ │ │ │ │ ├── settings.component.spec.ts │ │ │ │ │ └── settings.component.ts │ │ │ │ └── sidebar │ │ │ │ │ ├── sidebar.component.html │ │ │ │ │ ├── sidebar.component.scss │ │ │ │ │ ├── sidebar.component.spec.ts │ │ │ │ │ └── sidebar.component.ts │ │ │ ├── common │ │ │ │ ├── modal-card │ │ │ │ │ ├── modal-card.component.html │ │ │ │ │ ├── modal-card.component.scss │ │ │ │ │ ├── modal-card.component.spec.ts │ │ │ │ │ └── modal-card.component.ts │ │ │ │ ├── navbar │ │ │ │ │ ├── navbar.component.html │ │ │ │ │ ├── navbar.component.scss │ │ │ │ │ ├── navbar.component.spec.ts │ │ │ │ │ └── navbar.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.scss │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── shared.module.ts │ │ │ ├── errorsHandler │ │ │ │ ├── error.service.spec.ts │ │ │ │ ├── error.service.ts │ │ │ │ ├── global-errors-handler.ts │ │ │ │ └── info │ │ │ │ │ ├── info-options.ts │ │ │ │ │ ├── info.component.html │ │ │ │ │ ├── info.component.scss │ │ │ │ │ ├── info.component.ts │ │ │ │ │ └── info.service.ts │ │ │ ├── guards │ │ │ │ ├── auth.guard.spec.ts │ │ │ │ ├── auth.guard.ts │ │ │ │ └── guest.guard.ts │ │ │ ├── interceptors │ │ │ │ └── auth.interceptor.ts │ │ │ ├── invalid-oauth2 │ │ │ │ ├── forbidden-oauth2.component.html │ │ │ │ ├── forbidden-oauth2.component.scss │ │ │ │ └── forbidden-oauth2.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.scss │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ ├── models │ │ │ │ ├── LogException.ts │ │ │ │ ├── consts.ts │ │ │ │ ├── credentials.model.ts │ │ │ │ ├── modalCard.model.ts │ │ │ │ ├── routing-path.model.ts │ │ │ │ └── timer.model.ts │ │ │ ├── oauth2-login │ │ │ │ ├── oauth2-login.component.html │ │ │ │ ├── oauth2-login.component.scss │ │ │ │ └── oauth2-login.component.ts │ │ │ ├── redirect-after-consent-denied │ │ │ │ ├── redirect-after-consent-denied.component.html │ │ │ │ ├── redirect-after-consent-denied.component.scss │ │ │ │ └── redirect-after-consent-denied.component.ts │ │ │ ├── redirect-after-consent │ │ │ │ ├── redirect-after-consent.component.html │ │ │ │ ├── redirect-after-consent.component.scss │ │ │ │ └── redirect-after-consent.component.ts │ │ │ ├── redirect-after-payment-denied │ │ │ │ ├── redirect-after-payment-denied.component.html │ │ │ │ ├── redirect-after-payment-denied.component.scss │ │ │ │ └── redirect-after-payment-denied.component.ts │ │ │ ├── redirect-after-payment │ │ │ │ ├── redirect-after-payment.component.html │ │ │ │ ├── redirect-after-payment.component.scss │ │ │ │ └── redirect-after-payment.component.ts │ │ │ ├── services │ │ │ │ ├── auth.service.spec.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── document-cookie.service.spec.ts │ │ │ │ ├── document-cookie.service.ts │ │ │ │ ├── route-utils.service.ts │ │ │ │ ├── session.service.spec.ts │ │ │ │ ├── simple-timer.ts │ │ │ │ ├── storage.service.ts │ │ │ │ ├── timer.service.spec.ts │ │ │ │ └── timer.service.ts │ │ │ └── session-expired │ │ │ │ ├── session-expired.component.html │ │ │ │ ├── session-expired.component.scss │ │ │ │ └── session-expired.component.ts │ │ ├── assets │ │ │ ├── custom │ │ │ │ └── favicon.png │ │ │ ├── fonts │ │ │ │ └── Geometric │ │ │ │ │ ├── URWGeometric-Light.otf │ │ │ │ │ ├── URWGeometric-Medium.otf │ │ │ │ │ ├── URWGeometric-Regular.otf │ │ │ │ │ └── URWGeometric-SemiBold.otf │ │ │ ├── icons │ │ │ │ ├── 1200px-N26_(Direktbank)_2018_logo.svg.svg │ │ │ │ ├── 1400-1400-icon-spardaapp_365w.svg │ │ │ │ ├── Sparkasse.svg.svg │ │ │ │ ├── Volksbank_Logo.svg │ │ │ │ ├── bank-search.png │ │ │ │ ├── btn_google_light_normal_ios.svg │ │ │ │ ├── card_payment.png │ │ │ │ ├── icons8-bank_cards.svg │ │ │ │ ├── icons8-checked.svg │ │ │ │ ├── icons8-maintenance.svg │ │ │ │ ├── icons8-network 2.png │ │ │ │ ├── icons8-sent.svg │ │ │ │ └── receive_dollar.png │ │ │ └── themes │ │ │ │ ├── _bootstrap-overrides.scss │ │ │ │ ├── _fonts.scss │ │ │ │ └── _variables.scss │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ └── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json └── pom.xml ├── firefly-exporter ├── Dockerfile ├── README.md ├── firefly-docker-demo │ ├── .env │ ├── README.md │ └── docker-compose.yml ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── fireflyexporter │ │ │ ├── FireflyExporterApplication.java │ │ │ ├── client │ │ │ ├── FeignTppErrorDecoder.java │ │ │ ├── FireFlyClientConfig.java │ │ │ ├── FireflyAccountsApiClient.java │ │ │ ├── FireflyTransactionsApiClient.java │ │ │ ├── ObjectMapperConfig.java │ │ │ ├── TppAisClient.java │ │ │ ├── TppBankSearchClient.java │ │ │ ├── TppClientConfig.java │ │ │ └── TppConsentConfirmationClient.java │ │ │ ├── config │ │ │ ├── ApiConfig.java │ │ │ ├── DateTimeFormatConfig.java │ │ │ ├── FireFlyConfig.java │ │ │ ├── HeaderFields.java │ │ │ ├── OpenBankingConfig.java │ │ │ └── OpenBankingRequestSigningConfig.java │ │ │ ├── controller │ │ │ ├── exceptions │ │ │ │ └── ConsentException.java │ │ │ ├── mvc │ │ │ │ └── ViewController.java │ │ │ └── rest │ │ │ │ ├── BankConsentController.java │ │ │ │ ├── Consts.java │ │ │ │ ├── ExportController.java │ │ │ │ ├── ExportableAccountsController.java │ │ │ │ └── SearchController.java │ │ │ ├── dto │ │ │ ├── AnalyzeableTransaction.java │ │ │ └── ExportableAccount.java │ │ │ ├── entity │ │ │ ├── AccountExportJob.java │ │ │ ├── BankConsent.java │ │ │ ├── RedirectState.java │ │ │ └── TransactionExportJob.java │ │ │ ├── repository │ │ │ ├── AccountExportJobRepository.java │ │ │ ├── BankConsentRepository.java │ │ │ ├── RedirectStateRepository.java │ │ │ └── TransactionExportJobRepository.java │ │ │ └── service │ │ │ ├── AccountExportService.java │ │ │ ├── ConsentService.java │ │ │ ├── ExportableAccountService.java │ │ │ ├── FireFlyAccountExporter.java │ │ │ ├── FireFlyTokenProvider.java │ │ │ ├── FireFlyTransactionExporter.java │ │ │ ├── TransactionCategorizer.java │ │ │ └── TransactionExportService.java │ └── resources │ │ ├── application.yml │ │ ├── categorization │ │ ├── rules-de.drl │ │ ├── rules-en.drl │ │ └── rules-sandbox.drl │ │ ├── firefly-exporter-migration │ │ ├── master.xml │ │ └── migrations │ │ │ └── 0000-create-firefly-exporter-iii-tables.xml │ │ ├── firefly │ │ └── firefly-api.yml │ │ ├── migrator │ │ └── migrator.groovy │ │ ├── static │ │ ├── css │ │ │ └── style.css │ │ ├── favicon.ico │ │ └── js │ │ │ ├── import.js │ │ │ └── search.js │ │ └── templates │ │ └── firefly-uploader.html │ └── test │ └── java │ └── de │ └── adorsys │ └── opba │ └── fireflyexporter │ └── FireflyExporterApplicationTests.java ├── generate_site_script.sh ├── helpers └── docker-wiremock.yml ├── how-to-start-with-project ├── README.md └── xs2a-sandbox-only │ ├── .env │ ├── docker-compose-debug-on.yml │ └── docker-compose.yml ├── index.html ├── last-module-codecoverage ├── pom.xml └── src │ └── main │ ├── dtd │ └── jacoco │ │ └── report.dtd │ └── xsl │ └── analyse.jacoco.result.xsl ├── lombok.config ├── mkdocs.yml ├── mvnw ├── mvnw.cmd ├── opba-admin-management ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── adorsys │ └── opba │ └── adminapi │ └── service │ └── AdminApiService.java ├── opba-admin-rest-api ├── pom.xml └── src │ └── main │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── adminapi │ │ └── config │ │ ├── AdminApiConfig.java │ │ ├── Const.java │ │ └── EnableAdminApi.java │ └── resources │ └── static │ └── tpp_admin_api.yml ├── opba-admin-rest-impl ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── adorsys │ └── opba │ └── adminapi │ ├── config │ ├── AdminApiSecurityFilter.java │ └── AdminApiSecurityFilterConfig.java │ └── controller │ └── AdminApiController.java ├── opba-analytics ├── opba-analytics-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── adorsys │ │ └── opba │ │ └── analytics │ │ ├── GlobalConst.java │ │ ├── TransactionAnalyzer.java │ │ └── dto │ │ └── AnalyticsRequest.java └── pom.xml ├── opba-api-security-signer-generator ├── README.md ├── opba-api-security-signer-generator-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── adorsys │ │ └── opba │ │ └── api │ │ └── security │ │ └── generator │ │ └── api │ │ ├── DataToSignProvider.java │ │ ├── GeneratedDataToSignNormalizer.java │ │ ├── MatcherUtil.java │ │ ├── RequestDataToSignNormalizer.java │ │ └── RequestToSign.java ├── opba-api-security-signer-generator-impl │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── api │ │ │ └── security │ │ │ └── generator │ │ │ ├── DataToSignGeneratingProcessor.java │ │ │ └── normalizer │ │ │ ├── DataToSignProviderGenerator.java │ │ │ ├── RequestDataToGeneratorGenerator.java │ │ │ └── RequestDataToSignNormalizerGenerator.java │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── api │ │ │ └── security │ │ │ └── RequestNormalizerGenerationTest.java │ │ └── resources │ │ ├── DataToSignConfigurer.java │ │ ├── api │ │ └── tpp_banking_api_ais.yml │ │ └── expected │ │ ├── ExpectedDataToSignProvider.java │ │ └── ExpectedGetTransactions.java └── pom.xml ├── opba-api-security ├── pom.xml └── src │ ├── main │ └── java │ │ └── de │ │ └── adorsys │ │ └── opba │ │ └── api │ │ └── security │ │ ├── SecurityGlobalConst.java │ │ ├── external │ │ ├── EnableOpenBankingRequestSigning.java │ │ ├── config │ │ │ └── RequestSigningConfig.java │ │ ├── domain │ │ │ ├── FilterValidationHeaderValues.java │ │ │ ├── HttpHeaders.java │ │ │ └── MultiReadHttpServletRequest.java │ │ └── service │ │ │ ├── RequestSigningService.java │ │ │ └── RsaJwtsSigningServiceImpl.java │ │ ├── internal │ │ ├── EnableSignatureBasedApiSecurity.java │ │ ├── EnableTokenBasedApiSecurity.java │ │ ├── config │ │ │ ├── AuthorizationSessionKeyConfig.java │ │ │ ├── ConfigConst.java │ │ │ ├── CookieProperties.java │ │ │ ├── RequestFilterConfig.java │ │ │ ├── TppTokenConfig.java │ │ │ └── TppTokenProperties.java │ │ ├── filter │ │ │ ├── HttpBodyCachingFilter.java │ │ │ ├── RequestCookieFilter.java │ │ │ └── RequestSignatureValidationFilter.java │ │ └── service │ │ │ ├── CookieBuilderTemplate.java │ │ │ ├── RequestVerifyingService.java │ │ │ ├── RsaJwtsVerifyingServiceImpl.java │ │ │ └── TokenBasedAuthService.java │ │ └── requestsigner │ │ └── DataToSignNormalizerConfigurer.java │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── api │ │ └── security │ │ └── service │ │ └── TokenSignVerifyTest.java │ └── resources │ └── application-test.yml ├── opba-auth-rest-api ├── pom.xml └── src │ └── main │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── tppauthapi │ │ └── config │ │ ├── EnableTppAuthApi.java │ │ └── TppAuthApiConfig.java │ └── resources │ └── static │ └── tpp_auth_api.yml ├── opba-auth-rest-impl ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── tppauthapi │ │ │ ├── config │ │ │ └── TppPsuAuthConfig.java │ │ │ └── controller │ │ │ ├── GenericControllerAdvice.java │ │ │ └── PsuAuthController.java │ └── resources │ │ └── logback.xml │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── tppauthapi │ │ ├── config │ │ └── ApplicationTest.java │ │ └── controller │ │ └── PsuAuthControllerTest.java │ └── resources │ ├── application.yml │ ├── example-keyset.json │ └── logback-test.xml ├── opba-banking-protocol-facade ├── README.md ├── docs │ ├── consent-sharing │ │ └── consent-sharing.png │ └── facade-ideal-result-mappings.svg ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── facade │ │ │ ├── config │ │ │ ├── ConfigConst.java │ │ │ ├── FacadeGenericConfig.java │ │ │ ├── FacadeTransientDataConfig.java │ │ │ ├── NoSecurityConfig.java │ │ │ ├── SecurityConfig.java │ │ │ ├── auth │ │ │ │ ├── FacadeConsentAuthConfig.java │ │ │ │ ├── PasswordGenRandomConfig.java │ │ │ │ └── UriExpandConst.java │ │ │ └── encryption │ │ │ │ ├── ASN1ObjectIdentifierConverter.java │ │ │ │ ├── CmsEncSpec.java │ │ │ │ ├── CmsEncryptionOper.java │ │ │ │ ├── ConsentAuthorizationEncryptionServiceProvider.java │ │ │ │ ├── ConsentSpecSecretKeyConfig.java │ │ │ │ ├── DatasafeConfigurer.java │ │ │ │ ├── EncryptionConfigurationConfig.java │ │ │ │ ├── EncryptionProviderConfig.java │ │ │ │ ├── EncryptionWithInitVectorOper.java │ │ │ │ ├── FintechOnlyEncryptionServiceProvider.java │ │ │ │ ├── FintechOnlyKeyPairConfig.java │ │ │ │ ├── PsuEncryptionServiceProvider.java │ │ │ │ ├── PsuKeyPairConfig.java │ │ │ │ ├── SecretKeyWithIv.java │ │ │ │ ├── SymmetricEncSpec.java │ │ │ │ ├── datasafe │ │ │ │ ├── BaseDatasafeDbStorageService.java │ │ │ │ ├── DatasafeDataStorage.java │ │ │ │ └── DatasafeMetadataStorage.java │ │ │ │ └── impl │ │ │ │ ├── FintechPsuAspspTuple.java │ │ │ │ ├── FintechUserAuthSessionTuple.java │ │ │ │ ├── PairIdPsuAspspTuple.java │ │ │ │ ├── fintech │ │ │ │ ├── FintechConsentSpecDatasafeStorage.java │ │ │ │ ├── FintechConsentSpecSecureStorage.java │ │ │ │ ├── FintechDatasafeStorage.java │ │ │ │ ├── FintechOnlyPrvKeyTuple.java │ │ │ │ └── FintechSecureStorage.java │ │ │ │ └── psu │ │ │ │ ├── PsuDatasafeStorage.java │ │ │ │ └── PsuSecureStorage.java │ │ │ ├── dto │ │ │ ├── ActionWithProtocolId.java │ │ │ ├── PubAndPrivKey.java │ │ │ └── result │ │ │ │ └── torest │ │ │ │ ├── FacadeResult.java │ │ │ │ ├── redirectable │ │ │ │ ├── FacadeRedirectErrorResult.java │ │ │ │ ├── FacadeRedirectResult.java │ │ │ │ ├── FacadeResultHeaders.java │ │ │ │ ├── FacadeResultRedirectable.java │ │ │ │ ├── FacadeRuntimeErrorResult.java │ │ │ │ ├── FacadeRuntimeErrorResultWithOwnResponseCode.java │ │ │ │ └── FacadeStartAuthorizationResult.java │ │ │ │ └── staticres │ │ │ │ ├── FacadeErrorResult.java │ │ │ │ └── FacadeSuccessResult.java │ │ │ ├── exceptions │ │ │ ├── NoProtocolRegisteredException.java │ │ │ ├── PsuDoesNotExist.java │ │ │ ├── PsuRegisterException.java │ │ │ └── PsuWrongCredentials.java │ │ │ ├── result │ │ │ └── InternalAuthorizationRequiredResult.java │ │ │ ├── services │ │ │ ├── AuthSessionHandler.java │ │ │ ├── EncryptionKeySerde.java │ │ │ ├── FacadeOptionalService.java │ │ │ ├── FacadeService.java │ │ │ ├── GetAuthorizationStatusService.java │ │ │ ├── InternalContext.java │ │ │ ├── ProtocolResultHandler.java │ │ │ ├── ProtocolSelector.java │ │ │ ├── ProtocolWithCtx.java │ │ │ ├── ais │ │ │ │ ├── DeleteConsentService.java │ │ │ │ ├── GetAisAuthorizationStatusService.java │ │ │ │ ├── ListAccountsService.java │ │ │ │ ├── ListTransactionsService.java │ │ │ │ └── UpdateExternalAisSessionService.java │ │ │ ├── authorization │ │ │ │ ├── DenyAuthorizationService.java │ │ │ │ ├── FromAspspRedirectHandler.java │ │ │ │ ├── GetAuthorizationStateService.java │ │ │ │ ├── OnLoginService.java │ │ │ │ ├── PsuLoginService.java │ │ │ │ ├── UpdateAuthorizationService.java │ │ │ │ └── internal │ │ │ │ │ └── psuauth │ │ │ │ │ └── PsuFintechAssociationService.java │ │ │ ├── context │ │ │ │ ├── NoRedirectCodeValidationServiceContextProvider.java │ │ │ │ ├── ServiceContextProvider.java │ │ │ │ ├── ServiceContextProviderForAspsp.java │ │ │ │ └── ServiceContextProviderForFintech.java │ │ │ ├── fintech │ │ │ │ ├── FintechAuthenticator.java │ │ │ │ └── registrar │ │ │ │ │ └── FintechRegistrar.java │ │ │ ├── password │ │ │ │ └── FintechUserPasswordGenerator.java │ │ │ ├── pis │ │ │ │ ├── GetPaymentInformationService.java │ │ │ │ ├── GetPaymentStatusService.java │ │ │ │ ├── GetPisAuthorizationStatusService.java │ │ │ │ └── SinglePaymentService.java │ │ │ ├── psu │ │ │ │ └── PsuAuthService.java │ │ │ └── scoped │ │ │ │ ├── ConsentAccessUtil.java │ │ │ │ ├── FieldsToIgnoreLoaderImpl.java │ │ │ │ ├── IgnoreFieldsLoaderFactory.java │ │ │ │ ├── IgnoreValidationRuleImpl.java │ │ │ │ ├── RequestScopedProvider.java │ │ │ │ ├── consentaccess │ │ │ │ ├── AnonymousPsuConsentAccess.java │ │ │ │ ├── ConsentAccessFactory.java │ │ │ │ ├── FintechConsentAccessImpl.java │ │ │ │ ├── ProtocolFacingConsentImpl.java │ │ │ │ └── PsuConsentAccess.java │ │ │ │ └── paymentaccess │ │ │ │ ├── AnonymousPsuPaymentAccess.java │ │ │ │ ├── FintechPaymentAccess.java │ │ │ │ ├── PaymentAccessFactory.java │ │ │ │ ├── ProtocolFacingPaymentImpl.java │ │ │ │ └── PsuPaymentAccess.java │ │ │ └── util │ │ │ └── logresolver │ │ │ ├── FacadeLogResolver.java │ │ │ └── domain │ │ │ ├── ActionLog.java │ │ │ ├── ProtocolWithCtxLog.java │ │ │ ├── context │ │ │ └── ServiceContextLog.java │ │ │ ├── request │ │ │ ├── FacadeServiceableRequestLog.java │ │ │ └── RequestLog.java │ │ │ └── response │ │ │ └── ResultLog.java │ └── resources │ │ ├── example-keyset.json │ │ └── mock-ais-get-accounts-response.json │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── protocol │ │ └── facade │ │ ├── config │ │ ├── ApplicationTest.java │ │ └── encryption │ │ │ └── DatasafeStorageIntegrationCheckTest.java │ │ └── services │ │ ├── DbDropper.java │ │ ├── ais │ │ ├── ListAccountsServiceTest.java │ │ ├── ListTransactionsServiceTest.java │ │ └── ServiceContextProviderTest.java │ │ └── authorization │ │ ├── AbstractServiceSessionTest.java │ │ └── ServiceAndAuthorizationSessionTest.java │ └── resources │ ├── application-test.yml │ ├── logback-test.xml │ └── sample-qwac.keystore ├── opba-banking-rest-api-ymls ├── pom.xml └── src │ └── main │ └── resources │ └── static │ ├── tpp_banking_api_ais.yml │ ├── tpp_banking_api_bank_info.yml │ ├── tpp_banking_api_bank_search.yml │ ├── tpp_banking_api_callback.yml │ ├── tpp_banking_api_commons.yml │ ├── tpp_banking_api_orchestrated_pis.yml │ ├── tpp_banking_api_pis.yml │ └── tpp_banking_api_token.yml ├── opba-banking-rest-api ├── .gitignore ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── adorsys │ └── opba │ └── tppbankingapi │ └── config │ ├── BankingApiConfig.java │ ├── ConfigConst.java │ ├── DateTimeFormatConfig.java │ └── EnableBankingApi.java ├── opba-banking-rest-impl ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── tppbankingapi │ │ │ ├── Const.java │ │ │ ├── config │ │ │ ├── ApiConsumerConfigImpl.java │ │ │ ├── RequestVerifyingConfig.java │ │ │ └── TppTokenPropertiesConfig.java │ │ │ ├── controller │ │ │ ├── BankingGenericControllerAdvice.java │ │ │ ├── MissingDataProtectionPassword.java │ │ │ ├── PasswordExtractingUtil.java │ │ │ ├── TppBankInfoController.java │ │ │ ├── TppBankSearchController.java │ │ │ ├── TppBankingApiAisController.java │ │ │ ├── TppBankingApiOrchestratedPayment.java │ │ │ ├── TppBankingApiPisController.java │ │ │ ├── TppBankingApiPisInfoController.java │ │ │ ├── TppBankingCallBackController.java │ │ │ ├── TppBankingConsentConfirmationController.java │ │ │ ├── TppBankingPaymentConfirmationController.java │ │ │ └── UuidMapper.java │ │ │ └── service │ │ │ ├── BankInfoService.java │ │ │ ├── BankService.java │ │ │ ├── CallbackContextBridge.java │ │ │ ├── CallbackService.java │ │ │ ├── ConsentConfirmationService.java │ │ │ ├── PaymentConfirmationService.java │ │ │ ├── PaymentOrchestratedService.java │ │ │ └── SessionService.java │ └── resources │ │ └── logback.xml │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ ├── db │ │ └── domain │ │ │ └── MappersTest.java │ │ └── tppbankingapi │ │ ├── ApplicationTest.java │ │ ├── BaseMockitoTest.java │ │ ├── TestProfiles.java │ │ ├── config │ │ └── FintechRequestSigningTestConfig.java │ │ ├── controller │ │ ├── BaseTppBankSearchControllerTest.java │ │ ├── SignaturePostProcessor.java │ │ ├── TestBankSearchPerformance.java │ │ ├── TestTppBankInfoController.java │ │ ├── TestTppBankSearchController.java │ │ └── TppBankSearchControllerFieldsNotRevealedTest.java │ │ ├── dto │ │ └── TestResult.java │ │ ├── mapper │ │ └── FacadeResponseBodyToRestBodyMapperTest.java │ │ ├── service │ │ ├── BankInfoServiceTest.java │ │ └── BankServiceTest.java │ │ └── services │ │ └── StatisticService.java │ └── resources │ ├── application-test-one-time-postgres-disk-volume.yml │ ├── application-test-one-time-postgres-ramfs.yml │ ├── application-test-search.yml │ ├── application.yml │ ├── example-keyset.json │ ├── logback-test.xml │ └── mapper-test-fixtures │ ├── facade_to_rest_response_mapper_accounts_input.json │ ├── facade_to_rest_response_mapper_accounts_output.json │ ├── facade_to_rest_response_mapper_transactions_input.json │ └── facade_to_rest_response_mapper_transactions_output.json ├── opba-consent-rest-api ├── README.md ├── flow.puml ├── pom.xml └── src │ └── main │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── consentapi │ │ └── config │ │ ├── ConfigConst.java │ │ ├── ConsentApiConfig.java │ │ └── EnableConsentApi.java │ └── resources │ └── static │ ├── img │ └── open-banking-consent-authorisation-api.png │ └── tpp_consent_api.yml ├── opba-consent-rest-impl ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── consentapi │ │ │ ├── Const.java │ │ │ ├── config │ │ │ └── ConsentAuthConfig.java │ │ │ ├── controller │ │ │ ├── AuthStateConsentServiceController.java │ │ │ ├── FromAspspConsentServiceController.java │ │ │ └── UpdateAuthConsentServiceController.java │ │ │ └── service │ │ │ ├── FromAspspMapper.java │ │ │ └── mapper │ │ │ ├── AisConsentMapper.java │ │ │ ├── AisExtrasMapper.java │ │ │ └── PisSinglePaymentMapper.java │ └── resources │ │ └── static │ │ └── img │ │ └── open-banking-consent-authorisation-api.png │ └── test │ └── java │ └── de │ └── adorsys │ └── opba │ └── consentapi │ └── service │ └── mapper │ └── AisConsentMapperTest.java ├── opba-db ├── README.md ├── mock-data-generate.groovy ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── db │ │ │ ├── config │ │ │ ├── BankingPersistenceConfig.java │ │ │ └── EnableBankingPersistence.java │ │ │ ├── domain │ │ │ ├── converter │ │ │ │ ├── ResultContentTypeConverter.java │ │ │ │ ├── ScaApproachConverter.java │ │ │ │ └── SupportedConsentTypeConverter.java │ │ │ ├── entity │ │ │ │ ├── Bank.java │ │ │ │ ├── BankAction.java │ │ │ │ ├── BankProfile.java │ │ │ │ ├── BankSubAction.java │ │ │ │ ├── BasePubKey.java │ │ │ │ ├── Consent.java │ │ │ │ ├── DatasafeConfig.java │ │ │ │ ├── IdAssignable.java │ │ │ │ ├── IgnoreValidationRule.java │ │ │ │ ├── Payment.java │ │ │ │ ├── ValidationRule.java │ │ │ │ ├── baba.xml │ │ │ │ ├── fintech │ │ │ │ │ ├── Fintech.java │ │ │ │ │ ├── FintechConsentSpec.java │ │ │ │ │ ├── FintechPrvKey.java │ │ │ │ │ ├── FintechPsuAspspKey.java │ │ │ │ │ ├── FintechPsuAspspPrvKey.java │ │ │ │ │ ├── FintechPsuAspspPrvKeyInbox.java │ │ │ │ │ ├── FintechPubKey.java │ │ │ │ │ └── FintechUser.java │ │ │ │ ├── helpers │ │ │ │ │ └── UuidMapper.java │ │ │ │ ├── psu │ │ │ │ │ ├── Psu.java │ │ │ │ │ ├── PsuAspspPrvKey.java │ │ │ │ │ └── PsuAspspPubKey.java │ │ │ │ └── sessions │ │ │ │ │ ├── AuthSession.java │ │ │ │ │ ├── ServiceSession.java │ │ │ │ │ └── SessionFromAspsp.java │ │ │ └── generators │ │ │ │ └── AssignedUuidGenerator.java │ │ │ ├── hibernate │ │ │ └── PrefixAndSnakeCasePhysicalNamingStrategy.java │ │ │ └── repository │ │ │ ├── BankInfoRepositoryImpl.java │ │ │ ├── BankProfileRepositoryImpl.java │ │ │ ├── BankSearchRepositoryImpl.java │ │ │ └── jpa │ │ │ ├── AuthorizationSessionRepository.java │ │ │ ├── BankActionRepository.java │ │ │ ├── BankProfileJpaRepository.java │ │ │ ├── BankRepository.java │ │ │ ├── ConsentRepository.java │ │ │ ├── DatasafeConfigRepository.java │ │ │ ├── IgnoreValidationRuleRepository.java │ │ │ ├── PaymentRepository.java │ │ │ ├── ServiceSessionRepository.java │ │ │ ├── SessionRepository.java │ │ │ ├── fintech │ │ │ ├── FintechConsentSpecRepository.java │ │ │ ├── FintechOnlyPrvKeyRepository.java │ │ │ ├── FintechOnlyPubKeyRepository.java │ │ │ ├── FintechPsuAspspPrvKeyInboxRepository.java │ │ │ ├── FintechPsuAspspPrvKeyRepository.java │ │ │ ├── FintechRepository.java │ │ │ └── FintechUserRepository.java │ │ │ └── psu │ │ │ ├── PsuAspspPrvKeyRepository.java │ │ │ ├── PsuAspspPubKeyRepository.java │ │ │ └── PsuRepository.java │ └── resources │ │ ├── init.sql │ │ └── migration │ │ ├── master.xml │ │ └── migrations │ │ ├── 0000-create-table-banks.xml │ │ ├── 0001-init-protocol-facade.xml │ │ ├── 0002-mock-data.xml │ │ ├── 0003-add-staging-bank-configuration.xml │ │ ├── 0004-add-skip-auth-for-deutsche-bank.xml │ │ ├── 0005-enable-finapi-test-bank.xml │ │ ├── 0009-add-consent-cache.xml │ │ ├── 0010-update-dkb-adapter.xml │ │ ├── 0011-add-validation-ignore-decoupled.xml │ │ ├── 0012-add-is-active-field-to-bank.xml │ │ ├── 0013-add-auth-session-status.xml │ │ ├── 0014-update-sparkasse-adapter.xml │ │ ├── 0017-add-consent-type-support.xml │ │ ├── 0018-add-skip-psu-auth-for-verlag-bank.xml │ │ ├── 0019-set-start-consent-auth-with-pin-fiducia.xml │ │ ├── 0020-add-skip-auth-for-ing.xml │ │ ├── 0022-add-protocol-configuration.xml │ │ ├── 0023-change-unique-constraint.xml │ │ ├── 0024-add-consent-supplementary-key.xml │ │ ├── 0025-create-table-session-for-aspsp.xml │ │ └── csv │ │ └── v0 │ │ ├── 0-banks.csv │ │ ├── 0-hbci_bank-action.csv │ │ ├── 0-hbci_bank-sub-action.csv │ │ ├── 0-hbci_bank_bank-profile.csv │ │ ├── 0-mock-banks.csv │ │ ├── 0-mock_bank_profile.csv │ │ ├── 0-xs2a_bank-action.csv │ │ ├── 0-xs2a_bank-profile.csv │ │ ├── 0-xs2a_bank-sub-action.csv │ │ ├── banks_random_data.csv │ │ └── xs2a-adapter-banks.csv │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── db │ │ ├── BankProtocolActionsSqlGeneratorTest.java │ │ └── config │ │ └── TestConfig.java │ └── resources │ └── application.yml ├── opba-embedded-starter-tests ├── README.md ├── pom.xml └── src │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── starter │ │ ├── AdminApiModyfingTest.java │ │ ├── AdminApiSecurityTest.java │ │ ├── AdminApiTest.java │ │ ├── BasicOpenBankingStartupTest.java │ │ ├── FintechPasswordApplyTest.java │ │ ├── RequestScopedStub.java │ │ ├── Xs2aSensitiveDataTest.java │ │ ├── config │ │ └── FintechRequestSigningTestConfig.java │ │ └── redirectcode │ │ ├── OpenBankingRedirectCodeRequestWideTest.java │ │ ├── OpenBankingRedirectCodeSessionWideTest.java │ │ └── OpenBankingRedirectCodeTest.java │ └── resources │ ├── adapter.config.properties │ ├── adminapi │ ├── 20a55c80-fd8c-42f0-b782-8188662aa89f-new.json │ ├── adadadad-1000-0000-0000-b0b0b0b0b0b0-profiles-removed.json │ ├── adadadad-1000-0000-0000-b0b0b0b0b0b0-profiles-replaced.json │ ├── adadadad-1000-0000-0000-b0b0b0b0b0b0-updated.json │ ├── adadadad-1000-0000-0000-b0b0b0b0b0b0.json │ └── adadadad-4000-0000-0000-b0b0b0b0b0b0-profiles-replaced.json │ ├── anton-brueckner-single-sepa-payment.json │ ├── application-test-separate-db.yml │ ├── application-test.yml │ ├── example-keyset.json │ ├── logback-test.xml │ └── sample-qwac.keystore ├── opba-embedded-starter ├── Dockerfile ├── README.md ├── pom.xml ├── src │ ├── deb │ │ └── control │ │ │ └── control │ └── main │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── starter │ │ │ ├── OpenBankingEmbeddedApplication.java │ │ │ └── config │ │ │ ├── WebConfig.java │ │ │ └── extensions │ │ │ ├── OpbaFinapiExtensionConfig.java │ │ │ └── OpbaSmartAnalyticsExtensionConfig.java │ │ └── resources │ │ ├── adapter.config.properties │ │ ├── application.yml │ │ ├── example-keyset.json │ │ ├── logback.xml │ │ ├── sample-qwac.keystore │ │ └── static │ │ └── index.html └── suppressions.xml ├── opba-facade-protocol-api-shared ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── adorsys │ └── opba │ └── protocol │ └── api │ ├── Constants.java │ ├── common │ ├── Approach.java │ ├── CurrentBankProfile.java │ ├── CurrentFintechProfile.java │ ├── ProtocolAction.java │ ├── ResultContentType.java │ ├── SessionStatus.java │ └── SupportedConsentType.java │ ├── dto │ ├── NotSensitiveData.java │ ├── codes │ │ └── FieldCode.java │ ├── context │ │ ├── Context.java │ │ ├── ServiceContext.java │ │ ├── UserAgentContext.java │ │ └── UserAgentExtras.java │ ├── headers │ │ └── ResponseHeaders.java │ ├── parameters │ │ ├── ExtraAuthRequestParam.java │ │ ├── ExtraRequestParam.java │ │ └── ScaConst.java │ ├── payment │ │ └── PaymentType.java │ ├── request │ │ ├── Analytics.java │ │ ├── ChallengeData.java │ │ ├── FacadeServiceableGetter.java │ │ ├── FacadeServiceableRequest.java │ │ ├── OtpFormat.java │ │ ├── accounts │ │ │ ├── AisAuthorizationStatusRequest.java │ │ │ ├── ListAccountsRequest.java │ │ │ ├── UpdateExternalAisSessionRequest.java │ │ │ └── UpdateMetadataDetails.java │ │ ├── authorization │ │ │ ├── AisAccountAccess.java │ │ │ ├── AisConsent.java │ │ │ ├── AuthorizationRequest.java │ │ │ ├── DeleteConsentRequest.java │ │ │ ├── DenyAuthorizationRequest.java │ │ │ ├── OnLoginRequest.java │ │ │ └── fromaspsp │ │ │ │ └── FromAspspRequest.java │ │ ├── payments │ │ │ ├── InitiateSinglePaymentRequest.java │ │ │ ├── PaymentInfoBody.java │ │ │ ├── PaymentInfoRequest.java │ │ │ ├── PaymentStatusBody.java │ │ │ ├── PaymentStatusRequest.java │ │ │ ├── PisAuthorizationStatusRequest.java │ │ │ └── SinglePaymentBody.java │ │ └── transactions │ │ │ └── ListTransactionsRequest.java │ └── result │ │ ├── body │ │ ├── AccountListBody.java │ │ ├── AccountListDetailBody.java │ │ ├── AccountReference.java │ │ ├── AccountReport.java │ │ ├── Address.java │ │ ├── AisAuthorizationStatusBody.java │ │ ├── Amount.java │ │ ├── AnalyticsResult.java │ │ ├── AuthRequestData.java │ │ ├── AuthStateBody.java │ │ ├── AuthorizationStatusBody.java │ │ ├── Balance.java │ │ ├── DeleteConsentBody.java │ │ ├── DenyAuthBody.java │ │ ├── DetailedSessionStatus.java │ │ ├── Paging.java │ │ ├── PaymentProductDetails.java │ │ ├── PisAuthorizationStatusBody.java │ │ ├── ResultBody.java │ │ ├── ReturnableProcessErrorResult.java │ │ ├── ScaMethod.java │ │ ├── TransactionDetailsBody.java │ │ ├── TransactionListBody.java │ │ ├── TransactionsResponseBody.java │ │ ├── UpdateAuthBody.java │ │ ├── UpdateExternalAisSessionBody.java │ │ └── ValidationError.java │ │ └── fromprotocol │ │ ├── Result.java │ │ ├── dialog │ │ ├── AuthorizationDeniedResult.java │ │ ├── AuthorizationRequiredResult.java │ │ ├── ConsentAcquiredResult.java │ │ ├── ConsentIncompatibleResult.java │ │ ├── RedirectToAspspResult.java │ │ ├── RedirectionResult.java │ │ └── ValidationErrorResult.java │ │ ├── error │ │ └── ErrorResult.java │ │ └── ok │ │ └── SuccessResult.java │ ├── fintechspec │ ├── ApiConsumer.java │ └── ApiConsumerConfig.java │ └── services │ ├── EncryptionService.java │ ├── ResultBodyPostProcessor.java │ └── scoped │ ├── RequestScoped.java │ ├── RequestScopedServicesProvider.java │ ├── UsesRequestScoped.java │ ├── aspsp │ └── UsesCurrentAspspProfile.java │ ├── consent │ ├── ConsentAccess.java │ ├── FintechConsentAccess.java │ ├── PaymentAccess.java │ ├── ProtocolFacingConsent.java │ ├── ProtocolFacingPayment.java │ ├── UsesConsentAccess.java │ └── UsesPaymentAccess.java │ ├── encryption │ └── UsesEncryptionService.java │ ├── fintech │ └── UsesCurrentFintechProfile.java │ ├── transientdata │ ├── TransientStorage.java │ └── UsesTransientStorage.java │ └── validation │ ├── FieldsToIgnoreLoader.java │ ├── IgnoreValidationRule.java │ ├── UsesValidation.java │ └── ValidationRule.java ├── opba-protocols ├── hbci-protocol-tests │ ├── hbci-bdd-sandbox │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ └── test │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── hbci │ │ │ │ └── tests │ │ │ │ └── e2e │ │ │ │ └── sandbox │ │ │ │ ├── Const.java │ │ │ │ ├── HbciJGivenConfig.java │ │ │ │ ├── HbciProtocolApplication.java │ │ │ │ ├── HbciSandboxConsentE2EHbciProtocolTest.java │ │ │ │ ├── HbciSandboxPaymentAndTransactionsAfterE2EHbciProtocolTest.java │ │ │ │ ├── HbciSandboxPaymentE2EHbciProtocolTest.java │ │ │ │ ├── config │ │ │ │ ├── FintechRequestSigningTestConfig.java │ │ │ │ └── FlowableTestConfig.java │ │ │ │ └── hbcisteps │ │ │ │ ├── FixtureConst.java │ │ │ │ ├── HbciAccountInformationRequest.java │ │ │ │ ├── HbciAccountInformationResult.java │ │ │ │ ├── HbciPaymentInitiationRequest.java │ │ │ │ ├── HbciPaymentInitiationResult.java │ │ │ │ └── HbciServers.java │ │ │ └── resources │ │ │ ├── application-hbci-sandbox-config.yml │ │ │ ├── bdd-migration │ │ │ └── migration.xml │ │ │ ├── logback-test.xml │ │ │ └── restrecord-input-params │ │ │ ├── hbci-max-musterman-instant-sepa-payment.json │ │ │ └── hbci-max-musterman-single-sepa-payment.json │ └── pom.xml ├── hbci-protocol │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── hbci │ │ │ │ ├── EnableHbciProtocol.java │ │ │ │ ├── HbciProtocolConfiguration.java │ │ │ │ ├── HbciUuidMapper.java │ │ │ │ ├── config │ │ │ │ ├── ConfigConst.java │ │ │ │ ├── HbciAdapterConfig.java │ │ │ │ ├── HbciAdapterProperties.java │ │ │ │ ├── HbciJacksonConfig.java │ │ │ │ ├── HbciProtocolConfiguration.java │ │ │ │ └── HbciScaConfiguration.java │ │ │ │ ├── constant │ │ │ │ └── GlobalConst.java │ │ │ │ ├── context │ │ │ │ ├── AccountListHbciContext.java │ │ │ │ ├── HbciContext.java │ │ │ │ ├── LastViolations.java │ │ │ │ ├── PaymentHbciContext.java │ │ │ │ └── TransactionListHbciContext.java │ │ │ │ ├── domain │ │ │ │ └── ValidationIssueException.java │ │ │ │ ├── entrypoint │ │ │ │ ├── HbciExtendWithServiceContext.java │ │ │ │ ├── HbciOutcomeMapper.java │ │ │ │ ├── HbciResultBodyExtractor.java │ │ │ │ ├── HbciTransactionsToFacadeMapper.java │ │ │ │ ├── ais │ │ │ │ │ ├── HbciDeleteConsent.java │ │ │ │ │ ├── HbciListAccountsEntrypoint.java │ │ │ │ │ └── HbciListTransactionsEntrypoint.java │ │ │ │ ├── authorization │ │ │ │ │ ├── HbciDenyAuthorization.java │ │ │ │ │ ├── HbciGetAuthorizationState.java │ │ │ │ │ └── HbciUpdateAuthorization.java │ │ │ │ ├── helpers │ │ │ │ │ ├── HbciAuthorizationContinuationService.java │ │ │ │ │ └── HbciContextUpdateService.java │ │ │ │ └── pis │ │ │ │ │ ├── HbciGetPaymentEntrypoint.java │ │ │ │ │ ├── HbciGetPaymentInfoEntrypoint.java │ │ │ │ │ ├── HbciGetPaymentStatusEntrypoint.java │ │ │ │ │ ├── HbciInitiateSinglePaymentEntrypoint.java │ │ │ │ │ └── HbciPreparePaymentContext.java │ │ │ │ ├── service │ │ │ │ ├── HbciRedirectExecutor.java │ │ │ │ ├── consent │ │ │ │ │ ├── HbciAisConsentService.java │ │ │ │ │ ├── HbciCachedResultAccessor.java │ │ │ │ │ ├── HbciConsentInfo.java │ │ │ │ │ ├── HbciLoadConsentUnderFinTechKey.java │ │ │ │ │ ├── HbciReadAccountListFromCache.java │ │ │ │ │ ├── HbciReadTransactionListFromCache.java │ │ │ │ │ ├── HbciScaRequiredUtil.java │ │ │ │ │ ├── HbciStoreAccountListToCache.java │ │ │ │ │ ├── HbciStoreTransactionListToCache.java │ │ │ │ │ ├── ReportConsentAuthorizationFinished.java │ │ │ │ │ └── authentication │ │ │ │ │ │ ├── HbciAskForPin.java │ │ │ │ │ │ ├── HbciAskForTan.java │ │ │ │ │ │ ├── HbciAskToSelectTanChallenge.java │ │ │ │ │ │ ├── HbciAuthorizationPossibleErrorHandler.java │ │ │ │ │ │ ├── HbciInitiateSendPinAndPsuId.java │ │ │ │ │ │ ├── HbciReportConsentIncompatible.java │ │ │ │ │ │ ├── HbciSendTanChallenge.java │ │ │ │ │ │ └── HbciSubmitSelectedMethodAndAskForTanChallenge.java │ │ │ │ ├── protocol │ │ │ │ │ ├── HbciFillBpmnContext.java │ │ │ │ │ ├── HbciFlowNameSelector.java │ │ │ │ │ ├── HbciUpdateToRealModeBpmnContext.java │ │ │ │ │ ├── HbciUtil.java │ │ │ │ │ ├── ais │ │ │ │ │ │ ├── HbciAccountListing.java │ │ │ │ │ │ ├── HbciTransactionListing.java │ │ │ │ │ │ ├── dto │ │ │ │ │ │ │ ├── AisListAccountsResult.java │ │ │ │ │ │ │ ├── AisListTransactionsResult.java │ │ │ │ │ │ │ └── HbciResultCache.java │ │ │ │ │ │ └── publish │ │ │ │ │ │ │ ├── HbciPublishAccountListResult.java │ │ │ │ │ │ │ └── HbciPublishTransactionListResult.java │ │ │ │ │ ├── errorhandlers │ │ │ │ │ │ └── HbciExecutionErrorHandler.java │ │ │ │ │ └── pis │ │ │ │ │ │ ├── HbciPayment.java │ │ │ │ │ │ ├── HbciPaymentStatus.java │ │ │ │ │ │ ├── HbciPersistPaymentToDb.java │ │ │ │ │ │ ├── dto │ │ │ │ │ │ ├── PaymentInitiateBody.java │ │ │ │ │ │ ├── PaymentInitiateBodyWithPayment.java │ │ │ │ │ │ └── PisSinglePaymentResult.java │ │ │ │ │ │ └── publish │ │ │ │ │ │ └── HbciPublishPaymentStatusResult.java │ │ │ │ ├── storage │ │ │ │ │ └── TransientDataEntry.java │ │ │ │ └── validation │ │ │ │ │ ├── HbciReportValidationError.java │ │ │ │ │ ├── HbciRestorePreValidationContext.java │ │ │ │ │ ├── HbciStorePreValidationContext.java │ │ │ │ │ └── HbciValidationErrors.java │ │ │ │ └── util │ │ │ │ └── logresolver │ │ │ │ ├── HbciLogResolver.java │ │ │ │ ├── domain │ │ │ │ ├── AccountListHbciContextLog.java │ │ │ │ ├── BaseContextLog.java │ │ │ │ ├── HbciContextLog.java │ │ │ │ ├── HbciExecutionLog.java │ │ │ │ ├── PaymentHbciContextLog.java │ │ │ │ ├── TransactionListHbciContextLog.java │ │ │ │ ├── request │ │ │ │ │ ├── RequestLog.java │ │ │ │ │ └── TransactionRequestLog.java │ │ │ │ └── response │ │ │ │ │ └── ResponseLog.java │ │ │ │ └── mapper │ │ │ │ └── HbciDtoToLogObjectsMapper.java │ │ └── resources │ │ │ └── processes │ │ │ └── hbci │ │ │ ├── accounts │ │ │ ├── hbci-list-accounts.bpmn20.xml │ │ │ └── hbci-list-transactions.bpmn20.xml │ │ │ ├── payment │ │ │ ├── hbci-payment-status.bpmn20.xml │ │ │ └── hbci-single-payment.bpmn20.xml │ │ │ └── saga │ │ │ └── hbci-request-saga.bpmn20.xml │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── hbci │ │ │ ├── config │ │ │ ├── MapperTestConfig.java │ │ │ └── ObjectMapperConfig.java │ │ │ ├── entrypoint │ │ │ └── authorization │ │ │ │ └── HbciUpdateAuthorizationTest.java │ │ │ ├── service │ │ │ └── protocol │ │ │ │ └── pis │ │ │ │ └── PaymentProtocolToMultibankingMapperTest.java │ │ │ └── util │ │ │ └── FixtureProvider.java │ │ └── resources │ │ └── application-test.yml ├── opba-protocol-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── adorsys │ │ └── opba │ │ └── protocol │ │ └── api │ │ ├── Action.java │ │ ├── ais │ │ ├── DeleteConsent.java │ │ ├── GetAisAuthorizationStatus.java │ │ ├── ListAccounts.java │ │ ├── ListTransactions.java │ │ └── UpdateExternalAisSession.java │ │ ├── authorization │ │ ├── DenyAuthorization.java │ │ ├── FromAspspRedirect.java │ │ ├── GetAuthorizationState.java │ │ ├── OnLogin.java │ │ └── UpdateAuthorization.java │ │ ├── dto │ │ ├── ValidationIssue.java │ │ └── codes │ │ │ ├── ScopeObject.java │ │ │ └── TypeCode.java │ │ ├── errors │ │ ├── ProcessErrorConsentGone.java │ │ └── ReturnableException.java │ │ └── pis │ │ ├── GetPaymentInfoState.java │ │ ├── GetPaymentStatusState.java │ │ ├── GetPisAuthorizationStatus.java │ │ └── SinglePayment.java ├── opba-protocol-testing-helper │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ ├── postman │ │ └── OBG-HELPER-XS2A-EMBEDDED.postman_collection.json │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── helpers │ │ │ │ └── protocol │ │ │ │ └── testing │ │ │ │ ├── OpenBankingTestingHelperApplication.java │ │ │ │ ├── config │ │ │ │ ├── DevProfile.java │ │ │ │ └── WebConfig.java │ │ │ │ ├── controller │ │ │ │ └── ProtocolTestingController.java │ │ │ │ └── service │ │ │ │ ├── MapBasedAspspRepository.java │ │ │ │ └── MapBasedRequestScopedServicesProvider.java │ │ │ └── resources │ │ │ ├── adapter.config.properties │ │ │ ├── application.yml │ │ │ ├── logback.xml │ │ │ └── sample-qwac.keystore │ └── suppressions.xml ├── pom.xml ├── protocol-bpmn-shared │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── bpmnshared │ │ │ ├── EnableSharedFlowableBpmn.java │ │ │ ├── GlobalConst.java │ │ │ ├── config │ │ │ └── flowable │ │ │ │ ├── ConfigConst.java │ │ │ │ ├── FlowableConfig.java │ │ │ │ ├── FlowableJobEventListener.java │ │ │ │ ├── FlowableObjectMapper.java │ │ │ │ ├── FlowableProperties.java │ │ │ │ ├── JacksonMixin.java │ │ │ │ ├── JsonCustomSerializer.java │ │ │ │ ├── LargeJsonCustomSerializer.java │ │ │ │ ├── SerializerUtil.java │ │ │ │ └── expirable │ │ │ │ └── ExpirableDataConfig.java │ │ │ ├── dto │ │ │ ├── ContextBasedConsentIncompatibleWithValidationErrorResult.java │ │ │ ├── ContextBasedValidationErrorResult.java │ │ │ ├── DtoMapper.java │ │ │ ├── DtoUpdatingMapper.java │ │ │ ├── context │ │ │ │ ├── BaseContext.java │ │ │ │ ├── ContextMode.java │ │ │ │ ├── LastRedirectionTarget.java │ │ │ │ └── ProtocolResultCache.java │ │ │ └── messages │ │ │ │ ├── ConsentAcquired.java │ │ │ │ ├── InternalProcessResult.java │ │ │ │ ├── InternalReturnableConsentGoneProcessError.java │ │ │ │ ├── PaymentAcquired.java │ │ │ │ ├── ProcessError.java │ │ │ │ ├── ProcessErrorWithRootProcessId.java │ │ │ │ ├── ProcessResponse.java │ │ │ │ ├── Redirect.java │ │ │ │ ├── RedirectToAspsp.java │ │ │ │ └── ValidationProblem.java │ │ │ ├── outcome │ │ │ └── OutcomeMapper.java │ │ │ ├── service │ │ │ ├── SafeCacheSerDeUtil.java │ │ │ ├── TransactionUtil.java │ │ │ ├── cache │ │ │ │ └── CachedResultAccessor.java │ │ │ ├── context │ │ │ │ └── ContextUtil.java │ │ │ ├── eventbus │ │ │ │ ├── ProcessEventHandlerRegistrar.java │ │ │ │ └── ProcessResultEventHandler.java │ │ │ └── exec │ │ │ │ └── ValidatedExecution.java │ │ │ └── util │ │ │ └── logResolver │ │ │ ├── LogResolver.java │ │ │ ├── domain │ │ │ ├── ContextLog.java │ │ │ └── ExecutionLog.java │ │ │ └── mapper │ │ │ └── DtoToLogObjectsMapper.java │ │ └── test │ │ └── java │ │ └── de │ │ └── adorsys │ │ └── opba │ │ └── protocol │ │ └── bpmnshared │ │ └── config │ │ └── flowable │ │ ├── JsonCustomSerializerTest.java │ │ └── LargeJsonCustomSerializerTest.java ├── sandboxes │ ├── hbci-sandbox │ │ ├── Dockerfile │ │ ├── Dockerfile-no-java-needed │ │ ├── FLOWS.md │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── de │ │ │ │ │ └── adorsys │ │ │ │ │ └── opba │ │ │ │ │ └── protocol │ │ │ │ │ └── sandbox │ │ │ │ │ └── hbci │ │ │ │ │ ├── HbciServerApplication.java │ │ │ │ │ ├── config │ │ │ │ │ ├── HbciConfig.java │ │ │ │ │ ├── HbciJpaAuditConfig.java │ │ │ │ │ ├── HbciJsonCustomSerializer.java │ │ │ │ │ ├── HbciSandboxFlowableConfig.java │ │ │ │ │ ├── HbciSandboxMapperConfig.java │ │ │ │ │ └── dto │ │ │ │ │ │ ├── Account.java │ │ │ │ │ │ ├── Bank.java │ │ │ │ │ │ ├── BankSecurity.java │ │ │ │ │ │ ├── BpdAuthLevel.java │ │ │ │ │ │ ├── SensitiveAuthLevel.java │ │ │ │ │ │ ├── Transaction.java │ │ │ │ │ │ └── User.java │ │ │ │ │ ├── controller │ │ │ │ │ └── HbciRestController.java │ │ │ │ │ ├── domain │ │ │ │ │ └── HbciSandboxPayment.java │ │ │ │ │ ├── protocol │ │ │ │ │ ├── Const.java │ │ │ │ │ ├── DecisionSwitch.java │ │ │ │ │ ├── MapRegexUtil.java │ │ │ │ │ ├── Operation.java │ │ │ │ │ ├── OperationHandler.java │ │ │ │ │ ├── RequestStatusUtil.java │ │ │ │ │ ├── TemplateBasedOperationHandler.java │ │ │ │ │ ├── anonymous │ │ │ │ │ │ ├── AnonymousDialogEnd.java │ │ │ │ │ │ ├── AnonymousDialogInitBpd.java │ │ │ │ │ │ └── AnonymousDialogInitNotSupported.java │ │ │ │ │ ├── authenticated │ │ │ │ │ │ ├── authorized │ │ │ │ │ │ │ ├── AuthorizedAuthLost.java │ │ │ │ │ │ │ ├── AuthorizedCustomMsg.java │ │ │ │ │ │ │ ├── AuthorizedDialogEnd.java │ │ │ │ │ │ │ ├── AuthorizedDialogInit.java │ │ │ │ │ │ │ └── AuthorizedSynchronization.java │ │ │ │ │ │ └── nonauthorized │ │ │ │ │ │ │ ├── AuthenticatedAuthLost.java │ │ │ │ │ │ │ ├── AuthenticatedCustomMsg.java │ │ │ │ │ │ │ ├── AuthenticatedDialogEnd.java │ │ │ │ │ │ │ ├── AuthenticatedDialogInit.java │ │ │ │ │ │ │ ├── AuthenticatedDialogInitSca.java │ │ │ │ │ │ │ ├── AuthenticatedLostAuth.java │ │ │ │ │ │ │ └── AuthenticatedSynchronization.java │ │ │ │ │ ├── common │ │ │ │ │ │ ├── ExtractBankAndUserIfAvailable.java │ │ │ │ │ │ ├── SetDialogId.java │ │ │ │ │ │ ├── WrongPinTanOrLogin.java │ │ │ │ │ │ └── WrongScaMethodId.java │ │ │ │ │ ├── context │ │ │ │ │ │ └── HbciSandboxContext.java │ │ │ │ │ ├── interpolation │ │ │ │ │ │ └── JsonTemplateInterpolation.java │ │ │ │ │ └── parsing │ │ │ │ │ │ └── ParsingUtil.java │ │ │ │ │ ├── repository │ │ │ │ │ └── HbciSandboxPaymentRepository.java │ │ │ │ │ ├── service │ │ │ │ │ ├── HbciMockService.java │ │ │ │ │ └── HbciSandboxPaymentService.java │ │ │ │ │ └── util │ │ │ │ │ └── logresolver │ │ │ │ │ ├── HbciSandboxLogResolver.java │ │ │ │ │ ├── domain │ │ │ │ │ ├── HbciSandboxContextLog.java │ │ │ │ │ └── HbciSandboxExecutionLog.java │ │ │ │ │ └── mapper │ │ │ │ │ └── HbciSandboxDtoToLogObjectsMapper.java │ │ │ └── resources │ │ │ │ ├── application-postgres.yml │ │ │ │ ├── application.yml │ │ │ │ ├── hbci-non-sensitive-fields.txt │ │ │ │ ├── hbci-sandbox-migration │ │ │ │ ├── master.xml │ │ │ │ └── migrations │ │ │ │ │ └── 0000-create-hbci-tables.xml │ │ │ │ ├── hbci-sensitive-fields.txt │ │ │ │ ├── processes │ │ │ │ └── hbci │ │ │ │ │ └── hbci-sandbox-mock-dialog.bpmn20.xml │ │ │ │ └── response-templates │ │ │ │ ├── anonymous │ │ │ │ ├── dialog-end.json │ │ │ │ ├── dialog-init-anon-not-supported.json │ │ │ │ └── dialog-init-bpd.json │ │ │ │ ├── authenticated │ │ │ │ ├── custom-message-authorization-required-payment-status.json │ │ │ │ ├── custom-message-authorization-required-payment.json │ │ │ │ ├── custom-message-authorization-required.json │ │ │ │ ├── custom-message-konto-mt940.json │ │ │ │ ├── custom-message-payment-status.json │ │ │ │ ├── custom-message-sepa-info.json │ │ │ │ ├── dialog-end.json │ │ │ │ ├── dialog-init-sca.json │ │ │ │ ├── dialog-init-upd-acc.json │ │ │ │ ├── synch-bpd-sca.json │ │ │ │ └── synch-bpd.json │ │ │ │ ├── authorized │ │ │ │ ├── custom-message-konto-mt940.json │ │ │ │ ├── custom-message-payment-response.json │ │ │ │ ├── custom-message-payment-status.json │ │ │ │ ├── custom-message-sepa-info.json │ │ │ │ ├── dialog-end.json │ │ │ │ ├── dialog-init-upd-acc.json │ │ │ │ └── synch.json │ │ │ │ ├── wrong-pin.json │ │ │ │ ├── wrong-sca-id.json │ │ │ │ └── wrong-tan.json │ │ │ └── test │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ ├── hbci │ │ │ │ └── service │ │ │ │ │ └── consent │ │ │ │ │ └── authentication │ │ │ │ │ └── HbciStubGenerator.java │ │ │ │ └── sandbox │ │ │ │ └── hbci │ │ │ │ └── protocol │ │ │ │ └── interpolation │ │ │ │ └── JsonTemplateInterpolationTest.java │ │ │ └── resources │ │ │ └── interpolation │ │ │ ├── loop.json │ │ │ └── simple.json │ ├── pom.xml │ └── xs2a-sandbox │ │ ├── .gitignore │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ └── testsandbox │ │ │ │ └── Const.java │ │ └── resources │ │ │ ├── docker-compose-with-wiremock.yml │ │ │ ├── sandbox-old │ │ │ ├── application-test-aspsp-profile.yml │ │ │ ├── application-test-cert-generator.yml │ │ │ ├── application-test-common.yml │ │ │ ├── application-test-consent-mgmt.yml │ │ │ ├── application-test-db-local-postgres.yml │ │ │ ├── application-test-db-test-containers-postgres.yml │ │ │ ├── application-test-ledgers-app.yml │ │ │ ├── application-test-ledgers-gateway.yml │ │ │ ├── application-test-online-banking-ui.yml │ │ │ ├── application-test-online-banking.yml │ │ │ └── application-test-tpp-rest.yml │ │ │ ├── sandbox │ │ │ ├── application-test-aspsp-profile.yml │ │ │ ├── application-test-cert-generator.yml │ │ │ ├── application-test-common.yml │ │ │ ├── application-test-consent-mgmt.yml │ │ │ ├── application-test-db-local-postgres.yml │ │ │ ├── application-test-db-test-containers-postgres.yml │ │ │ ├── application-test-ledgers-app.yml │ │ │ ├── application-test-ledgers-gateway.yml │ │ │ ├── application-test-online-banking-ui.yml │ │ │ ├── application-test-online-banking.yml │ │ │ ├── application-test-tpp-rest.yml │ │ │ └── prepare-postgres.sql │ │ │ └── wiremock-fixtures │ │ │ ├── __files │ │ │ ├── body-v1-accounts-24398.json │ │ │ ├── body-v1-accounts-45006.json │ │ │ ├── body-v1-accounts-55313.json │ │ │ ├── body-v1-consents-11732.json │ │ │ ├── body-v1-consents-11733.json │ │ │ ├── body-v1-consents-35190.json │ │ │ ├── body-v1-consents-35191.json │ │ │ ├── body-v1-consents-356567.json │ │ │ ├── body-v1-consents-39334.json │ │ │ ├── body-v1-consents-456567.json │ │ │ ├── body-v1-consents-48037.json │ │ │ ├── body-v1-consents-50625.json │ │ │ ├── body-v1-consents-5252.json │ │ │ ├── body-v1-consents-54083.json │ │ │ ├── body-v1-consents-63123.json │ │ │ ├── body-v1-consents-63823.json │ │ │ ├── body-v1-consents-65272.json │ │ │ ├── body-v1-consents-7913.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-12221.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-12345.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-NdAgb.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-RQwOJ.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-W96vG.json │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-fU95X.json │ │ │ └── body-v1-payments-sepa-credit-transfers-j08oa.json │ │ │ └── mappings │ │ │ ├── mapping-v1-accounts-24398.json │ │ │ ├── mapping-v1-accounts-45006.json │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ ├── mapping-v1-consents-11732.json │ │ │ ├── mapping-v1-consents-11733.json │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ ├── mapping-v1-consents-1243225.json │ │ │ ├── mapping-v1-consents-1243999.json │ │ │ ├── mapping-v1-consents-150625.json │ │ │ ├── mapping-v1-consents-15252.json │ │ │ ├── mapping-v1-consents-35190.json │ │ │ ├── mapping-v1-consents-35191.json │ │ │ ├── mapping-v1-consents-356567.json │ │ │ ├── mapping-v1-consents-39334.json │ │ │ ├── mapping-v1-consents-456567.json │ │ │ ├── mapping-v1-consents-48037.json │ │ │ ├── mapping-v1-consents-50625.json │ │ │ ├── mapping-v1-consents-5252.json │ │ │ ├── mapping-v1-consents-54083.json │ │ │ ├── mapping-v1-consents-54084.json │ │ │ ├── mapping-v1-consents-63123.json │ │ │ ├── mapping-v1-consents-63823.json │ │ │ ├── mapping-v1-consents-65272.json │ │ │ ├── mapping-v1-consents-7913.json │ │ │ ├── mapping-v1-consents-83823.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-0gs9c.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-12345.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-NdAgb.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-XWE3m.json │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-fU95X.json │ │ │ └── mapping-v1-payments-sepa-credit-transfers-mMOS.json │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── xs2a │ │ │ └── testsandbox │ │ │ ├── BaseMockitoTest.java │ │ │ └── BasicTest.java │ │ └── resources │ │ └── logback-test.xml ├── xs2a-protocol-tests │ ├── pom.xml │ ├── xs2a-bdd-sandbox │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ └── tests │ │ │ │ └── e2e │ │ │ │ └── sandbox │ │ │ │ └── servers │ │ │ │ ├── SandboxServers.java │ │ │ │ ├── WebDriverBasedAccountInformation.java │ │ │ │ ├── WebDriverBasedPaymentInitiation.java │ │ │ │ └── config │ │ │ │ └── RetryableConfig.java │ │ │ └── test │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ └── tests │ │ │ │ └── e2e │ │ │ │ └── sandbox │ │ │ │ ├── SandboxCommonTest.java │ │ │ │ ├── SandboxE2EProtocolAisOauth2Test.java │ │ │ │ ├── SandboxE2EProtocolAisTest.java │ │ │ │ ├── SandboxE2EProtocolPisOauth2Test.java │ │ │ │ ├── SandboxE2EProtocolPisTest.java │ │ │ │ ├── Xs2aRealSandboxProtocolApplication.java │ │ │ │ └── config │ │ │ │ └── FintechRequestSigningTestConfig.java │ │ │ └── resources │ │ │ ├── application-test-mocked-sandbox.yml │ │ │ └── logback-test.xml │ ├── xs2a-bdd-tests-common │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ └── tests │ │ │ │ ├── BaseMockitoTest.java │ │ │ │ ├── Const.java │ │ │ │ ├── HeaderNames.java │ │ │ │ ├── TestProfiles.java │ │ │ │ └── e2e │ │ │ │ ├── JGivenConfig.java │ │ │ │ ├── LocationExtractorUtil.java │ │ │ │ ├── ResourceUtil.java │ │ │ │ └── stages │ │ │ │ ├── AccountInformationRequestCommon.java │ │ │ │ ├── AccountInformationResult.java │ │ │ │ ├── AdminUtil.java │ │ │ │ ├── CommonGivenStages.java │ │ │ │ ├── NonHappyPaymentResult.java │ │ │ │ ├── PaymentRequestCommon.java │ │ │ │ ├── PaymentResult.java │ │ │ │ ├── PaymentStagesCommonUtil.java │ │ │ │ ├── RedirectCapturingTransformer.java │ │ │ │ ├── RequestCommon.java │ │ │ │ ├── RequestStatusUtil.java │ │ │ │ └── StagesCommonUtil.java │ │ │ └── resources │ │ │ ├── adapter.config.properties │ │ │ ├── application-test-one-time-postgres-disk-volume.yml │ │ │ ├── application-test-one-time-postgres-ramfs.yml │ │ │ ├── example-keyset.json │ │ │ ├── init.sql │ │ │ ├── restrecord │ │ │ └── tpp-ui-input │ │ │ │ └── params │ │ │ │ ├── anton-brueckner-account-all-accounts-consent-without-psu-id.json │ │ │ │ ├── anton-brueckner-account-all-accounts-consent.json │ │ │ │ ├── anton-brueckner-account-wrong-ibans.json │ │ │ │ ├── anton-brueckner-dedicated-account-consent.json │ │ │ │ ├── anton-brueckner-in-extras.json │ │ │ │ ├── anton-brueckner-password.json │ │ │ │ ├── anton-brueckner-payments-authorize.json │ │ │ │ ├── anton-brueckner-psu-id-parameter.json │ │ │ │ ├── anton-brueckner-single-payment-response.json │ │ │ │ ├── anton-brueckner-single-sepa-payment.json │ │ │ │ ├── anton-brueckner-transactions-all-accounts-psd2-consent.json │ │ │ │ ├── anton-brueckner-transactions-no-consent.json │ │ │ │ ├── anton-brueckner-transactions-single-account-consent.json │ │ │ │ ├── anton-brueckner-wrong-password.json │ │ │ │ ├── max-musterman-account-all-accounts-consent.json │ │ │ │ ├── max-musterman-account-all-accounts-consent_with_ip_address.json │ │ │ │ ├── max-musterman-account-all-accounts-consent_with_psu_ip_port.json │ │ │ │ ├── max-musterman-dedicated-account-consent-wrong-iban.json │ │ │ │ ├── max-musterman-dedicated-account-consent.json │ │ │ │ ├── max-musterman-embedded-consent-challenge-data.json │ │ │ │ ├── max-musterman-embedded-payment-challenge-data.json │ │ │ │ ├── max-musterman-in-extras.json │ │ │ │ ├── max-musterman-password.json │ │ │ │ ├── max-musterman-sca-challenge-result.json │ │ │ │ ├── max-musterman-single-sepa-payment.json │ │ │ │ ├── max-musterman-transactions-all-accounts-psd2-consent.json │ │ │ │ ├── max-musterman-transactions-single-account-consent.json │ │ │ │ ├── max-musterman-wrong-password.json │ │ │ │ ├── max-musterman-wrong-sca-challenge-result.json │ │ │ │ ├── new-user-account-all-accounts-consent.json │ │ │ │ ├── new-user-deposit-account-custom-currency.json │ │ │ │ ├── new-user-deposit-account.json │ │ │ │ ├── new-user-new-account-registration.json │ │ │ │ ├── new-user-new-account-with-custom-currency-registration.json │ │ │ │ ├── new-user-password.json │ │ │ │ ├── new-user-registration-body.json │ │ │ │ ├── new-user-sca-challenge-result.json │ │ │ │ ├── new-user-transactions-single-account-consent.json │ │ │ │ ├── single-sepa-payment-ing.json │ │ │ │ ├── unknown-user-all-accounts-consent.json │ │ │ │ └── unknown-user-transactions-single-account-consent.json │ │ │ └── sample-qwac.keystore │ ├── xs2a-bdd-wiremock │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── de │ │ │ │ │ └── adorsys │ │ │ │ │ └── opba │ │ │ │ │ └── protocol │ │ │ │ │ └── xs2a │ │ │ │ │ └── tests │ │ │ │ │ └── e2e │ │ │ │ │ └── wiremock │ │ │ │ │ └── mocks │ │ │ │ │ ├── MockServers.java │ │ │ │ │ ├── WiremockAccountInformationRequest.java │ │ │ │ │ ├── WiremockConst.java │ │ │ │ │ ├── WiremockPaymentRequest.java │ │ │ │ │ ├── Xs2aProtocolApplication.java │ │ │ │ │ └── config │ │ │ │ │ └── FintechRequestSigningTestConfig.java │ │ │ └── resources │ │ │ │ ├── application-test-mocked-sandbox.yml │ │ │ │ └── mockedsandbox │ │ │ │ ├── restrecord-nonhappy │ │ │ │ ├── embedded │ │ │ │ │ └── multi-sca │ │ │ │ │ │ ├── accounts │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ │ ├── body-v1-consents-35190.json │ │ │ │ │ │ │ ├── body-v1-consents-456567.json │ │ │ │ │ │ │ ├── body-v1-consents-48037.json │ │ │ │ │ │ │ ├── body-v1-consents-5252.json │ │ │ │ │ │ │ ├── body-v1-consents-54083.json │ │ │ │ │ │ │ └── body-v1-consents-7913.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ │ ├── mapping-v1-consents-1243225.json │ │ │ │ │ │ │ ├── mapping-v1-consents-15252.json │ │ │ │ │ │ │ ├── mapping-v1-consents-35190.json │ │ │ │ │ │ │ ├── mapping-v1-consents-456567.json │ │ │ │ │ │ │ ├── mapping-v1-consents-48037.json │ │ │ │ │ │ │ ├── mapping-v1-consents-5252.json │ │ │ │ │ │ │ ├── mapping-v1-consents-54083.json │ │ │ │ │ │ │ ├── mapping-v1-consents-54084.json │ │ │ │ │ │ │ └── mapping-v1-consents-7913.json │ │ │ │ │ │ └── transactions │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-24398.json │ │ │ │ │ │ ├── body-v1-accounts-45006.json │ │ │ │ │ │ ├── body-v1-consents-11732.json │ │ │ │ │ │ ├── body-v1-consents-356567.json │ │ │ │ │ │ ├── body-v1-consents-39334.json │ │ │ │ │ │ ├── body-v1-consents-50625.json │ │ │ │ │ │ ├── body-v1-consents-63123.json │ │ │ │ │ │ ├── body-v1-consents-63823.json │ │ │ │ │ │ └── body-v1-consents-65272.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-24398.json │ │ │ │ │ │ ├── mapping-v1-accounts-45006.json │ │ │ │ │ │ ├── mapping-v1-consents-11732.json │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ ├── mapping-v1-consents-150625.json │ │ │ │ │ │ ├── mapping-v1-consents-356567.json │ │ │ │ │ │ ├── mapping-v1-consents-39334.json │ │ │ │ │ │ ├── mapping-v1-consents-50625.json │ │ │ │ │ │ ├── mapping-v1-consents-63123.json │ │ │ │ │ │ ├── mapping-v1-consents-63823.json │ │ │ │ │ │ ├── mapping-v1-consents-65272.json │ │ │ │ │ │ └── mapping-v1-consents-83823.json │ │ │ │ └── redirect │ │ │ │ │ └── accounts │ │ │ │ │ ├── sandbox │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-12388.json │ │ │ │ │ │ ├── body-v1-consents-2059.json │ │ │ │ │ │ └── body-v1-consents-24281.json │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-12388.json │ │ │ │ │ │ ├── mapping-v1-consents-1243243.json │ │ │ │ │ │ ├── mapping-v1-consents-2059.json │ │ │ │ │ │ ├── mapping-v1-consents-24281.json │ │ │ │ │ │ └── mapping-v1-consents-24283.json │ │ │ │ │ └── sandboxnopsu │ │ │ │ │ └── mappings │ │ │ │ │ ├── mapping-v1-accounts-1.json │ │ │ │ │ ├── mapping-v1-consents-2.json │ │ │ │ │ ├── mapping-v1-consents-3.json │ │ │ │ │ ├── mapping-v1-consents-4.json │ │ │ │ │ └── mapping-v1-consents-5.json │ │ │ │ └── restrecord │ │ │ │ ├── decoupled-sca │ │ │ │ ├── decoupled-mode │ │ │ │ │ ├── accounts │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ │ ├── body-v1-consents-2059236999.json │ │ │ │ │ │ │ ├── body-v1-consents-3192330705.json │ │ │ │ │ │ │ ├── body-v1-consents-3258146603.json │ │ │ │ │ │ │ ├── body-v1-consents-3496770420.json │ │ │ │ │ │ │ └── body-v1-consents-370291184.json │ │ │ │ │ │ ├── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ │ ├── mapping-v1-consents-2059235614.json │ │ │ │ │ │ │ ├── mapping-v1-consents-2059235615.json │ │ │ │ │ │ │ ├── mapping-v1-consents-2059236656.json │ │ │ │ │ │ │ ├── mapping-v1-consents-3192330705.json │ │ │ │ │ │ │ ├── mapping-v1-consents-3258146603.json │ │ │ │ │ │ │ ├── mapping-v1-consents-3496770420.json │ │ │ │ │ │ │ └── mapping-v1-consents-370291184.json │ │ │ │ │ │ └── targobank │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ ├── get-consent-status.json │ │ │ │ │ │ │ ├── get-sca-finalized-status.json │ │ │ │ │ │ │ ├── get-sca-scaMethodSelected-status.json │ │ │ │ │ │ │ └── update-psu-authentication.json │ │ │ │ │ └── payments │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-1063823569.json │ │ │ │ │ │ ├── body-v1-1063823571.json │ │ │ │ │ │ ├── body-v1-3832098252.json │ │ │ │ │ │ ├── body-v1-492790064.json │ │ │ │ │ │ ├── body-v1-916399554.json │ │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-12221.json │ │ │ │ │ │ ├── mappings │ │ │ │ │ │ ├── mapping-v1-1063823569.json │ │ │ │ │ │ ├── mapping-v1-1063823570.json │ │ │ │ │ │ ├── mapping-v1-1063823571.json │ │ │ │ │ │ ├── mapping-v1-3832098252.json │ │ │ │ │ │ ├── mapping-v1-492790064.json │ │ │ │ │ │ ├── mapping-v1-916399554.json │ │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ └── targobank │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── payments-sct-get-payment-status.json │ │ │ │ │ │ ├── payments-sct-get-sca-finalized-status.json │ │ │ │ │ │ ├── payments-sct-get-sca-status.json │ │ │ │ │ │ ├── payments-sct-initiate-payment.json │ │ │ │ │ │ └── payments-sct-update-psu-authentication.json │ │ │ │ └── embedded-mode-decoupled-sca │ │ │ │ │ ├── accounts │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ ├── body-v1-consents-2059236824.json │ │ │ │ │ │ ├── body-v1-consents-2059236999.json │ │ │ │ │ │ ├── body-v1-consents-2145005849.json │ │ │ │ │ │ ├── body-v1-consents-328937491.json │ │ │ │ │ │ └── body-v1-consents-3657373201.json │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ ├── mapping-v1-consents-2059235614.json │ │ │ │ │ │ ├── mapping-v1-consents-2059235615.json │ │ │ │ │ │ ├── mapping-v1-consents-2059236656.json │ │ │ │ │ │ ├── mapping-v1-consents-2059236824.json │ │ │ │ │ │ ├── mapping-v1-consents-2145005849.json │ │ │ │ │ │ ├── mapping-v1-consents-328937491.json │ │ │ │ │ │ └── mapping-v1-consents-3657373201.json │ │ │ │ │ └── payments │ │ │ │ │ ├── __files │ │ │ │ │ ├── body-v1-1063823569.json │ │ │ │ │ ├── body-v1-1063823571.json │ │ │ │ │ ├── body-v1-3832098252.json │ │ │ │ │ ├── body-v1-492790064.json │ │ │ │ │ ├── body-v1-916399554.json │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-12221.json │ │ │ │ │ └── mappings │ │ │ │ │ ├── mapping-v1-1063823569.json │ │ │ │ │ ├── mapping-v1-1063823570.json │ │ │ │ │ ├── mapping-v1-1063823571.json │ │ │ │ │ ├── mapping-v1-3832098252.json │ │ │ │ │ ├── mapping-v1-492790064.json │ │ │ │ │ ├── mapping-v1-916399554.json │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ ├── embedded │ │ │ │ ├── multi-sca │ │ │ │ │ ├── accounts-with-balance │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-with-balance-false.json │ │ │ │ │ │ │ └── body-v1-accounts-with-balance-true.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-with-balance-false.json │ │ │ │ │ │ │ └── mapping-v1-accounts-with-balance-true.json │ │ │ │ │ ├── accounts │ │ │ │ │ │ ├── postbank │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ │ ├── get-accounts-with-balances.json │ │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ │ ├── get-balances.json │ │ │ │ │ │ │ │ ├── get-certificate-pem.json │ │ │ │ │ │ │ │ ├── get-consent-status.json │ │ │ │ │ │ │ │ ├── get-transactions.json │ │ │ │ │ │ │ │ ├── select-sca-method.json │ │ │ │ │ │ │ │ ├── send-otp.json │ │ │ │ │ │ │ │ └── update-psu-authentication.json │ │ │ │ │ │ ├── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ │ │ ├── body-v1-consents-35190.json │ │ │ │ │ │ │ │ ├── body-v1-consents-35191.json │ │ │ │ │ │ │ │ ├── body-v1-consents-456567.json │ │ │ │ │ │ │ │ ├── body-v1-consents-48037.json │ │ │ │ │ │ │ │ ├── body-v1-consents-5252.json │ │ │ │ │ │ │ │ ├── body-v1-consents-54083.json │ │ │ │ │ │ │ │ └── body-v1-consents-7913.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-1243225.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-15252.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-35190.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-35191.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-456567.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-48037.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-5252.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-54083.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-54084.json │ │ │ │ │ │ │ │ └── mapping-v1-consents-7913.json │ │ │ │ │ │ └── volksbank │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── response-body-get-accounts.json │ │ │ │ │ │ │ ├── response-body-get-transactions.json │ │ │ │ │ │ │ └── response-body-start-psu-authentication.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ ├── get-transactions.json │ │ │ │ │ │ │ ├── select-sca-method.json │ │ │ │ │ │ │ ├── send-otp.json │ │ │ │ │ │ │ └── start-psu-authentication.json │ │ │ │ │ ├── payments │ │ │ │ │ │ ├── postbank │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── payments-sct-get-payment-status.json │ │ │ │ │ │ │ │ ├── payments-sct-get-sca-status.json │ │ │ │ │ │ │ │ ├── payments-sct-initiate-payment.json │ │ │ │ │ │ │ │ ├── payments-sct-select-sca-method.json │ │ │ │ │ │ │ │ ├── payments-sct-send-otp.json │ │ │ │ │ │ │ │ └── payments-sct-update-psu-authentication.json │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-12221.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-12345.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-NdAgb.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-RQwOJ.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-W96vG.json │ │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-fU95X.json │ │ │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-j08oa.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-0gs9c.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-12345.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-NdAgb.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-XWE3m.json │ │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-fU95X.json │ │ │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-mMOS.json │ │ │ │ │ ├── stateless │ │ │ │ │ │ ├── accounts │ │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ │ │ ├── body-v1-consents-35190.json │ │ │ │ │ │ │ │ ├── body-v1-consents-456567.json │ │ │ │ │ │ │ │ ├── body-v1-consents-48037.json │ │ │ │ │ │ │ │ ├── body-v1-consents-5252.json │ │ │ │ │ │ │ │ ├── body-v1-consents-54083.json │ │ │ │ │ │ │ │ └── body-v1-consents-7913.json │ │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-1243225.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-15252.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-35190.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-456567.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-48037.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-5252.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-54083.json │ │ │ │ │ │ │ │ ├── mapping-v1-consents-54084.json │ │ │ │ │ │ │ │ └── mapping-v1-consents-7913.json │ │ │ │ │ │ └── transactions │ │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-24398.json │ │ │ │ │ │ │ ├── body-v1-accounts-45006.json │ │ │ │ │ │ │ ├── body-v1-consents-11732.json │ │ │ │ │ │ │ ├── body-v1-consents-356567.json │ │ │ │ │ │ │ ├── body-v1-consents-39334.json │ │ │ │ │ │ │ ├── body-v1-consents-50625.json │ │ │ │ │ │ │ ├── body-v1-consents-63123.json │ │ │ │ │ │ │ ├── body-v1-consents-63823.json │ │ │ │ │ │ │ └── body-v1-consents-65272.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-24398.json │ │ │ │ │ │ │ ├── mapping-v1-accounts-45006.json │ │ │ │ │ │ │ ├── mapping-v1-consents-11732.json │ │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ │ ├── mapping-v1-consents-150625.json │ │ │ │ │ │ │ ├── mapping-v1-consents-356567.json │ │ │ │ │ │ │ ├── mapping-v1-consents-39334.json │ │ │ │ │ │ │ ├── mapping-v1-consents-50625.json │ │ │ │ │ │ │ ├── mapping-v1-consents-63123.json │ │ │ │ │ │ │ ├── mapping-v1-consents-63823.json │ │ │ │ │ │ │ ├── mapping-v1-consents-65272.json │ │ │ │ │ │ │ └── mapping-v1-consents-83823.json │ │ │ │ │ └── transactions │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-24398.json │ │ │ │ │ │ ├── body-v1-accounts-45006.json │ │ │ │ │ │ ├── body-v1-consents-11732.json │ │ │ │ │ │ ├── body-v1-consents-11733.json │ │ │ │ │ │ ├── body-v1-consents-356567.json │ │ │ │ │ │ ├── body-v1-consents-39334.json │ │ │ │ │ │ ├── body-v1-consents-50625.json │ │ │ │ │ │ ├── body-v1-consents-63123.json │ │ │ │ │ │ ├── body-v1-consents-63823.json │ │ │ │ │ │ └── body-v1-consents-65272.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-24398.json │ │ │ │ │ │ ├── mapping-v1-accounts-45006.json │ │ │ │ │ │ ├── mapping-v1-consents-11732.json │ │ │ │ │ │ ├── mapping-v1-consents-11733.json │ │ │ │ │ │ ├── mapping-v1-consents-1243223.json │ │ │ │ │ │ ├── mapping-v1-consents-150625.json │ │ │ │ │ │ ├── mapping-v1-consents-356567.json │ │ │ │ │ │ ├── mapping-v1-consents-39334.json │ │ │ │ │ │ ├── mapping-v1-consents-50625.json │ │ │ │ │ │ ├── mapping-v1-consents-63123.json │ │ │ │ │ │ ├── mapping-v1-consents-63823.json │ │ │ │ │ │ ├── mapping-v1-consents-65272.json │ │ │ │ │ │ └── mapping-v1-consents-83823.json │ │ │ │ ├── one-sca │ │ │ │ │ ├── accounts │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-1828828.json │ │ │ │ │ │ │ ├── body-v1-accounts-34849.json │ │ │ │ │ │ │ ├── body-v1-consents-182893.json │ │ │ │ │ │ │ ├── body-v1-consents-182939.json │ │ │ │ │ │ │ ├── body-v1-consents-55858.json │ │ │ │ │ │ │ └── body-v1-consents-599403.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-1828828.json │ │ │ │ │ │ │ ├── mapping-v1-accounts-34849.json │ │ │ │ │ │ │ ├── mapping-v1-consents-182893.json │ │ │ │ │ │ │ ├── mapping-v1-consents-182939.json │ │ │ │ │ │ │ ├── mapping-v1-consents-55858.json │ │ │ │ │ │ │ └── mapping-v1-consents-599403.json │ │ │ │ │ └── payments │ │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-CDRF6.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-DNg0h.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-Qjgvn.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-S8p45.json │ │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-Y6VfP.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-CDRF6.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-DNg0h.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-Qjgvn.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-S8p45.json │ │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-Y6VfP.json │ │ │ │ ├── pre-step │ │ │ │ │ ├── accounts │ │ │ │ │ │ └── dkb │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── select-sca-method-response-body.json │ │ │ │ │ │ │ └── start-psu-authentication-response-body.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-allPsd2-consent.json │ │ │ │ │ │ │ ├── create-consent-error.json │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ ├── get-consent-status.json │ │ │ │ │ │ │ ├── oauth-token.json │ │ │ │ │ │ │ ├── select-sca-method.json │ │ │ │ │ │ │ ├── send-otp.json │ │ │ │ │ │ │ └── start-psu-authentication.json │ │ │ │ │ └── payments │ │ │ │ │ │ └── dkb │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── initiate-payment-response-body.json │ │ │ │ │ │ ├── select-sca-method-response-body.json │ │ │ │ │ │ └── start-psu-authentication-response-body.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── get-payment-status.json │ │ │ │ │ │ ├── initiate-payment.json │ │ │ │ │ │ ├── pre-aus-token.json │ │ │ │ │ │ ├── select-sca-method.json │ │ │ │ │ │ ├── send-otp.json │ │ │ │ │ │ └── start-psu-authentication.json │ │ │ │ ├── sparkasse │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── ais-create-consent.json │ │ │ │ │ │ ├── ais-get-accounts.json │ │ │ │ │ │ ├── ais-get-transactions.json │ │ │ │ │ │ ├── ais-select-sca-method.json │ │ │ │ │ │ ├── ais-send-otp.json │ │ │ │ │ │ ├── ais-start-psu-authentication.json │ │ │ │ │ │ └── update-psu-authentication.json │ │ │ │ └── zero-sca │ │ │ │ │ ├── accounts │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-55313.json │ │ │ │ │ │ ├── body-v1-consents-48037.json │ │ │ │ │ │ ├── body-v1-consents-54083.json │ │ │ │ │ │ └── body-v1-consents-7913.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-55313.json │ │ │ │ │ │ ├── mapping-v1-consents-48037.json │ │ │ │ │ │ ├── mapping-v1-consents-54083.json │ │ │ │ │ │ └── mapping-v1-consents-7913.json │ │ │ │ │ ├── payments │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-12221.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-RQwOJ.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorisations-fU95X.json │ │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-j08oa.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-0gs9c.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-FbTj8.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-XWE3m.json │ │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-fU95X.json │ │ │ │ │ └── transactions │ │ │ │ │ └── sandbox │ │ │ │ │ ├── __files │ │ │ │ │ ├── body-v1-accounts-24398.json │ │ │ │ │ ├── body-v1-consents-39334.json │ │ │ │ │ ├── body-v1-consents-63823.json │ │ │ │ │ └── body-v1-consents-65272.json │ │ │ │ │ └── mappings │ │ │ │ │ ├── mapping-v1-accounts-24398.json │ │ │ │ │ ├── mapping-v1-consents-39334.json │ │ │ │ │ ├── mapping-v1-consents-63823.json │ │ │ │ │ └── mapping-v1-consents-65272.json │ │ │ │ ├── howto-record.md │ │ │ │ ├── oauth2 │ │ │ │ ├── integrated │ │ │ │ │ ├── accounts │ │ │ │ │ │ ├── commerzbank │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ │ ├── body-account-response.json │ │ │ │ │ │ │ │ └── create-consent-body.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ │ ├── get-oauth-authorization-endpoint.json │ │ │ │ │ │ │ │ └── get-oauth-token.json │ │ │ │ │ │ ├── results-oauth2 │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ │ ├── body-oauth-authorization-server-12693.json │ │ │ │ │ │ │ │ ├── body-oauth-authorization-server-9082.json │ │ │ │ │ │ │ │ └── body-oauth-token-29004.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── mapping-oauth-authorization-server-45420.json │ │ │ │ │ │ │ │ ├── mapping-oauth-authorization-server-65220.json │ │ │ │ │ │ │ │ └── mapping-oauth-token-4783.json │ │ │ │ │ │ ├── results-xs2a │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ │ ├── body-v1-accounts-27115.json │ │ │ │ │ │ │ │ ├── body-v1-accounts-32638.json │ │ │ │ │ │ │ │ ├── body-v1-accounts-8054.json │ │ │ │ │ │ │ │ └── body-v1-consents-14841.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ │ ├── mapping-v1-accounts-27115.json │ │ │ │ │ │ │ │ ├── mapping-v1-accounts-32638.json │ │ │ │ │ │ │ │ ├── mapping-v1-accounts-8054.json │ │ │ │ │ │ │ │ └── mapping-v1-consents-14841.json │ │ │ │ │ │ └── santander │ │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-account-response.json │ │ │ │ │ │ │ └── create-consent-body.json │ │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ ├── get-access-token.json │ │ │ │ │ │ │ ├── get-accounts.json │ │ │ │ │ │ │ ├── get-oauth-authorization-endpoint.json │ │ │ │ │ │ │ └── get-oauth-token.json │ │ │ │ │ └── payments │ │ │ │ │ │ ├── commerzbank │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ └── created-payment-body.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-payment.json │ │ │ │ │ │ │ ├── get-oauth-authorization-endpoint.json │ │ │ │ │ │ │ ├── get-oauth-token.json │ │ │ │ │ │ │ └── get-payment-status.json │ │ │ │ │ │ ├── results-oauth2 │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-oauth-authorization-server-32275.json │ │ │ │ │ │ │ ├── body-oauth-authorization-server-4479.json │ │ │ │ │ │ │ └── body-oauth-token-51726.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-oauth-authorization-server-32275.json │ │ │ │ │ │ │ ├── mapping-oauth-authorization-server-4479.json │ │ │ │ │ │ │ └── mapping-oauth-token-51726.json │ │ │ │ │ │ ├── results-xs2a │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-27380.json │ │ │ │ │ │ │ └── body-v1-7026.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-27380.json │ │ │ │ │ │ │ └── mapping-v1-7026.json │ │ │ │ │ │ └── santander │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-payment-status-response.json │ │ │ │ │ │ └── created-payment-body.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── create-payment.json │ │ │ │ │ │ ├── get-access-token.json │ │ │ │ │ │ ├── get-oauth-authorization-endpoint.json │ │ │ │ │ │ ├── get-oauth-token.json │ │ │ │ │ │ └── get-payment-status.json │ │ │ │ └── prestep │ │ │ │ │ ├── accounts │ │ │ │ │ ├── results-oauth2 │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-oauth-authorization-server-4297.json │ │ │ │ │ │ │ └── body-oauth-token-19228.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-oauth-authorization-server-4297.json │ │ │ │ │ │ │ └── mapping-oauth-token-19228.json │ │ │ │ │ └── results-xs2a │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-accounts-1042.json │ │ │ │ │ │ ├── body-v1-accounts-12324.json │ │ │ │ │ │ ├── body-v1-accounts-1367.json │ │ │ │ │ │ ├── body-v1-consents-47431.json │ │ │ │ │ │ ├── body-v1-consents-55757.json │ │ │ │ │ │ └── body-v1-consents-57125.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-1042.json │ │ │ │ │ │ ├── mapping-v1-accounts-12324.json │ │ │ │ │ │ ├── mapping-v1-accounts-1367.json │ │ │ │ │ │ ├── mapping-v1-consents-47431.json │ │ │ │ │ │ ├── mapping-v1-consents-55757.json │ │ │ │ │ │ └── mapping-v1-consents-57125.json │ │ │ │ │ ├── ing │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── ais-get-accounts-response-body.json │ │ │ │ │ │ └── get-token-client-credentials-response-body.json │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── ais-get-accounts.json │ │ │ │ │ │ ├── ais-get-authorization-code.json │ │ │ │ │ │ ├── ais-get-authorization-request-uri.json │ │ │ │ │ │ ├── ais-get-token-authorization-code.json │ │ │ │ │ │ ├── ais-get-transactions.json │ │ │ │ │ │ ├── get-token-client-credentials.json │ │ │ │ │ │ ├── pis-payments-sct-get-payment-status.json │ │ │ │ │ │ ├── pis-payments-sct-initiate-payment.json │ │ │ │ │ │ ├── pis-periodic-sct-get-payment-status.json │ │ │ │ │ │ ├── pis-periodic-sct-initiate-payment.json │ │ │ │ │ │ └── pis-sca-redirect.json │ │ │ │ │ └── payments │ │ │ │ │ ├── results-oauth2 │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-oauth-authorization-server-4485.json │ │ │ │ │ │ └── body-oauth-token-38529.json │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-oauth-authorization-server-4485.json │ │ │ │ │ │ └── mapping-oauth-token-38529.json │ │ │ │ │ └── results-xs2a │ │ │ │ │ ├── __files │ │ │ │ │ ├── body-v1-11840.json │ │ │ │ │ ├── body-v1-53661.json │ │ │ │ │ ├── body-v1-54020.json │ │ │ │ │ └── body-v1-58960.json │ │ │ │ │ └── mappings │ │ │ │ │ ├── mapping-v1-11840.json │ │ │ │ │ ├── mapping-v1-53661.json │ │ │ │ │ ├── mapping-v1-54020.json │ │ │ │ │ └── mapping-v1-58960.json │ │ │ │ ├── redirect │ │ │ │ ├── accounts │ │ │ │ │ ├── consorsbank │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-account-response.json │ │ │ │ │ │ │ └── create-consent-body.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-consent.json │ │ │ │ │ │ │ └── get-accounts.json │ │ │ │ │ ├── db │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-account-response.json │ │ │ │ │ │ │ └── create-consent-redirect-response-body.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── create-consent-redirect.json │ │ │ │ │ │ │ └── get-accounts.json │ │ │ │ │ ├── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-v1-accounts-12388.json │ │ │ │ │ │ │ ├── body-v1-consents-2059.json │ │ │ │ │ │ │ └── body-v1-consents-24281.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── mapping-v1-accounts-12388.json │ │ │ │ │ │ │ ├── mapping-v1-consents-1243243.json │ │ │ │ │ │ │ ├── mapping-v1-consents-2059.json │ │ │ │ │ │ │ ├── mapping-v1-consents-24281.json │ │ │ │ │ │ │ └── mapping-v1-consents-24283.json │ │ │ │ │ └── sandboxnopsu │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-accounts-1.json │ │ │ │ │ │ ├── mapping-v1-consents-2.json │ │ │ │ │ │ ├── mapping-v1-consents-3.json │ │ │ │ │ │ ├── mapping-v1-consents-4.json │ │ │ │ │ │ └── mapping-v1-consents-5.json │ │ │ │ ├── payments │ │ │ │ │ ├── consorsbank │ │ │ │ │ │ ├── __files │ │ │ │ │ │ │ ├── body-acsp-payments-sepa-credit-transfers.json │ │ │ │ │ │ │ ├── body-payments-sepa-credit-transfers-authorization.json │ │ │ │ │ │ │ └── body-rcvd-payments-sepa-credit-transfers.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ │ ├── get-payments-authorization.json │ │ │ │ │ │ │ ├── get-payments-status.json │ │ │ │ │ │ │ └── initiate-payments.json │ │ │ │ │ └── sandbox │ │ │ │ │ │ ├── __files │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-11246.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ ├── body-v1-payments-sepa-credit-transfers-authorization-11123.json │ │ │ │ │ │ └── body-v1-payments-sepa-credit-transfers-j081a.json │ │ │ │ │ │ └── mappings │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-0gs1c.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-11246.json │ │ │ │ │ │ ├── mapping-v1-payments-sepa-credit-transfers-4556.json │ │ │ │ │ │ └── mapping-v1-payments-sepa-credit-transfers-authorization-11123.json │ │ │ │ └── transactions │ │ │ │ │ └── sandbox │ │ │ │ │ ├── __files │ │ │ │ │ ├── body-v1-accounts-2625.json │ │ │ │ │ ├── body-v1-accounts-65004.json │ │ │ │ │ ├── body-v1-consents-50421.json │ │ │ │ │ └── body-v1-consents-9071.json │ │ │ │ │ └── mappings │ │ │ │ │ ├── mapping-v1-accounts-2625.json │ │ │ │ │ ├── mapping-v1-accounts-65004.json │ │ │ │ │ ├── mapping-v1-consents-1243243.json │ │ │ │ │ ├── mapping-v1-consents-50421.json │ │ │ │ │ ├── mapping-v1-consents-8071.json │ │ │ │ │ └── mapping-v1-consents-9071.json │ │ │ │ └── shorten-filenames-helper.groovy │ │ │ └── test │ │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ └── tests │ │ │ │ └── e2e │ │ │ │ └── wiremock │ │ │ │ ├── Const.java │ │ │ │ ├── WiremockAnonymousConsentE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockAnonymousPaymentE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockAuthenticatedPaymentE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockAuthenticatedPaymentNonHappyPathE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockConsentE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockConsentNonHappyPathE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockDeleteBankAfterAnonymousPaymentE2EXs2aProtocolTest.java │ │ │ │ ├── WiremockDeleteBankAfterConsentE2EXs2aProtocolTest.java │ │ │ │ └── WiremockE2EXs2aProtocolAuthorizationDenyTest.java │ │ │ └── resources │ │ │ └── logback-test.xml │ └── xs2a-stress-test │ │ ├── README.md │ │ ├── pom.xml │ │ └── src │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── xs2a │ │ │ └── tests │ │ │ └── e2e │ │ │ └── wiremock │ │ │ └── stress │ │ │ ├── E2EStress.java │ │ │ └── WiremockE2EStressXs2aProtocolTest.java │ │ └── resources │ │ ├── load_generation.properties │ │ └── logback-test.xml ├── xs2a-protocol │ ├── README.md │ ├── docs │ │ ├── language-injections.xml │ │ ├── result-mappings.svg │ │ └── unexclude_dir.gif │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── de │ │ │ │ └── adorsys │ │ │ │ └── opba │ │ │ │ └── protocol │ │ │ │ └── xs2a │ │ │ │ ├── EnableXs2aProtocol.java │ │ │ │ ├── Xs2aProtocolConfiguration.java │ │ │ │ ├── config │ │ │ │ ├── ConfigConst.java │ │ │ │ ├── I18NConfig.java │ │ │ │ ├── RetryConfig.java │ │ │ │ ├── Xs2aFlowableConfig.java │ │ │ │ ├── aspspmessages │ │ │ │ │ └── AspspMessages.java │ │ │ │ ├── protocol │ │ │ │ │ └── ProtocolUrlsConfiguration.java │ │ │ │ └── xs2aadapter │ │ │ │ │ └── Xs2aAdapterConfiguration.java │ │ │ │ ├── constant │ │ │ │ └── GlobalConst.java │ │ │ │ ├── context │ │ │ │ ├── LastViolations.java │ │ │ │ ├── Xs2aContext.java │ │ │ │ ├── Xs2aResultCache.java │ │ │ │ ├── ais │ │ │ │ │ ├── AccountListXs2aContext.java │ │ │ │ │ ├── TransactionListXs2aContext.java │ │ │ │ │ └── Xs2aAisContext.java │ │ │ │ └── pis │ │ │ │ │ ├── SinglePaymentXs2aContext.java │ │ │ │ │ └── Xs2aPisContext.java │ │ │ │ ├── domain │ │ │ │ ├── ValidationIssueException.java │ │ │ │ └── dto │ │ │ │ │ └── forms │ │ │ │ │ └── ScaMethod.java │ │ │ │ ├── entrypoint │ │ │ │ ├── AccountStatementMapper.java │ │ │ │ ├── ExtendWithServiceContext.java │ │ │ │ ├── Xs2aOutcomeMapper.java │ │ │ │ ├── Xs2aResultBodyExtractor.java │ │ │ │ ├── ais │ │ │ │ │ ├── ConsentContextLoadingService.java │ │ │ │ │ ├── Xs2aDeleteConsent.java │ │ │ │ │ ├── Xs2aListAccountsEntrypoint.java │ │ │ │ │ └── Xs2aListTransactionsEntrypoint.java │ │ │ │ ├── authorization │ │ │ │ │ ├── Xs2aDenyAuthorization.java │ │ │ │ │ ├── Xs2aFromAspspRedirect.java │ │ │ │ │ ├── Xs2aGetAuthorizationState.java │ │ │ │ │ ├── Xs2aUpdateAuthorization.java │ │ │ │ │ └── common │ │ │ │ │ │ ├── AuthorizationContinuationService.java │ │ │ │ │ │ └── UpdateAuthMapper.java │ │ │ │ ├── helpers │ │ │ │ │ └── Xs2aUuidMapper.java │ │ │ │ ├── parsers │ │ │ │ │ └── XmlTransactionsParser.java │ │ │ │ └── pis │ │ │ │ │ ├── Xs2aGetPaymentInfoEntrypoint.java │ │ │ │ │ ├── Xs2aGetPaymentStatusEntrypoint.java │ │ │ │ │ ├── Xs2aInitiateSinglePaymentEntrypoint.java │ │ │ │ │ └── Xs2aPaymentContextLoader.java │ │ │ │ ├── service │ │ │ │ ├── ContextUpdateService.java │ │ │ │ ├── Xs2aCachedResultAccessor.java │ │ │ │ ├── dto │ │ │ │ │ ├── HeadersBodyToValidate.java │ │ │ │ │ ├── PathHeadersBodyToValidate.java │ │ │ │ │ ├── PathHeadersToValidate.java │ │ │ │ │ ├── PathQueryHeadersToValidate.java │ │ │ │ │ ├── QueryHeadersToValidate.java │ │ │ │ │ ├── ValidatedHeadersBody.java │ │ │ │ │ ├── ValidatedPathHeaders.java │ │ │ │ │ ├── ValidatedPathHeadersBody.java │ │ │ │ │ ├── ValidatedPathQueryHeaders.java │ │ │ │ │ └── ValidatedQueryHeaders.java │ │ │ │ ├── mapper │ │ │ │ │ ├── HeadersBodyMapperTemplate.java │ │ │ │ │ ├── PathHeadersBodyMapperTemplate.java │ │ │ │ │ ├── PathHeadersMapperTemplate.java │ │ │ │ │ ├── PathQueryHeadersMapperTemplate.java │ │ │ │ │ └── QueryHeadersMapperTemplate.java │ │ │ │ ├── protocol │ │ │ │ │ ├── Xs2aFillBpmnContext.java │ │ │ │ │ ├── Xs2aFlowNameSelector.java │ │ │ │ │ ├── Xs2aUpdateToRealModeBpmnContext.java │ │ │ │ │ └── errorhandlers │ │ │ │ │ │ └── Xs2aExecutionErrorHandler.java │ │ │ │ ├── storage │ │ │ │ │ └── TransientDataEntry.java │ │ │ │ ├── validation │ │ │ │ │ ├── Xs2aReportValidationError.java │ │ │ │ │ ├── Xs2aRestorePreValidationContext.java │ │ │ │ │ ├── Xs2aStorePreValidationContext.java │ │ │ │ │ └── Xs2aValidationErrors.java │ │ │ │ └── xs2a │ │ │ │ │ ├── Xs2aApiVersionSupport.java │ │ │ │ │ ├── Xs2aRedirectExecutor.java │ │ │ │ │ ├── ais │ │ │ │ │ ├── Xs2aAccountListingService.java │ │ │ │ │ ├── Xs2aConsentErrorHandler.java │ │ │ │ │ └── Xs2aTransactionListingService.java │ │ │ │ │ ├── annotations │ │ │ │ │ ├── ContextCode.java │ │ │ │ │ ├── ExternalValidationModeDeclaration.java │ │ │ │ │ ├── FrontendCode.java │ │ │ │ │ ├── ValidConsentBody.java │ │ │ │ │ └── ValidationInfo.java │ │ │ │ │ ├── authenticate │ │ │ │ │ ├── ScaUtil.java │ │ │ │ │ ├── StartAuthorizationHandlerUtil.java │ │ │ │ │ ├── StartConsentAuthorization.java │ │ │ │ │ ├── StartConsentAuthorizationWithPin.java │ │ │ │ │ ├── StartPaymentAuthorization.java │ │ │ │ │ ├── StartPaymentAuthorizationWithPin.java │ │ │ │ │ ├── TppRedirectPreferredResolver.java │ │ │ │ │ ├── decoupled │ │ │ │ │ │ ├── DecoupledUtil.java │ │ │ │ │ │ ├── Xs2aAisCheckDecoupledAuthorisationStatus.java │ │ │ │ │ │ ├── Xs2aAskForDecoupledFinalization.java │ │ │ │ │ │ └── Xs2aPisCheckDecoupledAuthorisationStatus.java │ │ │ │ │ ├── embedded │ │ │ │ │ │ ├── AuthorizationPossibleErrorHandler.java │ │ │ │ │ │ ├── Xs2aAisAuthenticateConsentWithScaChallenge.java │ │ │ │ │ │ ├── Xs2aAisAuthenticateUserConsentWithPin.java │ │ │ │ │ │ ├── Xs2aAisReportSelectedScaMethod.java │ │ │ │ │ │ ├── Xs2aAskForIban.java │ │ │ │ │ │ ├── Xs2aAskForPassword.java │ │ │ │ │ │ ├── Xs2aAskForScaChallenge.java │ │ │ │ │ │ ├── Xs2aAskForSelectedScaMethod.java │ │ │ │ │ │ ├── Xs2aPisAuthenticatePaymentWithScaChallenge.java │ │ │ │ │ │ ├── Xs2aPisAuthenticateUserConsentWithPin.java │ │ │ │ │ │ └── Xs2aPisReportSelectedScaMethod.java │ │ │ │ │ └── redirect │ │ │ │ │ │ ├── Xs2aDoScaRedirectToAspspForScaChallenge.java │ │ │ │ │ │ └── Xs2aDoScaRedirectToAspspForScaChallengeAfterCreate.java │ │ │ │ │ ├── consent │ │ │ │ │ ├── AbortConsent.java │ │ │ │ │ ├── AisConsentInitiateExtractor.java │ │ │ │ │ ├── AisConsentInitiateV139Extractor.java │ │ │ │ │ ├── AspspConsentDrop.java │ │ │ │ │ ├── BaseCreateAisConsentService.java │ │ │ │ │ ├── ConsentConst.java │ │ │ │ │ ├── ConsentFinder.java │ │ │ │ │ ├── CreateAisAccountListConsentService.java │ │ │ │ │ ├── CreateAisConsentService.java │ │ │ │ │ ├── CreateAisTransactionListConsentService.java │ │ │ │ │ ├── CreateConsentOrPaymentPossibleErrorHandler.java │ │ │ │ │ ├── DefaultXs2aAccountListConsentService.java │ │ │ │ │ ├── ReportConsentAuthorizationDenied.java │ │ │ │ │ ├── ReportConsentAuthorizationFinished.java │ │ │ │ │ ├── Xs2aAccountListConsentService.java │ │ │ │ │ ├── Xs2aAccountListConsentServiceProvider.java │ │ │ │ │ ├── Xs2aAccountListConsentServiceV139.java │ │ │ │ │ ├── Xs2aConsentInfo.java │ │ │ │ │ ├── Xs2aLoadConsentAndContextFromDb.java │ │ │ │ │ └── Xs2aPersistConsentAndContext.java │ │ │ │ │ ├── dto │ │ │ │ │ ├── ResponseTokenMapper.java │ │ │ │ │ ├── ValidationMode.java │ │ │ │ │ ├── WithBasicInfo.java │ │ │ │ │ ├── Xs2aAuthorizedConsentParameters.java │ │ │ │ │ ├── Xs2aAuthorizedPaymentParameters.java │ │ │ │ │ ├── Xs2aInitialConsentParameters.java │ │ │ │ │ ├── Xs2aInitialPaymentParameters.java │ │ │ │ │ ├── Xs2aResourceParameters.java │ │ │ │ │ ├── Xs2aStandardHeaders.java │ │ │ │ │ ├── Xs2aStartPaymentAuthorizationParameters.java │ │ │ │ │ ├── Xs2aTransactionParameters.java │ │ │ │ │ ├── Xs2aWithBalanceParameters.java │ │ │ │ │ ├── Xs2aWithConsentIdHeaders.java │ │ │ │ │ ├── authenticate │ │ │ │ │ │ └── embedded │ │ │ │ │ │ │ ├── ProvidePsuIdAndPsuPasswordBody.java │ │ │ │ │ │ │ ├── ProvidePsuPasswordBody.java │ │ │ │ │ │ │ ├── ProvideScaChallengeResultBody.java │ │ │ │ │ │ │ └── SelectScaChallengeBody.java │ │ │ │ │ ├── consent │ │ │ │ │ │ ├── AccountAccessType.java │ │ │ │ │ │ ├── AisConsentInitiateBody.java │ │ │ │ │ │ ├── ConsentInitiateHeaders.java │ │ │ │ │ │ ├── ConsentInitiateParameters.java │ │ │ │ │ │ └── ConsentInitiateV139Headers.java │ │ │ │ │ ├── oauth2 │ │ │ │ │ │ ├── Xs2aOauth2Headers.java │ │ │ │ │ │ ├── Xs2aOauth2Parameters.java │ │ │ │ │ │ └── Xs2aOauth2WithCodeParameters.java │ │ │ │ │ └── payment │ │ │ │ │ │ ├── PaymentInfoHeaders.java │ │ │ │ │ │ ├── PaymentInfoParameters.java │ │ │ │ │ │ ├── PaymentInitiateBody.java │ │ │ │ │ │ ├── PaymentInitiateHeaders.java │ │ │ │ │ │ ├── PaymentInitiateV139Headers.java │ │ │ │ │ │ ├── PaymentStateHeaders.java │ │ │ │ │ │ └── PaymentStateParameters.java │ │ │ │ │ ├── oauth2 │ │ │ │ │ ├── OAuth2Util.java │ │ │ │ │ ├── Xs2aEmbeddedPreAuthorization.java │ │ │ │ │ ├── Xs2aOauth2ExchangeCodeToToken.java │ │ │ │ │ └── Xs2aRedirectUserToOauth2AuthorizationServer.java │ │ │ │ │ ├── payment │ │ │ │ │ ├── CreateSinglePaymentService.java │ │ │ │ │ ├── DefaultSinglePaymentInitiationService.java │ │ │ │ │ ├── ReportPaymentAuthorizationDenied.java │ │ │ │ │ ├── ReportPaymentAuthorizationFinished.java │ │ │ │ │ ├── SinglePaymentInitiationService.java │ │ │ │ │ ├── SinglePaymentInitiationServiceProvider.java │ │ │ │ │ ├── SinglePaymentInitiationServiceV139.java │ │ │ │ │ └── Xs2aPisPersistPaymentAndContext.java │ │ │ │ │ ├── quirks │ │ │ │ │ └── QuirkUtil.java │ │ │ │ │ └── validation │ │ │ │ │ ├── AccountAccessBodyValidator.java │ │ │ │ │ └── Xs2aValidator.java │ │ │ │ └── util │ │ │ │ └── logresolver │ │ │ │ ├── Xs2aLogResolver.java │ │ │ │ ├── domain │ │ │ │ ├── ValidatedPathHeadersBodyLog.java │ │ │ │ ├── ValidatedPathHeadersLog.java │ │ │ │ ├── ValidatedPathQueryHeadersLog.java │ │ │ │ ├── ValidatedQueryHeadersLog.java │ │ │ │ ├── Xs2aExecutionLog.java │ │ │ │ ├── common │ │ │ │ │ ├── PsuDataLog.java │ │ │ │ │ ├── SelectPsuAuthenticationMethodLog.java │ │ │ │ │ ├── StartScaprocessResponseLog.java │ │ │ │ │ ├── TransactionAuthorisationLog.java │ │ │ │ │ ├── UpdatePsuAuthenticationLog.java │ │ │ │ │ ├── Xs2aOauth2HeadersLog.java │ │ │ │ │ ├── Xs2aOauth2ParametersLog.java │ │ │ │ │ ├── Xs2aOauth2WithCodeParametersLog.java │ │ │ │ │ ├── Xs2aResourceParametersLog.java │ │ │ │ │ ├── Xs2aStandardHeadersLog.java │ │ │ │ │ ├── Xs2aTransactionParametersLog.java │ │ │ │ │ ├── Xs2aWithBalanceParametersLog.java │ │ │ │ │ └── Xs2aWithConsentIdHeadersLog.java │ │ │ │ ├── consent │ │ │ │ │ ├── AccountAccessLog.java │ │ │ │ │ ├── AccountReferenceLog.java │ │ │ │ │ ├── ConsentInitiateHeadersLog.java │ │ │ │ │ ├── ConsentInitiateParametersLog.java │ │ │ │ │ ├── ConsentsLog.java │ │ │ │ │ ├── Xs2aAuthorizedConsentParametersLog.java │ │ │ │ │ └── Xs2aInitialConsentParametersLog.java │ │ │ │ ├── context │ │ │ │ │ ├── AuthenticationObjectLog.java │ │ │ │ │ ├── BaseContextLog.java │ │ │ │ │ ├── ChallengeDataLog.java │ │ │ │ │ ├── ServiceContextLog.java │ │ │ │ │ ├── StartScaprocessResponseLog.java │ │ │ │ │ ├── TransactionListXs2aContextLog.java │ │ │ │ │ ├── Xs2aContextLog.java │ │ │ │ │ └── Xs2aPisContextLog.java │ │ │ │ ├── payment │ │ │ │ │ ├── AddressLog.java │ │ │ │ │ ├── AmountLog.java │ │ │ │ │ ├── PaymentInitiateHeadersLog.java │ │ │ │ │ ├── PaymentInitiationJsonLog.java │ │ │ │ │ ├── Xs2aAuthorizedPaymentParametersLog.java │ │ │ │ │ ├── Xs2aInitialPaymentParametersLog.java │ │ │ │ │ └── Xs2aStartPaymentAuthorizationParametersLog.java │ │ │ │ └── response │ │ │ │ │ ├── ResponseLog.java │ │ │ │ │ ├── TokenResponseLog.java │ │ │ │ │ └── URILog.java │ │ │ │ └── mapper │ │ │ │ └── Xs2aDtoToLogObjectsMapper.java │ │ └── resources │ │ │ ├── ValidationMessages.properties │ │ │ ├── adapter.config.properties │ │ │ ├── application.yml │ │ │ ├── context.properties │ │ │ ├── logback.xml │ │ │ ├── messages.properties │ │ │ ├── processes │ │ │ └── xs2a │ │ │ │ ├── accounts │ │ │ │ ├── xs2a-list-accounts.bpmn20.xml │ │ │ │ └── xs2a-list-transactions.bpmn20.xml │ │ │ │ ├── authorization │ │ │ │ ├── consent │ │ │ │ │ └── xs2a-authorize-consent.bpmn20.xml │ │ │ │ ├── oauth2 │ │ │ │ │ └── xs2a-oauth2-step.bpmn20.xml │ │ │ │ └── payment │ │ │ │ │ └── xs2a-authorize-payment.bpmn20.xml │ │ │ │ ├── payment │ │ │ │ └── xs2a-payment.bpmn20.xml │ │ │ │ └── saga │ │ │ │ └── xs2a-request-saga.bpmn20.xml │ │ │ └── sample-qwac.keystore │ │ └── test │ │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── xs2a │ │ │ ├── BaseMockitoTest.java │ │ │ ├── TestProfiles.java │ │ │ ├── config │ │ │ ├── MapperTestConfig.java │ │ │ ├── ObjectMapperConfig.java │ │ │ └── Xs2aSensitiveDataTest.java │ │ │ ├── domain │ │ │ └── dto │ │ │ │ └── forms │ │ │ │ └── ScaMethodFromAuthObjectTest.java │ │ │ ├── entrypoint │ │ │ ├── Xs2AToFacadeMapperTest.java │ │ │ ├── ais │ │ │ │ ├── Xs2aListAccountsEntrypointFromRequestTest.java │ │ │ │ └── Xs2aListTransactionsEntrypointFromRequestTest.java │ │ │ ├── authorization │ │ │ │ ├── Xs2aGetAuthorizationStateScaMethodsMapperTest.java │ │ │ │ ├── Xs2aGetAuthorizationStateViolationsMapperTest.java │ │ │ │ └── common │ │ │ │ │ ├── UpdateAuthMapperAisMapperTest.java │ │ │ │ │ ├── UpdateAuthMapperFromAisRequestAccountListTest.java │ │ │ │ │ └── UpdateAuthMapperFromAisRequestTransactionListTest.java │ │ │ └── pis │ │ │ │ └── Xs2aInitiateSinglePaymentEntrypointFromRequestTest.java │ │ │ ├── generators │ │ │ └── CertGeneratorTest.java │ │ │ ├── service │ │ │ ├── ContextUpdateServiceTest.java │ │ │ └── xs2a │ │ │ │ ├── authenticate │ │ │ │ └── embedded │ │ │ │ │ ├── Xs2AAuthenticateConsentWithScaChallengeClearsScaTest.java │ │ │ │ │ └── Xs2AAuthenticateWithPinUserConsentClearsPasswordTest.java │ │ │ │ ├── consent │ │ │ │ ├── RequestScopedStub.java │ │ │ │ └── Xs2aLoadConsentAndContextFromDbContextMergerTest.java │ │ │ │ ├── dto │ │ │ │ ├── Xs2aAuthorizedConsentParametersFromCtxTest.java │ │ │ │ ├── Xs2aInitialConsentParametersFromCtxTest.java │ │ │ │ ├── Xs2aResourceParametersFromCtxTest.java │ │ │ │ ├── Xs2aStandardHeadersFromAisCtxTest.java │ │ │ │ ├── Xs2aTransactionParametersFromCtxTest.java │ │ │ │ ├── Xs2aWithBalanceParametersFromCtxTest.java │ │ │ │ ├── Xs2aWithConsentIdHeadersFromCtxTest.java │ │ │ │ ├── authenticate │ │ │ │ │ └── embedded │ │ │ │ │ │ ├── ProvidePsuPasswordBodyFromCtxTest.java │ │ │ │ │ │ ├── ProvidePsuPasswordBodyToXs2aApiTest.java │ │ │ │ │ │ ├── ProvideScaChallengeResultBodyFromCtxTest.java │ │ │ │ │ │ ├── ProvideScaChallengeResultBodyToXs2aApiTest.java │ │ │ │ │ │ ├── SelectScaChallengeBodyFromCtxTest.java │ │ │ │ │ │ └── SelectScaChallengeBodyToXs2aApiTest.java │ │ │ │ ├── consent │ │ │ │ │ ├── AisConsentInitiateBodyFromCtxTest.java │ │ │ │ │ ├── AisConsentInitiateBodyToXs2aApiTest.java │ │ │ │ │ └── ConsentInitiateHeadersFromAisCtxTest.java │ │ │ │ └── oauth2 │ │ │ │ │ └── Xs2aOauth2WithCodeParametersFromCtxTest.java │ │ │ │ └── validation │ │ │ │ └── AccountAccessBodyValidatorTest.java │ │ │ └── util │ │ │ └── FixtureProvider.java │ │ └── resources │ │ ├── application-test-one-time-postgres-ramfs.yml │ │ ├── dummykeys │ │ ├── qseal │ │ │ ├── qseal.pem │ │ │ └── qseal.pub │ │ └── qwac │ │ │ ├── qwac.pem │ │ │ └── qwac.pub │ │ ├── logback-test.xml │ │ ├── mapper-test-fixtures │ │ ├── account_list_context_from_ctx_authorization_request_input.json │ │ ├── account_list_context_from_ctx_authorization_request_output.json │ │ ├── account_list_context_from_ctx_list_account_request_input.json │ │ ├── account_list_context_from_ctx_list_account_request_output.json │ │ ├── account_list_context_from_ctx_list_account_request_with_extras_input.json │ │ ├── account_list_context_from_ctx_list_account_request_with_extras_output.json │ │ ├── consent_body_from_ctx_ais_consent_empty_body_input.json │ │ ├── consent_body_from_ctx_ais_consent_empty_body_output.json │ │ ├── consent_body_from_ctx_ais_consent_non_empty_body_input.json │ │ ├── consent_body_from_ctx_ais_consent_non_empty_body_output.json │ │ ├── consent_body_to_xs2a_api_ais_consent_input.json │ │ ├── consent_body_to_xs2a_api_ais_consent_output.json │ │ ├── consent_initiate_body_from_ctx_ais_consent_input.json │ │ ├── consent_initiate_body_from_ctx_ais_consent_output.json │ │ ├── consent_initiate_headers_from_xs2a_ais_consent_input.json │ │ ├── consent_initiate_headers_from_xs2a_ais_consent_output.json │ │ ├── context_merger_account_to_transaction_list_input.json │ │ ├── context_merger_account_to_transaction_list_output.json │ │ ├── context_merger_transaction_to_transaction_list_input.json │ │ ├── context_merger_transaction_to_transaction_list_output.json │ │ ├── context_merger_xs2a_to_transaction_list_input.json │ │ ├── context_merger_xs2a_to_transaction_list_output.json │ │ ├── context_merger_xs2a_to_xs2a_input.json │ │ ├── context_merger_xs2a_to_xs2a_output.json │ │ ├── payment_initiation_xs2a_context_from_initiated_single_payment_request_input.json │ │ ├── payment_initiation_xs2a_context_from_initiated_single_payment_request_output.json │ │ ├── provide_psu_password_body_from_xs2a_context_input.json │ │ ├── provide_psu_password_body_from_xs2a_context_output.json │ │ ├── provide_sca_challenge_result_body_from_xs2a_context_input.json │ │ ├── provide_sca_challenge_result_body_from_xs2a_context_output.json │ │ ├── sca_method_from_auth_object_sca_method_input.json │ │ ├── sca_method_from_auth_object_sca_method_output.json │ │ ├── sca_method_set_from_sca_method_list_input.json │ │ ├── sca_method_set_from_sca_method_list_output.json │ │ ├── select_psu_authentication_method_from_select_sca_challenge_body_input.json │ │ ├── select_psu_authentication_method_from_select_sca_challenge_body_output.json │ │ ├── select_sca_challenge_body_from_xs2a_context_input.json │ │ ├── select_sca_challenge_body_from_xs2a_context_output.json │ │ ├── transaction_authorisation_from_provide_sca_challenge_result_body_input.json │ │ ├── transaction_authorisation_from_provide_sca_challenge_result_body_output.json │ │ ├── transaction_list_context_from_ctx_authorization_request_input.json │ │ ├── transaction_list_context_from_ctx_authorization_request_output.json │ │ ├── transaction_list_xs2a_context_from_list_transactions_request_input.json │ │ ├── transaction_list_xs2a_context_from_list_transactions_request_output.json │ │ ├── transaction_list_xs2a_context_from_list_transactions_request_with_extras_input.json │ │ ├── transaction_list_xs2a_context_from_list_transactions_request_with_extras_output.json │ │ ├── transaction_parameters_from_ctx_transaction_list_input.json │ │ ├── transaction_parameters_from_ctx_transaction_list_output.json │ │ ├── update_psu_authentication_from_provide_psu_password_body_input.json │ │ ├── update_psu_authentication_from_provide_psu_password_body_output.json │ │ ├── validation_error_set_from_validation_issue_input.json │ │ ├── validation_error_set_from_validation_issue_output.json │ │ ├── with_consentId_headers_from_ctx_xs2s_context_input.json │ │ ├── with_consentId_headers_from_ctx_xs2s_context_output.json │ │ ├── xs2a_authorized_consent_parameters_from_xs2a_consent_input.json │ │ ├── xs2a_authorized_consent_parameters_from_xs2a_consent_output.json │ │ ├── xs2a_initial_consent_parameters_from_xs2a_context_input.json │ │ ├── xs2a_initial_consent_parameters_from_xs2a_context_output.json │ │ ├── xs2a_oauth2_with_code_parameters_from_xs2a_context_input.json │ │ ├── xs2a_oauth2_with_code_parameters_from_xs2a_context_output.json │ │ ├── xs2a_oauth2_with_code_parameters_from_xs2a_context_to_parameters_output.json │ │ ├── xs2a_resource_parameters_from_transaction_list_context_input.json │ │ ├── xs2a_resource_parameters_from_transaction_list_context_output.json │ │ ├── xs2a_standard_headers_from_xs2a_consent_input.json │ │ ├── xs2a_standard_headers_from_xs2a_consent_output.json │ │ ├── xs2a_to_facade_response_mapper_accounts_input.json │ │ ├── xs2a_to_facade_response_mapper_accounts_output.json │ │ ├── xs2a_to_facade_response_mapper_list_transactions_request_input.json │ │ ├── xs2a_to_facade_response_mapper_list_transactions_request_with_paging_input.json │ │ ├── xs2a_to_facade_response_mapper_transactions_input.json │ │ ├── xs2a_to_facade_response_mapper_transactions_output.json │ │ ├── xs2a_to_facade_response_mapper_transactions_with_paging_input.json │ │ ├── xs2a_to_facade_response_mapper_transactions_with_paging_output.json │ │ ├── xs2a_with_balance_parameters_from_xs2a_consent_input.json │ │ ├── xs2a_with_balance_parameters_from_xs2a_consent_output.json │ │ ├── xs2a_without_balance_parameters_from_xs2a_consent_input.json │ │ └── xs2a_without_balance_parameters_from_xs2a_consent_output.json │ │ ├── validator-test-fixtures │ │ ├── bank_offered_consent.json │ │ ├── dedicated_with_accounts_consent.json │ │ ├── dedicated_without_accounts_consent_with_balances.json │ │ ├── dedicated_without_accounts_consent_without_balances.json │ │ ├── global_consent.json │ │ └── invalid_available_accounts_consent.json │ │ └── xml-mapper-test-fixtures │ │ ├── camt-multibanking.xml │ │ ├── camt-sparkasse.xml │ │ ├── multibanking-output.json │ │ └── sparkasse-output.json └── xs2a-sandbox-protocol │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── adorsys │ │ │ └── opba │ │ │ └── protocol │ │ │ └── xs2a │ │ │ ├── EnableXs2aSandboxProtocol.java │ │ │ ├── entrypoint │ │ │ └── ais │ │ │ │ └── Xs2aSandboxListTransactionsEntrypoint.java │ │ │ └── service │ │ │ └── xs2a │ │ │ └── ais │ │ │ └── sandbox │ │ │ ├── NoResponseXs2aAccountListingService.java │ │ │ └── SandboxXs2aTransactionListingService.java │ └── resources │ │ └── context.properties │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── protocol │ │ └── xs2a │ │ └── tests │ │ └── e2e │ │ └── sandbox │ │ └── wiremock │ │ ├── WiremockE2EXs2aSandboxProtocolTest.java │ │ └── config │ │ └── Xs2aSandboxProtocolApplication.java │ └── resources │ └── logback-test.xml ├── opba-rest-api-shared ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── adorsys │ └── opba │ └── restapi │ └── shared │ ├── GlobalConst.java │ ├── HttpHeaders.java │ ├── config │ └── UserAgentContextProviderConfig.java │ ├── mapper │ └── FacadeResponseBodyToRestBodyMapper.java │ └── service │ ├── FacadeResponseMapper.java │ └── RedirectionOnlyToOkMapper.java ├── pom.xml ├── postman ├── collections │ ├── OPBA-AIS-HBCI-2-SCA-METHODS.postman_collection.json │ ├── OPBA-AIS-XS2A-EMBEDDED-2-SCA-METHODS.postman_collection.json │ └── OPBA-PIS-SEPA-XS2A-EMBEDDED-2-SCA-METHODS-NO-LOGIN.postman_collection.json └── environments │ ├── OPBA-DEV-NO-SIG.postman_environment.json │ ├── OPBA-DEV.postman_environment.json │ └── OPBA-LOCAL.postman_environment.json ├── request-collections ├── firefly │ └── firefly-iii.http └── update-aspsp-profile.http ├── scripts ├── TESTING.md ├── build_and_test.sh ├── build_firefly_exporter_mvn.sh ├── build_mvn.sh ├── build_npm.sh ├── deploy_doc.sh ├── deploy_javadoc.sh ├── deploy_mvn.sh ├── deploy_mvn_release_candidate.sh ├── deploy_openshift.sh ├── deploy_openshift_release_candidate.sh ├── deploy_to_ghcr.sh ├── firefly-service.list ├── install_mvn.sh ├── mvn-release-settings.xml ├── mvn_deploy_check_develop.sh ├── plugins │ ├── gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT-pom.xml │ └── gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT.jar ├── promote_oc_image_to_dockerhub.sh ├── release-scripts │ ├── .common-util.sh │ ├── .hooks-default.sh │ ├── .release-scripts-hooks.sh │ ├── .version.sh │ ├── hotfix_finish.argbash.generated.sh │ ├── hotfix_finish.sh │ ├── hotfix_start.argbash.generated.sh │ ├── hotfix_start.sh │ ├── release.argbash.generated.sh │ ├── release.sh │ └── revert_release.sh ├── release_deploy.sh ├── service.list └── validate_dev_deploy.sh ├── smoke-tests ├── pom.xml └── src │ └── test │ ├── java │ └── de │ │ └── adorsys │ │ └── opba │ │ └── smoketests │ │ ├── OpbaApiSmokeE2ETest.java │ │ ├── OpbaApiWithHbciConsentUiSmokeE2ETest.java │ │ ├── OpbaApiWithXs2aConsentUiSmokeE2ETest.java │ │ ├── config │ │ ├── FintechRequestSigningTestConfig.java │ │ ├── SandboxConsentAuthApproachState.java │ │ ├── SmokeConfig.java │ │ └── WebDriverErrorReportAspectAndWatcher.java │ │ └── steps │ │ └── SmokeSandboxServers.java │ └── resources │ ├── META-INF │ └── aop.xml │ ├── application-test-smoke-local.yml │ └── application-test-smoke.yml └── ui-test-scripts ├── README.md └── sca-oauth2.http /.env: -------------------------------------------------------------------------------- 1 | WIREMOCK_STUBS_DIR=./opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/accounts/postbank -------------------------------------------------------------------------------- /.github/ci-cd-workflows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/.github/ci-cd-workflows.png -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | dist 4 | .angulardoc.json 5 | .vscode/* 6 | api -------------------------------------------------------------------------------- /consent-ui/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /consent-ui/.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | dist 4 | **/api/* 5 | **/api-auth/* 6 | .angulardoc.json 7 | .vscode/* 8 | -------------------------------------------------------------------------------- /consent-ui/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "useTabs": false, 5 | "tabWidth": 2, 6 | "semi": true, 7 | "trailingComma": "none", 8 | "bracketSpacing": true 9 | } 10 | -------------------------------------------------------------------------------- /consent-ui/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | specPattern: 'cypress/e2e/**/*.cy.ts', 6 | supportFile: 'cypress/support/e2e.ts', 7 | baseUrl: 'http://localhost:4200' 8 | }, 9 | 10 | component: { 11 | devServer: { 12 | framework: 'angular', 13 | bundler: 'webpack' 14 | }, 15 | specPattern: '**/*.cy.ts' 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /consent-ui/cypress/e2e/spec.cy.ts: -------------------------------------------------------------------------------- 1 | describe('workspace-project App', () => { 2 | 3 | beforeEach(() => { 4 | cy.spy(console, 'error').as('consoleError'); 5 | }); 6 | 7 | it('should have title', () => { 8 | cy.visit('/'); 9 | cy.title().should('eq', 'ConsentUi'); 10 | }); 11 | 12 | afterEach(() => { 13 | cy.get('@consoleError').should('not.be.called'); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /consent-ui/cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /consent-ui/cypress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "sourceMap": false, 6 | "types": ["cypress"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /consent-ui/entry.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | export DOLLAR='$' 3 | export BACKEND_URL=${BACKEND_URL:-"http://localhost:8085"} 4 | envsubst < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf 5 | nginx -g "daemon off;" 6 | -------------------------------------------------------------------------------- /consent-ui/proxy-conf-docker-backend.json: -------------------------------------------------------------------------------- 1 | { 2 | "/embedded-server/*": { 3 | "target": "http://localhost:18085", 4 | "secure": false, 5 | "changeOrigin": true, 6 | "pathRewrite": { 7 | "^/embedded-server/": "" 8 | }, 9 | "logLevel": "debug", 10 | "headers": { "Access-Control-Expose-Headers": "*" } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /consent-ui/proxy-conf-local-backend.json: -------------------------------------------------------------------------------- 1 | { 2 | "/embedded-server/**": { 3 | "target": "http://localhost:8085", 4 | "secure": false, 5 | "changeOrigin": true, 6 | "pathRewrite": { 7 | "^/embedded-server/": "" 8 | }, 9 | "logLevel": "debug", 10 | "headers": { "Access-Control-Expose-Headers": "*" } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/common/constant/constant.ts: -------------------------------------------------------------------------------- 1 | export const DATA_PATTERN = '\\d{4}-\\d{2}-\\d{2}'; 2 | // The consent can be used max times per day 3 | export const MAX_FREQUENCY_PER_DAY = 999; 4 | 5 | export const DEFAULT_CURRENCY = 'EUR'; 6 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/common/stub-util-tests.ts: -------------------------------------------------------------------------------- 1 | export class StubUtilTests { 2 | public static AUTH_ID = 'AUTH_ID'; 3 | public static REDIRECT_ID = 'REDIRECT_ID'; 4 | public static SCA_METHOD_VALUE = '1234'; 5 | public static DUMMY_INPUT = '12345'; 6 | } 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/components/consent-info/consent-info.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/styles'; 2 | 3 | $info-color: #aabcd3; 4 | 5 | .text-secondary { 6 | color: $info-color !important; 7 | } 8 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/enter-pin-page/enter-pin-page.component.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/enter-pin-page/enter-pin-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/enter-pin-page/enter-pin-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/enter-tan-page/enter-tan-page.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/enter-tan-page/enter-tan-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/enter-tan-page/enter-tan-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/entry-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/entry-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/entry-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/accounts/accounts-consent-review/accounts-consent-review.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/accounts/accounts-consent-review/accounts-consent-review.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/accounts/entry-page-accounts/entry-page-accounts.component.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/accounts/entry-page-accounts/entry-page-accounts.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/accounts/entry-page-accounts/entry-page-accounts.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/common/accounts-reference/accounts-reference.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/common/accounts-reference/accounts-reference.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/common/dedicated-access/dedicated-access.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/common/dedicated-access/dedicated-access.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/common/dynamic-inputs/dynamic-inputs.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/common/dynamic-inputs/dynamic-inputs.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/common/initial-consent/consent-account-access-selection.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/common/initial-consent/consent-account-access-selection.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/common/shared-routes.ts: -------------------------------------------------------------------------------- 1 | export class SharedRoutes { 2 | public static REVIEW = 'review-consent'; 3 | } 4 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/consent-initiate/consent-initiate.component.html: -------------------------------------------------------------------------------- 1 |

Initiating consent session... Please wait

2 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/consent-initiate/consent-initiate.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/consent-initiate/consent-initiate.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/consent-sharing/consent-sharing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/consent-sharing/consent-sharing.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/transactions/entry-page-transactions/entry-page-transactions.component.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/transactions/entry-page-transactions/entry-page-transactions.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/transactions/entry-page-transactions/entry-page-transactions.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/entry-page/initiation/transactions/transactions-consent-review/transactions-consent-review.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/entry-page/initiation/transactions/transactions-consent-review/transactions-consent-review.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/error-page/error-page.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{errorMessage}} 4 |
5 |
6 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/error-page/error-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/error-page/error-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/restore-session-page/restore-session-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/restore-session-page/restore-session-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/restore-session-page/restore-session-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/result-page/result-page.component.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/result-page/result-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/result-page/result-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/route-based-card-with-sidebar/route-based-card-with-sidebar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/route-based-card-with-sidebar/route-based-card-with-sidebar.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/sca-select-page/sca-select-page.component.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/sca-select-page/sca-select-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/sca-select-page/sca-select-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/sidebar/sidebar.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/sidebar/sidebar.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/to-aspsp-page/to-aspsp-redirection.component.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/to-aspsp-page/to-aspsp-redirection.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/to-aspsp-page/to-aspsp-redirection.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/ais/wait-for-decoupled/wait-for-decoupled.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Confirm consent on your application

5 |

6 | {{ authResponse?.scaMethodSelected.explanation }} 7 |

8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /consent-ui/src/app/ais/wait-for-decoupled/wait-for-decoupled.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/ais/wait-for-decoupled/wait-for-decoupled.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/.gitignore: -------------------------------------------------------------------------------- 1 | wwwroot/*.js 2 | node_modules 3 | typings 4 | dist 5 | -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/.openapi-generator/VERSION: -------------------------------------------------------------------------------- 1 | 4.3.1 -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/api/api.ts: -------------------------------------------------------------------------------- 1 | export * from './psuAuthentication.service'; 2 | import { PsuAuthenticationService } from './psuAuthentication.service'; 3 | export * from './psuAuthenticationAndConsentApproval.service'; 4 | import { PsuAuthenticationAndConsentApprovalService } from './psuAuthenticationAndConsentApproval.service'; 5 | export const APIS = [PsuAuthenticationService, PsuAuthenticationAndConsentApprovalService]; 6 | -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api/api'; 2 | export * from './model/models'; 3 | export * from './variables'; 4 | export * from './configuration'; 5 | export * from './api.module'; -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/model/models.ts: -------------------------------------------------------------------------------- 1 | export * from './generalError'; 2 | export * from './loginResponse'; 3 | export * from './psuAuthBody'; 4 | -------------------------------------------------------------------------------- /consent-ui/src/app/api-auth/variables.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const BASE_PATH = new InjectionToken('basePath'); 4 | export const COLLECTION_FORMATS = { 5 | 'csv': ',', 6 | 'tsv': ' ', 7 | 'ssv': ' ', 8 | 'pipes': '|' 9 | } 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/api/.gitignore: -------------------------------------------------------------------------------- 1 | wwwroot/*.js 2 | node_modules 3 | typings 4 | dist 5 | -------------------------------------------------------------------------------- /consent-ui/src/app/api/.openapi-generator/VERSION: -------------------------------------------------------------------------------- 1 | 4.3.1 -------------------------------------------------------------------------------- /consent-ui/src/app/api/api.headers.ts: -------------------------------------------------------------------------------- 1 | export enum ApiHeaders { 2 | REDIRECT_CODE = 'Redirect-Code', 3 | X_XSRF_TOKEN = 'X-XSRF-TOKEN', 4 | LOCATION = 'Location', 5 | COOKIE_TTL = 'Cookie-TTL' 6 | } 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/api/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api/api'; 2 | export * from './model/models'; 3 | export * from './variables'; 4 | export * from './configuration'; 5 | export * from './api.module'; -------------------------------------------------------------------------------- /consent-ui/src/app/api/variables.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const BASE_PATH = new InjectionToken('basePath'); 4 | export const COLLECTION_FORMATS = { 5 | 'csv': ',', 6 | 'tsv': ' ', 7 | 'ssv': ' ', 8 | 'pipes': '|' 9 | } 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /consent-ui/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/app.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'consent-app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'], 7 | standalone: false 8 | }) 9 | export class AppComponent { 10 | title = 'consent-ui'; 11 | } 12 | -------------------------------------------------------------------------------- /consent-ui/src/app/auth/anonymous/anonymous.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |

Please wait...

5 |
6 |
7 | -------------------------------------------------------------------------------- /consent-ui/src/app/auth/auth.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/styles'; 2 | -------------------------------------------------------------------------------- /consent-ui/src/app/common/enter-pin/enter-pin.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/enter-pin/enter-pin.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/enter-tan/enter-tan.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/enter-tan/enter-tan.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/restore-session/restore-session.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/restore-session/restore-session.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/result/result.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/result/result.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/select-sca/select-sca.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/select-sca/select-sca.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/session.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { SessionService } from './session.service'; 4 | 5 | describe('SessionService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: SessionService = TestBed.inject(SessionService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /consent-ui/src/app/common/to-aspsp/to-aspsp.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/common/to-aspsp/to-aspsp.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/common/utils/action.ts: -------------------------------------------------------------------------------- 1 | export enum Action { 2 | ACCOUNT = 'consent', 3 | PAYMENT = 'payment' 4 | } 5 | -------------------------------------------------------------------------------- /consent-ui/src/app/common/utils/stub-util.ts: -------------------------------------------------------------------------------- 1 | // FIXME: This class should not exist and values here should come from API or elsewhere 2 | export class StubUtil { 3 | public static FINTECH_NAME = 'Awesome FinTech'; 4 | public static ASPSP_NAME = 'adorsys Sandbox'; 5 | public static X_REQUEST_ID = 'a8b24683-242a-428b-8295-2f4805bb0a30'; 6 | } 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/errorsHandler/error.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { ErrorService } from './error.service'; 4 | 5 | describe('ErrorService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: ErrorService = TestBed.inject(ErrorService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /consent-ui/src/app/errorsHandler/info/info-options.ts: -------------------------------------------------------------------------------- 1 | export interface InfoOptions { 2 | severity: 'info' | 'warn' | 'error'; 3 | closable: boolean; 4 | duration: number; 5 | } 6 | -------------------------------------------------------------------------------- /consent-ui/src/app/errorsHandler/info/info.component.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /consent-ui/src/app/errorsHandler/info/info.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { OverlayModule } from '@angular/cdk/overlay'; 4 | 5 | import { InfoComponent } from './info.component'; 6 | 7 | @NgModule({ 8 | imports: [CommonModule, OverlayModule], 9 | declarations: [InfoComponent] 10 | }) 11 | export class InfoModule {} 12 | -------------------------------------------------------------------------------- /consent-ui/src/app/guards/auth.guard.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | import { AuthService } from '../common/auth.service'; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class AuthGuard { 9 | constructor(private authService: AuthService) {} 10 | 11 | canActivate(): boolean { 12 | return this.authService.isLoggedIn(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/common/models/pis-payment.model.ts: -------------------------------------------------------------------------------- 1 | export class PisPayment { 2 | constructor(public extras?: { [key: string]: string }) {} 3 | } 4 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/consent-payment-access-selection/consent-payment-access-selection.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/consent-payment-access-selection/consent-payment-access-selection.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/dynamic-inputs/dynamic-inputs.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/dynamic-inputs/dynamic-inputs.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/enter-pin-page/enter-pin-page.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/enter-pin-page/enter-pin-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/enter-pin-page/enter-pin-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/enter-tan-page/enter-tan-page.component.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/enter-tan-page/enter-tan-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/enter-tan-page/enter-tan-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/entry-page-payments/entry-page-payments.component.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/entry-page-payments/entry-page-payments.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/entry-page-payments/entry-page-payments.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/entry-page/entry-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/entry-page/entry-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/initiation/payment-initiate.component.html: -------------------------------------------------------------------------------- 1 |

Initiating payment...Please wait

2 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/initiation/payment-initiate.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/initiation/payment-initiate.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/payment-info/payment-info.component.html: -------------------------------------------------------------------------------- 1 |

2 | Transfer of {{ singlePayment?.instructedAmount?.amount }} {{ singlePayment?.instructedAmount?.currency }} from 3 | {{ singlePayment?.debtorAccount?.iban }} to {{ singlePayment?.creditorAccount?.iban }} 4 |

5 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/payment-info/payment-info.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/payment-info/payment-info.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/payments-consent-review/payments-consent-review.component.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-size: 1.3rem; 3 | font-family: geometric-SemiBold, sans-serif; 4 | } 5 | 6 | .title, 7 | .description { 8 | padding-top: 0; 9 | } 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/restore-session-page/restore-session-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/restore-session-page/restore-session-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/restore-session-page/restore-session-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/result-page/result-page.component.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/result-page/result-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/result-page/result-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/select-sca-page/select-sca-page.component.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/select-sca-page/select-sca-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/select-sca-page/select-sca-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/to-aspsp-page/to-aspsp-page.component.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/to-aspsp-page/to-aspsp-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/to-aspsp-page/to-aspsp-page.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/pis/wait-for-decoupled/wait-for-decoupled.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Confirm consent on your application

5 |

6 | {{ authResponse?.scaMethodSelected.explanation }} 7 |

8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /consent-ui/src/app/pis/wait-for-decoupled/wait-for-decoupled.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/app/pis/wait-for-decoupled/wait-for-decoupled.component.scss -------------------------------------------------------------------------------- /consent-ui/src/app/services/customize.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { CustomizeService } from './customize.service'; 4 | 5 | describe('CustomizeService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: CustomizeService = TestBed.inject(CustomizeService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /consent-ui/src/app/utilities/customValidators.spec.ts: -------------------------------------------------------------------------------- 1 | import { CustomValidators } from './customValidators'; 2 | 3 | describe('customValidators', () => { 4 | it('should create an instance', () => { 5 | expect(new CustomValidators()).toBeTruthy(); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /consent-ui/src/assets/UI/Logo_OPBA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/UI/Logo_OPBA.png -------------------------------------------------------------------------------- /consent-ui/src/assets/custom/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/custom/favicon.png -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometric-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometric-Bold.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometric-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometric-Light.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometric-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometric-Medium.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometric-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometric-Regular.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometric-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometric-SemiBold.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Bold.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometricCond-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometricCond-ExtraBold.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Medium.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometricCond-Regular.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/fonts/Geometric/URWGeometricCond-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/fonts/Geometric/URWGeometricCond-SemiBold.otf -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/card_payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/card_payment.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/icons8-approval.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/icons8-approval.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/icons8-checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/icons8-checked.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/icons8-last_24_hours.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/icons8-last_24_hours.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/icons8-mark_view_as_non_hidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/icons8-mark_view_as_non_hidden.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/minus.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/plus.png -------------------------------------------------------------------------------- /consent-ui/src/assets/icons/receive_dollar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/assets/icons/receive_dollar.png -------------------------------------------------------------------------------- /consent-ui/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | API_BASE_PATH: 'embedded-server' 4 | }; 5 | -------------------------------------------------------------------------------- /consent-ui/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/consent-ui/src/favicon.ico -------------------------------------------------------------------------------- /consent-ui/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ConsentUi 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /consent-ui/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /consent-ui/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": ["node"] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"], 9 | "exclude": ["src/test.ts", "src/**/*.spec.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /consent-ui/tsconfig.cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "types": ["cypress"] 5 | }, 6 | "include": ["cypress/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /consent-ui/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": ["jest", "node"], 6 | "isolatedModules": true 7 | }, 8 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /docs/architecture/dictionary-sort-script.sh: -------------------------------------------------------------------------------- 1 | for i in $(grep "^#" dictionary.md | awk '{print $NF}'); do echo "- [$i](dictionary.md#$i)"; done | sort -f 2 | -------------------------------------------------------------------------------- /docs/getting_started.md: -------------------------------------------------------------------------------- 1 | # How to start the project 2 | 3 | * Compile everything with `make all`. 4 | * Alternatively compile Java code with `mvn clean package` and frontend with `npm build` at `fintech-examples/fintech-ui` 5 | * Start frontends with `npm serve` from `fintech-examples/fintech-ui` 6 | * Start backends with `mvn spring-boot:run` from `opba-embedded-starter` -------------------------------------------------------------------------------- /docs/img/big-picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/big-picture.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-cookie-handling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-cookie-handling.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-get-account-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-get-account-list.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-login.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-redirect-to-opba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-redirect-to-opba.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-select-accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-select-accounts.png -------------------------------------------------------------------------------- /docs/img/demo/fintech-select-bank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/fintech-select-bank.png -------------------------------------------------------------------------------- /docs/img/demo/opba-consent-granted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/opba-consent-granted.png -------------------------------------------------------------------------------- /docs/img/demo/opba-consent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/opba-consent.png -------------------------------------------------------------------------------- /docs/img/demo/opba-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/opba-login.png -------------------------------------------------------------------------------- /docs/img/demo/opba-register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/opba-register.png -------------------------------------------------------------------------------- /docs/img/demo/opba-review-consent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/demo/opba-review-consent.png -------------------------------------------------------------------------------- /docs/img/open-banking-gateway-arch-14-01-2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/open-banking-gateway-arch-14-01-2020.png -------------------------------------------------------------------------------- /docs/img/open-banking-gateway-psu-interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/open-banking-gateway-psu-interface.png -------------------------------------------------------------------------------- /docs/img/redir/API-Redir-Browser-NativeApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/API-Redir-Browser-NativeApp.png -------------------------------------------------------------------------------- /docs/img/redir/API-Redir-In-Browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/API-Redir-In-Browser.png -------------------------------------------------------------------------------- /docs/img/redir/All-Redirs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/All-Redirs.png -------------------------------------------------------------------------------- /docs/img/redir/RedirectAbstract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/RedirectAbstract.png -------------------------------------------------------------------------------- /docs/img/redir/UI-Redir-Browser-NativeApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/UI-Redir-Browser-NativeApp.png -------------------------------------------------------------------------------- /docs/img/redir/UI-Redir-In-Browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/UI-Redir-In-Browser.png -------------------------------------------------------------------------------- /docs/img/redir/client-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/client-server.png -------------------------------------------------------------------------------- /docs/img/redir/idp-client-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/idp-client-server.png -------------------------------------------------------------------------------- /docs/img/redir/oauth2-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/redir/oauth2-flow.png -------------------------------------------------------------------------------- /docs/img/security-concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/security-concept.png -------------------------------------------------------------------------------- /docs/img/security-details/anonymous-security-concept-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/security-details/anonymous-security-concept-details.png -------------------------------------------------------------------------------- /docs/img/security-details/authenticated-security-concept-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/img/security-details/authenticated-security-concept-details.png -------------------------------------------------------------------------------- /docs/initial_requirements.md: -------------------------------------------------------------------------------- 1 | # Initial Requirements 2 | 3 | Still in a draft state. We are working on the process of aligning documentation and code. Till that is done, we will be documenting using the gh-pages branch. 4 | 5 | What can you find here: 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/opba-register.png/Selection_058.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/docs/opba-register.png/Selection_058.png -------------------------------------------------------------------------------- /docs/release-notes/releasenotes-1.0.2.md: -------------------------------------------------------------------------------- 1 | # Release Notes – Version 1.0.2 2 | 3 | ### Release Date 4 | *YYYY-MM-DD* 5 | 6 | ### ✨ Notable Changes 7 | - Integrated the `jdeb` plugin to automate the creation of updated Debian packages. 8 | - ... -------------------------------------------------------------------------------- /docs/release-notes/releasenotes.md: -------------------------------------------------------------------------------- 1 | # Release Notes Index 2 | This file serves as an index of all available release notes for the project. 3 | Each entry below links to the detailed changelog and updates associated with a specific version. 4 | 5 | --- 6 | releasenotes-1.0.2: [releasenotes-1.0.2](./releasenotes-1.0.2.md) -------------------------------------------------------------------------------- /fintech-examples/fintech-api/README.md: -------------------------------------------------------------------------------- 1 | # Fintech API 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-api/src/main/java/de/adorsys/opba/fintech/api/config/FinTechApiConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.api.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("de.adorsys.opba.fintech.api") 8 | public class FinTechApiConfig { 9 | } 10 | -------------------------------------------------------------------------------- /fintech-examples/fintech-api/src/main/java/de/adorsys/opba/fintech/api/resource/AccountInformationResource.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.api.resource; 2 | 3 | import de.adorsys.opba.fintech.api.resource.generated.FinTechAccountInformationApi; 4 | import org.springframework.web.bind.annotation.RestController; 5 | 6 | @RestController 7 | public class AccountInformationResource implements FinTechAccountInformationApi { 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-api/src/main/java/de/adorsys/opba/fintech/api/resource/AuthorizationResource.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.api.resource; 2 | 3 | import de.adorsys.opba.fintech.api.resource.generated.FinTechAuthorizationApi; 4 | import org.springframework.web.bind.annotation.RestController; 5 | 6 | @RestController 7 | public class AuthorizationResource implements FinTechAuthorizationApi { 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-api/src/main/java/de/adorsys/opba/fintech/api/resource/BankSearchResource.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.api.resource; 2 | 3 | import de.adorsys.opba.fintech.api.resource.generated.FinTechBankSearchApi; 4 | import org.springframework.web.bind.annotation.RestController; 5 | 6 | @RestController 7 | public class BankSearchResource implements FinTechBankSearchApi { 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-db-schema/.gitignore: -------------------------------------------------------------------------------- 1 | liquibase*properties 2 | !liquibase.example.properties 3 | -------------------------------------------------------------------------------- /fintech-examples/fintech-db-schema/liquibase.example.properties: -------------------------------------------------------------------------------- 1 | url=jdbc:postgresql://localhost/open_banking?currentSchema=fintech 2 | username=postgres 3 | password=docker 4 | 5 | changeLogFile=src/main/resources/migration/master.xml 6 | -------------------------------------------------------------------------------- /fintech-examples/fintech-db-schema/src/main/resources/init.sql: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA IF NOT EXISTS fintech AUTHORIZATION postgres; -------------------------------------------------------------------------------- /fintech-examples/fintech-db-schema/src/main/resources/migration/master.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-example-tests/src/test/java/de/adorsys/fintech/tests/e2e/JGivenConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.fintech.tests.e2e; 2 | 3 | import com.tngtech.jgiven.integration.spring.EnableJGiven; 4 | import org.springframework.context.annotation.ComponentScan; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | @ComponentScan(basePackageClasses = JGivenConfig.class) 9 | @EnableJGiven 10 | public class JGivenConfig { 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/config/Oauth2Config.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.config; 2 | 3 | import java.net.URI; 4 | import java.util.List; 5 | 6 | public interface Oauth2Config { 7 | String getClientId(); 8 | String getClientSecret(); 9 | URI getAuthenticationEndpoint(); 10 | URI getCodeToTokenEndpoint(); 11 | List getScope(); 12 | List getAllowedEmailsRegex(); 13 | } 14 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/controller/utils/LoARetrievalInformation.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.controller.utils; 2 | 3 | public enum LoARetrievalInformation { 4 | FROM_TPP_WITH_AVAILABLE_CONSENT, 5 | FROM_TPP_WITH_NEW_CONSENT 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/controller/utils/LoTRetrievalInformation.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.controller.utils; 2 | 3 | public enum LoTRetrievalInformation { 4 | FROM_TPP_WITH_AVAILABLE_CONSENT, 5 | FROM_TPP_WITH_NEW_CONSENT 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/controller/utils/OkOrNotOk.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.controller.utils; 2 | 3 | public enum OkOrNotOk { 4 | OK, 5 | NOT_OK 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/database/repositories/OauthSessionEntityRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.database.repositories; 2 | 3 | 4 | import de.adorsys.opba.fintech.impl.database.entities.OauthSessionEntity; 5 | import org.springframework.data.repository.CrudRepository; 6 | 7 | public interface OauthSessionEntityRepository extends CrudRepository { 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/exceptions/EmailNotAllowed.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.exceptions; 2 | 3 | public class EmailNotAllowed extends IllegalStateException { 4 | 5 | public EmailNotAllowed(String msg) { 6 | super(msg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/exceptions/EmailNotVerified.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.exceptions; 2 | 3 | public class EmailNotVerified extends IllegalStateException { 4 | 5 | public EmailNotVerified(String msg) { 6 | super(msg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/exceptions/InvalidIbanException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.service.exceptions; 2 | 3 | public class InvalidIbanException extends RuntimeException { 4 | public InvalidIbanException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/exceptions/Oauth2UnauthorizedException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.exceptions; 2 | 3 | public class Oauth2UnauthorizedException extends IllegalStateException { 4 | 5 | public Oauth2UnauthorizedException(String msg) { 6 | super(msg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/service/oauth2/Oauth2AuthResult.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.service.oauth2; 2 | 3 | import lombok.Data; 4 | 5 | import java.net.URI; 6 | 7 | @Data 8 | public class Oauth2AuthResult { 9 | 10 | private final String state; 11 | private final URI redirectTo; 12 | } 13 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/service/oauth2/Oauth2Const.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.service.oauth2; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") // Lombok generates private ctor. 7 | public class Oauth2Const { 8 | 9 | public static final String COOKIE_OAUTH2_COOKIE_NAME = "OAUTH2-COOKIE"; 10 | } 11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/tppclients/Actions.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.tppclients; 2 | 3 | public enum Actions { 4 | 5 | LIST_ACCOUNTS 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-impl/src/main/java/de/adorsys/opba/fintech/impl/tppclients/ConsentType.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.impl.tppclients; 2 | 3 | public enum ConsentType { 4 | AIS, 5 | PIS 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:21-jre-alpine 2 | 3 | ENV APP_HOME /usr/app 4 | WORKDIR $APP_HOME 5 | 6 | COPY target/*exec.jar . 7 | 8 | EXPOSE 8086 9 | 10 | ENTRYPOINT ["sh", "-c", "java -jar fintech-server-*.jar"] 11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-server/README.md: -------------------------------------------------------------------------------- 1 | # Fintech Server 2 | 3 | Deploys FinTech API 4 | 5 | ``` 6 | > mvn clean install 7 | > mvn spring-boot:run 8 | 9 | then http://localhost:8086 10 | ``` 11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-server/src/deb/control/control: -------------------------------------------------------------------------------- 1 | Package: fintech-server 2 | Version: 1.0.0 3 | Section: misc 4 | Priority: low 5 | Architecture: all 6 | Description: Provides Access to Banking APIs. 7 | Maintainer: Francis Pouatcha 8 | Depends: java-runtime (>= 21) -------------------------------------------------------------------------------- /fintech-examples/fintech-server/src/main/resources/static/index.html: -------------------------------------------------------------------------------- 1 | 2 | FinTech Api Server 3 | 4 | 5 |

FinTech API Server

6 | 7 | 10 | -------------------------------------------------------------------------------- /fintech-examples/fintech-server/src/test/java/de/adorsys/opba/fintech/server/LoginBody.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fintech.server; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @AllArgsConstructor 7 | @Getter 8 | class LoginBody { 9 | String username; 10 | String password; 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-server/src/test/resources/init.sql: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA IF NOT EXISTS fintech; -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/.dockerignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | dist 4 | src/**/api/ 5 | .angulardoc.json 6 | .vscode/* 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "useTabs": false, 5 | "tabWidth": 2, 6 | "semi": true, 7 | "trailingComma": "none", 8 | "bracketSpacing": true 9 | } 10 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress' 2 | 3 | export default defineConfig({ 4 | 5 | e2e: { 6 | 'baseUrl': 'http://localhost:4200' 7 | }, 8 | 9 | 10 | component: { 11 | devServer: { 12 | framework: 'angular', 13 | bundler: 'webpack', 14 | }, 15 | specPattern: '**/*.cy.ts' 16 | } 17 | 18 | }) 19 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/cypress/support/component-index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Components App 8 | 9 | 10 |
11 | 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/cypress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "sourceMap": false, 6 | "types": ["cypress"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/docker-root/entry.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # Use erb to use conditions and environment variables in nginx file 4 | erb /etc/nginx/conf.d/default.conf.erb >/etc/nginx/conf.d/default.conf 5 | 6 | # Continue with normal start 7 | . /docker-entrypoint.sh 8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/proxy-dev.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/fintech-api-proxy/*": { 3 | "target": "https://obg-dev-fintechui.cloud.adorsys.de/fintech-api-proxy", 4 | "secure": false, 5 | "changeOrigin": true, 6 | "logLevel": "debug", 7 | "pathRewrite": { 8 | "^/fintech-api-proxy": "" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/proxy-docker.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/fintech-api-proxy/*": { 3 | "target": "http://localhost:18086", 4 | "secure": false, 5 | "changeOrigin": true, 6 | "logLevel": "debug", 7 | "pathRewrite": { 8 | "^/fintech-api-proxy": "" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/proxy.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/fintech-api-proxy/**": { 3 | "target": "http://localhost:8086", 4 | "secure": false, 5 | "changeOrigin": true, 6 | "logLevel": "debug", 7 | "pathRewrite": { 8 | "^/fintech-api-proxy": "" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/api/.gitignore: -------------------------------------------------------------------------------- 1 | wwwroot/*.js 2 | node_modules 3 | typings 4 | dist 5 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/api/.openapi-generator/VERSION: -------------------------------------------------------------------------------- 1 | 4.3.1 -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/api/index.ts: -------------------------------------------------------------------------------- 1 | export * from './api/api'; 2 | export * from './model/models'; 3 | export * from './variables'; 4 | export * from './configuration'; 5 | export * from './api.module'; -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/api/model-classes/ClassSinglePaymentInitiationRequest.ts: -------------------------------------------------------------------------------- 1 | import { SinglePaymentInitiationRequest } from '../model/singlePaymentInitiationRequest'; 2 | 3 | export class ClassSinglePaymentInitiationRequest implements SinglePaymentInitiationRequest{ 4 | name: string; 5 | creditorIban: string; 6 | debitorIban: string; 7 | amount: string; 8 | purpose?: string; 9 | instantPayment?: boolean; 10 | } 11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/api/variables.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | 3 | export const BASE_PATH = new InjectionToken('basePath'); 4 | export const COLLECTION_FORMATS = { 5 | 'csv': ',', 6 | 'tsv': ' ', 7 | 'ssv': ' ', 8 | 'pipes': '|' 9 | } 10 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [backdrop]="false" [backgroundColor]="'#ff0000'" [debounceDelay]="100" [extraDuration]="300" [opacity]=".6" 5 | 6 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/app.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/bank.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/bank.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/bank/bank.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/list-accounts/list-accounts.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/list-accounts/list-accounts.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/assets/themes/variables' as vars; 2 | 3 | .add-mr-mb:not(:last-child) { 4 | margin-right: 1rem; 5 | margin-bottom: 1rem; 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/list-transactions/list-transactions.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/styles'; 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-account/payment-account.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-account/payment-account.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/styles'; 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-accounts/payment-accounts.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/assets/themes/variables' as vars; 2 | 3 | .add-mr-mb:not(:last-child) { 4 | margin-right: 1rem; 5 | margin-bottom: 1rem; 6 | } 7 | 8 | form { 9 | max-width: 232px; 10 | width: 100%; 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-confirm/confirm.data.ts: -------------------------------------------------------------------------------- 1 | import { RedirectStruct } from '../../redirect-page/redirect-struct'; 2 | import { SinglePaymentInitiationRequest } from '../../../api'; 3 | 4 | export class ConfirmData { 5 | paymentRequest: SinglePaymentInitiationRequest; 6 | redirectStruct: RedirectStruct; 7 | } 8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-initiate/initiate.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/assets/themes/variables' as vars; 2 | 3 | input { 4 | margin-right: 10px; 5 | } 6 | 7 | .card-body { 8 | background-color: vars.$primary-10; 9 | padding: 20px; 10 | } 11 | 12 | label { 13 | margin-top: 1.5rem; 14 | } 15 | 16 | .withoutOutline { 17 | outline: none; 18 | } 19 | .lacc-parent { 20 | margin: 50px; 21 | display: flex; 22 | flex-direction: row; 23 | } 24 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment-result/result.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/bank/payment/payment-result/result.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment.component.scss: -------------------------------------------------------------------------------- 1 | @use 'src/styles'; 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/payment/payment.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { RouterOutlet } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-payment', 6 | templateUrl: './payment.component.html', 7 | styleUrls: ['./payment.component.scss'], 8 | standalone: true, 9 | imports: [RouterOutlet] 10 | }) 11 | export class PaymentComponent {} 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/redirect-page/redirect-page.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/redirect-page/redirect-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/bank/redirect-page/redirect-page.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/bank/settings/settings.component.scss: -------------------------------------------------------------------------------- 1 | input { 2 | margin-right: 10px; 3 | } 4 | 5 | .form-group:not(:last-child) { 6 | margin-bottom: 2rem; 7 | } 8 | 9 | .form-check { 10 | display: flex; 11 | padding-left: 0; 12 | align-items: baseline; 13 | } 14 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/common/modal-card/modal-card.component.scss: -------------------------------------------------------------------------------- 1 | .modal { 2 | display: block; 3 | position: fixed; 4 | z-index: 99; 5 | left: 0; 6 | top: 0; 7 | width: 100%; 8 | height: 100%; 9 | background-color: rgb(0, 0, 0); 10 | background-color: rgba(0, 0, 0, 0.4); 11 | } 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/common/navbar/navbar.component.scss: -------------------------------------------------------------------------------- 1 | .list-group-item { 2 | font-size: 0.7em; 3 | margin-left: 100px; 4 | } 5 | 6 | .dropdown-menu { 7 | padding: 0.1rem; 8 | } 9 | 10 | .nav { 11 | padding: 1.75rem; 12 | cursor: pointer; 13 | .dropdown-item { 14 | padding-top: 0.5rem; 15 | padding-bottom: 0.5rem; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/common/search/search.component.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/errorsHandler/error.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { ErrorService } from './error.service'; 4 | 5 | describe('ErrorService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: ErrorService = TestBed.inject(ErrorService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/errorsHandler/info/info-options.ts: -------------------------------------------------------------------------------- 1 | export interface InfoOptions { 2 | severity: 'info' | 'warn' | 'error'; 3 | closable: boolean; 4 | duration: number; 5 | } 6 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/errorsHandler/info/info.component.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/invalid-oauth2/forbidden-oauth2.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/invalid-oauth2/forbidden-oauth2.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/models/LogException.ts: -------------------------------------------------------------------------------- 1 | export class LogException { 2 | constructor(private value: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/models/credentials.model.ts: -------------------------------------------------------------------------------- 1 | export class Credentials { 2 | username: string; 3 | password: string; 4 | } 5 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/models/modalCard.model.ts: -------------------------------------------------------------------------------- 1 | export class ModalCard { 2 | title: string; 3 | description: string; 4 | imageUrl?: string; 5 | confirmBtn?: boolean; 6 | cancelBtn?: boolean; 7 | } 8 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/models/timer.model.ts: -------------------------------------------------------------------------------- 1 | export class TimerModel { 2 | started: boolean; 3 | sessionValidUntil: string; 4 | redirectsValidUntil?: string[]; 5 | } 6 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/oauth2-login/oauth2-login.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Oauth2 login

4 |
5 |
Please wait...
6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/oauth2-login/oauth2-login.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/oauth2-login/oauth2-login.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-consent-denied/redirect-after-consent-denied.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-consent-denied/redirect-after-consent-denied.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/redirect-after-consent-denied/redirect-after-consent-denied.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-consent/redirect-after-consent.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-consent/redirect-after-consent.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/redirect-after-consent/redirect-after-consent.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-payment-denied/redirect-after-payment-denied.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-payment-denied/redirect-after-payment-denied.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/redirect-after-payment-denied/redirect-after-payment-denied.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-payment/redirect-after-payment.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/redirect-after-payment/redirect-after-payment.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/app/redirect-after-payment/redirect-after-payment.component.scss -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/services/session.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { StorageService } from './storage.service'; 4 | 5 | describe('StorageService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: StorageService = TestBed.inject(StorageService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/app/session-expired/session-expired.component.scss: -------------------------------------------------------------------------------- 1 | .center-button { 2 | display: flex; 3 | flex-direction: column; /* Stack buttons vertically */ 4 | align-items: center; /* Center horizontally */ 5 | gap: 0.2px; /* Add spacing between buttons */ 6 | } 7 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/custom/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/custom/favicon.png -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Light.otf -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Medium.otf -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-Regular.otf -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/fonts/Geometric/URWGeometric-SemiBold.otf -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/icons/bank-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/icons/bank-search.png -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/icons/card_payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/icons/card_payment.png -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/icons/icons8-network 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/icons/icons8-network 2.png -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/icons/receive_dollar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/assets/icons/receive_dollar.png -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/assets/themes/_bootstrap-overrides.scss: -------------------------------------------------------------------------------- 1 | $font-family-base: geometric-regular, sans-serif; 2 | $danger: #e16a6a; 3 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | FINTECH_API: 'fintech-api-proxy' 4 | }; 5 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/fintech-examples/fintech-ui/src/favicon.ico -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Fintech UI 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": ["node"] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"], 9 | "exclude": ["src/test.ts", "src/**/*.spec.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /fintech-examples/fintech-ui/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": ["jasmine", "node"] 6 | }, 7 | "files": ["src/test.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /firefly-exporter/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:21-jre-alpine 2 | 3 | ENV APP_HOME /usr/app 4 | WORKDIR $APP_HOME 5 | 6 | COPY target/*.jar . 7 | 8 | EXPOSE 9001 9 | 10 | ENTRYPOINT ["sh", "-c", "java -jar fireflyexporter-*.jar"] 11 | -------------------------------------------------------------------------------- /firefly-exporter/README.md: -------------------------------------------------------------------------------- 1 | # What is this 2 | 3 | This is the exporter to push data from OpenBankingGateway to [Firefly III Personal Finance Manager](https://github.com/firefly-iii/firefly-iii). 4 | So that anyone can push data from the bank supported by OpenBankingGateway to Firefly to manage own budget. 5 | 6 | 7 | # Notes 8 | 9 | We aim to have this project decoupled from OPBA. 10 | -------------------------------------------------------------------------------- /firefly-exporter/firefly-docker-demo/README.md: -------------------------------------------------------------------------------- 1 | # What is this 2 | 3 | This is the reference example of Firefly-III local deployment used to test `firefly-exporter`. 4 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/java/de/adorsys/opba/fireflyexporter/controller/exceptions/ConsentException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter.controller.exceptions; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(code = HttpStatus.TOO_MANY_REQUESTS, reason = "Consent limits seem to be exhausted") 7 | public class ConsentException extends RuntimeException { 8 | } 9 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/java/de/adorsys/opba/fireflyexporter/controller/rest/Consts.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter.controller.rest; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") // Lombok generates private ctor. 7 | public class Consts { 8 | 9 | public static final String FIREFLY_TOKEN = "FIREFLY-TOKEN"; 10 | } 11 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/java/de/adorsys/opba/fireflyexporter/dto/ExportableAccount.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class ExportableAccount { 9 | 10 | private String iban; 11 | private String resourceId; 12 | } 13 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/java/de/adorsys/opba/fireflyexporter/repository/AccountExportJobRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter.repository; 2 | 3 | import de.adorsys.opba.fireflyexporter.entity.AccountExportJob; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface AccountExportJobRepository extends JpaRepository { 9 | } 10 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/java/de/adorsys/opba/fireflyexporter/repository/TransactionExportJobRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter.repository; 2 | 3 | import de.adorsys.opba.fireflyexporter.entity.TransactionExportJob; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface TransactionExportJobRepository extends JpaRepository { 9 | } 10 | -------------------------------------------------------------------------------- /firefly-exporter/src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/firefly-exporter/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /firefly-exporter/src/test/java/de/adorsys/opba/fireflyexporter/FireflyExporterApplicationTests.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.fireflyexporter; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class FireflyExporterApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /generate_site_script.sh: -------------------------------------------------------------------------------- 1 | docker run -it --rm -v "$PWD":/src -w /src -u "$(id -u "${USER}"):$(id -g "${USER}")" --env TRAVIS_TAG g0lden/mkdocs make site 2 | -------------------------------------------------------------------------------- /helpers/docker-wiremock.yml: -------------------------------------------------------------------------------- 1 | version: "3.3" 2 | services: 3 | wiremock: 4 | image: "rodolpheche/wiremock" 5 | ports: 6 | - "18080:8080" 7 | volumes: 8 | - ${WIREMOCK_STUBS_DIR}:/home/wiremock 9 | 10 | -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | lombok.anyconstructor.addconstructorproperties = true 2 | lombok.addLombokGeneratedAnnotation = true -------------------------------------------------------------------------------- /opba-admin-rest-api/src/main/java/de/adorsys/opba/adminapi/config/AdminApiConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.adminapi.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("de.adorsys.opba.adminapi") 8 | public class AdminApiConfig { 9 | } 10 | -------------------------------------------------------------------------------- /opba-admin-rest-api/src/main/java/de/adorsys/opba/adminapi/config/Const.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.adminapi.config; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") //Checkstyle doesn't recognise Lombok 7 | public class Const { 8 | 9 | public static final String DISABLED_ON_NO_ADMIN_API = "!no-admin-api"; 10 | } 11 | -------------------------------------------------------------------------------- /opba-api-security-signer-generator/opba-api-security-signer-generator-api/src/main/java/de/adorsys/opba/api/security/generator/api/GeneratedDataToSignNormalizer.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.api.security.generator.api; 2 | 3 | public @interface GeneratedDataToSignNormalizer { 4 | 5 | String signerClassName() default ""; 6 | String[] openApiYamlPath(); 7 | String signatureHeaderName() default ""; 8 | } 9 | -------------------------------------------------------------------------------- /opba-api-security-signer-generator/opba-api-security-signer-generator-impl/src/test/resources/DataToSignConfigurer.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.signer.test; 2 | 3 | import de.adorsys.opba.api.security.generator.api.GeneratedDataToSignNormalizer; 4 | 5 | @GeneratedDataToSignNormalizer(openApiYamlPath = {"api/tpp_banking_api_ais.yml"}, signerClassName = "TestSigner") 6 | public class DataToSignConfigurer { 7 | } 8 | -------------------------------------------------------------------------------- /opba-api-security/src/main/java/de/adorsys/opba/api/security/external/domain/FilterValidationHeaderValues.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.api.security.external.domain; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | 6 | @Builder 7 | @Getter 8 | public class FilterValidationHeaderValues { 9 | private String fintechId; 10 | private String xRequestId; 11 | private String requestTimeStamp; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /opba-api-security/src/main/java/de/adorsys/opba/api/security/external/service/RequestSigningService.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.api.security.external.service; 2 | 3 | public interface RequestSigningService { 4 | 5 | String signature(String dataToSign); 6 | } 7 | -------------------------------------------------------------------------------- /opba-api-security/src/main/java/de/adorsys/opba/api/security/internal/service/RequestVerifyingService.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.api.security.internal.service; 2 | 3 | public interface RequestVerifyingService { 4 | 5 | boolean verify(String providedSignature, String encodedPublicKey, String computedSignature); 6 | } 7 | -------------------------------------------------------------------------------- /opba-auth-rest-api/src/main/java/de/adorsys/opba/tppauthapi/config/TppAuthApiConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.tppauthapi.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan(basePackages = { 8 | "de.adorsys.opba.tppauthapi", 9 | "de.adorsys.opba.restapi.shared" 10 | }) 11 | public class TppAuthApiConfig { 12 | } 13 | -------------------------------------------------------------------------------- /opba-auth-rest-impl/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /opba-auth-rest-impl/src/test/resources/example-keyset.json: -------------------------------------------------------------------------------- 1 | { 2 | "primaryKeyId": 212911436, 3 | "key": [{ 4 | "keyData": { 5 | "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmKey", 6 | "keyMaterialType": "SYMMETRIC", 7 | "value": "GhAJuZG0ZdEWGAOteyA95dMc" 8 | }, 9 | "outputPrefixType": "TINK", 10 | "keyId": 212911436, 11 | "status": "ENABLED" 12 | }] 13 | } 14 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/docs/consent-sharing/consent-sharing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-banking-protocol-facade/docs/consent-sharing/consent-sharing.png -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/config/FacadeGenericConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.transaction.annotation.EnableTransactionManagement; 5 | 6 | /** 7 | * Generic facade configuration. 8 | */ 9 | @Configuration 10 | @EnableTransactionManagement 11 | public class FacadeGenericConfig { 12 | } 13 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/config/encryption/CmsEncSpec.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.config.encryption; 2 | 3 | import org.bouncycastle.asn1.ASN1ObjectIdentifier; 4 | 5 | /** 6 | * CMS (Cryptographic Message Syntax) Encryption metadata / specification. 7 | */ 8 | public interface CmsEncSpec { 9 | 10 | String getKeyAlgo(); 11 | int getLen(); 12 | ASN1ObjectIdentifier getCipherAlgo(); 13 | } 14 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/config/encryption/SecretKeyWithIv.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.config.encryption; 2 | 3 | import lombok.Data; 4 | 5 | import javax.crypto.SecretKey; 6 | 7 | /** 8 | * Wrapper for secret key and initialization vector. 9 | */ 10 | @Data 11 | public class SecretKeyWithIv { 12 | 13 | private final byte[] iv; 14 | private final SecretKey secretKey; 15 | } 16 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/dto/ActionWithProtocolId.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Action to be executed within protocol. 7 | * @param Action to execute 8 | */ 9 | @Data 10 | public class ActionWithProtocolId { 11 | 12 | private final long bankActionId; 13 | private final ACTION action; 14 | } 15 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/dto/PubAndPrivKey.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.security.PrivateKey; 6 | import java.security.PublicKey; 7 | 8 | /** 9 | * Public and private key tuple. 10 | */ 11 | @Data 12 | public class PubAndPrivKey { 13 | 14 | private final PublicKey publicKey; 15 | private final PrivateKey privateKey; 16 | } 17 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/exceptions/NoProtocolRegisteredException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.exceptions; 2 | 3 | /** 4 | * An exception indicating no protocol was configured for this ASPSP and action in database. 5 | */ 6 | public class NoProtocolRegisteredException extends RuntimeException { 7 | 8 | public NoProtocolRegisteredException(String message) { 9 | super(message); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/exceptions/PsuDoesNotExist.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.exceptions; 2 | 3 | /** 4 | * An exception indicating i.e. user does not exists. 5 | */ 6 | public class PsuDoesNotExist extends RuntimeException { 7 | 8 | public PsuDoesNotExist(String message) { 9 | super(message); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/exceptions/PsuRegisterException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.exceptions; 2 | 3 | /** 4 | * An exception indicating failure registering user. 5 | */ 6 | public class PsuRegisterException extends RuntimeException { 7 | 8 | public PsuRegisterException(String message) { 9 | super(message); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/java/de/adorsys/opba/protocol/facade/exceptions/PsuWrongCredentials.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.facade.exceptions; 2 | 3 | /** 4 | * An exception indicating user has provided wrong credentials 5 | */ 6 | public class PsuWrongCredentials extends Exception { 7 | public PsuWrongCredentials(String message, Throwable cause) { 8 | super(message, cause); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/main/resources/example-keyset.json: -------------------------------------------------------------------------------- 1 | { 2 | "primaryKeyId": 212911436, 3 | "key": [{ 4 | "keyData": { 5 | "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmKey", 6 | "keyMaterialType": "SYMMETRIC", 7 | "value": "GhAJuZG0ZdEWGAOteyA95dMc" 8 | }, 9 | "outputPrefixType": "TINK", 10 | "keyId": 212911436, 11 | "status": "ENABLED" 12 | }] 13 | } 14 | -------------------------------------------------------------------------------- /opba-banking-protocol-facade/src/test/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-banking-protocol-facade/src/test/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-banking-rest-api/.gitignore: -------------------------------------------------------------------------------- 1 | generated 2 | !generated/.swagger-codegen-ignore 3 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/main/java/de/adorsys/opba/tppbankingapi/controller/MissingDataProtectionPassword.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.tppbankingapi.controller; 2 | 3 | public class MissingDataProtectionPassword extends RuntimeException { 4 | 5 | public MissingDataProtectionPassword() { 6 | super("Missing either 'Service-Session-Password' or 'Fintech-Data-Password' header with data protection password"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/test/java/de/adorsys/opba/tppbankingapi/dto/TestResult.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.tppbankingapi.dto; 2 | 3 | import lombok.Value; 4 | 5 | @Value 6 | public class TestResult { 7 | private long start; 8 | private long end; 9 | private String searchString; 10 | private String result; 11 | } 12 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/test/resources/application-test-one-time-postgres-disk-volume.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:tc:postgresql:12:////open_banking?TC_DAEMON=true&TC_INITSCRIPT=init.sql 4 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/test/resources/application-test-one-time-postgres-ramfs.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:tc:postgresql:12:////open_banking?TC_DAEMON=true&?TC_TMPFS=/testtmpfs:rw&TC_INITSCRIPT=init.sql 4 | -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/test/resources/application-test-search.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | liquibase: 3 | contexts: xs2a-banks -------------------------------------------------------------------------------- /opba-banking-rest-impl/src/test/resources/example-keyset.json: -------------------------------------------------------------------------------- 1 | { 2 | "primaryKeyId": 212911436, 3 | "key": [{ 4 | "keyData": { 5 | "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmKey", 6 | "keyMaterialType": "SYMMETRIC", 7 | "value": "GhAJuZG0ZdEWGAOteyA95dMc" 8 | }, 9 | "outputPrefixType": "TINK", 10 | "keyId": 212911436, 11 | "status": "ENABLED" 12 | }] 13 | } 14 | -------------------------------------------------------------------------------- /opba-consent-rest-api/src/main/resources/static/img/open-banking-consent-authorisation-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-consent-rest-api/src/main/resources/static/img/open-banking-consent-authorisation-api.png -------------------------------------------------------------------------------- /opba-consent-rest-impl/src/main/java/de/adorsys/opba/consentapi/Const.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.consentapi; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") // Lombok generates private ctor. 7 | public class Const { 8 | 9 | public static final String API_MAPPERS_PACKAGE = "de.adorsys.opba.consentapi.mapper.generated"; 10 | } 11 | -------------------------------------------------------------------------------- /opba-consent-rest-impl/src/main/resources/static/img/open-banking-consent-authorisation-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-consent-rest-impl/src/main/resources/static/img/open-banking-consent-authorisation-api.png -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/domain/entity/IdAssignable.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.domain.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public interface IdAssignable { 6 | 7 | I getId(); 8 | void setId(I id); 9 | } 10 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/domain/entity/baba.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-db/src/main/java/de/adorsys/opba/db/domain/entity/baba.xml -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/DatasafeConfigRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa; 2 | 3 | import de.adorsys.opba.db.domain.entity.DatasafeConfig; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | public interface DatasafeConfigRepository extends JpaRepository { 7 | } 8 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/ServiceSessionRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa; 2 | 3 | import de.adorsys.opba.db.domain.entity.sessions.ServiceSession; 4 | import org.springframework.data.repository.CrudRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.UUID; 8 | 9 | @Repository 10 | public interface ServiceSessionRepository extends CrudRepository { 11 | } 12 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/SessionRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa; 2 | 3 | import de.adorsys.opba.db.domain.entity.sessions.SessionFromAspsp; 4 | import org.springframework.data.repository.CrudRepository; 5 | 6 | public interface SessionRepository extends CrudRepository { 7 | SessionFromAspsp findByAuthId(String authId); 8 | } 9 | 10 | 11 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/fintech/FintechUserRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa.fintech; 2 | 3 | import de.adorsys.opba.db.domain.entity.fintech.FintechUser; 4 | import org.springframework.data.repository.CrudRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface FintechUserRepository extends CrudRepository { 9 | } 10 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/psu/PsuAspspPubKeyRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa.psu; 2 | 3 | import de.adorsys.opba.db.domain.entity.psu.PsuAspspPubKey; 4 | import org.springframework.data.repository.CrudRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.UUID; 8 | 9 | @Repository 10 | public interface PsuAspspPubKeyRepository extends CrudRepository { 11 | } 12 | -------------------------------------------------------------------------------- /opba-db/src/main/java/de/adorsys/opba/db/repository/jpa/psu/PsuRepository.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.repository.jpa.psu; 2 | 3 | import de.adorsys.opba.db.domain.entity.psu.Psu; 4 | import org.springframework.data.repository.CrudRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | @Repository 10 | public interface PsuRepository extends CrudRepository { 11 | Optional findByLogin(String id); 12 | } 13 | -------------------------------------------------------------------------------- /opba-db/src/main/resources/init.sql: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA IF NOT EXISTS banking_protocol; 2 | CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA banking_protocol; 3 | -------------------------------------------------------------------------------- /opba-db/src/main/resources/migration/migrations/csv/v0/0-mock-banks.csv: -------------------------------------------------------------------------------- 1 | bank_uuid,name,bic,bank_code 2 | adadadad-1000-0000-0000-b0b0b0b0b0b0,adorsys HBCI no SCA,ADORSYS HA,10000001 3 | adadadad-2000-0000-0000-b0b0b0b0b0b0,adorsys HBCI no SCA authenticated BPD,ADORSYS HB,20000002 4 | adadadad-3000-0000-0000-b0b0b0b0b0b0,adorsys HBCI transactions SCA,ADORSYS HS,30000003 5 | adadadad-4000-0000-0000-b0b0b0b0b0b0,adorsys XS2A,ADORSYS XS,"" -------------------------------------------------------------------------------- /opba-db/src/test/java/de/adorsys/opba/db/config/TestConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.db.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | 5 | @Configuration 6 | public class TestConfig { 7 | } 8 | -------------------------------------------------------------------------------- /opba-db/src/test/resources/application.yml: -------------------------------------------------------------------------------- 1 | bank-action-generator: 2 | action: 3 | start-id: 10000 4 | sub-action: 5 | start-id: 10000 6 | skip-banks: 9 -------------------------------------------------------------------------------- /opba-embedded-starter-tests/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This test package validates 4 | [OpenBankingEmbeddedApplication](../opba-embedded-starter/src/main/java/de/adorsys/opba/starter/OpenBankingEmbeddedApplication.java) 5 | properly starts and works with its protocols. 6 | 7 | Protocols that are validated here: 8 | 1. [Xs2a (Sandbox) protocol](../opba-protocols/xs2a-sandbox-protocol) using Wiremock-stubs. -------------------------------------------------------------------------------- /opba-embedded-starter-tests/src/test/resources/adapter.config.properties: -------------------------------------------------------------------------------- 1 | santander.token.consumer_key=123 2 | santander.token.consumer_secret=123 3 | -------------------------------------------------------------------------------- /opba-embedded-starter-tests/src/test/resources/adminapi/adadadad-1000-0000-0000-b0b0b0b0b0b0-profiles-removed.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": [], 3 | "bank": { 4 | "uuid": "adadadad-1000-0000-0000-b0b0b0b0b0b0", 5 | "name": "adorsys HBCI no SCA-222", 6 | "bic": "ADORSYS+HA", 7 | "bankCode": "10000001" 8 | } 9 | } -------------------------------------------------------------------------------- /opba-embedded-starter-tests/src/test/resources/application-test-separate-db.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:tc:postgresql:12:////open_banking?TC_INITSCRIPT=init.sql -------------------------------------------------------------------------------- /opba-embedded-starter-tests/src/test/resources/example-keyset.json: -------------------------------------------------------------------------------- 1 | { 2 | "primaryKeyId": 212911436, 3 | "key": [{ 4 | "keyData": { 5 | "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmKey", 6 | "keyMaterialType": "SYMMETRIC", 7 | "value": "GhAJuZG0ZdEWGAOteyA95dMc" 8 | }, 9 | "outputPrefixType": "TINK", 10 | "keyId": 212911436, 11 | "status": "ENABLED" 12 | }] 13 | } 14 | -------------------------------------------------------------------------------- /opba-embedded-starter-tests/src/test/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-embedded-starter-tests/src/test/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-embedded-starter/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:21-jre-alpine 2 | 3 | ENV APP_HOME /usr/app 4 | WORKDIR $APP_HOME 5 | 6 | COPY target/*exec.jar . 7 | 8 | EXPOSE 8085 9 | 10 | ENTRYPOINT ["sh", "-c", "java -jar open-banking-gateway-*exec.jar"] 11 | -------------------------------------------------------------------------------- /opba-embedded-starter/src/deb/control/control: -------------------------------------------------------------------------------- 1 | Package: open-banking-gateway 2 | Version: 1.0.0 3 | Section: misc 4 | Priority: low 5 | Architecture: all 6 | Description: Provides Access to Banking API 7 | Maintainer: Francis Pouatcha 8 | Depends: java-runtime (>= 21) -------------------------------------------------------------------------------- /opba-embedded-starter/src/main/resources/example-keyset.json: -------------------------------------------------------------------------------- 1 | { 2 | "primaryKeyId": 212911436, 3 | "key": [{ 4 | "keyData": { 5 | "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmKey", 6 | "keyMaterialType": "SYMMETRIC", 7 | "value": "GhAJuZG0ZdEWGAOteyA95dMc" 8 | }, 9 | "outputPrefixType": "TINK", 10 | "keyId": 212911436, 11 | "status": "ENABLED" 12 | }] 13 | } 14 | -------------------------------------------------------------------------------- /opba-embedded-starter/src/main/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-embedded-starter/src/main/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-embedded-starter/suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/common/Approach.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.common; 2 | 3 | /** 4 | * SCA authorization approach. 5 | */ 6 | public enum Approach { 7 | 8 | REDIRECT, 9 | EMBEDDED, 10 | DECOUPLED 11 | } 12 | 13 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/common/CurrentFintechProfile.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.common; 2 | 3 | public interface CurrentFintechProfile { 4 | /** 5 | * User friendly Fintech name 6 | */ 7 | String getName(); 8 | } 9 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/NotSensitiveData.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto; 2 | 3 | 4 | public interface NotSensitiveData { 5 | 6 | String getNotSensitiveData(); 7 | } 8 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/context/UserAgentExtras.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.context; 2 | 3 | /** 4 | * Extra information about PSUs UserAgent. Is used to extend {@link UserAgentContext} with custom values. 5 | */ 6 | public enum UserAgentExtras { 7 | } 8 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/request/Analytics.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.request; 2 | 3 | public enum Analytics { 4 | BANK, OWN, DISABLED 5 | } 6 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/request/FacadeServiceableGetter.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.request; 2 | 3 | /** 4 | * Interface to access the request representation that is serviced by facade. 5 | */ 6 | public interface FacadeServiceableGetter { 7 | 8 | FacadeServiceableRequest getFacadeServiceable(); 9 | } 10 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/request/OtpFormat.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.request; 2 | 3 | public enum OtpFormat { 4 | CHARACTERS, 5 | INTEGER 6 | } 7 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/result/body/Address.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.result.body; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Address { 7 | private String streetName; 8 | private String buildingNumber; 9 | private String city; 10 | private String postCode; 11 | private String country; 12 | } 13 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/result/body/DeleteConsentBody.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.result.body; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * The response from authorization denial to request 7 | * {@link de.adorsys.opba.protocol.api.dto.request.authorization.DeleteConsentRequest}. 8 | */ 9 | @Data 10 | public class DeleteConsentBody implements ResultBody { 11 | } 12 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/result/body/DenyAuthBody.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.result.body; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * The response from authorization denial to request 7 | * {@link de.adorsys.opba.protocol.api.dto.request.authorization.DenyAuthorizationRequest}. 8 | */ 9 | @Data 10 | public class DenyAuthBody implements ResultBody { 11 | } 12 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/dto/result/body/TransactionListBody.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.dto.result.body; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * List transactions result from protocol. 7 | */ 8 | public class TransactionListBody extends ArrayList { 9 | } 10 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/fintechspec/ApiConsumer.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.fintechspec; 2 | 3 | import de.adorsys.opba.protocol.api.common.CurrentFintechProfile; 4 | 5 | public interface ApiConsumer extends CurrentFintechProfile { 6 | String getName(); 7 | 8 | String getPublicKey(); 9 | } 10 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/fintechspec/ApiConsumerConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.fintechspec; 2 | 3 | import java.util.Map; 4 | 5 | public interface ApiConsumerConfig { 6 | Map getConsumers(); 7 | } 8 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/ResultBodyPostProcessor.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services; 2 | 3 | import de.adorsys.opba.protocol.api.dto.request.FacadeServiceableRequest; 4 | 5 | public interface ResultBodyPostProcessor { 6 | 7 | Object apply(Object requestMappedResult); 8 | boolean shouldApply(FacadeServiceableRequest request, Object requestMappedResult); 9 | } 10 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/scoped/fintech/UsesCurrentFintechProfile.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services.scoped.fintech; 2 | 3 | import de.adorsys.opba.protocol.api.common.CurrentFintechProfile; 4 | 5 | public interface UsesCurrentFintechProfile { 6 | CurrentFintechProfile fintechProfile(); 7 | } 8 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/scoped/transientdata/UsesTransientStorage.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services.scoped.transientdata; 2 | 3 | /** 4 | * Protocol facing transient storage access object. 5 | */ 6 | public interface UsesTransientStorage { 7 | 8 | /** 9 | * Get access to transient storage operations. 10 | */ 11 | TransientStorage transientStorage(); 12 | } 13 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/scoped/validation/IgnoreValidationRule.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services.scoped.validation; 2 | 3 | /** 4 | * Allows to ignore triggered validation rule. 5 | */ 6 | public interface IgnoreValidationRule extends ValidationRule { 7 | } 8 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/scoped/validation/UsesValidation.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services.scoped.validation; 2 | 3 | public interface UsesValidation { 4 | FieldsToIgnoreLoader fieldsToIgnoreLoader(); 5 | } 6 | -------------------------------------------------------------------------------- /opba-facade-protocol-api-shared/src/main/java/de/adorsys/opba/protocol/api/services/scoped/validation/ValidationRule.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.services.scoped.validation; 2 | 3 | /** 4 | * Validation rule that enforces all necessary parameters are present to call ASPSP/Bank API. 5 | */ 6 | public interface ValidationRule { 7 | 8 | /** 9 | * @return If the rule applies to the current context. 10 | */ 11 | boolean applies(); 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol-tests/hbci-bdd-sandbox/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This test validates only XS2A protocol by using stubbed Wiremock responses 4 | (and accommodated to XS2A protocol, so list transactions method doesn't call list accounts) 5 | of Dynamic Sandbox. 6 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol-tests/hbci-bdd-sandbox/src/test/java/de/adorsys/opba/protocol/hbci/tests/e2e/sandbox/Const.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.hbci.tests.e2e.sandbox; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") // Lombok generates private ctor. 7 | public class Const { 8 | 9 | public static final String HBCI_SANDBOX_CONFIG = "hbci-sandbox-config"; 10 | } 11 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol/src/main/java/de/adorsys/opba/protocol/hbci/service/protocol/pis/dto/PisSinglePaymentResult.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.hbci.service.protocol.pis.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PisSinglePaymentResult { 7 | private final String transactionId; 8 | } 9 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol/src/main/java/de/adorsys/opba/protocol/hbci/util/logresolver/domain/HbciExecutionLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.hbci.util.logresolver.domain; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class HbciExecutionLog { 8 | 9 | private String id; 10 | private String processInstanceId; 11 | private String rootProcessInstanceId; 12 | private String parentId; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol/src/test/java/de/adorsys/opba/protocol/hbci/service/protocol/pis/PaymentProtocolToMultibankingMapperTest.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.hbci.service.protocol.pis; 2 | 3 | import de.adorsys.opba.protocol.hbci.config.MapperTestConfig; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest(classes = MapperTestConfig.class) 7 | public class PaymentProtocolToMultibankingMapperTest { 8 | } 9 | -------------------------------------------------------------------------------- /opba-protocols/hbci-protocol/src/test/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | protocol: 2 | hbci: 3 | sca: 4 | authentication-types: 5 | SMS: "SMS_OTP" 6 | MOBILE: "SMS_OTP" 7 | CHIP: "CHIP_OTP" 8 | PHOTO: "PHOTO_OTP" 9 | PUSH: "PUSH_OTP" 10 | EMAIL: "SMTP_OTP" -------------------------------------------------------------------------------- /opba-protocols/opba-protocol-api/src/main/java/de/adorsys/opba/protocol/api/errors/ProcessErrorConsentGone.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.errors; 2 | 3 | public enum ProcessErrorConsentGone { 4 | 5 | CONSENT_UNKNOWN, 6 | CONSENT_INVALID, 7 | CONSENT_EXPIRED, 8 | CONSENT_ACCESS_EXCEEDED_LIMIT; 9 | } 10 | -------------------------------------------------------------------------------- /opba-protocols/opba-protocol-api/src/main/java/de/adorsys/opba/protocol/api/errors/ReturnableException.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.api.errors; 2 | 3 | public class ReturnableException extends RuntimeException { 4 | 5 | public ReturnableException(String message) { 6 | super(message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /opba-protocols/opba-protocol-testing-helper/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:21-jre-alpine 2 | 3 | ENV APP_HOME /usr/app 4 | WORKDIR $APP_HOME 5 | 6 | COPY target/*exec.jar . 7 | 8 | EXPOSE 8087 9 | 10 | ENTRYPOINT ["sh", "-c", "java -jar opba-protocol-testing-helper-*exec.jar"] 11 | -------------------------------------------------------------------------------- /opba-protocols/opba-protocol-testing-helper/src/main/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-protocols/opba-protocol-testing-helper/src/main/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-protocols/opba-protocol-testing-helper/suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /opba-protocols/protocol-bpmn-shared/README.md: -------------------------------------------------------------------------------- 1 | # What is this 2 | 3 | This is shared definition for **Flowable BPMN** usages by the protocols. -------------------------------------------------------------------------------- /opba-protocols/protocol-bpmn-shared/src/main/java/de/adorsys/opba/protocol/bpmnshared/config/flowable/JacksonMixin.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.bpmnshared.config.flowable; 2 | 3 | import lombok.Getter; 4 | import lombok.RequiredArgsConstructor; 5 | 6 | /** 7 | * Mostly to support HBCI. 8 | */ 9 | @Getter 10 | @RequiredArgsConstructor 11 | public class JacksonMixin { 12 | 13 | private final Class type; 14 | private final Class mixin; 15 | } 16 | -------------------------------------------------------------------------------- /opba-protocols/protocol-bpmn-shared/src/main/java/de/adorsys/opba/protocol/bpmnshared/dto/DtoMapper.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.bpmnshared.dto; 2 | 3 | /** 4 | * Mapper interface from one DTO to another. 5 | * @param Source DTO 6 | * @param Target DTO 7 | */ 8 | @FunctionalInterface 9 | public interface DtoMapper { 10 | 11 | T map(F from); 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/protocol-bpmn-shared/src/main/java/de/adorsys/opba/protocol/bpmnshared/dto/DtoUpdatingMapper.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.bpmnshared.dto; 2 | 3 | /** 4 | * Mapper interface that updates one DTO using another. 5 | * @param Source DTO 6 | * @param Target DTO that will be updated with Source DTO 7 | */ 8 | @FunctionalInterface 9 | public interface DtoUpdatingMapper { 10 | 11 | T map(F from, T toUpdate); 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/protocol-bpmn-shared/src/main/java/de/adorsys/opba/protocol/bpmnshared/util/logResolver/domain/ExecutionLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.bpmnshared.util.logResolver.domain; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class ExecutionLog { 8 | 9 | private String id; 10 | private String processInstanceId; 11 | private String rootProcessInstanceId; 12 | private String parentId; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/hbci-sandbox/Dockerfile: -------------------------------------------------------------------------------- 1 | # This Dockerfile is for deployment 2 | FROM eclipse-temurin:21-jre-alpine 3 | 4 | ENV APP_HOME /usr/app 5 | WORKDIR $APP_HOME 6 | 7 | COPY target/*exec.jar . 8 | 9 | EXPOSE 8090 10 | 11 | ENTRYPOINT ["sh", "-c", "java -jar hbci-sandbox-*exec.jar"] -------------------------------------------------------------------------------- /opba-protocols/sandboxes/hbci-sandbox/src/main/java/de/adorsys/opba/protocol/sandbox/hbci/config/dto/BpdAuthLevel.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.sandbox.hbci.config.dto; 2 | 3 | public enum BpdAuthLevel { 4 | 5 | ANONYMOUS, 6 | AUTHENTICATED 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/hbci-sandbox/src/main/java/de/adorsys/opba/protocol/sandbox/hbci/util/logresolver/domain/HbciSandboxExecutionLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.sandbox.hbci.util.logresolver.domain; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class HbciSandboxExecutionLog { 8 | 9 | private String id; 10 | private String processInstanceId; 11 | private String rootProcessInstanceId; 12 | private String parentId; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/hbci-sandbox/src/test/resources/interpolation/loop.json: -------------------------------------------------------------------------------- 1 | { 2 | "foo": "123", 3 | "prefix${_ctx.getLoopAccount().getPosition()}": "${ctx.getLoopAccount().getNumber()}", 4 | "bar": "99" 5 | } -------------------------------------------------------------------------------- /opba-protocols/sandboxes/hbci-sandbox/src/test/resources/interpolation/simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "foo": "123", 3 | "prefix${_ctx.getBank().getBlz()}": "${ctx.getBank().getBic()}" 4 | } -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/.gitignore: -------------------------------------------------------------------------------- 1 | sandbox-test/e2e-tests/logs/ -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This is the Java-based Dynamic Sandbox starter. All Sandbox apps start in single JVM, UI and Database are ran using Docker. 4 | It is a lighter variant compared to starting Sandbox from Docker completely. Also, you can debug Sandbox apps way 5 | easier in this bundled variant. 6 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/docker-compose-with-wiremock.yml: -------------------------------------------------------------------------------- 1 | version: "3.4" 2 | 3 | services: 4 | xs2a-wiremock: 5 | image: rodolpheche/wiremock:2.27.1 6 | ports: 7 | - 20014:8080 8 | volumes: 9 | - ./wiremock-fixtures/:/home/wiremock 10 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/sandbox-old/application-test-cert-generator.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: ${common.apps.local.certgenerator.port} 3 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/sandbox-old/application-test-online-banking-ui.yml: -------------------------------------------------------------------------------- 1 | port: ${common.apps.local.onlinebankingui.port} 2 | env: 3 | # Note that linux uses host network 4 | # other OS use host.docker.internal (requires docker 18.03+) 5 | ONLINE_BANKING_SERVER_URL: http://${dockerHost}:${common.apps.local.onlinebanking.port} 6 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/sandbox/application-test-cert-generator.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: ${common.apps.local.certgenerator.port} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/sandbox/application-test-online-banking-ui.yml: -------------------------------------------------------------------------------- 1 | port: ${common.apps.local.onlinebankingui.port} 2 | env: 3 | # Note that linux uses host network 4 | # other OS use host.docker.internal (requires docker 18.03+) 5 | ONLINE_BANKING_SERVER_URL: http://${dockerHost}:${common.apps.local.onlinebanking.port} 6 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-consents-356567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-consents-456567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-consents-50625.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/3-1GbYBPiC1TycC2-o2fRruCzqWyd_Ad9CHUQDrVAek386zdYL7VQ8mnLjUId1f8WmQLDVsea8QVWKkLALAJ-cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/977e3b4e-e0f3-4c8b-98bd-0503fe4f833f"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-consents-5252.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/Xv1G4Il2O5NFS7_tvYzqmHiFJVj1cjG68kxY3ySMxtwysZRh6LIlip9ygXuqonMNW-wY5B9_ytaUuw4OzBvN2cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/c9bf0a90-30da-4d83-84f6-1fc1a4dad57d"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-consents-63123.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"FORMAT_ERROR","text":"Invalid IBAN format"}]} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-payments-sepa-credit-transfers-12221.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-payments-sepa-credit-transfers-authorisations-NdAgb.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://localhost:20014/v1/payments/sepa-credit-transfers/XWE3m-MOSgiyLSbxm0gs9cTpUIYh6Zd7AGdfJFpzoL6i92f92FPqxs78swMVBY91cgftJbETkzvNvu5mZQqWcA==_=_psGLvQpt9Q/authorisations/d378c26d-eec8-4612-953f-e034501c38ce"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/sandboxes/xs2a-sandbox/src/main/resources/wiremock-fixtures/__files/body-v1-payments-sepa-credit-transfers-j08oa.json: -------------------------------------------------------------------------------- 1 | {"debtorAccount":{"iban":"DE38760700240320465700","currency":"EUR"},"instructedAmount":{"currency":"EUR","amount":"12.34"},"creditorAccount":{"iban":"AL90208110080000001039531801","currency":"EUR"},"creditorName":"peter","remittanceInformationUnstructured":"test transfer","transactionStatus":"ACSC"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-sandbox/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This test validates only XS2A (Sandbox) protocol by starting entire dynamic sandbox. 4 | Open banking application communicates with sandbox using XS2A Sandbox protocol. 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-sandbox/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/application-test-one-time-postgres-disk-volume.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:tc:postgresql:12:////open_banking?TC_DAEMON=true&TC_INITSCRIPT=init.sql 4 | username: postgres 5 | password: docker 6 | driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/init.sql: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA IF NOT EXISTS banking_protocol; 2 | CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA banking_protocol; 3 | ALTER DATABASE open_banking SET pg_trgm.word_similarity_threshold = 0.2; 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-in-extras.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": { 3 | "PSU_ID": "anton.brueckner" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "PSU_PASSWORD": "12345" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-payments-authorize.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": { 3 | "PSU_ID": "anton.brueckner" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-psu-id-parameter.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": { 3 | "PSU_ID": "anton.brueckner" 4 | }, 5 | "consentAuth": {} 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-transactions-no-consent.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": { 3 | "PSU_ID": "anton.brueckner" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/anton-brueckner-wrong-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "PSU_PASSWORD": "111" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-embedded-consent-challenge-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "QmFzZTY0VGVzdERhdGE=", 3 | "data": [ 4 | "asdfghjklzxcvbnm" 5 | ], 6 | "imageLink": "http://test.com", 7 | "otpMaxLength": 6, 8 | "otpFormat": "INTEGER", 9 | "additionalInformation": "SCA method PHOTO_OTP: scan the qr code with your mobile device." 10 | } 11 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-embedded-payment-challenge-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "QmFzZTY0VGVzdERhdGE=", 3 | "data": [ 4 | "asdfghjklzxcvbnm" 5 | ], 6 | "imageLink": "http://test.com", 7 | "otpMaxLength": 6, 8 | "otpFormat": "INTEGER", 9 | "additionalInformation": "SCA method PHOTO_OTP: scan the qr code with your mobile device." 10 | } 11 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-in-extras.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": { 3 | "PSU_ID": "max.musterman" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "PSU_PASSWORD": "12345" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-sca-challenge-result.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "SCA_CHALLENGE_DATA": "123456" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-wrong-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "PSU_PASSWORD": "22222" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/max-musterman-wrong-sca-challenge-result.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "SCA_CHALLENGE_DATA": "333333" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-deposit-account-custom-currency.json: -------------------------------------------------------------------------------- 1 | { 2 | "amount": 1000, 3 | "currency": "%currency%" 4 | } 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-deposit-account.json: -------------------------------------------------------------------------------- 1 | { 2 | "amount": 1000, 3 | "currency": "EUR" 4 | } 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-new-account-registration.json: -------------------------------------------------------------------------------- 1 | { 2 | "accountType": "CASH", 3 | "usageType": "PRIV", 4 | "currency": "EUR", 5 | "iban": "%iban%", 6 | "accountStatus": "ENABLED" 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-new-account-with-custom-currency-registration.json: -------------------------------------------------------------------------------- 1 | { 2 | "accountType": "CASH", 3 | "usageType": "PRIV", 4 | "currency": "%currency%", 5 | "iban": "%iban%", 6 | "accountStatus": "ENABLED" 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "PSU_PASSWORD": "%password%" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/new-user-sca-challenge-result.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData": { 3 | "SCA_CHALLENGE_DATA": "123456" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/single-sepa-payment-ing.json: -------------------------------------------------------------------------------- 1 | { 2 | "instructedAmount" : { 3 | "amount" : "1", 4 | "currency" : "EUR" 5 | }, 6 | "creditorAccount" : { 7 | "iban" : "AT861921125678901234" 8 | }, 9 | "debtorAccount": { 10 | "currency": "EUR", 11 | "iban": "DE80760700240271232400" 12 | }, 13 | "creditorName" : "Laura Musterfrau" 14 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/restrecord/tpp-ui-input/params/unknown-user-all-accounts-consent.json: -------------------------------------------------------------------------------- 1 | { 2 | "extras": {}, 3 | "consentAuth": { 4 | "consent": { 5 | "recurringIndicator": true, 6 | "combinedServiceIndicator": false, 7 | "access": { 8 | "availableAccounts": "ALL_ACCOUNTS" 9 | }, 10 | "frequencyPerDay": 12, 11 | "validUntil": "2030-01-31" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-protocols/xs2a-protocol-tests/xs2a-bdd-tests-common/src/main/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This test validates only XS2A protocol by using stubbed Wiremock responses 4 | (and accommodated to XS2A protocol, so list transactions method doesn't call list accounts) 5 | of Dynamic Sandbox. 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord-nonhappy/embedded/multi-sca/accounts/sandbox/__files/body-v1-consents-456567.json: -------------------------------------------------------------------------------- 1 | { 2 | "tppMessages": [ 3 | { 4 | "category": "ERROR", 5 | "code": "PSU_CREDENTIALS_INVALID", 6 | "text": "The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord-nonhappy/embedded/multi-sca/transactions/sandbox/__files/body-v1-consents-356567.json: -------------------------------------------------------------------------------- 1 | { 2 | "tppMessages": [ 3 | { 4 | "category": "ERROR", 5 | "code": "PSU_CREDENTIALS_INVALID", 6 | "text": "The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord-nonhappy/embedded/multi-sca/transactions/sandbox/__files/body-v1-consents-63123.json: -------------------------------------------------------------------------------- 1 | { 2 | "tppMessages": [ 3 | { 4 | "category": "ERROR", 5 | "code": "FORMAT_ERROR", 6 | "text": "Invalid IBAN format" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/accounts/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/accounts/__files/body-v1-consents-2059236999.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/accounts/__files/body-v1-consents-3496770420.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"scaMethodSelected"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/payments/__files/body-v1-1063823569.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"scaMethodSelected"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/payments/__files/body-v1-1063823571.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/decoupled-mode/payments/__files/body-v1-payments-sepa-credit-transfers-12221.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/accounts/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/accounts/__files/body-v1-consents-2059236824.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"scaMethodSelected"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/accounts/__files/body-v1-consents-2059236999.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/payments/__files/body-v1-1063823569.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"scaMethodSelected"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/payments/__files/body-v1-1063823571.json: -------------------------------------------------------------------------------- 1 | {"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/decoupled-sca/embedded-mode-decoupled-sca/payments/__files/body-v1-payments-sepa-credit-transfers-12221.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/accounts/sandbox/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/accounts/sandbox/__files/body-v1-consents-456567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/accounts/sandbox/__files/body-v1-consents-5252.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/Xv1G4Il2O5NFS7_tvYzqmHiFJVj1cjG68kxY3ySMxtwysZRh6LIlip9ygXuqonMNW-wY5B9_ytaUuw4OzBvN2cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/c9bf0a90-30da-4d83-84f6-1fc1a4dad57d"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-12221.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-authorisations-NdAgb.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://localhost:20014/v1/payments/sepa-credit-transfers/XWE3m-MOSgiyLSbxm0gs9cTpUIYh6Zd7AGdfJFpzoL6i92f92FPqxs78swMVBY91cgftJbETkzvNvu5mZQqWcA==_=_psGLvQpt9Q/authorisations/d378c26d-eec8-4612-953f-e034501c38ce"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-j08oa.json: -------------------------------------------------------------------------------- 1 | {"debtorAccount":{"iban":"DE38760700240320465700","currency":"EUR"},"instructedAmount":{"currency":"EUR","amount":"12.34"},"creditorAccount":{"iban":"AL90208110080000001039531801","currency":"EUR"},"creditorName":"peter","remittanceInformationUnstructured":"test transfer","transactionStatus":"ACSC"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/accounts/sandbox/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/accounts/sandbox/__files/body-v1-consents-456567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/accounts/sandbox/__files/body-v1-consents-5252.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/Xv1G4Il2O5NFS7_tvYzqmHiFJVj1cjG68kxY3ySMxtwysZRh6LIlip9ygXuqonMNW-wY5B9_ytaUuw4OzBvN2cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/c9bf0a90-30da-4d83-84f6-1fc1a4dad57d"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/transactions/sandbox/__files/body-v1-consents-356567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/transactions/sandbox/__files/body-v1-consents-50625.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/3-1GbYBPiC1TycC2-o2fRruCzqWyd_Ad9CHUQDrVAek386zdYL7VQ8mnLjUId1f8WmQLDVsea8QVWKkLALAJ-cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/977e3b4e-e0f3-4c8b-98bd-0503fe4f833f"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/stateless/transactions/sandbox/__files/body-v1-consents-63123.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"FORMAT_ERROR","text":"Invalid IBAN format"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/transactions/sandbox/__files/body-v1-consents-356567.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"PSU_CREDENTIALS_INVALID","text":"The PSU-ID cannot be matched by the addressed ASPSP or is blocked, or a password resp. OTP was not correct"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/transactions/sandbox/__files/body-v1-consents-50625.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/3-1GbYBPiC1TycC2-o2fRruCzqWyd_Ad9CHUQDrVAek386zdYL7VQ8mnLjUId1f8WmQLDVsea8QVWKkLALAJ-cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/977e3b4e-e0f3-4c8b-98bd-0503fe4f833f"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/multi-sca/transactions/sandbox/__files/body-v1-consents-63123.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"FORMAT_ERROR","text":"Invalid IBAN format"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/one-sca/accounts/sandbox/__files/body-v1-consents-182939.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/w3mObY9p6TTLPRzggGXIAi4XL8Ca3aTEzJuxvdCcAnFstYc6s1v1g9c9younW8eEz0dP0gSvTQCbiyTHQArmV8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/fa7d3ca4-0068-4106-885b-1736430f3847"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/accounts/sandbox/__files/body-v1-accounts-55313.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"oN7KTVuJSVotMvPPPavhVo","iban":"DE38760700240320465700","currency":"EUR","name":"max.musterman","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV"}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/accounts/sandbox/__files/body-v1-consents-48037.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/Xv1G4Il2O5NFS7_tvYzqmHiFJVj1cjG68kxY3ySMxtwysZRh6LIlip9ygXuqonMNW-wY5B9_ytaUuw4OzBvN2cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/c9bf0a90-30da-4d83-84f6-1fc1a4dad57d"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-12221.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-authorisations-fU95X.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://localhost:20014/v1/payments/sepa-credit-transfers/XWE3m-MOSgiyLSbxm0gs9cTpUIYh6Zd7AGdfJFpzoL6i92f92FPqxs78swMVBY91cgftJbETkzvNvu5mZQqWcA==_=_psGLvQpt9Q/authorisations/d378c26d-eec8-4612-953f-e034501c38ce"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-j08oa.json: -------------------------------------------------------------------------------- 1 | {"debtorAccount":{"iban":"DE38760700240320465700","currency":"EUR"},"instructedAmount":{"currency":"EUR","amount":"12.34"},"creditorAccount":{"iban":"AL90208110080000001039531801","currency":"EUR"},"creditorName":"peter","remittanceInformationUnstructured":"test transfer","transactionStatus":"ACSC"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/embedded/zero-sca/transactions/sandbox/__files/body-v1-consents-65272.json: -------------------------------------------------------------------------------- 1 | {"_links":{"scaStatus":{"href":"http://127.0.0.1:20014/v1/consents/3-1GbYBPiC1TycC2-o2fRruCzqWyd_Ad9CHUQDrVAek386zdYL7VQ8mnLjUId1f8WmQLDVsea8QVWKkLALAJ-cz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisations/977e3b4e-e0f3-4c8b-98bd-0503fe4f833f"}},"scaStatus":"finalised"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/accounts/commerzbank/__files/body-account-response.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"cmD4EYZeTkkhxRuIV1diKA","iban":"DE80760700240271232400","currency":"EUR","name":"anton.brueckner","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV","_links":{}}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/accounts/results-oauth2/__files/body-oauth-authorization-server-12693.json: -------------------------------------------------------------------------------- 1 | { 2 | "authorization_endpoint": "http://localhost:4400/auth/authorize?redirect_uri=", 3 | "token_endpoint": "http://{{request.headers.Host}}/oauth/token", 4 | "response_types_supported": ["CODE"], 5 | "grant_types_supported": ["AUTHORISATION_CODE"] 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/accounts/santander/__files/body-account-response.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"cmD4EYZeTkkhxRuIV1diKA","iban":"DE80760700240271232400","currency":"EUR","name":"anton.brueckner","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV","_links":{}}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/payments/results-oauth2/__files/body-oauth-authorization-server-4479.json: -------------------------------------------------------------------------------- 1 | { 2 | "authorization_endpoint": "http://localhost:4400/auth/authorize?redirect_uri=", 3 | "token_endpoint": "http://{{request.headers.Host}}/oauth/token", 4 | "response_types_supported": ["CODE"], 5 | "grant_types_supported": ["AUTHORISATION_CODE"] 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/payments/results-xs2a/__files/body-v1-7026.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactionStatus": "ACSP", 3 | "psuMessage": "Mocked PSU message from SPI for this payment" 4 | } 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/integrated/payments/santander/__files/body-payment-status-response.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/prestep/accounts/results-oauth2/__files/body-oauth-authorization-server-4297.json: -------------------------------------------------------------------------------- 1 | { 2 | "authorization_endpoint": "http://localhost:4400/auth/authorize?redirect_uri=", 3 | "token_endpoint": "http://{{request.headers.Host}}/oauth/token", 4 | "response_types_supported": ["CODE"], 5 | "grant_types_supported": ["AUTHORISATION_CODE"] 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/prestep/accounts/results-xs2a/__files/body-v1-consents-47431.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"UNAUTHORIZED","text":"Please retrieve token first from http://localhost:20015/oauth/authorization-server"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/prestep/payments/results-oauth2/__files/body-oauth-authorization-server-4485.json: -------------------------------------------------------------------------------- 1 | { 2 | "authorization_endpoint": "http://localhost:4400/auth/authorize?redirect_uri=", 3 | "token_endpoint": "http://{{request.headers.Host}}/oauth/token", 4 | "response_types_supported": ["CODE"], 5 | "grant_types_supported": ["AUTHORISATION_CODE"] 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/prestep/payments/results-xs2a/__files/body-v1-11840.json: -------------------------------------------------------------------------------- 1 | {"tppMessages":[{"category":"ERROR","code":"TOKEN_INVALID","text":"Please retrieve token first from http://localhost:20015/oauth/authorization-server"}]} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/oauth2/prestep/payments/results-xs2a/__files/body-v1-53661.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactionStatus": "ACSP", 3 | "psuMessage": "Mocked PSU message from SPI for this payment" 4 | } 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/redirect/accounts/consorsbank/__files/body-account-response.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"cmD4EYZeTkkhxRuIV1diKA","iban":"DE80760700240271232400","currency":"EUR","name":"anton.brueckner","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV","_links":{}}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/redirect/accounts/sandbox/__files/body-v1-accounts-12388.json: -------------------------------------------------------------------------------- 1 | {"accounts":[{"resourceId":"cmD4EYZeTkkhxRuIV1diKA","iban":"DE80760700240271232400","currency":"EUR","name":"anton.brueckner","product":"Cash24","cashAccountType":"CASH","status":"enabled","usage":"PRIV","_links":{}}]} 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/redirect/payments/consorsbank/__files/body-acsp-payments-sepa-credit-transfers.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-bdd-wiremock/src/main/resources/mockedsandbox/restrecord/redirect/payments/sandbox/__files/body-v1-payments-sepa-credit-transfers-4556.json: -------------------------------------------------------------------------------- 1 | {"transactionStatus":"ACSP","psuMessage":"Mocked PSU message from SPI for this payment"} -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-stress-test/README.md: -------------------------------------------------------------------------------- 1 | # Purpose 2 | 3 | This test imitate heavy concurrent load on locally launched OPBA-embedded instance. 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol-tests/xs2a-stress-test/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/docs/unexclude_dir.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-protocols/xs2a-protocol/docs/unexclude_dir.gif -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/config/Xs2aFlowableConfig.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.config; 2 | 3 | import de.adorsys.opba.protocol.bpmnshared.EnableSharedFlowableBpmn; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @EnableSharedFlowableBpmn 8 | public class Xs2aFlowableConfig { 9 | } 10 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/service/xs2a/dto/ValidationMode.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.service.xs2a.dto; 2 | 3 | public enum ValidationMode { 4 | OPTIONAL, MANDATORY 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/util/logresolver/domain/Xs2aExecutionLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.util.logresolver.domain; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class Xs2aExecutionLog { 8 | 9 | private String id; 10 | private String processInstanceId; 11 | private String rootProcessInstanceId; 12 | private String parentId; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/util/logresolver/domain/common/PsuDataLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.util.logresolver.domain.common; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class PsuDataLog { 8 | 9 | private String password; 10 | private String encryptedPassword; 11 | private String additionalPassword; 12 | private String additionalEncryptedPassword; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/util/logresolver/domain/common/StartScaprocessResponseLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.util.logresolver.domain.common; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class StartScaprocessResponseLog { 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/java/de/adorsys/opba/protocol/xs2a/util/logresolver/domain/payment/AmountLog.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a.util.logresolver.domain.payment; 2 | 3 | import lombok.Data; 4 | 5 | 6 | @Data 7 | public class AmountLog { 8 | 9 | private String currency; 10 | private String amount; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/resources/ValidationMessages.properties: -------------------------------------------------------------------------------- 1 | de.adorsys.opba.protocol.xs2a.service.xs2a.validation.AccountAccessBodyValidator.message=Account consent body structure is invalid 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/resources/context.properties: -------------------------------------------------------------------------------- 1 | handleValidationErrors=CustomHandleValidationErrors 2 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/main/resources/sample-qwac.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/opba-protocols/xs2a-protocol/src/main/resources/sample-qwac.keystore -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/java/de/adorsys/opba/protocol/xs2a/TestProfiles.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.protocol.xs2a; 2 | 3 | import lombok.experimental.UtilityClass; 4 | 5 | @UtilityClass 6 | @SuppressWarnings("checkstyle:HideUtilityClassConstructor") // Lombok generates private ctor. 7 | public class TestProfiles { 8 | 9 | public static final String ONE_TIME_POSTGRES_RAMFS = "test-one-time-postgres-ramfs"; 10 | } 11 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/account_list_context_from_ctx_authorization_request_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "requestId": "cef0cbf3-6458-4f13-a418-ee4d7e750511", 3 | "aisConsent": { 4 | "access": null, 5 | "recurringIndicator": true, 6 | "validUntil": "2021-03-01", 7 | "frequencyPerDay": 10, 8 | "combinedServiceIndicator": false 9 | }, 10 | "psuIpAddress": "1.1.1.1", 11 | "psuIpPort": "5555" 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/consent_body_from_ctx_ais_consent_empty_body_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "access": null, 3 | "recurringIndicator": null, 4 | "validUntil": null, 5 | "frequencyPerDay": null, 6 | "combinedServiceIndicator": null 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/consent_body_from_ctx_ais_consent_non_empty_body_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "access": null, 3 | "recurringIndicator": true, 4 | "validUntil": "2021-03-01", 5 | "frequencyPerDay": 10, 6 | "combinedServiceIndicator": false 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/consent_body_to_xs2a_api_ais_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "access": null, 3 | "recurringIndicator": true, 4 | "validUntil": "2021-03-01", 5 | "frequencyPerDay": 10, 6 | "combinedServiceIndicator": false 7 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/consent_initiate_body_from_ctx_ais_consent_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "access": null, 3 | "recurringIndicator": true, 4 | "validUntil": "2021-03-01", 5 | "frequencyPerDay": 10, 6 | "combinedServiceIndicator": false 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/consent_initiate_body_from_ctx_ais_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "access": null, 3 | "recurringIndicator": true, 4 | "validUntil": "2021-03-01", 5 | "frequencyPerDay": 10, 6 | "combinedServiceIndicator": false 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/provide_psu_password_body_from_xs2a_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "psuPassword": "1234" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/provide_sca_challenge_result_body_from_xs2a_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaChallenge": "test last sca challenge" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/sca_method_from_auth_object_sca_method_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "authenticationType": "SMS_OTP", 3 | "authenticationVersion": "1.0", 4 | "authenticationMethodId": "SCA_SMS", 5 | "name": "mobile", 6 | "explanation": "Authentication via mobile phone" 7 | } 8 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/sca_method_from_auth_object_sca_method_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "SCA_SMS", 3 | "value": "SMS_OTP:mobile", 4 | "type": "SMS_OTP" 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/sca_method_set_from_sca_method_list_input.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "key": "test key 1", 4 | "value": "test value 1" 5 | }, 6 | { 7 | "key": "test key 2", 8 | "value": "test value 2" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/sca_method_set_from_sca_method_list_output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "key": "test key 1", 4 | "value": "test value 1" 5 | }, 6 | { 7 | "key": "test key 2", 8 | "value": "test value 2" 9 | } 10 | ] 11 | 12 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/select_psu_authentication_method_from_select_sca_challenge_body_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "authenticationMethodId": "SMS_OTP" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/select_psu_authentication_method_from_select_sca_challenge_body_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "authenticationMethodId": "SMS_OTP" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/select_sca_challenge_body_from_xs2a_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "authenticationMethodId": "4444-4444" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/transaction_authorisation_from_provide_sca_challenge_result_body_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaChallenge": "test challenge data" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/transaction_authorisation_from_provide_sca_challenge_result_body_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "scaAuthenticationData":"test challenge data" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/transaction_list_context_from_ctx_authorization_request_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "requestId": "cef0cbf3-6458-4f13-a418-ee4d7e750511", 3 | "aisConsent": { 4 | "access": null, 5 | "recurringIndicator": true, 6 | "validUntil": "2021-03-01", 7 | "frequencyPerDay": 10, 8 | "combinedServiceIndicator": false 9 | }, 10 | "psuIpAddress": "1.1.1.1", 11 | "psuIpPort": "5555" 12 | } 13 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/transaction_parameters_from_ctx_transaction_list_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "bookingStatus": "PENDING", 3 | "dateFrom": "2020-07-01", 4 | "dateTo": "2021-03-01", 5 | "withBalance": null 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/update_psu_authentication_from_provide_psu_password_body_input.json: -------------------------------------------------------------------------------- 1 | { 2 | "psuPassword": "1234" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/update_psu_authentication_from_provide_psu_password_body_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "psuData": { 3 | "password": "1234", 4 | "encryptedPassword": null 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/validation_error_set_from_validation_issue_input.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "OBJECT", 4 | "scope": "AIS_CONSENT", 5 | "code": "FREQUENCY_PER_DAY", 6 | "captionMessage": "test message 1" 7 | }, 8 | { 9 | "type": "STRING", 10 | "scope": "GENERAL", 11 | "code": "BOOKING_STATUS", 12 | "captionMessage": "test message 2" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/validation_error_set_from_validation_issue_output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "OBJECT", 4 | "scope": "AIS_CONSENT", 5 | "code": "FREQUENCY_PER_DAY", 6 | "captionMessage": "test message 1" 7 | }, 8 | { 9 | "type": "STRING", 10 | "scope": "GENERAL", 11 | "code": "BOOKING_STATUS", 12 | "captionMessage": "test message 2" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/with_consentId_headers_from_ctx_xs2s_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "psuId": "12345-67890", 3 | "aspspId": "11111-11111", 4 | "requestId": "33333-33333", 5 | "consentId": "09876-54321" 6 | } 7 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_authorized_consent_parameters_from_xs2a_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "consentId": "1111-1111", 3 | "authorizationId": "2222-2222" 4 | } 5 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_initial_consent_parameters_from_xs2a_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "consentId": "2222-2222" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_oauth2_with_code_parameters_from_xs2a_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "oauth2Code": "Oauth2-code", 3 | "oauth2RedirectBackLink": "http://example.com/back", 4 | "grantType": "authorization_code" 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_oauth2_with_code_parameters_from_xs2a_context_to_parameters_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "authorizationCode": "Oauth2-code", 3 | "redirectUri": "http://example.com/back", 4 | "grantType": "authorization_code" 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_resource_parameters_from_transaction_list_context_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "resourceId": "53c47f54-b9a4-465a-8f77-bc6cd5f0cf46" 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_standard_headers_from_xs2a_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "psuId": "1111-1111", 3 | "aspspId": "53c47f54-b9a4-465a-8f77-bc6cd5f0cf46", 4 | "requestId": "11e0c2a1-6751-11ea-9989-acde48001133" 5 | } 6 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_with_balance_parameters_from_xs2a_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "withBalance": true 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/mapper-test-fixtures/xs2a_without_balance_parameters_from_xs2a_consent_output.json: -------------------------------------------------------------------------------- 1 | { 2 | "withBalance": null 3 | } 4 | -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/validator-test-fixtures/bank_offered_consent.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [], 3 | "balances": [], 4 | "transactions": [] 5 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/validator-test-fixtures/dedicated_without_accounts_consent_with_balances.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [], 3 | "balances": [], 4 | "transactions": [], 5 | "availableAccounts": "ALL_ACCOUNTS_WITH_BALANCES" 6 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/validator-test-fixtures/dedicated_without_accounts_consent_without_balances.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [], 3 | "balances": [], 4 | "transactions": [], 5 | "availableAccounts": "ALL_ACCOUNTS" 6 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/validator-test-fixtures/global_consent.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [], 3 | "balances": [], 4 | "transactions": [], 5 | "allPsd2": "ALL_ACCOUNTS" 6 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-protocol/src/test/resources/validator-test-fixtures/invalid_available_accounts_consent.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [], 3 | "balances": [], 4 | "transactions": [], 5 | "availableAccounts": "wrongValue" 6 | } -------------------------------------------------------------------------------- /opba-protocols/xs2a-sandbox-protocol/src/main/resources/context.properties: -------------------------------------------------------------------------------- 1 | xs2aTransactionListing=xs2aSandboxTransactionListing 2 | xs2a-list-transactions=xs2a-sandbox-list-transactions 3 | XS2A compatible transaction list=XS2A Sandbox (quirk) List transactions 4 | -------------------------------------------------------------------------------- /opba-rest-api-shared/src/main/java/de/adorsys/opba/restapi/shared/mapper/FacadeResponseBodyToRestBodyMapper.java: -------------------------------------------------------------------------------- 1 | package de.adorsys.opba.restapi.shared.mapper; 2 | 3 | @FunctionalInterface 4 | public interface FacadeResponseBodyToRestBodyMapper { 5 | R map(F facadeEntity); 6 | } 7 | -------------------------------------------------------------------------------- /scripts/build_and_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Building and testing JAVA backend" 4 | bash ./scripts/build_mvn.sh || exit 1 5 | 6 | echo "Building and testing NPM UI" 7 | bash ./scripts/build_npm.sh || exit 1 -------------------------------------------------------------------------------- /scripts/build_mvn.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ "$MVN_TESTS_DISABLED" == "true" ]]; then 4 | echo "Maven tests are disabled, only building" 5 | ./mvnw verify --no-transfer-progress -Djgiven.report.text=false -DskipTests || exit 1 6 | else 7 | echo "Building and testing" 8 | ./mvnw verify --no-transfer-progress -Djgiven.report.text=false || exit 1 9 | fi 10 | -------------------------------------------------------------------------------- /scripts/build_npm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker run --rm -v "$PWD":/opt/app-root/src -w /opt/app-root/src -u "$(id -u "${USER}"):$(id -g "${USER}")" trion/ng-cli-karma:19.2.6 make fintech-ui || exit 1 4 | docker run --rm -v "$PWD":/opt/app-root/src -w /opt/app-root/src -u "$(id -u "${USER}"):$(id -g "${USER}")" trion/ng-cli-karma:19.2.6 make consent-ui || exit 1 5 | -------------------------------------------------------------------------------- /scripts/deploy_mvn.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | # Install custom plugin version to avoid catalog.txt deployment 5 | ./mvnw install:install-file -Dfile=scripts/plugins/gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT.jar -DpomFile=scripts/plugins/gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT-pom.xml || exit 1 6 | 7 | ./mvnw --no-transfer-progress --settings scripts/mvn-release-settings.xml deploy nexus-staging:release -Prelease -DskipTests -B -U || exit 1 8 | -------------------------------------------------------------------------------- /scripts/deploy_mvn_release_candidate.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | # These are production secrets 6 | echo "$GPG_SECRET_KEY" | base64 --decode | $GPG_EXECUTABLE --import --no-tty --batch --yes || true 7 | echo "$GPG_OWNERTRUST" | base64 --decode | $GPG_EXECUTABLE --import-ownertrust --no-tty --batch --yes || true 8 | 9 | ./mvnw --no-transfer-progress --settings scripts/mvn-release-settings.xml deploy -Prelease-candidate -DskipTests -B -U || exit 1 10 | -------------------------------------------------------------------------------- /scripts/firefly-service.list: -------------------------------------------------------------------------------- 1 | opba-firefly-exporter=./firefly-exporter -------------------------------------------------------------------------------- /scripts/install_mvn.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ./mvnw install --no-transfer-progress -DskipTests=true -Dmaven.javadoc.skip=true -B -V || exit 1 4 | -------------------------------------------------------------------------------- /scripts/plugins/gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adorsys/open-banking-gateway/0cc0782b186cc0c70fd37b103323d2d784abc0e1/scripts/plugins/gitflow-helper-maven-plugin-3.0.1-SKIP-CATALOG-SNAPSHOT.jar -------------------------------------------------------------------------------- /scripts/release-scripts/.version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export VERSION=0.15.0 # 4 | -------------------------------------------------------------------------------- /scripts/release_deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SCRIPT_DIR="$(dirname "$0")" 4 | 5 | bash "$SCRIPT_DIR/promote_oc_image_to_dockerhub.sh" || exit 1 6 | bash "$SCRIPT_DIR/deploy_mvn.sh" || exit 1 -------------------------------------------------------------------------------- /scripts/service.list: -------------------------------------------------------------------------------- 1 | open-banking-gateway=./opba-embedded-starter 2 | fintech-server=./fintech-examples/fintech-server 3 | fintech-ui=./fintech-examples/fintech-ui 4 | consent-ui=./consent-ui 5 | hbci-sandbox-server=./opba-protocols/sandboxes/hbci-sandbox -------------------------------------------------------------------------------- /ui-test-scripts/README.md: -------------------------------------------------------------------------------- 1 | # What is this 2 | 3 | This is ready to use IntelliJ Http scripts to run OpenBanking without FinTech. Requires OpenBanking to be 4 | started with the `no-signature-filter` profile. --------------------------------------------------------------------------------