Skip to content

Commit

Permalink
Merge branch 'release-0.1.17'
Browse files Browse the repository at this point in the history
  • Loading branch information
tsehelnyk committed Dec 2, 2021
2 parents e7c7bb3 + 334ecc1 commit adc2808
Show file tree
Hide file tree
Showing 46 changed files with 306 additions and 470 deletions.
117 changes: 97 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,25 @@

There are various ways for a bank to implement a PSD2 compliant XS2A interface. Don’t waste time in connecting different banks with different approaches into your application. Use the free of charge XS2A adapter and concentrate on your true value proposition!

## Licensing model change to dual license: AGPL v.3 or commercial license

**Attention: this open-source project will change its licensing model as of 01.01.2022!**

Constantly evolving and extending scope, production traffic and support in open banking
world call for high maintenance and service investments on our part.

Henceforth, adorsys will offer all versions higher than v.0.1.16 of Adapter under a
dual-license model. Thus, this repository will be available either under Affero GNU General
Public License v.3 (AGPL v.3) or alternatively under a commercial license agreement.

We would like to thank all our users for their trust so far and are convinced that we will be
able to provide an even better service going forward.

For more information, advice for your implementation project or if your use case requires
more time to adapt this change, please contact us at [email protected] .

For additional details please see the section [FAQ on Licensing Change](https://github.com/adorsys/xs2a-adapter#faq-on-licensing-change).

## Who we are

[adorsys](https://adorsys.de/en/index.html) is a company who works ever since the very beginning of PSD2 with its requirements and implicit tasks.
Expand Down Expand Up @@ -33,8 +52,8 @@ Read this short [guideline](docs/Adapter.md) to get more details

## Routing and ASPSP Registry

ASPSP Registry loads data from [aspsp-adapter-config](docs/aspsp_adapter_config_csv.md) file,
that contains all information necessary for XS2A Adapter to communicate with banks (Sandboxes only).
ASPSP Registry loads data from [aspsp-adapter-config](docs/aspsp_adapter_config_csv.md) file,
that contains all information necessary for XS2A Adapter to communicate with banks (Sandboxes only).
`xs2a-adapter` relies on presence of `X-GTW-ASPSP-ID` or `X-GTW-Bank-Code` request header for routing.
The former uniquely identifies an XS2A API provider in the `aspsp-registry`.
The later is a shorthand for performing a lookup in the registry using a bank code.
Expand Down Expand Up @@ -68,22 +87,22 @@ You may run postman tests from the command line

## HttpLogSanitizer Whitelist

XS2A Adapter has a feature that masks sensitive data in logs, e.g. PSU-ID, ConsentId, Location, etc. By default, it veils
all data, but starting from version 0.1.5 Adapter user will be able to partially configure HttpLogSanitizer behavior
by providing a list of request/response body fields (Whitelist) that will not be hidden.
XS2A Adapter has a feature that masks sensitive data in logs, e.g. PSU-ID, ConsentId, Location, etc. By default, it veils
all data, but starting from version 0.1.5 Adapter user will be able to partially configure HttpLogSanitizer behavior
by providing a list of request/response body fields (Whitelist) that will not be hidden.

There are two ways of setting up Whitelist depending on how a user utilizes the XS2A Adapter:
* As standalone application: a user will want to add field names separated by a comma on `xs2a-adapter.sanitizer.whitelist`
* As standalone application: a user will want to add field names separated by a comma on `xs2a-adapter.sanitizer.whitelist`
property under `application.yml`. Examples are already put in Adapter YAML.
* As library: a user will want to provide a java.util.List of type String into default HttpLogSanitizer implementation - `Xs2aHttpLogSanitizer`.

__Note__: field names must be Berlin Group specification compliant, otherwise there will be no effect and data will still be masked.

## Non-XS2A Interfaces

The Adapter also covers non-PSD2 XS2A interfaces and contain services that handles such cases.
These are OAuth2 and EmbeddedPreStep services. Please check out Swagger JSONs for details:
[OAuth2 API](xs2a-adapter-rest-impl/src/main/resources/static/oauthapi.json)
The Adapter also covers non-PSD2 XS2A interfaces and contain services that handles such cases.
These are OAuth2 and EmbeddedPreStep services. Please check out Swagger JSONs for details:
[OAuth2 API](xs2a-adapter-rest-impl/src/main/resources/static/oauthapi.json)
and [EmbeddedPreStep API](xs2a-adapter-rest-impl/src/main/resources/static/embeddedpreauthapi.json) respectively.

**EmbeddedPreStep** interface is a specific Crealogix solution that resembles OAuth2 protocol but may have no interaction with
Expand All @@ -96,7 +115,7 @@ Crealogix solution is used by DKB.
## WireMock Mode

XS2A Adapter has a feature for testing a bank connection without actually communicating with a bank. We have written stubs
of real bank responses so you can give a try for your solution. This feature is called a `WireMock Mode`.
of real bank responses so you can give a try for your solution. This feature is called a `WireMock Mode`.

To activate it, a user will need to set `sa2a-adapter:wire-mock:mode` to `true` within the `application.yml` file. It will
start a WiremockHttpClient, with a build in WireMock server, instead of a default ApacheHttpClient.
Expand All @@ -115,43 +134,42 @@ Not all adapters have written stubs though. Responses available for the next ada

New stubs will be added in time.

The XS2A Adapter also provides an easy way to connect to a standalone WireMock server in case a user will want to have
one running separately. For connecting with a standalone WireMock you will want to have a `WireMock Mode` on and provide
The XS2A Adapter also provides an easy way to connect to a standalone WireMock server in case a user will want to have
one running separately. For connecting with a standalone WireMock you will want to have a `WireMock Mode` on and provide
a URL to the server as a value of `sa2a-adapter:wire-mock:standalone:url` property.

More details on the `WireMock Mode` can be found [here](https://adorsys.github.io/xs2a-adapter/wiremock-mode).

## Examples of XS2A flows

In case you are not very comfortable with how all communication between a TPP and a bank is performed,
In case you are not very comfortable with how all communication between a TPP and a bank is performed,
please take a look at [these examples](https://adorsys.github.io/xs2a-adapter/xs2a-flows) in a form of sequence diagrams.

For full description, please refer to the official Berlin Group PSD2 specification - <https://www.berlin-group.org/nextgenpsd2-downloads>

## Technical Details

We have provided technical description in the [arc42 document](https://adorsys.github.io/xs2a-adapter/).
We have provided technical description in the [arc42 document](https://adorsys.github.io/xs2a-adapter/).

## Banks peculiarities

There are some specific cases in communication with banks that an XS2A Adapter user must be aware of.

For example, `Sparkasse` and `Fiducia` always return a list of transactions in XML format, thus triggering
For example, `Sparkasse` and `Fiducia` always return a list of transactions in XML format, thus triggering

```bash
Response<TransactionsResponse200Json> getTransactionList(String accountId,
RequestHeaders requestHeaders,
RequestParams requestParams);
```

or calling `getTransactionList` endpoint with specified `Accept: application/json` header on these banks
or calling `getTransactionList` endpoint with specified `Accept: application/json` header on these banks
will throw `NotAcceptableException`, due to format mismatching.

## Releases and versions

* XS2A Adapter reveals a new release at the beginning of each month. All released features, fixes, details, etc. can be found
within the Release Notes referred below. We are doing our best to follow the Adapter Roadmap mentioned below as well.
All release information can be found under the [Releases](https://github.com/adorsys/xs2a-adapter/releases) section
XS2A Adapter publishes a new release every 3 to 6 months. All released features, fixes, details, etc. can be found
within the Release Notes under the [Releases](https://github.com/adorsys/xs2a-adapter/releases) section
on GitHub.

* [Release Notes](https://github.com/adorsys/xs2a-adapter/tags)
Expand All @@ -170,4 +188,63 @@ If you have any technical questions you can ask them in our [gitter](https://git

## License

This project is licensed under the Apache License version 2.0 - see the [LICENSE](LICENSE) file for details
This project is licensed under the Apache License version 2.0 **(until 01.01.2022)** - see the [LICENSE](LICENSE) file for details

## FAQ on Licensing Change

**What is a dual-licensing model?**

Under a dual-licensing model, our product is available under two licenses:

1. [The Affero GNU General Public License v3 (AGPL v3)](https://www.gnu.org/licenses/agpl-3.0.en.html)
2. A proprietary commercial license

If you are a developer or business that would like to review our products in detail, test and implement in your open-source projects and share the changes back to the community, the product repository is freely available under AGPL v3.

If you are a business that would like to implement our products in a commercial setting and would like to protect your individual changes, we offer the option to license our products under a commercial license.

This change will still allow free access and ensure openness under AGPL v3 but with assurance of committing any alterations or extensions back to the project and preventing redistribution of such implementations under commercial license.

**Will there be any differences between the open-source and commercially licensed versions of your products?**

Our public release frequency will be reduced as our focus shifts towards the continuous maintenance of the commercial version. Nevertheless, we are committed to also provide open-source releases of our products on a regular basis as per our release policy.

For customers with a commercial license, we will offer new intermediate releases in a more frequent pace.

**Does this mean that this product is no longer open source?**

No, the product will still be published and available on GitHub under an OSI-approved open-source license (AGPL v3).

**What about adorsys’ commitment to open source? Will adorsys provide future product releases on GitHub?**

We at adorsys are committed to continue actively participating in the open-source community. Our products remain licensed under OSI-approved open-source licenses, and we are looking forward to expanding our product portfolio on GitHub even further.

**How does the change impact me if I already use the open-source edition of your product?**

All currently published versions until v1.0 will remain under their current Apache 2.0 license and its respective requirements and you may continue using it as-is. To upgrade to future versions, you will be required to either abide by the requirements of AGPL v3, including documenting and sharing your implemented changes to the product when distributing, or alternatively approach us to obtain a commercial license.

**What if I cannot adjust to the new licensing model until 01.01.2022? Can I extend the deadline?**

We understand that adjustment to licensing changes can take time and therefore are open to discuss extension options on an individual basis. For inquiries please contact us at [email protected].

**Which versions of the product are affected?**

All versions of Open Banking Gateway after v1.0 will be affected by the licensing changes and move to a dual-licensing model.

**What will happen to older, Apache 2.0 licensed product versions?**

All older Apache 2.0 licensed versions prior and including v1.0 will remain available under their existing license.

**What open-source products from Adorsys are affected by the licensing change?**

The following products are affected:

- [XS2A Core](https://github.com/adorsys/xs2a)
- [XS2A Sandbox & ModelBank](https://github.com/adorsys/XS2A-Sandbox)
- [Open Banking Gateway](https://github.com/adorsys/open-banking-gateway) incl. [XS2A Adapters](https://github.com/adorsys/xs2a-adapter)
- [SmartAnalytics](https://github.com/adorsys/smartanalytics)
- [Datasafe](https://github.com/adorsys/datasafe)

**I’m using one of these products indirectly via some software integrator. How does the licensing change affect me?**

The licensing change does not affect you as user, but it is relevant to your provider who has used our product in their solution implementation. In case of uncertainty please contact your service provider or approach us at [email protected].
2 changes: 1 addition & 1 deletion adapters/adorsys-adapter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>de.adorsys.xs2a.adapter</groupId>
<artifactId>xs2a-adapter</artifactId>
<version>0.1.16</version>
<version>0.1.17</version>
<relativePath>../..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion adapters/comdirect-adapter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>de.adorsys.xs2a.adapter</groupId>
<artifactId>xs2a-adapter</artifactId>
<version>0.1.16</version>
<version>0.1.17</version>
<relativePath>../..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion adapters/commerzbank-adapter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>de.adorsys.xs2a.adapter</groupId>
<artifactId>xs2a-adapter</artifactId>
<version>0.1.16</version>
<version>0.1.17</version>
<relativePath>../..</relativePath>
</parent>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
import org.mapstruct.Mapper;

@Mapper
public interface OK200TransactionDetailsMapper extends RemittanceInformationStructuredMapper, TransactionDetailsBodyMapper {
public interface OK200TransactionDetailsMapper extends TransactionDetailsBodyMapper {
OK200TransactionDetails toOK200TransactionDetails(CommerzbankOK200TransactionDetails value);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package de.adorsys.xs2a.adapter.commerzbank.mapper;

import de.adorsys.xs2a.adapter.api.model.TransactionDetailsBody;
import de.adorsys.xs2a.adapter.commerzbank.model.CommerzbankTransactionDetails;
import de.adorsys.xs2a.adapter.api.model.Transactions;
import org.mapstruct.Mapping;

public interface TransactionDetailsBodyMapper extends TransactionsMapper {
@Mapping(target = "transactionDetails", expression = "java(toTransactions(value))")
TransactionDetailsBody toTransactionDetailsBody(CommerzbankTransactionDetails value);
public interface TransactionDetailsBodyMapper {
@Mapping(target = "transactionDetails", source = "value")
TransactionDetailsBody toTransactionDetailsBody(Transactions value);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package de.adorsys.xs2a.adapter.commerzbank.mapper;

import de.adorsys.xs2a.adapter.api.model.RemittanceInformationStructured;
import de.adorsys.xs2a.adapter.api.model.TransactionsResponse200Json;
import de.adorsys.xs2a.adapter.commerzbank.model.CommerzbankTransactionsReport;
import org.mapstruct.Mapper;
Expand All @@ -10,7 +9,4 @@ public interface TransactionsReportMapper extends DateTimeMapper {

TransactionsResponse200Json toTransactionsReport(CommerzbankTransactionsReport report);

default String map(RemittanceInformationStructured value) {
return value == null ? null : value.getReference();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,31 @@

import com.fasterxml.jackson.annotation.JsonProperty;
import de.adorsys.xs2a.adapter.api.model.HrefType;
import de.adorsys.xs2a.adapter.api.model.Transactions;

import java.util.List;
import java.util.Map;
import java.util.Objects;

public class CommerzbankAccountReport {
private List<CommerzbankTransactionDetails> booked;
private List<CommerzbankTransactionDetails> pending;
private List<Transactions> booked;
private List<Transactions> pending;
@JsonProperty("_links")
private Map<String, HrefType> links;

public List<CommerzbankTransactionDetails> getBooked() {
public List<Transactions> getBooked() {
return booked;
}

public void setBooked(List<CommerzbankTransactionDetails> booked) {
public void setBooked(List<Transactions> booked) {
this.booked = booked;
}

public List<CommerzbankTransactionDetails> getPending() {
public List<Transactions> getPending() {
return pending;
}

public void setPending(List<CommerzbankTransactionDetails> pending) {
public void setPending(List<Transactions> pending) {
this.pending = pending;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package de.adorsys.xs2a.adapter.commerzbank.model;

import de.adorsys.xs2a.adapter.api.model.Transactions;

import java.util.Objects;

public class CommerzbankOK200TransactionDetails {
private CommerzbankTransactionDetails transactionsDetails;
private Transactions transactionsDetails;

public CommerzbankTransactionDetails getTransactionsDetails() {
public Transactions getTransactionsDetails() {
return transactionsDetails;
}

public void setTransactionsDetails(CommerzbankTransactionDetails transactionsDetails) {
public void setTransactionsDetails(Transactions transactionsDetails) {
this.transactionsDetails = transactionsDetails;
}

Expand Down
Loading

0 comments on commit adc2808

Please sign in to comment.