Expand | ||
---|---|---|
| ||
Restful APIsThe API adheres to RESTful API concepts where possible and sensible to do so. However, the priority is to have an API that is simple to understand and easy to use. In instances where following RESTful principles would be convoluted and complex, the principles have not been followed. References:
ISO 20022In keeping with that requirement, the API payloads are designed using the ISO 20022 message elements and components where available. The principles we have applied to re-use of ISO message elements and components are:
|
Expand | ||
---|---|---|
| ||
An idempotency key is used to guard against the creation of duplicate resources when using the POST API endpoints (where indicated). If an idempotency key is required for an API endpoint:
If an idempotency key is not required for an API endpoint:
|
Expand | ||
---|---|---|
| ||
The APIs require TLS 1.2 Mutual Authentication and this may be used as a means of non-repudiation. However, it would be difficult to maintain digital records and evidence of non-repudiation if the API only relied on TLS 1.2. A solution for non-repudiation that does not rely on TLS, would be achieved by providing a JWS with detached content (as defined in RFC 7515 - Appendix F) in the HTTP header of each API request. The HTTP body would form an un-encoded payload as defined in RFC 7797. The JWS would be signed using an algorithm that supports asymmetric keys. A request would be signed by a AISP/PISP's private key and a response would be signed by the ASPSP's private key. Not all API requests and responses are signed. Whether message signing is mandatory, supported or not supported is documented along with each API. |
Expand | ||
---|---|---|
| ||
Message encryption is implemented through JSON Web Encryption (JWE). The approach differs from message signing in that:
If an ASPSP does not support message encryption then should reject any requests with a Content-type or Accept headers that indicate that message encryption is required. |
Expand | ||
---|---|---|
| ||
A REST resource should have a unique identifier (e.g. a primary key) that may be used to identify the resource. These unique identifiers are used to construct URLs to identify and address specific resources. However, considering that some of the resources described in these specifications do not have a primary key in the system of record, the Id field will be optional for some resources. An ASPSP that chooses to populate optional Id fields must ensure that the values are unique and immutable. |
Expand | ||
---|---|---|
| ||
The functionality, endpoints and fields within each resource are categorised as 'Mandatory', 'Conditional' or 'Optional'. MandatoryFunctionality, endpoints and fields marked as Mandatory are required in all cases for regulatory compliance and/or for the API to function and deliver essential customer outcomes. For functionalities and endpoints:
For fields:
ConditionalFunctionality, endpoints and fields marked as Conditional may be required in some cases for regulatory compliance (for example, if these are made available to the USER/CUSTOMER in the ASPSP's existing Online Channel, or if ASPSPs (or a subset of ASPSPs) have been mandated by a regulatory requirement). For functionalities and endpoints:
For fields:
An ASPSP must include meaningful values for Conditional fields in an API response if these are required for regulatory compliance. OptionalFunctionality and endpoints marked as Optional are not necessarily required for regulatory compliance but may be implemented to enable desired customer outcomes. For functionalities and endpoints:
For fields:
For any endpoints which are implemented by an ASPSP, the fields are either Mandatory or Conditional. |
Expand | ||
---|---|---|
| ||
The API requests and responses must use a UTF-8 character encoding. This is the default character encoding for JSON (RFC 7158 - https://tools.ietf.org/html/rfc7158#section-8.1) However, an ASPSP's downstream system may not accept some UTF-8 characters, such as emoji characters (e.g. "J" may not be an acceptable Payment Reference). If the ASPSP rejects the message with a UTF-8 character that cannot be processed, the ASPSP must respond with an HTTP 400 (Bad Request) status code. |
Expand | ||||
---|---|---|---|---|
| ||||
All date-time fields in responses must include the timezone. For Example:
The API allows the AISP to ask an ASPSP to create a new account-access-consent resource. All dates in the query string are represented in ISO-8601 date-time format and must not include the timezone. For example:
All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below:
All dates in the JWT claims are expressed as a JSON number, representing the number of seconds from 1970-01-01T0:0:0Z as measured in GMT until the date/time.
|