General
Expand | ||
---|---|---|
| ||
Bahrain OBF is a holistic Open Banking Framework that will support the evolution of innovation while continuously addressing issues to protect, maintain and bolster the safety and robustness of Bahrain’s financial system. |
...
Expand | ||
---|---|---|
| ||
Under Bahrain OBF, third party providers have both read and write access depending on the nature of service they provide.
|
Security and Privacy
Expand | ||
---|---|---|
| ||
Safety and Security of user/customer data has always been the primary focus area for Bahrain Open Banking:
The principles of control, regulation and security combine to create a trusted Open Banking environment for the user/customer. |
...
Expand | ||
---|---|---|
| ||
The first step is to discuss your complaint directly with AISP/PISP or an ASPSP. If you believe you are not satisfied with their response, you can contact CBB by submitting the Complaint Form available on https://www.cbb.gov.bh/complaint-form/ |
Accreditation
Expand | ||
---|---|---|
| ||
Only accredited third party providers and ASPSPs are allowed to offer Open Banking services in Bahrain.
|
...
Expand | ||
---|---|---|
| ||
The CBB may amend or revoke a license in any of the following cases:
|
API Specification
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 | ||
---|---|---|
|
2020-04-05T10:43:07+03:00 2020-05-03T14:43:41Z |
---|
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:
2020-04-05T10:43:07 2020-04-05 |
---|
All dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below:
Tue, 10 Mar 2020 19:43:31 GMT+03:00 |
---|
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.
//Wed, 12 Feb 2020 14:45:00 GMT+03:00 1581507900 |
---|
title | What will be the structure of resource URI path? |
---|
The path of the URI must follow the structure below
[participant-path-prefix]/open-banking/the use of Unique Identifiers (Id Fields)? |
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 | ||||
---|---|---|---|---|
| ||||
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.
|
Expand | ||
---|---|---|
| ||
The path of the URI must follow the structure below
This consists of the following elements:
An ASPSP must use the same participant-path-prefix and host name for all its resources. Examples:
|
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A number of resources in the specification include a section for Supplementary Data. This is intended to allow ASPSPs to accept or provide information in a request or response that is not catered for by other sections of the resource definition. The Supplementary Data section is defined as an empty JSON object in the specification. Wherever used, an ASPSP must define and document (on their developer portal) their own structure, usage and (mandatory/optional) requirements for Supplementary Data. An ASPSP must not use Supplementary Data if an element already exists in the OBF standard that fulfils the requirement
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Header Value | Notes | Mandatory? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Content-Type | Standard HTTP Header; Represents the format of the payload returned in the response. | Mandatory | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
x-jws-signature | Header containing a detached JWS signature of the body of the payload. | API specific | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
x-fapi-interaction-id | An RFC4122 UID used as a correlation Id. | Mandatory | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Retry-After | Header indicating the time (in seconds) that the AISP/PISP should wait before retrying an operation. | Optional |
Expand | ||
---|---|---|
| ||
An ASPSP must provide limited support of filtering on GET operations that return multiple records. The filter parameters, are always specific to particular field(s) of the resource, and follow the rules/formats defined under the resource's data dictionary. In case of DateTime type filter parameters, values must be specified in ISO8601 format. If the DateTime contains a timezone, the ASPSP may ignore the timezone component. The filter values will be assumed to refer to the same timezone as the timezone in which the resource is maintained. |
Expand | ||
---|---|---|
| ||
An ASPSP MAY provide a paginated response for GET operations that return multiple records. In such a situation, the ASPSP MUST:
For a paginated responses, the ASPSP may ensure that the number of records on a page are within reasonable limits, the minimum and maximum level for number of records may be decided based on agreement between ASPSP and AISP/PISP. Additionally, the ASPSP MAY provide:
As with all other responses, the ASPSP MUST include a "self" link to the resource in the Links.Self field as described in the Links sections. This standard does not specify how the pagination parameters are passed by the ASPSP and each ASPSP may employ their own mechanisms to paginate the response. If the original request from the AISP included filter parameters, the paginated response must return only results that match the filter. ASPSPs are not expected to implement pagination with transaction isolation. The underlying data-set may change between two subsequent requests. This may result in situations where the same transaction is returned on more than one page. |
Expand | ||
---|---|---|
| ||
ASPSPs should define archiving policies based on existing Bahrain regulations and their internal legal requirements. |
|
Expand | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Expand | ||
---|---|---|
| ||
An ASPSP must provide limited support of filtering on GET operations that return multiple records. The filter parameters, are always specific to particular field(s) of the resource, and follow the rules/formats defined under the resource's data dictionary. In case of DateTime type filter parameters, values must be specified in ISO8601 format. If the DateTime contains a timezone, the ASPSP may ignore the timezone component. The filter values will be assumed to refer to the same timezone as the timezone in which the resource is maintained. |
Expand | ||
---|---|---|
| ||
An ASPSP MAY provide a paginated response for GET operations that return multiple records. In such a situation, the ASPSP MUST:
For a paginated responses, the ASPSP may ensure that the number of records on a page are within reasonable limits, the minimum and maximum level for number of records may be decided based on agreement between ASPSP and AISP/PISP. Additionally, the ASPSP MAY provide:
As with all other responses, the ASPSP MUST include a "self" link to the resource in the Links.Self field as described in the Links sections. This standard does not specify how the pagination parameters are passed by the ASPSP and each ASPSP may employ their own mechanisms to paginate the response. If the original request from the AISP included filter parameters, the paginated response must return only results that match the filter. ASPSPs are not expected to implement pagination with transaction isolation. The underlying data-set may change between two subsequent requests. This may result in situations where the same transaction is returned on more than one page. |
Expand | ||
---|---|---|
| ||
This flow assumes that the following steps have been completed successfully:
The AISP attempts to provide an expired or missing access token to the ASPSP in an attempt to Request Data |
...
Expand | ||
---|---|---|
| ||
This flow assumes that the following Steps have been completed successfully:
|
Further Information
Expand | ||
---|---|---|
| ||
The confluence pages will be updated on a periodic basis to keep the Open Banking participants informed on new developments. |
...