diff --git a/README.md b/README.md index a19d69c1..889dfc49 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,17 @@ This document is organized into the following sections - [Getting Started](#getting-started) - [Installation](#installation) - [Test](#Test) -- [Developer Portal](#developer-portal) + +[Developer Portal](#developer-portal) + +- [Developer Portal Setup](#developer-portal-setup) + +[Data](#data) + +[Notes for Implementors](#notes-for-implementors) + +- [Client App Developers](#client-app-developers) +- [API Deployment](#api-deployment) [Changelog](#changelog) @@ -219,9 +229,37 @@ run tests gulp test ``` -### Developer Portal -Developer Portal setup is detailed in a separate [document](./src/devportal/README.md) +## Developer Portal +Every API provider must be able to educate developers and successfully expose their APIs. A developer portal is the face of your API program, providing everything that internal, partner, and third party developers need. + +Developers need to interact with the Banks and with each other. Enable your developer community to provide feedback, make support and feature requests, and submit their own content that can be accessed by other developers with the right developer portal. + +Apigee Edge provides with a Developer Services portal that you can use to build and launch your own customized website to provide all of these services to your development community. One has the option to create their own developer portal, either in the cloud or on-premises. + +The below picture depicts how a dev portal looks like + +![developer-portal](images/openbank.png) + +### Developer Portal Setup +The detailed instructions for developer portal setup for openbank solution can be found [Here](./src/devportal/README.md). + +## Data +The dummy Backend system is created by the deploy script for this OpenBank solution and is hosted on [Baas 2.0](http://apibaas.apigee.com/) in your org. You can find the dummy data under `./setup/data` folder + +## Notes for Implementors + +### Client App Developers + +- The APIs use Public/Private Key pair for doing JWS signing of the Payload. The Public Key of the sample bank and Private Key for the sample TPP (Client App) are present in `./test` folder. + +### API Deployment + +- You can find two sets of Public/Private Key Pair under `./test` folder; you could use it for configuring the APIs to use them for signing/verifying the responses/requests. +- Private key for the bank has to be provided during deployment. It is recommended to define a Prompt in config.yml and use it as value for the private key. +- For Production access, a Mutual TSL connectivity needs to be configured as defined [here](http://docs.apigee.com/api-services/content/creating-virtual-host). +- While running `gulp deploy` please do make sure there are no custom APIs defined with the same names; otherwise those APIs will be overwritten with a new revision. + ## Changelog diff --git a/config.yml b/config.yml index 3924255c..7c7403cc 100644 --- a/config.yml +++ b/config.yml @@ -200,7 +200,7 @@ resources: type: app items: - name: AISP_App - payload: '{"name":"AISP_App","attributes":[{"name":"tppId","value":"12345"},{"name":"publicKey","value":"-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuZhaB6ciF8hzzHkv3tkl20LS8KfWgRb/V4I6pB9ADNPBNgrceSf+mLoIWxrRDgTSYqyYYXmj3Fy9B1mG4lpUvrClt4hHKaBvsRZKn4/r2dPxUo0ggI+ruxQaQoKf2v8sEJe6Sx7btBvBxTqOMlIxP1GDNYJICaXo8jsBeNVDtCeFP2e9QJUmNvYGY7IfB8vUqFFcHushNmKmdR5H6pUg/JOsheFyi41UT05Zu3FvMHBAJab4OnybOLrovCVshu3Q7BOFkQVkYF4HrD0IM4GDojGt4OfMqESnLvG7+UywNjs/zjmdX0mn1wG7mZjlXfgh0DKo/MeWCW+gEQdPejCrBwIDAQAB -----END PUBLIC KEY-----"}],"callback":"http://localhost/","email":"openbank@apigee.net","apiProducts":"account_apis"}' + payload: '{"name":"AISP_App","attributes":[{"name":"tppId","value":"12345"},{"name":"publicKey","value":"-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuZhaB6ciF8hzzHkv3tkl20LS8KfWgRb/V4I6pB9ADNPBNgrceSf+mLoIWxrRDgTSYqyYYXmj3Fy9B1mG4lpUvrClt4hHKaBvsRZKn4/r2dPxUo0ggI+ruxQaQoKf2v8sEJe6Sx7btBvBxTqOMlIxP1GDNYJICaXo8jsBeNVDtCeFP2e9QJUmNvYGY7IfB8vUqFFcHushNmKmdR5H6pUg/JOsheFyi41UT05Zu3FvMHBAJab4OnybOLrovCVshu3Q7BOFkQVkYF4HrD0IM4GDojGt4OfMqESnLvG7+UywNjs/zjmdX0mn1wG7mZjlXfgh0DKo/MeWCW+gEQdPejCrBwIDAQAB -----END PUBLIC KEY-----"}],"callback":"http://localhost/,https://api.enterprise.apigee.com/v1/o/{{ org }}/apimodels/accounts-apis-v1-0/templateauths/PSUOAuth2Security/callback","email":"openbank@apigee.net","apiProducts":"account_apis"}' assignResponse: - from: credentials.0.consumerKey to: apiKey_AISP @@ -209,7 +209,7 @@ resources: - from: appId to: appId_AISP - name: PISP_App - payload: '{"name":"PISP_App","attributes":[{"name":"tppId","value":"12345"},{"name":"publicKey","value":"-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuZhaB6ciF8hzzHkv3tkl20LS8KfWgRb/V4I6pB9ADNPBNgrceSf+mLoIWxrRDgTSYqyYYXmj3Fy9B1mG4lpUvrClt4hHKaBvsRZKn4/r2dPxUo0ggI+ruxQaQoKf2v8sEJe6Sx7btBvBxTqOMlIxP1GDNYJICaXo8jsBeNVDtCeFP2e9QJUmNvYGY7IfB8vUqFFcHushNmKmdR5H6pUg/JOsheFyi41UT05Zu3FvMHBAJab4OnybOLrovCVshu3Q7BOFkQVkYF4HrD0IM4GDojGt4OfMqESnLvG7+UywNjs/zjmdX0mn1wG7mZjlXfgh0DKo/MeWCW+gEQdPejCrBwIDAQAB -----END PUBLIC KEY-----"}],"callback":"http://localhost/","email":"openbank@apigee.net","apiProducts":"payment_apis"}' + payload: '{"name":"PISP_App","attributes":[{"name":"tppId","value":"12345"},{"name":"publicKey","value":"-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuZhaB6ciF8hzzHkv3tkl20LS8KfWgRb/V4I6pB9ADNPBNgrceSf+mLoIWxrRDgTSYqyYYXmj3Fy9B1mG4lpUvrClt4hHKaBvsRZKn4/r2dPxUo0ggI+ruxQaQoKf2v8sEJe6Sx7btBvBxTqOMlIxP1GDNYJICaXo8jsBeNVDtCeFP2e9QJUmNvYGY7IfB8vUqFFcHushNmKmdR5H6pUg/JOsheFyi41UT05Zu3FvMHBAJab4OnybOLrovCVshu3Q7BOFkQVkYF4HrD0IM4GDojGt4OfMqESnLvG7+UywNjs/zjmdX0mn1wG7mZjlXfgh0DKo/MeWCW+gEQdPejCrBwIDAQAB -----END PUBLIC KEY-----"}],"callback":"http://localhost/,https://api.enterprise.apigee.com/v1/o/{{ org }}/apimodels/payments-apis-v1-0/templateauths/PSUOAuth2Security/callback","email":"openbank@apigee.net","apiProducts":"payment_apis"}' assignResponse: - from: credentials.0.consumerKey to: apiKey_PISP diff --git a/init_openapis.js b/init_openapis.js index ab1bd193..7660ae54 100644 --- a/init_openapis.js +++ b/init_openapis.js @@ -17,7 +17,7 @@ var mustache = require('mustache'); var path = require('path'); var fs = require('fs-extra'); -var jwt = require('jsonwebtoken'); +//var jwt = require('jsonwebtoken'); var prompt_lib = require('prompt'); var request = require('request'); @@ -32,7 +32,7 @@ var request = require('request'); node install_tmp.js */ -var files_list = ['src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-locations.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json.template'] +var files_list = ['src/devportal/all/modules/custom/openbank_swagger/swaggers/oauthv1-0.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json.template','src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json.template','src/devportal/all/themes/dbank/js/smartdocsDynamic.js.template']; var inject_object = {} @@ -98,6 +98,10 @@ function post_prompt(err, results) { } inject_object.org = results['org']; + if(results['env']) + { + inject_object.env = results['env']; + } var org = results['org'] var username = results['username']; var password = results['password']; @@ -131,12 +135,12 @@ function post_prompt(err, results) { - get_app_details('AISP_App_v2', edge_host, org, username, password, function (aisp_details) { + get_app_details('AISP_App', edge_host, org, username, password, function (aisp_details) { secret_aisp = aisp_details.credentials[0].consumerSecret; client_id_aisp = aisp_details.credentials[0].consumerKey; redirect_uri_aisp = aisp_details.callbackUrl; - get_app_details('PISP_App_v2', edge_host, org, username, password, function (pisp_details) { + get_app_details('PISP_App', edge_host, org, username, password, function (pisp_details) { secret_pisp = pisp_details.credentials[0].consumerSecret; client_id_pisp = pisp_details.credentials[0].consumerKey; redirect_uri_pisp = pisp_details.callbackUrl; @@ -146,8 +150,8 @@ function post_prompt(err, results) { inject_object.client_id_aisp = client_id_aisp; inject_object.client_id_pisp = client_id_pisp; inject_object.redirect_uri_pisp = redirect_uri_pisp; - - get_app_details('Opendata_App_v2', edge_host, org, username, password, function (opendata_details) { + replace_variables(paths, inject_object); + /*get_app_details('Opendata_App_v2', edge_host, org, username, password, function (opendata_details) { secret_openid = opendata_details.credentials[0].consumerSecret; client_id_openid = opendata_details.credentials[0].consumerKey; redirect_uri_openid = opendata_details.callbackUrl; @@ -158,7 +162,7 @@ function post_prompt(err, results) { replace_variables(paths, inject_object) - }); + });*/ }); diff --git a/openapi/accountv1-0.json b/openapi/accountv1-0.json new file mode 100644 index 00000000..2e66c13e --- /dev/null +++ b/openapi/accountv1-0.json @@ -0,0 +1,2864 @@ +{ + "swagger": "2.0", + "host": "testdemorrai-test.apigee.net", + "info": { + "title": "Account Information APIs", + "description": "Swagger specification for Account Information APIs", + "termsOfService": "https://www.openbanking.org.uk/terms", + "contact": { + "name": "Craig Greenhouse", + "email": "Craig.Greenhouse@openbanking.org.uk" + }, + "license": { + "name": "open-licence", + "url": "https://www.openbanking.org.uk/open-licence" + }, + "version": "v1.0.0" + }, + "basePath": "/ais/open-banking/v1.0", + "schemes": [ + "https" + ], + "produces": [ + "application/json" + ], + "paths": { + "/account-requests": { + "post": { + "summary": "Create an account request", + "description": "Create an account request", + "operationId": "CreateAccountRequest", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "description": "Create an Account Request", + "required": true, + "schema": { + + "$ref": "#/definitions/AccountRequest" + + } + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containig a detached JWS signature of the body of the payload." + } + ], + "responses": { + "201": { + "description": "Account Request resource successfully created", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containig a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/account-requests/{AccountRequestId}": { + "get": { + "summary": "Get an account request", + "description": "Get an account request", + "operationId": "GetAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Request resource successfully retrieved", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + }, + "delete": { + "summary": "Delete an account request", + "description": "Delete an account request", + "operationId": "DeleteAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + } + ], + "responses": { + "204": { + "description": "Account Request resource successfully deleted", + "headers": { + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/accounts": { + "get": { + "summary": "Get Accounts", + "description": "Get a list of accounts", + "operationId": "GetAccounts", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Accounts successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}": { + "get": { + "summary": "Get Account", + "description": "Get an account", + "operationId": "GetAccount", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account resource successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/transactions": { + "get": { + "summary": "Get Account Transactions", + "description": "Get transactions related to an account", + "operationId": "GetAccountTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/beneficiaries": { + "get": { + "summary": "Get Account Beneficiaries", + "description": "Get Beneficiaries related to an account", + "operationId": "GetAccountBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/balances": { + "get": { + "summary": "Get Account Balances", + "description": "Get Balances related to an account", + "operationId": "GetAccountBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/direct-debits": { + "get": { + "summary": "Get Account Direct Debits", + "description": "Get Direct Debits related to an account", + "operationId": "GetAccountDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/standing-orders": { + "get": { + "summary": "Get Account Standing Orders", + "description": "Get Standing Orders related to an account", + "operationId": "GetAccountStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/product": { + "get": { + "summary": "Get Account Product", + "description": "Get Product related to an account", + "operationId": "GetAccountProduct", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Product successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountProduct" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/standing-orders": { + "get": { + "summary": "Get Standing Orders", + "description": "Get Standing Orders", + "operationId": "GetStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/direct-debits": { + "get": { + "summary": "Get Direct Debits", + "description": "Get Direct Debits", + "operationId": "GetDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/beneficiaries": { + "get": { + "summary": "Get Beneficiaries", + "description": "Get Beneficiaries", + "operationId": "GetBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/transactions": { + "get": { + "summary": "Get Transactions", + "description": "Get Transactions", + "operationId": "GetTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + } + ], + "responses": { + "200": { + "description": "Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/balances": { + "get": { + "summary": "Get Balances", + "description": "Get Balances", + "operationId": "GetBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Balances successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + } + }, + "responses": { + "400ErrorResponse": { + "description": "Bad Request" + }, + "401ErrorResponse": { + "description": "Unauthorized" + }, + "403ErrorResponse": { + "description": "Forbidden" + }, + "429ErrorResponse": { + "description": "Too Many Requests" + } + }, + "securityDefinitions": { + "PSUOAuth2Security": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/token", + "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/authorize?response_type=code&client_id=zPq1BGV4OlLV7hJR1DsbfTI1t3orbDmD&state=abcd1234&scope=openid accounts&redirect_uri=https://api.enterprise.apigee.com/v1/o/testdemorrai/apimodels/accounts-apis-v1-0/templateauths/PSUOAuth2Security/callback", + "scopes": { + "accounts": "Ability to read Accounts information", + "openid" : "openId" + }, + "description": "OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU" + } + }, + "definitions": + { + "CreateAccountRequest" : + { + "title": "Account Request POST response", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "type": "object", + "properties": { + "AccountRequestId": { + "description": "Unique identification as assigned to identify the account request resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the account request resource.", + "type": "string", + "enum": [ + "Authorised", + "AwaitingAuthorisation", + "Rejected", + "Revoked" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "AccountRequestId", + "CreationDateTime", + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + }, + "AccountInfo": + { + "title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "Account", + "type": "array", + "items": { + "type": "object", + "title": "Account", + "description": "Account", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Currency": { + "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account.", + "type": "string", + "pattern": "^[A-Z]{3}$" + }, + "Nickname": { + "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "Account": { + "description": "Provides the details to identify an account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Currency" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountTransactions" : + { + "title": "Account Transactions GET response", + "type": "object", + "properties": { + "Data": { + "title": "Transaction", + "description": "Data Section of the Payload", + "type": "array", + "items": { + "type": "object", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionId": { + "description": "Unique identifier for the transaction within an servicing institution. This identifier is both unique and immutable.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionReference": { + "description": "Unique reference for the transaction. This reference is optionally populated, and may as an example be the FPID in the Faster Payments context.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Amount": { + "description": "Amount of money in the cash entry.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the transaction is a credit or a debit entry.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Status": { + "description": "Status of a transaction entry on the books of the account servicer.", + "type": "string", + "enum": [ + "Booked", + "Pending" + ] + }, + "BookingDateTime": { + "description": "Date and time when a transaction entry is posted to an account on the account servicer's books. Usage: Booking date is the expected booking date, unless the status is booked, in which case it is the actual booking date.", + "type": "string", + "format": "date-time" + }, + "ValueDateTime": { + "description": "Date and time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date. For entries subject to availability/float and for which availability information is provided, the value date must not be used. In this case the availability component identifies the number of availability days.", + "type": "string", + "format": "date-time" + }, + "TransactionInformation": { + "description": "Further details of the transaction. This is the transaction narrative, which is unstructured text.", + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BankTransactionCode": { + "description": "Set of elements used to fully identify the type of underlying transaction resulting in an entry.", + "type": "object", + "properties": { + "Code": { + "description": "Specifies the family within a domain.", + "type": "string" + }, + "SubCode": { + "description": "Specifies the sub-product family within a specific family.", + "type": "string" + } + }, + "required": [ + "Code", + "SubCode" + ], + "additionalProperties": false + }, + "ProprietaryBankTransactionCode": { + "description": "Set of elements to fully identify a proprietary bank transaction code.", + "type": "object", + "properties": { + "Code": { + "description": "Proprietary bank transaction code to identify the underlying transaction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Issuer": { + "description": "Identification of the issuer of the proprietary bank transaction code.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "Code" + ], + "additionalProperties": false + }, + "Balance": { + "description": "Set of elements used to define the balance as a numerical representation of the net increases and decreases in an account after a transaction entry is applied to the account.", + "type": "object", + "properties": { + "Amount": { + "description": "Amount of money of the cash balance after a transaction entry is applied to the account..", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + } + }, + "additionalProperties": false, + "required": [ + "Amount", + "CreditDebitIndicator", + "Type" + ] + }, + "MerchantDetails": { + "description": "Details of the merchant involved in the transaction.", + "type": "object", + "properties": { + "MerchantName": { + "description": "Name by which the merchant is known.", + "type": "string", + "minLength": 1, + "maxLength": 350 + }, + "MerchantCategoryCode": { + "description": "Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.", + "type": "string", + "minLength": 3, + "maxLength": 4 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "Status", + "BookingDateTime" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBeneficiaries" : + { + "title": "Beneficiaries GET response", + "type": "object", + "properties": { + "Data": { + "title": "Beneficiary", + "type": "array", + "items": { + "type": "object", + "title": "Beneficiary", + "description": "Beneficiary", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "BeneficiaryId": { + "description": "A unique and immutable identifier used to identify the beneficiary resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBalance": + { + "title": "Balances GET response", + "type": "object", + "properties": { + "Data": { + "title": "Balance", + "type": "array", + "items": { + "type": "object", + "title": "Balance", + "description": "Balance", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Amount": { + "description": "Amount of money of the cash balance.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + }, + "DateTime": { + "description": "Indicates the date (and time) of the balance.", + "type": "string", + "format": "date-time" + }, + "CreditLine": { + "type": "object", + "properties": { + "Included": { + "description": "Indicates whether or not the credit line is included in the balance of the account. Usage: If not present, credit line is not included in the balance amount of the account.", + "type": "boolean" + }, + "Amount": { + "description": "Active Or Historic Currency Code and Amount", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Type": { + "description": "Limit type, in a coded form.", + "type": "string", + "enum": [ + "Pre-Agreed", + "Emergency", + "Temporary" + ] + } + }, + "additionalProperties": false, + "required": [ + "Included" + ] + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "DateTime", + "Type" + ] + }, + "minItems": 1 + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountDirectDebits": + {"title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "DirectDebit", + "type": "array", + "items": { + "type": "object", + "title": "Direct Debit", + "description": "Direct Debit", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "DirectDebitId": { + "description": "A unique and immutable identifier used to identify the direct debit resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "MandateIdentification": { + "description": "Direct Debit reference. For AUDDIS service users provide Core Reference. For non AUDDIS service users provide Core reference if possible or last used reference.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "DirectDebitStatusCode": { + "description": "Specifies the status of the direct debit in code form.", + "type": "string", + "enum": [ + "Active", + "Inactive" + ] + }, + "Name": { + "description": "Name of Service User", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "PreviousPaymentDateTime": { + "description": "Date of most recent direct debit collection.", + "type": "string", + "format": "date-time" + }, + "PreviousPaymentAmount": { + "description": "The amount of the most recent direct debit collection.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "MandateIdentification", + "Name" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountStandingOrders" : + { + "title": "Standing Orders GET response", + "type": "object", + "properties": { + "Data": { + "title": "StandingOrder", + "type": "array", + "items": { + "type": "object", + "title": "Standing Order", + "description": "Standing Order", + "properties": { + "AccountId": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "StandingOrderId": { + "description": "A unique and immutable identifier used to identify the standing order resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Frequency": { + "description": "EvryWorkgDay - PSC070 IntrvlWkDay:PSC110:PSC080 (PSC070 code + PSC110 + PSC080) WkInMnthDay:PSC100:PSC080 (PSC070 code + PSC100 + PSC080) IntrvlMnthDay:PSC120:PSC090 (PSC070 code + PSC120 + PSC090) QtrDay: + either (ENGLISH, SCOTTISH or RECEIVED) PSC070 + PSC130 The following response codes may be generated by this data element: PSC070: T221 - Schedule code must be a valid enumeration value. PSC070: T245 - Must be provided for standing order only. PSC080: T222 - Day in week must be within defined bounds (range 1 to 5). PSC080: T229 - Must be present if Schedule Code = IntrvlWkDay. PSC080: T231 - Must be present if Schedule Code = WkInMnthDay. PSC090: T223 - Day in month must be within defined bounds (range -5 to 31 excluding: 0 & 00). PSC090: T233 - Must be present if Schedule Code = IntrvlMnthDay. PSC100: T224 - Week in month must be within defined bounds (range 1 to 5). PSC100: T232 - Must be present if Schedule Code = WkInMnthDay. PSC110: T225 - Interval in weeks must be within defined bounds (range 1 to 9). PSC110: T230 - Must be present if Schedule Code = IntrvlWkDay. PSC120: T226 - Interval in months must be a valid enumeration value (range 1 to 6, 12 and 24). PSC120: T234 - Must be present if Schedule Code = IntrvlMnthDay. PSC130: T227 - Quarter Day must be a valid enumeration value. PSC130: T235 - Must be present if Schedule Code = QtrDay. The regular expression for this element combines five smaller versions for each permitted pattern. To aid legibility - the components are presented individually here: EvryWorkgDay IntrvlWkDay:0[1-9]:0[1-5] WkInMnthDay:0[1-5]:0[1-5] IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]) QtrDay:(ENGLISH|SCOTTISH|RECEIVED) Mandatory/Conditional/Optional/Parent/Leaf: OL Type: 35 char string Regular Expression(s): (EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1- 6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))", + "type": "string", + "pattern": "^((EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED)))$" + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "FirstPaymentDateTime": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FirstPaymentAmount": { + "description": "The amount of the first Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "NextPaymentDateTime": { + "description": "The date on which the next payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "NextPaymentAmount": { + "description": "The amount of the next Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "FinalPaymentDateTime": { + "description": "The date on which the final payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FinalPaymentAmount": { + "description": "The amount of the final Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "Frequency", + "NextPaymentDateTime", + "NextPaymentAmount" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountProduct" : + { + "title": "Product GET response", + "type": "object", + "properties": { + "Data": { + "title": "Product", + "type": "array", + "items": { + "type": "object", + "title": "Product", + "description": "Product", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "ProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + }, + "ProductType": { + "description": "Descriptive code for the product category.", + "type": "string", + "enum": [ + "BCA", + "PCA" + ] + }, + "ProductName": { + "description": "The name of the product used for marketing purposes from a customer perspective. I.e. what the customer would recognise.", + "type": "string" + }, + "SecondaryProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "ProductIdentifier", + "ProductType" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountRequest" : + { + "title": "Account Request POST request", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + } + } +} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json b/openapi/oauthv1-0.json similarity index 64% rename from src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json rename to openapi/oauthv1-0.json index 84718650..4e6b63f4 100644 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json +++ b/openapi/oauthv1-0.json @@ -9,7 +9,7 @@ "title": "Generate Access Token", "version": "0.0.1" }, - "basePath": "/apis/v2/oauth", + "basePath": "/apis/v1.0/oauth", "paths": { "/authorize": { "get": { @@ -28,37 +28,46 @@ } }, "security": [], - "parameters": [ - { + "parameters": [{ "in": "query", "name": "client_id", - "description": "Client ID of the registered App.", + "description": "TPPs MUST provide this value and set it to the client id issued to them.", "type": "string", + "default": "zPq1BGV4OlLV7hJR1DsbfTI1t3orbDmD", "required": true }, { "in": "query", "name": "redirect_uri", - "description": "Redirect URI defined with your registered App.", + "description": "Redirect URI defined with your registered App. This MUST be a valid, absolute URL that was registered during Client Registration.", + "type": "string", + "default" : "http://localhost/", + "required": true + }, + { + "in": "query", + "name": "nonce", + "description": "A nonce value", "type": "string", "required": true }, { "in": "query", "name": "response_type", - "description": "The value must be one of 'code' for requesting an authorization code or 'token' for requesting an access token (implicit grant). The redirect url is passed with query params state and code.", + "description": "OAuth 2.0 requires that this parameter is provided. Value is set to ‘code id_token’ or ‘code’. The values for these parameters MUST match those in the Request Object, if present.", "type": "string", "required": true, "enum": [ + "code id_token", + "code", "token", - "code" - ], - "default": "token" + "token id_token" + ] }, { "in": "query", "name": "state", - "description": "Unique id to maintain state between asynchronous requests.", + "description": "TPPs MAY provide a state parameter. An Unique id to maintain state between asynchronous requests at the Client.", "type": "string", "required": true, "default": "af0ifjsldkj" @@ -66,31 +75,19 @@ { "in": "query", "name": "scope", - "description": "Scope of the access token requested.", + "description": "The scopes MUST be a sub-set of the scopes that were registered during Client Registration. At a minimum the scope parameter MUST contain openid. Other valid scopes are: accounts, payments", "type": "string", "required": true, "enum": [ - "accounts", - "payments", + "openid accounts", + "openid payments", "openid" ] }, { "in": "query", - "name": "acr_values", - "description": "Determines the level of security for authentication. A value of 2 will require only Customer Id and Password. A value of 3 will request for OTP.", - "type": "string", - "required": true, - "enum": [ - "2", - "3" - ], - "default": "2" - }, - { - "in": "query", - "name": "request_id", - "description": "Request Id for which Authorization Flow need to be executed", + "name": "request", + "description": "The parameter MUST contain a JWS that is signed by the TPP. The JWS payload MUST consist of a JSON object containing a request object as per OIDC Core 6.1.
The request object MUST contain a claims section that includes as a minimum
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\tBigZ app (third-party payment initiation)\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t This scenario demonstrates a payment made through a PISP without using cash, credit card, or debit card: \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t Kathie is living in London and occupied with her work. She needs to buy a new cellphone. Laura logs on to BigZ online shopping mobile app,selects the product, and pays for it online without even stepping out of her workplace. \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t \\r\\n\\t\\t\\taisp.jpg\\r\\n\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\tPepperMint app (account information service provider)\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t Enjoy visibility of your funds across all your accounts, in one place. Advanced spendilytics at your finger tips: \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t Sam is living in California and would like to track and monitor his monthly spending across his accounts. He logs on to his new PepperMint app, which provides him a consolidated view of his accounts, financials and expenditure. \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t
\\r\\n\\r\\n
\\r\\n", + \'value\' => "
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\tBigZ app (third-party payment initiation)\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t This scenario demonstrates a payment made through a PISP without using cash, credit card, or debit card: \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t Kathie is living in London and occupied with her work. She needs to buy a new cellphone. Laura logs on to BigZ online shopping mobile app,selects the product, and pays for it online without even stepping out of her workplace. \\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t
\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t\\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\r\\n\\t\\t\\t \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t | \\r\\n\\t\\t
\\r\\n\\r\\n
\\r\\n", \'summary\' => \'\', \'format\' => \'full_html\', - \'safe_value\' => "
Â
\\nÂ
\\n\\n\\n \\npispapp.jpg\\n \\n \\n\\n \\n\\n \\n | \\n  | \\n\\nBigZ app (third-party payment initiation)\\n \\nThis scenario demonstrates a payment made through a PISP without using cash, credit card, or debit card: \\n \\nKathie is living in London and occupied with her work. She needs to buy a new cellphone. Laura logs on to BigZ online shopping mobile app,selects the product, and pays for it online without even stepping out of her workplace. \\n \\n\\n \\n \\n \\n \\n | \\n\\nÂ\\n | \\n
Â
\\nÂ
\\n\\n \\n \\n\\n \\naisp.jpg\\n\\n | \\n  | \\n\\nPepperMint app (account information service provider)\\n \\nEnjoy visibility of your funds across all your accounts, in one place. Advanced spendilytics at your finger tips: \\n \\nSam is living in California and would like to track and monitor his monthly spending across his accounts. He logs on to his new PepperMint app, which provides him a consolidated view of his accounts, financials and expenditure. \\n\\n \\n \\n \\n \\n | \\n\\nÂ\\n | \\n
Â
\\nÂ
\\n", + \'safe_value\' => "Â
\\nÂ
\\n\\n |   | \\n\\nBigZ app (third-party payment initiation)\\n \\nThis scenario demonstrates a payment made through a PISP without using cash, credit card, or debit card: \\n \\nKathie is living in London and occupied with her work. She needs to buy a new cellphone. Laura logs on to BigZ online shopping mobile app,selects the product, and pays for it online without even stepping out of her workplace. \\n \\n\\n \\n \\n \\n \\n | \\n\\nÂ\\n | \\n
\\n \\n \\n\\n \\nÂ\\n \\n | \\n  | \\n\\nÂ\\n \\n \\n \\n \\n | \\n\\nÂ\\n | \\n
Â
\\nÂ
\\n", \'safe_summary\' => \'\', ), ), @@ -1905,10 +1905,10 @@ function all_component_features_node_export_features_default() { \'body\' => array( \'und\' => array( array( - \'value\' => "API products are available through various subsciption plans. These plans will be made available after enrollment and verification. Once you've subscribed to a plan, you can use the APIs using the app credentials. APIs are categorized into these API products:
\\r\\n\\r\\n\\r\\n\\r\\n
Account information APIs provide information for accounts held by the bank customer. Information is categorized into:
\\r\\n\\r\\nAn API end point is provided for each type of information.
\\r\\n\\r\\nBanking APIs provide developers with the information needed to create innovative fintech apps for consumers. While you probably have some use cases in mind, there are a few obvious ones worth mentioning:
\\r\\n\\r\\n\\r\\n\\r\\n
GET
\\r\\n/{AccountId}
\\r\\nGET
\\r\\n/{AccountId}/transactions
\\r\\nGET
\\r\\n/{AccountId}/balance
\\r\\nGET
\\r\\n/{AccountId}/beneficiaries
\\r\\nGET
\\r\\n/{AccountId}/standing-orders
\\r\\nGET
\\r\\n/{AccountId}/direct-debits
\\r\\nGET
\\r\\n/
\\r\\nGET
\\r\\n/balance
\\r\\nGET
\\r\\n/transactions
\\r\\nGET
\\r\\n/beneficiaries
\\r\\nGET
\\r\\n/standing-orders
\\r\\nGET
\\r\\n/direct-betits
\\r\\n\\r\\n\\r\\n
For accessing account access API end points and payment API end points, the app will first make a call to the OAuth API, so that it can get an access token. The OAuth APIs support the implicit grant flow wherein the access token is returned directly to the app once the user has been authenticated. To keep the authentication more secure (it should do this, unless the app is trusted), the app could also use the authorization code flow wherein a code is returned back to the app. The app should then exchange it for an access token.
\\r\\n\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\n\\r\\nThe app can then use this access token to make the calls to the accounts APIs, userinfo API, and payment APIs. When the API is called, the customer and request id is retrieved from the access token to proceed with the API call flow.
\\r\\n\\r\\n
\\r\\nPayment APIs enable the transfer of funds from a consumer's account to a recipient. The initation of transfer is done by the consumer and the recipient's account number is provided by the third-party payment provider (TPPs or PISPs).
For initiating a transfer the user will have to provide the payment request Id and will have to authenticate using two-factor authentication following which an access token will be generated
\\r\\n\\r\\nUsing the Access token generated, one-time payment submission can be done. Take a look at some of the use cases:
\\r\\n\\r\\n\\r\\n\\r\\n
POST
\\r\\n/payments
\\r\\nGET
\\r\\n/payments
\\r\\nPOST
\\r\\n/payment-submissions
\\r\\nGET
\\r\\n/payment-submissions
\\r\\n
\\r\\nUserindo APIs enable getting basic details of the customer.
For initiating this call, the user will have to authenticate using two-factor authentication following which an access token will be generated
\\r\\n\\r\\nUsing the Access token generated, user details can be fetched.
\\r\\n\\r\\n\\r\\n\\r\\n
GET
\\r\\n/userinfo/acr:token
\\r\\n
\\r\\nOpen Data APIs are a category of APIs that provide general information of a Bank. These are not customer-specific, but bank-specific: locations, products, URLs, and events, for example. These APIs are not subjected to user-level authentication, but are are protected to be used only by signed apps. A valid client credential is essential to invoke these APIs.
Using this category of APIs, a wide variety of new value-added solutions can be provided to consumers. Coupled with customer-specific information, potential new solutions include product and offer recommendations.
\\r\\n\\r\\n\\r\\n
GET
\\r\\n/atms
\\r\\nGET
\\r\\n/products
\\r\\nGET
\\r\\n/branches
\\r\\nAPI products are available through various subsciption plans. These plans will be made available after enrollment and verification. Once you\'ve subscribed to a plan, you can use the APIs using the app credentials. APIs are categorized into these API products:
\\r\\n\\r\\n
Account information APIs provide information for accounts held by the bank customer. Information is categorized into:
\\r\\nAn API end point is provided for each type of information.
\\r\\nBanking APIs provide developers with the information needed to create innovative fintech apps for consumers. While you probably have some use cases in mind, there are a few obvious ones worth mentioning:
\\r\\n\\r\\n
POST
\\r\\n/account-requests
\\r\\nGET
\\r\\n/account-requests/{AccountRequestId}
\\r\\nDELETE
\\r\\n/account-requests/{AccountRequestId}
\\r\\nGET
\\r\\n/accounts/{AccountId}
\\r\\nGET
\\r\\n/accounts/{AccountId}/transactions
\\r\\nGET
\\r\\n/accounts/{AccountId}/balances
\\r\\nGET
\\r\\n/accounts/{AccountId}/beneficiaries
\\r\\nGET
\\r\\n/accounts/{AccountId}/standing-orders
\\r\\nGET
\\r\\nGET
\\r\\n/accounts
\\r\\nGET
\\r\\n/balances
\\r\\nGET
\\r\\n/transactions
\\r\\nGET
\\r\\n/beneficiaries
\\r\\nGET
\\r\\n/standing-orders
\\r\\nGET
\\r\\n/accounts/{AccountId}/product
\\r\\nGET
\\r\\n/direct-betits
\\r\\n\\r\\n
For accessing account access API end points and payment API end points, the app will first make a call to the OAuth API, so that it can get an access token. The OAuth APIs support the implicit grant flow wherein the access token is returned directly to the app once the user has been authenticated. To keep the authentication more secure (it should do this, unless the app is trusted), the app could also use the authorization code flow wherein a code is returned back to the app. The app should then exchange it for an access token.
\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\nThe app can then use this access token to make the calls to the accounts APIs, userinfo API, and payment APIs. When the API is called, the customer and request id is retrieved from the access token to proceed with the API call flow.
\\r\\n
Payment APIs enable the transfer of funds from a consumer\'s account to a recipient. The initation of transfer is done by the consumer and the recipient\'s account number is provided by the third-party payment provider (TPPs or PISPs).
For initiating a transfer the user will have to provide the payment request Id and will have to authenticate using two-factor authentication following which an access token will be generated
\\r\\nUsing the Access token generated, one-time payment submission can be done. Take a look at some of the use cases:
\\r\\n\\r\\n
POST
\\r\\n/payments
\\r\\nGET
\\r\\n/payments
\\r\\nPOST
\\r\\n/payment-submissions
\\r\\nGET
\\r\\n/payment-submissions
\\r\\nAPI products are available through various subsciption plans. These plans will be made available after enrollment and verification. Once you\'ve subscribed to a plan, you can use the APIs using the app credentials. APIs are categorized into these API products:
\\nÂ
\\nAccount information APIs provide information for accounts held by the bank customer. Information is categorized into:
\\nAn API end point is provided for each type of information.
\\nBanking APIs provide developers with the information needed to create innovative fintech apps for consumers. While you probably have some use cases in mind, there are a few obvious ones worth mentioning:
\\nÂ
\\nGET
\\n/{AccountId}
\\nGET
\\n/{AccountId}/transactions
\\nGET
\\n/{AccountId}/balance
\\nGET
\\n/{AccountId}/beneficiaries
\\nGET
\\n/{AccountId}/standing-orders
\\nGET
\\n/{AccountId}/direct-debits
\\nGET
\\nGET
\\n/balance
\\nGET
\\n/transactions
\\nGET
\\n/beneficiaries
\\nGET
\\n/standing-orders
\\nGET
\\n/direct-betits
\\nÂ
\\nFor accessing account access API end points and payment API end points, the app will first make a call to the OAuth API, so that it can get an access token. The OAuth APIs support the implicit grant flow wherein the access token is returned directly to the app once the user has been authenticated. To keep the authentication more secure (it should do this, unless the app is trusted), the app could also use the authorization code flow wherein a code is returned back to the app. The app should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe app can then use this access token to make the calls to the accounts APIs, userinfo API, and payment APIs. When the API is called, the customer and request id is retrieved from the access token to proceed with the API call flow.
\\n\\nPayment APIs enable the transfer of funds from a consumer\'s account to a recipient. The initation of transfer is done by the consumer and the recipient\'s account number is provided by the third-party payment provider (TPPs or PISPs).
\\nFor initiating a transfer the user will have to provide the payment request Id and will have to authenticate using two-factor authentication following which an access token will be generated
\\nUsing the Access token generated, one-time payment submission can be done. Take a look at some of the use cases:
\\nÂ
\\nPOST
\\n/payments
\\nGET
\\n/payments
\\nPOST
\\n/payment-submissions
\\nGET
\\n/payment-submissions
\\n\\nUserindo APIs enable getting basic details of the customer.
\\nFor initiating this call, the user will have to authenticate using two-factor authentication following which an access token will be generated
\\nUsing the Access token generated, user details can be fetched.
\\nÂ
\\nGET
\\n/userinfo/acr:token
\\n\\nOpen Data APIs are a category of APIs that provide general information of a Bank. These are not customer-specific, but bank-specific: locations, products, URLs, and events, for example. These APIs are not subjected to user-level authentication, but are are protected to be used only by signed apps. A valid client credential is essential to invoke these APIs.
\\nUsing this category of APIs, a wide variety of new value-added solutions can be provided to consumers. Coupled with customer-specific information, potential new solutions include product and offer recommendations.
\\nÂ
\\nAPI products are available through various subsciption plans. These plans will be made available after enrollment and verification. Once you\'ve subscribed to a plan, you can use the APIs using the app credentials. APIs are categorized into these API products:
\\nÂ
\\nAccount information APIs provide information for accounts held by the bank customer. Information is categorized into:
\\nAn API end point is provided for each type of information.
\\nBanking APIs provide developers with the information needed to create innovative fintech apps for consumers. While you probably have some use cases in mind, there are a few obvious ones worth mentioning:
\\nÂ
\\nPOST
\\n/account-requests
\\nGET
\\n/account-requests/{AccountRequestId}
\\nDELETE
\\n/account-requests/{AccountRequestId}
\\nGET
\\n/accounts/{AccountId}
\\nGET
\\n/accounts/{AccountId}/transactions
\\nGET
\\n/accounts/{AccountId}/balances
\\nGET
\\n/accounts/{AccountId}/beneficiaries
\\nGET
\\n/accounts/{AccountId}/standing-orders
\\nGET
\\nGET
\\n/accounts
\\nGET
\\n/balances
\\nGET
\\n/transactions
\\nGET
\\n/beneficiaries
\\nGET
\\n/standing-orders
\\nGET
\\n/accounts/{AccountId}/product
\\nGET
\\n/direct-betits
\\nÂ
\\nFor accessing account access API end points and payment API end points, the app will first make a call to the OAuth API, so that it can get an access token. The OAuth APIs support the implicit grant flow wherein the access token is returned directly to the app once the user has been authenticated. To keep the authentication more secure (it should do this, unless the app is trusted), the app could also use the authorization code flow wherein a code is returned back to the app. The app should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe app can then use this access token to make the calls to the accounts APIs, userinfo API, and payment APIs. When the API is called, the customer and request id is retrieved from the access token to proceed with the API call flow.
\\nPayment APIs enable the transfer of funds from a consumer\'s account to a recipient. The initation of transfer is done by the consumer and the recipient\'s account number is provided by the third-party payment provider (TPPs or PISPs).
\\nFor initiating a transfer the user will have to provide the payment request Id and will have to authenticate using two-factor authentication following which an access token will be generated
\\nUsing the Access token generated, one-time payment submission can be done. Take a look at some of the use cases:
\\nÂ
\\nPOST
\\n/payments
\\nGET
\\n/payments
\\nPOST
\\n/payment-submissions
\\nGET
\\n/payment-submissions
\\nStep 1) After your have registered and logged in, click the "Add a new app" button.
\\r\\n\\r\\n\\r\\n\\r\\n
[[{\\"fid\\":\\"168\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"428\\",\\"width\\":\\"1223\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\n\\r\\n\\r\\n
Step 2) Enter the name of your app and choose the API product you need. Refer to the API catalogue to learn more about the API products and the APIs bundled in the product. Redirect URI is the URL to which the authorize call will be redirected. The redirect URI needs to match what is entered here to return the auth code.
\\r\\n\\r\\n[[{\\"fid\\":\\"163\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"503\\",\\"width\\":\\"677\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\n\\r\\n\\r\\n
Step 3) Click on "Create app." You will see the message that says "app created" and see a link to your app.
\\r\\n\\r\\n\\r\\n\\r\\n
[[{\\"fid\\":\\"168\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"428\\",\\"width\\":\\"1223\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\n\\r\\n\\r\\n
Step 4) To get client credentials and click on your app. You will also see details and traffic dashboards.
\\r\\n\\r\\n\\r\\n\\r\\n
[[{\\"fid\\":\\"170\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"496\\",\\"width\\":\\"824\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\n\\r\\n\\r\\n
To view the analytics dashboards on traffic, errors, and other information, click on the analytics tab.
\\r\\n\\r\\n\\r\\n\\r\\n
[[{\\"fid\\":\\"167\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"491\\",\\"width\\":\\"1168\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n", + \'value\' => "Step 1) After your have registered and logged in, click the \\"Add a new app\\" button.
\\r\\n\\r\\n
Step 2) Enter the name of your app and choose the API product you need. Refer to the API catalogue to learn more about the API products and the APIs bundled in the product. Redirect URI is the URL to which the authorize call will be redirected. The redirect URI needs to match what is entered here to return the auth code.
\\r\\n\\r\\n
Step 3) Click on \\"Create app.\\" You will see the message that says \\"app created\\" and see a link to your app.
\\r\\n\\r\\n
Step 4) To get client credentials and click on your app. You will also see details and traffic dashboards.
\\r\\n\\r\\n
To view the analytics dashboards on traffic, errors, and other information, click on the analytics tab.
", \'summary\' => \'\', \'format\' => \'full_html\', - \'safe_value\' => "Step 1) After your have registered and logged in, click the \\"Add a new app\\" button.
\\nÂ
\\nÂ
\\nStep 2) Enter the name of your app and choose the API product you need. Refer to the API catalogue to learn more about the API products and the APIs bundled in the product. Redirect URI is the URL to which the authorize call will be redirected. The redirect URI needs to match what is entered here to return the auth code.
\\nÂ
\\nStep 3) Click on \\"Create app.\\" You will see the message that says \\"app created\\" and see a link to your app.
\\nÂ
\\nÂ
\\nStep 4) To get client credentials and click on your app. You will also see details and traffic dashboards.
\\nÂ
\\nÂ
\\nTo view the analytics dashboards on traffic, errors, and other information, click on the analytics tab.
\\nÂ
\\nStep 1) After your have registered and logged in, click the \\"Add a new app\\" button.
\\nÂ
\\nStep 2) Enter the name of your app and choose the API product you need. Refer to the API catalogue to learn more about the API products and the APIs bundled in the product. Redirect URI is the URL to which the authorize call will be redirected. The redirect URI needs to match what is entered here to return the auth code.
\\nÂ
\\nStep 3) Click on \\"Create app.\\" You will see the message that says \\"app created\\" and see a link to your app.
\\nÂ
\\nStep 4) To get client credentials and click on your app. You will also see details and traffic dashboards.
\\nÂ
\\nTo view the analytics dashboards on traffic, errors, and other information, click on the analytics tab.
\\n", \'safe_summary\' => \'\', ), ), @@ -3806,10 +3806,10 @@ function all_component_features_node_export_features_default() { \'body\' => array( \'und\' => array( array( - \'value\' => "Authentication is based on OpenID Connect, which is based on OAuth 2.0.
\\r\\n\\r\\nThe user will have to authenticate with the bank using two-factor authentication, which will then provide the client application with a unique and time-bound access token. The client app can use this unique token to make calls to the bank on the behalf of the user.
\\r\\n\\r\\nGenerally, these access tokens are specific to a single account of a user and are valid over a longer duration (up to 30 days, for example).
\\r\\n\\r\\nFor the payment API, users need to authenticate their accounts each time a transfer is made because these API calls need to meet higher security requirements.
\\r\\n\\r\\nThe end user authenticates the account and provides access to the app to carry out the transaction via a two-step verification on the bank site. The following steps are done to provide authentication:
\\r\\n\\r\\nYou will create the app and provide the required details to enable support for the OAuth 2.0 three-legged flows, such as the callback/redirect url.
\\r\\n\\r\\nIn order for the app to make any API calls, it will have to present its client ID and secret. This is to ensure that only authenticated apps can make API calls.
\\r\\n\\r\\nFor accessing the accounts API, the app will first make a call to the OAuth API, so that the app can get an access token to access a single account on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should, unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app. It should then exchange it for an access token.
\\r\\n\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\n\\r\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\r\\n\\r\\nIn the case of transfers, the app can directly make a call to the payment API wherein the bank will directly request for authentication information from the user including OTP verification and asking for consent after which the bank allows the app to make a one-time transfer on behalf of the user. In order to initiate the transfer the app has to provide information related to the payee as a JWT token. More details about how this JWT token is created is provided in the Payments API section.
\\r\\n\\r\\nFor accessing this API endpoint, the app will first make a call to the OAuth API, so that the app can get an access token to access a single account on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\r\\n\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\n\\r\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\r\\n\\r\\nAssume a hypothetical scenario where the user has made a purchase from an online merchant. The user now wishes to make a payment via the payment provider (PISP) supported by this online merchant.
\\r\\n\\r\\nThe merchant has provided the transaction-related information to the PISP and the PISP now initiates a call to the payment API. The transfer details are sent to the API in the form of a signed JWT. The JWT is signed with the client secret of the app; the API will then verify this JWT by comparing it with the signature of the app that made this request. This ensures that the token has not been tampered with. The payment information is also shown to the user while requesting consent so that the user can verify the details.
\\r\\n\\r\\nThe JWT is composed of three sections: header, payload, and signature
\\r\\n\\r\\nA sample header shown below. It indicates that it is a JWT token and specified the signature used for encoding the payload.
\\r\\n\\r\\n{
\\r\\n\\r\\n"alg": "HS256",
\\r\\n\\r\\n"typ": "JWT"
\\r\\n\\r\\n}
\\r\\n\\r\\nThe payload contains the payee information as a set of payment claims. The token contains some reserved claims that are supposed to be in a JWT payload and some private claims that specify the payment details.
\\r\\n\\r\\n\\r\\n{\\r\\n "iss": "https://accenture.co.uk", //url of the JWT issuer\\r\\n "aud": "https://apis-bank-dev.apigee.net", //url of the party it is intended for\\r\\n "client_id": "grOmvYA89jsdhkshdIYhGtpvztofAAjz", //client id of the registered app\\r\\n "redirect_uri": "http://localhost/", //redirect uri of the app\\r\\n "scope": "openid accounts payment", //requested scopes for this call\\r\\n "state": "af0ifjsldkj", //unique state to connect request and response\\r\\n "acr_values": "3", // request acr_values; 2 for only authentication, and 3 for OTP flow\\r\\n "claims": {\\r\\n "paymentinfo": {\\r\\n "type": "sepa_credit_transfer", //transfer type\\r\\n "to": {\\r\\n "account_number": "62136000", //receiver account id\\r\\n "remote_bic": "RBOSGB2109H", //receiver remote bic code\\r\\n "remote_IBAN": "GB32ESSE40486562136016", //receiver remote iban code\\r\\n "remote_name": "BigZ online store" //receiver name\\r\\n },\\r\\n "value": {\\r\\n "currency": "GBP", //transfer currency\\r\\n "amount": "200" //transfer amount\\r\\n },\\r\\n "additional": {\\r\\n "subject": "Online Purchase", //transfer description\\r\\n "booking_code": "2SFBJ28553", //transfer booking code\\r\\n "booking_date": "1462517645809", //transfer booking date\\r\\n "value_date": "1462517645809" //transfer value date\\r\\n },\\r\\n "challenge_type": "SANDBOX_TAN" //challenge for additional security\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n
Then, the JWT token is signed with the client secret of the registered app to ensure that it isn't tampered with.
\\r\\n\\r\\nTo form the full token, the header and the payload is Base64Url encoded and concatenated, separated by a dot (.). This string is signed in the following way using a JWS library. There are libraries available for many languages in order to sign a JWT.
\\r\\n\\r\\nHMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
\\r\\n\\r\\nFinally the following JWT token is obtained.
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\neyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FjY2VudHVyZS5jby51ayIsImF1ZCI6Imh0dHBzOi8vYXBpcy1iYW5rLWRldi5hcGlnZWUubmV0IiwiY2xpZW50X2lkIjoiZ3JPbXZZQWVpOGFCQVJ6RVZJWWhHdHB2enRvZkFBanoiLCJyZWRpcmVjdF91cmkiOiJodHRwOi8vbG9jYWxob3N0LyIsInNjb3BlIjoib3BlbmlkIGFjY291bnRzIHBheW1lbnQiLCJzdGF0ZSI6ImFmMGlmanNsZGtqIiwiYWNyX3ZhbHVlcyI6IjMiLCJjbGFpbXMiOnsicGF5bWVudGluZm8iOnsidHlwZSI6InNlcGFfY3JlZGl0X3RyYW5zZmVyIiwidG8iOnsiYWNjb3VudF9pZCI6IjYyMTM2MDAwIiwicmVtb3RlX2JpYyI6IlJCT1NHQjIxMDlIIiwicmVtb3RlX0lCQU4iOiJHQjMyRVNTRTQwNDg2NTYyMTM2MDE2IiwicmVtb3RlX25hbWUiOiJCaWdaIG9ubGluZSBzdG9yZSJ9LCJ2YWx1ZSI6eyJjdXJyZW5jeSI6IkdCUCIsImFtb3VudCI6IjIwMCJ9LCJhZGRpdGlvbmFsIjp7InN1YmplY3QiOiJPbmxpbmUgUHVyY2hhc2UiLCJib29raW5nX2NvZGUiOiIyU0ZCSjI4NTUzIiwiYm9va2luZ19kYXRlIjoiMTQ2MjUxNzY0NTgwOSIsInZhbHVlX2RhdGUiOiIxNDYyNTE3NjQ1ODA5In0sImNoYWxsZW5nZV90eXBlIjoiU0FOREJPWF9UQU4ifX0sImlhdCI6MTQ2MjUxODk4NH0.iD7jP_l8lBxnExWWSXAcI48n6urvvmd-goNSRwGwJYg\\r\\n\\r\\n
\\r\\n\\r\\n
Please refer to https://jwt.io/introduction/ to read more about the JWT specification, how to construct a token and the available libraries.
\\r\\n\\r\\nOpen data APIs are a category of APIs that provide non-customer specific information from a bank. These offer bank-specific information, such as ATM locations, products, URLs, and events. These APIs are not subjected to user-level authenication, but are protected to be used only by signed apps. A valid client credential is essential to make these API calls.
\\r\\n", + \'value\' => "Authentication is based on OpenID Connect, which is based on OAuth 2.0.
\\r\\nThe user will have to authenticate with the bank using two-factor authentication, which will then provide the client application with a unique and time-bound access token. The client app can use this unique token to make calls to the bank on the behalf of the user.
\\r\\nGenerally, these access tokens are specific to a single account of a user and are valid over a longer duration (up to 30 days, for example).
\\r\\nFor the accounts and payment APIs, users need to authenticate their accounts each time an API call is made because these API calls need to meet higher security requirements.
\\r\\nThe end user authenticates the account and provides access to the app to carry out the transaction via a two-step verification on the bank site. The following steps are done to provide authentication:
\\r\\nYou will create the app and provide the required details to enable support for the OAuth 2.0 three-legged flows, such as the callback/redirect url.
\\r\\nIn order for the app to make any API calls, it will have to present its client ID and secret. This is to ensure that only authenticated apps can make API calls.
\\r\\nFor accessing the accounts and payments APIs, the app will first make a call to the OAuth API, so that the app can get an access token to access account(s) on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should, unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app. It should then exchange it for an access token.
\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\nThe App can then use this access token to make the calls to the accounts/payments APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\r\\nFor accessing this API endpoint, the app will first make a call to the OAuth API to get a client_credential access token, then create an account request which will have the details of the access required.
\\r\\nThe account request contains the information like account information permissions, the permission expiration time etc.
\\r\\nOnce the Account request is created, the app requests for an access token for the account request created. While providing the consent, the user selects the list of accounts it wants the app to get access to.
\\r\\nThe app now gets an access token to access account(s) on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer information is retrieved from the access token and the account information is then presented to the user.
\\r\\nFor accessing this API endpoint, the app will first make a call to the OAuth API to get a client_credential access token, then create a payment request which will have the details of the payment initiation.
\\r\\nThe payment request contains the information like creditor details, debitor details, the amount to be transfered, merchant details etc.
\\r\\nOnce the payment request is created, the app requests for an access token for the payment request made by the app. While providing the consent, the user selects the debit account through which the payment has to be made.
\\r\\nThe app now gets an access token to submit one time single payment on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\r\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\r\\nThe App can then use this access token to submit the payment. When the API is called, the payment is submitted according to the payment request Id for which the access token was generated.
\\r\\nOpen data APIs are a category of APIs that provide non-customer specific information from a bank. These offer bank-specific information, such as ATM locations, products, URLs, and events. These APIs are not subjected to user-level authenication, but are protected to be used only by signed apps. A valid client credential is essential to make these API calls.
", \'summary\' => \'\', \'format\' => \'full_html\', - \'safe_value\' => "Authentication is based on OpenID Connect, which is based on OAuth 2.0.Â
\\nThe user will have to authenticate with the bank using two-factor authentication, which will then provide the client application with a unique and time-bound access token. The client app can use this unique token to make calls to the bank on the behalf of the user.
\\nGenerally, these access tokens are specific to a single account of a user and are valid over a longer duration (up to 30 days, for example).
\\nFor the payment API, users need to authenticate their accounts each time a transfer is made because these API calls need to meet higher security requirements.
\\nThe end user authenticates the account and provides access to the app to carry out the transaction via a two-step verification on the bank site. The following steps are done to provide authentication:
\\nYou will create the app and provide the required details to enable support for the OAuth 2.0 three-legged flows, such as the callback/redirect url.
\\nIn order for the app to make any API calls, it will have to present its client ID and secret. This is to ensure that only authenticated apps can make API calls.Â
\\nFor accessing the accounts API, the app will first make a call to the OAuth API, so that the app can get an access token to access a single account on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should, unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app. Â It should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\nIn the case of transfers, the app can directly make a call to the payment API wherein the bank will directly request for authentication information from the user including OTP verification and asking for consent after which the bank allows the app to make a one-time transfer on behalf of the user. In order to initiate the transfer the app has to provide information related to the payee as a JWT token. More details about how this JWT token is created is provided in the Payments API section.
\\nFor accessing this API endpoint, the app will first make a call to the OAuth API, so that the app can get an access token to access a single account on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\nAssume a hypothetical scenario where the user has made a purchase from an online merchant. The user now wishes to make a payment via the payment provider (PISP) supported by this online merchant.Â
\\nThe merchant has provided the transaction-related information to the PISP and the PISP now initiates a call to the payment API. The transfer details are sent to the API in the form of a signed JWT. The JWT is signed with the client secret of the app; the API will then verify this JWT by comparing it with the signature of the app that made this request. This ensures that the token has not been tampered with. The payment information is also shown to the user while requesting consent so that the user can verify the details.
\\nThe JWT is composed of three sections: header, payload, and signature
\\nA sample header shown below. It indicates that it is a JWT token and specified the signature used for encoding the payload.
\\n{
\\n  \\"alg\\": \\"HS256\\",
\\n  \\"typ\\": \\"JWT\\"
\\n}
\\nThe payload contains the payee information as a set of payment claims. The token contains some reserved claims that are supposed to be in a JWT payload and some private claims that specify the payment details.
\\n\\n{\\n \\"iss\\": \\"https://accenture.co.uk\\", //url of the JWT issuer\\n \\"aud\\": \\"https://apis-bank-dev.apigee.net\\", //url of the party it is intended for\\n \\"client_id\\": \\"grOmvYA89jsdhkshdIYhGtpvztofAAjz\\", //client id of the registered app\\n \\"redirect_uri\\": \\"http://localhost/\\", //redirect uri of the app\\n \\"scope\\": \\"openid accounts payment\\", //requested scopes for this call\\n \\"state\\": \\"af0ifjsldkj\\", //unique state to connect request and response\\n \\"acr_values\\": \\"3\\", // request acr_values; 2 for only authentication, and 3 for OTP flow\\n \\"claims\\": {\\n \\"paymentinfo\\": {\\n \\"type\\": \\"sepa_credit_transfer\\", //transfer type\\n \\"to\\": {\\n \\"account_number\\": \\"62136000\\", //receiver account id\\n \\"remote_bic\\": \\"RBOSGB2109H\\", //receiver remote bic code\\n \\"remote_IBAN\\": \\"GB32ESSE40486562136016\\", //receiver remote iban code\\n \\"remote_name\\": \\"BigZ online store\\" //receiver name\\n },\\n \\"value\\": {\\n \\"currency\\": \\"GBP\\", //transfer currency\\n \\"amount\\": \\"200\\" //transfer amount\\n },\\n \\"additional\\": {\\n \\"subject\\": \\"Online Purchase\\", //transfer description\\n \\"booking_code\\": \\"2SFBJ28553\\", //transfer booking code\\n \\"booking_date\\": \\"1462517645809\\", //transfer booking date\\n \\"value_date\\": \\"1462517645809\\" //transfer value date\\n },\\n \\"challenge_type\\": \\"SANDBOX_TAN\\" //challenge for additional security\\n }\\n }\\n}
Then, the JWT token is signed with the client secret of the registered app to ensure that it isn\'t tampered with.
\\nTo form the full token, the header and the payload is Base64Url encoded and concatenated, separated by a dot (.). This string is signed in the following way using a JWS library. There are libraries available for many languages in order to sign a JWT.
\\nHMACSHA256( base64UrlEncode(header) + \\".\\" + base64UrlEncode(payload), secret)
\\nFinally the following JWT token is obtained.
\\nÂ
\\n\\neyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FjY2VudHVyZS5jby51ayIsImF1ZCI6Imh0dHBzOi8vYXBpcy1iYW5rLWRldi5hcGlnZWUubmV0IiwiY2xpZW50X2lkIjoiZ3JPbXZZQWVpOGFCQVJ6RVZJWWhHdHB2enRvZkFBanoiLCJyZWRpcmVjdF91cmkiOiJodHRwOi8vbG9jYWxob3N0LyIsInNjb3BlIjoib3BlbmlkIGFjY291bnRzIHBheW1lbnQiLCJzdGF0ZSI6ImFmMGlmanNsZGtqIiwiYWNyX3ZhbHVlcyI6IjMiLCJjbGFpbXMiOnsicGF5bWVudGluZm8iOnsidHlwZSI6InNlcGFfY3JlZGl0X3RyYW5zZmVyIiwidG8iOnsiYWNjb3VudF9pZCI6IjYyMTM2MDAwIiwicmVtb3RlX2JpYyI6IlJCT1NHQjIxMDlIIiwicmVtb3RlX0lCQU4iOiJHQjMyRVNTRTQwNDg2NTYyMTM2MDE2IiwicmVtb3RlX25hbWUiOiJCaWdaIG9ubGluZSBzdG9yZSJ9LCJ2YWx1ZSI6eyJjdXJyZW5jeSI6IkdCUCIsImFtb3VudCI6IjIwMCJ9LCJhZGRpdGlvbmFsIjp7InN1YmplY3QiOiJPbmxpbmUgUHVyY2hhc2UiLCJib29raW5nX2NvZGUiOiIyU0ZCSjI4NTUzIiwiYm9va2luZ19kYXRlIjoiMTQ2MjUxNzY0NTgwOSIsInZhbHVlX2RhdGUiOiIxNDYyNTE3NjQ1ODA5In0sImNoYWxsZW5nZV90eXBlIjoiU0FOREJPWF9UQU4ifX0sImlhdCI6MTQ2MjUxODk4NH0.iD7jP_l8lBxnExWWSXAcI48n6urvvmd-goNSRwGwJYg
Â
\\nPlease refer to https://jwt.io/introduction/ to read more about the JWT specification, how to construct a token and the available libraries.
\\nOpen data APIs are a category of APIs that provide non-customer specific information from a bank. These offer bank-specific information, such as ATM locations, products, URLs, and events. These APIs are not subjected to user-level authenication, but are protected to be used only by signed apps. A valid client credential is essential to make these API calls.
\\n", + \'safe_value\' => "Authentication is based on OpenID Connect, which is based on OAuth 2.0.Â
\\nThe user will have to authenticate with the bank using two-factor authentication, which will then provide the client application with a unique and time-bound access token. The client app can use this unique token to make calls to the bank on the behalf of the user.
\\nGenerally, these access tokens are specific to a single account of a user and are valid over a longer duration (up to 30 days, for example).
\\nFor the accounts and payment APIs, users need to authenticate their accounts each time an API call is made because these API calls need to meet higher security requirements.
\\nThe end user authenticates the account and provides access to the app to carry out the transaction via a two-step verification on the bank site. The following steps are done to provide authentication:
\\nYou will create the app and provide the required details to enable support for the OAuth 2.0 three-legged flows, such as the callback/redirect url.
\\nIn order for the app to make any API calls, it will have to present its client ID and secret. This is to ensure that only authenticated apps can make API calls.Â
\\nFor accessing the accounts and payments APIs, the app will first make a call to the OAuth API, so that the app can get an access token to access account(s) on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should, unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app. Â It should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe App can then use this access token to make the calls to the accounts/payments APIs. When the API is called, the customer and account information is retrieved from the access token and the account information is then presented to the user.
\\nFor accessing this API endpoint, the app will first make a call to the OAuth API to get a client_credential access token, then create an account request which will have the details of the access required.
\\nThe account request contains the information like account information permissions, the permission expiration time etc.Â
\\nOnce the Account request is created, the app requests for an access token for the account request created. While providing the consent, the user selects the list of accounts it wants the app to get access to.
\\nThe app now gets an access token to access account(s) on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe App can then use this access token to make the calls to the accounts APIs. When the API is called, the customer information is retrieved from the access token and the account information is then presented to the user.
\\nFor accessing this API endpoint, the app will first make a call to the OAuth API to get a client_credential access token, then create a payment request which will have the details of the payment initiation.
\\nThe payment request contains the information like creditor details, debitor details, the amount to be transfered, merchant details etc.Â
\\nOnce the payment request is created, the app requests for an access token for the payment request made by the app. While providing the consent, the user selects the debit account through which the payment has to be made.
\\nThe app now gets an access token to submit one time single payment on behalf of the user. The OAuth APIs support both the implicit grant flow wherein the access token is returned directly to the app once the user has authenticated. If the app wishes to keep the authentication more secure (which it should unless it is a trusted app), then the app could also use the authorization code flow wherein a code is returned back to the app and it should then exchange it for an access token.
\\nThe two flows are differentiated by specifying the response_code parameter as ‘code’ for the three-legged authorization code flow and as ‘token’ for the implicit grant.
\\nThe App can then use this access token to submit the payment. When the API is called, the payment is submitted according to the payment request Id for which the access token was generated.
\\nOpen data APIs are a category of APIs that provide non-customer specific information from a bank. These offer bank-specific information, such as ATM locations, products, URLs, and events. These APIs are not subjected to user-level authenication, but are protected to be used only by signed apps. A valid client credential is essential to make these API calls.
\\n", \'safe_summary\' => \'\', ), ), @@ -8098,10 +8098,10 @@ function all_component_features_node_export_features_default() { \'body\' => array( \'und\' => array( array( - \'value\' => "We have created a sandbox environment that behaves like the APIs of a live bank. We offer all the APIs that are listed in the catalogue and data of two sample banks. Here is some key sample data that you can use in your app.
\\r\\n\\r\\n\\r\\n\\r\\n
Sandbox is preloaded with two banks and customers and accounts.
\\r\\n\\r\\nBank | \\r\\n\\t\\t\\tCustomer | \\r\\n\\t\\t\\tAccount | \\r\\n\\t\\t
Bank | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t 123456789 \\r\\n\\r\\n\\t\\t\\t46582398 \\r\\n\\r\\n\\t\\t\\t62936395 \\r\\n\\r\\n\\t\\t\\t84487942 \\r\\n\\t\\t\\t | \\r\\n\\t\\t\\t\\r\\n\\t\\t\\t 2139531801 \\r\\n\\r\\n\\t\\t\\t1039531801 \\r\\n\\r\\n\\t\\t\\t17109552631 \\r\\n\\r\\n\\t\\t\\t74379891646 \\r\\n\\t\\t\\t | \\r\\n\\t\\t
\\r\\n\\r\\n
Note: Some customer numbers are marked in blue. These customer numbers are not configured with registered mobile numbers, so during the consent flow you can enter a mobile number to receive the OTP. This enables the user to experience the complete flow without having to update the customer number with phone numbers. During a real flow the OTP is sent to the registered mobile number only and the mobile number is confidential and known only to the bank.
\\r\\n\\r\\nEach API can be tried using the API explorer. You can use the sample data mentioned above and to try and test the APIs. To try the APIs, click on the particular API in the menu. You will see a tab that says "Try it." This section describes the APIs and provides the ability to make API calls.
\\r\\n\\r\\nTo enable live interaction with APIs in the sandbox, we've provided an implementation of the authentication and consent app. APIs such as account information or payment transfer require explicit end-user consent. Follow these steps to authorize before you can fire the APIs.
\\r\\n\\r\\nNote: Autho​rization calls require a client ID. In this case, however, we have preconfigured the flow with a client ID, so the consent app flow is demonstrated without using a client ID.
\\r\\n\\r\\nEach API is provided with a section under API explorer where you can run the API and see the results. When an API is configured to have authorization completed (i.e. to present an access token), you will see a button titled "OAuth 2.0 Set." Clicking on this button will start the OAuth flow and consent app flow.
\\r\\n\\r\\n[[{\\"fid\\":\\"150\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"295\\",\\"width\\":\\"420\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\nEnter the customer number given the sample data section above. You can type any password.
\\r\\n\\r\\n[[{\\"fid\\":\\"171\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"386\\",\\"width\\":\\"488\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\nTwo-factor authentication is mandatory to secure an API. You can enter your mobile number in +<country code><mobile number> format to receive an OTP. The OTP is sent as a text message to the mobile phone. Please note that you may not receive the OTP if DND or any other such feature is enabled in your country.
\\r\\n\\r\\nNote: This step does not occur in real scenarios. The mobile number to which the OTP is sent is known to the consent app and is kept confidential. An OTP will be directly sent the registered mobile number. However, to try the APIs easily and for the purposes of the sandbox we have modified the flow to accept the mobile number as input.
\\r\\n\\r\\n[[{\\"fid\\":\\"172\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"420\\",\\"width\\":\\"481\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\nEnter the OTP received on your mobile.
\\r\\n\\r\\n[[{\\"fid\\":\\"173\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"411\\",\\"width\\":\\"486\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\nAt this time all account IDs that this customer owns with the bank will be presented. You will need to choose one of them. Consent will be given only for account access or payment.
\\r\\n\\r\\n[[{\\"fid\\":\\"174\\",\\"view_mode\\":\\"default\\",\\"type\\":\\"media\\",\\"attributes\\":{\\"height\\":\\"448\\",\\"width\\":\\"482\\",\\"class\\":\\"media-element file-default\\"}}]]
\\r\\n\\r\\nAfter the completion of this flow you will see the button "OAuth 2.0 Set" turn into "OAuth 2.0 Authenticated." This means the API explorer has the access token that it will present when you fire the APIs. To remove the authentication click on the "x" on this button.
\\r\\n", + \'value\' => "We have created a sandbox environment that behaves like the APIs of a live bank. We offer all the APIs that are listed in the catalogue and data of two sample banks. Here is some key sample data that you can use in your app.
\\r\\n\\r\\n
Sandbox is preloaded with two banks and customers and accounts.
\\r\\nBank | \\r\\nCustomerId | \\r\\nAccount | \\r\\n
Bank | \\r\\n\\r\\n 10203040 \\r\\n10203040 \\r\\n10203040 \\r\\n | \\r\\n\\r\\n 987654321 \\r\\n111111111 \\r\\n123459876 \\r\\n | \\r\\n
\\r\\n
Note: Customer numbers are marked in blue. These customer numbers are not configured with registered mobile numbers. So the OTP entered during the consent flow can be any random number. During a real flow the OTP is sent to the registered mobile number only and the mobile number is confidential and known only to the bank.
\\r\\nEach API can be tried using the API explorer. You can use the sample data mentioned above and to try and test the APIs. To try the APIs, click on the particular API in the menu. You will see a tab that says \\"Try it.\\" This section describes the APIs and provides the ability to make API calls.
\\r\\nTo enable live interaction with APIs in the sandbox, we\'ve provided an implementation of the authentication and consent app. APIs such as account information or payment transfer require explicit end-user consent. Follow these steps to authorize before you can fire the APIs.
\\r\\nNote: Autho​rization calls require a client ID. In this case, however, we have preconfigured the flow with a client ID, so the consent app flow is demonstrated without using a client ID.
\\r\\nEach API is provided with a section under API explorer where you can run the API and see the results. When an API is configured to have authorization completed (i.e. to present an access token), you will see a button titled \\"OAuth 2.0 Set.\\" Clicking on this button will start the OAuth flow and consent app flow.
\\r\\nEnter the customer number and password.
\\r\\n\\r\\n
At this time all account IDs that this customer owns with the bank will be presented. You will need to choose one of them. Consent will be given only for account access or payment.
\\r\\nAfter the completion of this flow you will see the button \\"OAuth 2.0 Set\\" turn into \\"OAuth 2.0 Authenticated.\\" This means the API explorer has the access token that it will present when you fire the APIs. To remove the authentication click on the \\"x\\" on this button.
\\r\\nEnter the OTP (any random nuber) .
\\r\\n", \'summary\' => \'\', \'format\' => \'full_html\', - \'safe_value\' => "
We have created a sandbox environment that behaves like the APIs of a live bank. We offer all the APIs that are listed in the catalogue and data of two sample banks. Here is some key sample data that you can use in your app.
\\nÂ
\\nSandbox is preloaded with two banks and customers and accounts.
\\nBank | \\nCustomer | \\nAccount | \\n
Bank | \\n\\n 123456789 \\n46582398 \\n62936395 \\n84487942 \\n | \\n\\n 2139531801 \\n1039531801 \\n17109552631 \\n74379891646 \\n | \\n
Â
\\nNote: Some customer numbers are marked in blue. These customer numbers are not configured with registered mobile numbers, so during the consent flow you can enter a mobile number to receive the OTP. This enables the user to experience the complete flow without having to update the customer number with phone numbers. During a real flow the OTP is sent to the registered mobile number only and the mobile number is confidential and known only to the bank.
\\nEach API can be tried using the API explorer. You can use the sample data mentioned above and to try and test the APIs. To try the APIs, click on the particular API in the menu. You will see a tab that says \\"Try it.\\" This section describes the APIs and provides the ability to make API calls.
\\nTo enable live interaction with APIs in the sandbox, we\'ve provided an implementation of the authentication and consent app. APIs such as account information or payment transfer require explicit end-user consent. Follow these steps to authorize before you can fire the APIs.Â
\\nNote: Autho​rization calls require a client ID. In this case, however, we have preconfigured the flow with a client ID, so the consent app flow is demonstrated without using a client ID.
\\nEach API is provided with a section under API explorer where you can run the API and see the results. When an API is configured to have authorization completed (i.e. to present an access token), you will see a button titled \\"OAuth 2.0 Set.\\" Clicking on this button will start the OAuth flow and consent app flow.
\\nEnter the customer number given the sample data section above. You can type any password.
\\nTwo-factor authentication is mandatory to secure an API. You can enter your mobile number in +<country code><mobile number> format to receive an OTP. The OTP is sent as a text message to the mobile phone. Please note that you may not receive the OTP if DND or any other such feature is enabled in your country.
\\nNote: This step does not occur in real scenarios. The mobile number to which the OTP is sent is known to the consent app and is kept confidential. An OTP will be directly sent the registered mobile number. However, to try the APIs easily and for the purposes of the sandbox we have modified the flow to accept the mobile number as input.
\\nEnter the OTP received on your mobile.
\\nAt this time all account IDs that this customer owns with the bank will be presented. You will need to choose one of them. Consent will be given only for account access or payment.
\\nAfter the completion of this flow you will see the button \\"OAuth 2.0 Set\\" turn into \\"OAuth 2.0 Authenticated.\\" This means the API explorer has the access token that it will present when you fire the APIs. To remove the authentication click on the \\"x\\" on this button.Â
\\n", + \'safe_value\' => "We have created a sandbox environment that behaves like the APIs of a live bank. We offer all the APIs that are listed in the catalogue and data of two sample banks. Here is some key sample data that you can use in your app.
\\nÂ
\\nSandbox is preloaded with two banks and customers and accounts.
\\nBank | \\nCustomerId | \\nAccount | \\n
Bank | \\n\\n 10203040 \\n10203040 \\n10203040 \\n | \\n\\n 987654321 \\n111111111 \\n123459876 \\n | \\n
Â
\\nNote: Customer numbers are marked in blue. These customer numbers are not configured with registered mobile numbers. So the OTP entered during the consent flow can be any random number. During a real flow the OTP is sent to the registered mobile number only and the mobile number is confidential and known only to the bank.
\\nEach API can be tried using the API explorer. You can use the sample data mentioned above and to try and test the APIs. To try the APIs, click on the particular API in the menu. You will see a tab that says \\"Try it.\\" This section describes the APIs and provides the ability to make API calls.
\\nTo enable live interaction with APIs in the sandbox, we\'ve provided an implementation of the authentication and consent app. APIs such as account information or payment transfer require explicit end-user consent. Follow these steps to authorize before you can fire the APIs.Â
\\nNote: Autho​rization calls require a client ID. In this case, however, we have preconfigured the flow with a client ID, so the consent app flow is demonstrated without using a client ID.
\\nEach API is provided with a section under API explorer where you can run the API and see the results. When an API is configured to have authorization completed (i.e. to present an access token), you will see a button titled \\"OAuth 2.0 Set.\\" Clicking on this button will start the OAuth flow and consent app flow.
\\nEnter the customer number and password.
\\nÂ
\\nAt this time all account IDs that this customer owns with the bank will be presented. You will need to choose one of them. Consent will be given only for account access or payment.
\\nAfter the completion of this flow you will see the button \\"OAuth 2.0 Set\\" turn into \\"OAuth 2.0 Authenticated.\\" This means the API explorer has the access token that it will present when you fire the APIs. To remove the authentication click on the \\"x\\" on this button.Â
\\nEnter the OTP (any random nuber) .
\\nÂ
\\n", \'safe_summary\' => \'\', ), ), diff --git a/src/devportal/all/modules/all_component_features/all_component_features.quicktabs.inc b/src/devportal/all/modules/all_component_features/all_component_features.quicktabs.inc index 639b4ce6..9eba04cd 100644 --- a/src/devportal/all/modules/all_component_features/all_component_features.quicktabs.inc +++ b/src/devportal/all/modules/all_component_features/all_component_features.quicktabs.inc @@ -20,7 +20,7 @@ function all_component_features_quicktabs_default_quicktabs() { $quicktabs->title = 'API Documentation'; $quicktabs->tabs = array( 0 => array( - 'vid' => 'oauthapisv2_methods', + 'vid' => 'oauth-apis-v1-0_methods', 'display' => 'frontpage', 'args' => '', 'title' => 'OAuth 2.0', @@ -28,45 +28,21 @@ function all_component_features_quicktabs_default_quicktabs() { 'type' => 'view', ), 1 => array( - 'vid' => 'accountsapisv2_methods', + 'vid' => 'accounts-apis-v1-0_methods', 'display' => 'frontpage', 'args' => '', - 'title' => 'Account Access', + 'title' => 'Accounts APIs', 'weight' => '-99', 'type' => 'view', ), 2 => array( - 'vid' => 'paymentsapisv2_methods', + 'vid' => 'payments-apis-v1-0_methods', 'display' => 'frontpage', 'args' => '', - 'title' => 'Payment Transfer', + 'title' => 'Payments APIs', 'weight' => '-98', 'type' => 'view', ), - 3 => array( - 'vid' => 'open-dataapis_methods', - 'display' => 'frontpage', - 'args' => '', - 'title' => 'Open Data', - 'weight' => '-97', - 'type' => 'view', - ), - 4 => array( - 'vid' => 'userinfoapis_methods', - 'display' => 'frontpage', - 'args' => '', - 'title' => 'User Info', - 'weight' => '-96', - 'type' => 'view', - ), - 5 => array( - 'vid' => 'productapis_methods', - 'display' => 'frontpage', - 'args' => '', - 'title' => 'Products', - 'weight' => '-95', - 'type' => 'view', - ), ); $quicktabs->renderer = 'accordion'; $quicktabs->style = 'default'; diff --git a/src/devportal/all/modules/custom/openbank_swagger/openbank_swagger.module b/src/devportal/all/modules/custom/openbank_swagger/openbank_swagger.module index 02b206db..475045ee 100755 --- a/src/devportal/all/modules/custom/openbank_swagger/openbank_swagger.module +++ b/src/devportal/all/modules/custom/openbank_swagger/openbank_swagger.module @@ -4,12 +4,13 @@ require_once DRUPAL_ROOT . '/profiles/apigee/modules/custom/devconnect/lib/Crypt //define('SMARTDOCS_SAMPLE_PETSTORE_MODEL', 'petstore example'); //define('SMARTDOCS_SAMPLE_WEATHER_MODEL', 'weather example'); -define('SMARTDOCS_OAUTH_MODEL', 'oauthapisv2'); -define('SMARTDOCS_ACCOUNTS_MODEL', 'accountsapisv2'); -define('SMARTDOCS_OPENDATA_MODEL', 'open-dataapis'); -define('SMARTDOCS_PAYMENT_MODEL', 'paymentsapisv2'); +define('SMARTDOCS_OAUTH_MODEL', 'oauth-apis-v1-0'); +define('SMARTDOCS_ACCOUNTS_MODEL', 'accounts-apis-v1-0'); +define('SMARTDOCS_PAYMENT_MODEL', 'payments-apis-v1-0'); + +/*define('SMARTDOCS_OPENDATA_MODEL', 'open-dataapis'); define('SMARTDOCS_USERINFO_MODEL', 'userinfoapis'); -define('SMARTDOCS_PRODUCTS_MODEL', 'productapis'); +define('SMARTDOCS_PRODUCTS_MODEL', 'productapis');*/ ini_set('arg_separator.output', '&'); @@ -89,7 +90,8 @@ function custom_apigee_smartdocs_import_model_content() { ); */ - $model_display_name = 'oauthapisv2'; + // oauth APIs + $model_display_name = 'OAuth APIs V1.0'; $model_description = 'OAuth API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -100,7 +102,7 @@ function custom_apigee_smartdocs_import_model_content() { ), ); - $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/authv2.json'; + $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/oauthv1-0.json'; $operations[] = array( 'custom_apigee_batch_smartdocs_import_model', array( @@ -114,7 +116,7 @@ function custom_apigee_smartdocs_import_model_content() { // Account APIs - $model_display_name = 'accountsapisv2'; + $model_display_name = 'Accounts APIs V1.0'; $model_description = 'Accounts API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -125,7 +127,7 @@ function custom_apigee_smartdocs_import_model_content() { ), ); - $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/accountsinfov2.json'; + $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/accountv1-0.json'; $operations[] = array( 'custom_apigee_batch_smartdocs_import_model', array( @@ -139,7 +141,7 @@ function custom_apigee_smartdocs_import_model_content() { // Opendata APIS - $model_display_name = 'open-dataapis'; + /*$model_display_name = 'open-dataapis'; $model_description = 'OpenData API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -159,11 +161,11 @@ function custom_apigee_smartdocs_import_model_content() { 'swagger', 'application/json', ), - ); + );*/ // Payment APIs - $model_display_name = 'paymentsapisv2'; + $model_display_name = 'Payments APIs V1.0'; $model_description = 'Payment API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -174,7 +176,7 @@ function custom_apigee_smartdocs_import_model_content() { ), ); - $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/paymentsV2.json'; + $model_import_file = drupal_get_path('module', 'openbank_swagger') . '/swaggers/paymentv1-0.json'; $operations[] = array( 'custom_apigee_batch_smartdocs_import_model', array( @@ -186,7 +188,7 @@ function custom_apigee_smartdocs_import_model_content() { ); // UserInfo APIs - $model_display_name = 'userinfoapis'; + /*$model_display_name = 'userinfoapis'; $model_description = 'User information API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -206,11 +208,11 @@ function custom_apigee_smartdocs_import_model_content() { 'swagger', 'application/json', ), - ); + );*/ //products model - $model_display_name = 'productapis'; + /*$model_display_name = 'productapis'; $model_description = 'User information API documentation.'; $operations[] = array( 'custom_apigee_batch_smartdocs_create_model', @@ -230,7 +232,7 @@ function custom_apigee_smartdocs_import_model_content() { 'swagger', 'application/json', ), - ); + );*/ @@ -270,9 +272,9 @@ function custom_apigee_smartdocs_render_model_content() { $batch_oauth = custom_get_smartdocs_render_batch(SMARTDOCS_OAUTH_MODEL); $batch_accounts = custom_get_smartdocs_render_batch(SMARTDOCS_ACCOUNTS_MODEL); $batch_payment = custom_get_smartdocs_render_batch(SMARTDOCS_PAYMENT_MODEL); - $batch_opendata = custom_get_smartdocs_render_batch(SMARTDOCS_OPENDATA_MODEL); - $batch_userinfo = custom_get_smartdocs_render_batch(SMARTDOCS_USERINFO_MODEL); - $batch_products = custom_get_smartdocs_render_batch(SMARTDOCS_PRODUCTS_MODEL); + // $batch_opendata = custom_get_smartdocs_render_batch(SMARTDOCS_OPENDATA_MODEL); + //$batch_userinfo = custom_get_smartdocs_render_batch(SMARTDOCS_USERINFO_MODEL); + //$batch_products = custom_get_smartdocs_render_batch(SMARTDOCS_PRODUCTS_MODEL); $operations = array(); @@ -291,7 +293,9 @@ function custom_apigee_smartdocs_render_model_content() { if ($batch_payment != NULL) { $operations = array_merge($operations, $batch_payment['operations']); } - if ($batch_opendata != NULL) { + + + /*if ($batch_opendata != NULL) { $operations = array_merge($operations, $batch_opendata['operations']); } if ($batch_userinfo != NULL) { @@ -299,7 +303,7 @@ function custom_apigee_smartdocs_render_model_content() { } if ($batch_products != NULL) { $operations = array_merge($operations, $batch_products['operations']); - } + }*/ // Get batches to render model nodes complete. ############################################################# // Merge batches to return. diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json deleted file mode 100644 index 9920791d..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json +++ /dev/null @@ -1,1297 +0,0 @@ -{ - "swagger": "2.0", - "host": "testdemorrai-test.apigee.net", - "schemes": [ - "https" - ], - "info": { - "description": "Customer Bank Account Information", - "title": "Account Information", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/accounts", - "paths": { - "/accounts-requests": { - "post": { - "description": "Create a new account Request
", - "summary": "Create a new Account Request", - "operationId": "Create AccountRequest", - "tags": [ - "Create AccountRequest" - ], - "consumes": ["application/json"], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccReqResponse" - } - }, - "400": { - "description": "Bad Request" - }, - "401": { - "description": "Unauthorized access" - } - }, - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using grant_type as 'client_credentials' (App credential based authorization) using Oauth API", - "type": "string", - "required": true - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "AccountRequest", - "in": "body", - "description": "Account Request details", - "schema": { - "$ref": "#/definitions/NewAccountRequest" - }, - "required": true - } - ] - } - }, - "/accounts-requests/{accountRequestId}": { - "get": { - "description": "This will return the account request details related to a specific account request Id provided in the path parameter
", - "summary": "get Account Request ", - "operationId": "Get Account Request", - "tags": [ - "Get AccountRequest" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string", - "required": true - }, - { - "name": "accountRequestId", - "in": "path", - "description": "Account Request Id ", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/balance": { - "get": { - "description": "This will return the account balance of a specific account of the user provided in the path parameter
", - "summary": "Account Balance ", - "operationId": "Account Balance", - "tags": [ - "AccountBalance" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBalance" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}": { - "get": { - "description": "This will return the account Information of a specific account of the user provided in the path parameter
", - "summary": "Account Information ", - "operationId": "Account Information", - "tags": [ - "AccountInformation" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountInformation" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/transactions": { - "get": { - "description": "This will return list of all the transactions of a specific account of the user provided in the path parameter
", - "summary": "Account Transactions ", - "operationId": "Account Transactions", - "tags": [ - "AccountTransactions" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountTransactions" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/beneficiaries": { - "get": { - "description": "This will return list of all the beneficiaries of a specific account of the customer provided in the path parameter
", - "summary": "Account Beneficiaries ", - "operationId": "Account Beneficiaries", - "tags": [ - "AccountBeneficiaries" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBeneficiaries" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/standing-orders": { - "get": { - "description": "This will return list of all the standing orders of a specific account of the user provided in the path parameter
", - "summary": "Account StandingOrders ", - "operationId": "Account StandingOrders", - "tags": [ - "AccountStandingOrders" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountStandingOrders" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/direct-debits": { - "get": { - "description": "This will return list of all the direct debits of a specific account of the user provided in the path parameter
", - "summary": "Account DirectDebits ", - "operationId": "Account DirectDebits", - "tags": [ - "AccountDirectDebits" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountDirectDebits" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/": { - "get": { - "description": "This will return account information of all accounts of the user provided in the account request
", - "summary": "Customer Info ", - "operationId": "Customer Info", - "tags": [ - "CustomerInfo" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/CustomerInfo" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/balance": { - "get": { - "description": "This will return balance information of all accounts of the user provided in the account request
", - "summary": "Customer Balance ", - "operationId": "Customer Balance", - "tags": [ - "CustomerBalance" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBalance" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/transactions": { - "get": { - "description": "This will return list of transactions of all accounts of the user provided in the account request
", - "summary": "Customer Transactions ", - "operationId": "Customer Transactions", - "tags": [ - "CustomerTransactions" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountTransactions" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/beneficiaries": { - "get": { - "description": "This will return list of beneficiaries associated with all accounts of the user provided in the account request
", - "summary": "Customer Beneficiaries ", - "operationId": "Customer Beneficiaries", - "tags": [ - "CustomerBeneficiaries" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBeneficiaries" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/standing-orders": { - "get": { - "description": "This will return list of standing orders associated with all accounts of the user provided in the account request
", - "summary": "Customer StandingOrders ", - "operationId": "Customer StandingOrders", - "tags": [ - "CustomerStandingOrders" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountStandingOrders" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/direct-debits": { - "get": { - "description": "This will return list of direct debits associated with all accounts of the user provided in the account request
", - "summary": "Customer DirectDebits ", - "operationId": "Customer DirectDebits", - "tags": [ - "CustomerDirectDebits" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountDirectDebits" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - } - }, - - "securityDefinitions": { - "aisp_auth": { - "type": "oauth2", - "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/authorize?client_id=bkJ2TvlHG2xw0kg59WLDTxzJrXPi8mHh&redirect_uri=http://localhost/&response_type=code&state=af0ifjsldkj&scope=accounts&acr_values=2&request_id=firstaccountrequest", - "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "accounts": "AISP apis" - } - } - }, - "definitions": { - "NewAccountRequest": { - "type": "object", - "description": "New Accounts Request", - "properties": { - "ExpiresAt": { - "type": "string", - "description": "Determines what time the Request Expires" - }, - "Permissions": { - "type": "array", - "items" : - { - "type": "string" - }, - "description": "Permissions being Requested" - }, - "PermissionsExpirationDateTime": { - "type": "string", - "description": "Expiritaion Time for Permissions" - }, - "TransactionFromDateTime": { - "type": "string", - "description": "Transaction From DateTime" - }, - "TransactionToDateTime": { - "type": "string", - "description": "Transaction To DateTime" - }, - - "SelectedAccounts": { - "type": "array", - "description": "Accounts for which Account Request is made", - "items": { - "type": "object", - "properties": { - "Account": { - "type": "object", - "description": "Accounts Details", - "properties": { - "Name": { - "type": "string", - "description": "Name of account" - }, - "SchemeName": { - "type": "string", - "description": "SchemeName of account" - }, - "Identification": { - "type": "string", - "description": "Identification of account" - }, - "SecondaryIdentification": { - "type": "string", - "description": "Secondary Identification of account" - } - - } - }, - "Servicer": { - "type": "object", - "description": "Servicer", - "properties": { - "SchemeName": { - "type": "string", - "description": "Scheme Name of Servicer" - }, - "Identification": { - "type": "string", - "description": "Identification of Servicer" - } - - } - - } - } - } - } - } - }, - "CustomerInfo": { - "description": "Account Information Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner" - }, - "Currency": { - "type": "string", - "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account." - }, - "Nickname": { - "type": "string", - "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account." - }, - "Account": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - "xml": { - "name": "CustomerInfo" - } - }, - "AccountInformation": { - "description": "Account Information Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner" - }, - "Currency": { - "type": "string", - "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account." - }, - "Nickname": { - "type": "string", - "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account." - }, - "Account": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - "xml": { - "name": "CustomerInfo" - } - }, - "AccountBalance": { - "description": "Account Balance Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner." - }, - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance." - }, - "Type": { - "type": "string", - "description": "Balance type, in a coded form." - }, - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "Date": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "CreditLine": { - "type": "object", - "properties": { - "Included": { - "type": "boolean", - "description": "Indicates whether or not the credit line is included in the balance of the account" - }, - "Type": { - "type": "string", - "description": "Limit type, in a coded form." - }, - - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - } - } - }, - "xml": { - "name": "AccountBalance" - } - }, - "AccountTransactions": { - "description": "Account Transaction Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "TransactionId": { - "type": "string", - "description": "maxLength 40 text" - }, - "TransactionReference": { - "type": "string", - "description": "Unique reference for the transaction" - }, - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the entry is a credit or a debit entry" - }, - "Status": { - "type": "string", - "description": "Status of an entry on the books of the account servicer." - }, - "TransactionInformation": { - "type": "string", - "description": "Further details of the transaction" - }, - "AddressLine": { - "type": "string", - "description": "Information that locates and identifies a specific address" - }, - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "BookingDate": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "ValueDate": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "BankTransactionCode": { - "type": "object", - "properties": { - "Code": { - "type": "string", - "description": "Proprietary bank transaction code to identify the underlying transaction." - }, - "SubCode": { - "type": "string", - "description": "Identification of the issuer of the proprietary bank transaction code" - } - } - }, - "Balance": { - "type": "object", - "properties": { - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the balance is a credit or a debit balance" - }, - "Type": { - "type": "string", - "description": "Balance type, in a coded form." - }, - - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - } - }, - "ProprietaryBankTransactionCode": { - "type": "object", - "properties": { - "Code": { - "type": "string", - "description": "Proprietary bank transaction code to identify the underlying transaction." - }, - "Issuer": { - "type": "string", - "description": "Identification of the issuer of the proprietary bank transaction code." - } - } - }, - "MerchantDetails": { - "type": "object", - "properties": { - "Name": { - "type": "string", - "description": "Name by which the merchant is known." - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction." - } - } - } - }, - "xml": { - "name": "AccountTransactions" - } - }, - "AccountBeneficiaries": { - "description": "Account Beneficiary Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "BeneficiaryId": { - "type": "string", - "description": "maxLength 40 text" - }, - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference for the transaction" - }, - "CreditorAccount": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - - "xml": { - "name": "AccountBeneficiaries" - } - }, - "AccReqResponse": { - "description": "Account-Request Response Object", - "type": "object", - "properties": { - "AccountRequestId": { - "type": "string", - "description": "Unique identification as assigned to identify the account request resource." - }, - "Status": { - "type": "string", - "description": "Specifies the status of the account request resource in code form." - }, - "PermissionsExpirationDateTime": { - "type": "string", - "description": "Specified date and time the permissions will expire." - }, - "TransactionFromDateTime": { - "type": "string", - "description": "Specified start date and time for the transaction query period." - }, - "TransactionToDateTime": { - "type": "string", - "description": "Specified end date and time for the transaction query period." - }, - "Permissions": { - "type": "array", - "items" : { - "type" : "string" - }, - "description": "Specified Permissions" - - }, - "SelectedAccounts": { - "type": "array", - "description": "Accounts for which Account Request is made", - "items": { - "type": "object", - "properties": { - "Account": { - "type": "object", - "description": "Accounts Details", - "properties": { - "Name": { - "type": "string", - "description": "Name of account" - }, - "SchemeName": { - "type": "string", - "description": "Scheme Name of account" - }, - "Identification": { - "type": "string", - "description": "Identification of account" - }, - "SecondaryIdentification": { - "type": "string", - "description": "Secondary Identification of account" - } - - } - }, - "Servicer": { - "type": "object", - "description": "Servicer", - "properties": { - "SchemeName": { - "type": "string", - "description": "Scheme Name of Servicer" - }, - "Identification": { - "type": "string", - "description": "Identification of Servicer" - } - - } - - } - } - } - } - }, - - "xml": { - "name": "AccReqResponse" - } - }, - "AccountStandingOrders": { - "description": "Account Standing Orders Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "StandingOrderId": { - "type": "string", - "description": "A unique and immutable identifier used to identify the standing order resource." - }, - "Currency": { - "type": "string", - "description": "Identification of the currency of the standing order" - }, - "Frequency": { - "type": "string", - "description": "Frequency Of the standing order" - }, - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction." - }, - "FirstPaymentDate": { - "type": "string", - "description": "The date on which the first payment for a Standing Order schedule will be made." - }, - "NextPaymentDate": { - "type": "string", - "description": "The date on which the next payment for a Standing Order schedule will be made." - }, - "FinalPaymentDate": { - "type": "string", - "description": "The date on which the final payment for a Standing Order schedule will be made" - }, - "CreditorAccount": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "FirstPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "NextPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "FinalPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - - }, - - "xml": { - "name": "AccountStandingOrders" - } - - }, - "AccountDirectDebits": { - "description": "Account Direct Debits Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "DirectDebitId": { - "type": "string", - "description": "A unique and immutable identifier used to identify the direct debit resource." - }, - "MandateIdentification": { - "type": "string", - "description": "Direct Debit reference" - }, - "DirectDebitStatusCode": { - "type": "string", - "description": "Specifies the status of the direct debit in code form" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme" - }, - "Name": { - "type": "string", - "description": "Name of Service User" - }, - "PreviousPaymentDate": { - "type": "string", - "description": "Date of most recent direct debit collection." - }, - "PreviousPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - - }, - - "xml": { - "name": "AccountDirectDebits" - } - } - - } -} diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json.template deleted file mode 100644 index 83e8c794..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountsinfov2.json.template +++ /dev/null @@ -1,1297 +0,0 @@ -{ - "swagger": "2.0", - "host": "{{ host }}", - "schemes": [ - "https" - ], - "info": { - "description": "Customer Bank Account Information", - "title": "Account Information", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/accounts", - "paths": { - "/accounts-requests": { - "post": { - "description": "Create a new account Request
", - "summary": "Create a new Account Request", - "operationId": "Create AccountRequest", - "tags": [ - "Create AccountRequest" - ], - "consumes": ["application/json"], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccReqResponse" - } - }, - "400": { - "description": "Bad Request" - }, - "401": { - "description": "Unauthorized access" - } - }, - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using grant_type as 'client_credentials' (App credential based authorization) using Oauth API", - "type": "string", - "required": true - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "AccountRequest", - "in": "body", - "description": "Account Request details", - "schema": { - "$ref": "#/definitions/NewAccountRequest" - }, - "required": true - } - ] - } - }, - "/accounts-requests/{accountRequestId}": { - "get": { - "description": "This will return the account request details related to a specific account request Id provided in the path parameter
", - "summary": "get Account Request ", - "operationId": "Get Account Request", - "tags": [ - "Get AccountRequest" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string", - "required": true - }, - { - "name": "accountRequestId", - "in": "path", - "description": "Account Request Id ", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/balance": { - "get": { - "description": "This will return the account balance of a specific account of the user provided in the path parameter
", - "summary": "Account Balance ", - "operationId": "Account Balance", - "tags": [ - "AccountBalance" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBalance" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}": { - "get": { - "description": "This will return the account Information of a specific account of the user provided in the path parameter
", - "summary": "Account Information ", - "operationId": "Account Information", - "tags": [ - "AccountInformation" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountInformation" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/transactions": { - "get": { - "description": "This will return list of all the transactions of a specific account of the user provided in the path parameter
", - "summary": "Account Transactions ", - "operationId": "Account Transactions", - "tags": [ - "AccountTransactions" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountTransactions" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/beneficiaries": { - "get": { - "description": "This will return list of all the beneficiaries of a specific account of the customer provided in the path parameter
", - "summary": "Account Beneficiaries ", - "operationId": "Account Beneficiaries", - "tags": [ - "AccountBeneficiaries" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBeneficiaries" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/standing-orders": { - "get": { - "description": "This will return list of all the standing orders of a specific account of the user provided in the path parameter
", - "summary": "Account StandingOrders ", - "operationId": "Account StandingOrders", - "tags": [ - "AccountStandingOrders" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountStandingOrders" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/{AccountId}/direct-debits": { - "get": { - "description": "This will return list of all the direct debits of a specific account of the user provided in the path parameter
", - "summary": "Account DirectDebits ", - "operationId": "Account DirectDebits", - "tags": [ - "AccountDirectDebits" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountDirectDebits" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }, - { - "name": "AccountId", - "in": "path", - "description": "Account Id of the customer", - "type": "string", - "required": true - } - ] - } - }, - "/": { - "get": { - "description": "This will return account information of all accounts of the user provided in the account request
", - "summary": "Customer Info ", - "operationId": "Customer Info", - "tags": [ - "CustomerInfo" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/CustomerInfo" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/balance": { - "get": { - "description": "This will return balance information of all accounts of the user provided in the account request
", - "summary": "Customer Balance ", - "operationId": "Customer Balance", - "tags": [ - "CustomerBalance" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBalance" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/transactions": { - "get": { - "description": "This will return list of transactions of all accounts of the user provided in the account request
", - "summary": "Customer Transactions ", - "operationId": "Customer Transactions", - "tags": [ - "CustomerTransactions" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountTransactions" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/beneficiaries": { - "get": { - "description": "This will return list of beneficiaries associated with all accounts of the user provided in the account request
", - "summary": "Customer Beneficiaries ", - "operationId": "Customer Beneficiaries", - "tags": [ - "CustomerBeneficiaries" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountBeneficiaries" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/standing-orders": { - "get": { - "description": "This will return list of standing orders associated with all accounts of the user provided in the account request
", - "summary": "Customer StandingOrders ", - "operationId": "Customer StandingOrders", - "tags": [ - "CustomerStandingOrders" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountStandingOrders" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - }, - "/direct-debits": { - "get": { - "description": "This will return list of direct debits associated with all accounts of the user provided in the account request
", - "summary": "Customer DirectDebits ", - "operationId": "Customer DirectDebits", - "tags": [ - "CustomerDirectDebits" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AccountDirectDebits" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "aisp_auth": ["accounts"] - }], - "parameters": [{ - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - }] - } - } - }, - - "securityDefinitions": { - "aisp_auth": { - "type": "oauth2", - "authorizationUrl": "{{ host_withprotocol }}/apis/v2/oauth/authorize?client_id={{ client_id_aisp }}&redirect_uri={{ edge_host }}/v1/o/{{ org }}/apimodels/accountsapisv2/templateauths/aisp_auth/callback&response_type=code&state=af0ifjsldkj&scope=accounts&acr_values=2&request_id=firstaccountrequest", - "tokenUrl": "{{ host_withprotocol }}/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "accounts": "AISP apis" - } - } - }, - "definitions": { - "NewAccountRequest": { - "type": "object", - "description": "New Accounts Request", - "properties": { - "ExpiresAt": { - "type": "string", - "description": "Determines what time the Request Expires" - }, - "Permissions": { - "type": "array", - "items" : - { - "type": "string" - }, - "description": "Permissions being Requested" - }, - "PermissionsExpirationDateTime": { - "type": "string", - "description": "Expiritaion Time for Permissions" - }, - "TransactionFromDateTime": { - "type": "string", - "description": "Transaction From DateTime" - }, - "TransactionToDateTime": { - "type": "string", - "description": "Transaction To DateTime" - }, - - "SelectedAccounts": { - "type": "array", - "description": "Accounts for which Account Request is made", - "items": { - "type": "object", - "properties": { - "Account": { - "type": "object", - "description": "Accounts Details", - "properties": { - "Name": { - "type": "string", - "description": "Name of account" - }, - "SchemeName": { - "type": "string", - "description": "SchemeName of account" - }, - "Identification": { - "type": "string", - "description": "Identification of account" - }, - "SecondaryIdentification": { - "type": "string", - "description": "Secondary Identification of account" - } - - } - }, - "Servicer": { - "type": "object", - "description": "Servicer", - "properties": { - "SchemeName": { - "type": "string", - "description": "Scheme Name of Servicer" - }, - "Identification": { - "type": "string", - "description": "Identification of Servicer" - } - - } - - } - } - } - } - } - }, - "CustomerInfo": { - "description": "Account Information Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner" - }, - "Currency": { - "type": "string", - "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account." - }, - "Nickname": { - "type": "string", - "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account." - }, - "Account": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - "xml": { - "name": "CustomerInfo" - } - }, - "AccountInformation": { - "description": "Account Information Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner" - }, - "Currency": { - "type": "string", - "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account." - }, - "Nickname": { - "type": "string", - "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account." - }, - "Account": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - "xml": { - "name": "CustomerInfo" - } - }, - "AccountBalance": { - "description": "Account Balance Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "A unique identifier used to identify the account resource. This identifier has no meaning to the account owner." - }, - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance." - }, - "Type": { - "type": "string", - "description": "Balance type, in a coded form." - }, - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "Date": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "CreditLine": { - "type": "object", - "properties": { - "Included": { - "type": "boolean", - "description": "Indicates whether or not the credit line is included in the balance of the account" - }, - "Type": { - "type": "string", - "description": "Limit type, in a coded form." - }, - - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - } - } - }, - "xml": { - "name": "AccountBalance" - } - }, - "AccountTransactions": { - "description": "Account Transaction Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "TransactionId": { - "type": "string", - "description": "maxLength 40 text" - }, - "TransactionReference": { - "type": "string", - "description": "Unique reference for the transaction" - }, - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the entry is a credit or a debit entry" - }, - "Status": { - "type": "string", - "description": "Status of an entry on the books of the account servicer." - }, - "TransactionInformation": { - "type": "string", - "description": "Further details of the transaction" - }, - "AddressLine": { - "type": "string", - "description": "Information that locates and identifies a specific address" - }, - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "BookingDate": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "ValueDate": { - "type": "object", - "properties": { - "Date": { - "type": "string", - "description": "ISO Date YYYY-MM-DD" - }, - "DateTime": { - "type": "string", - "description": "1SO Date YYYY-MM-DD hh:mm:ss" - } - } - }, - "BankTransactionCode": { - "type": "object", - "properties": { - "Code": { - "type": "string", - "description": "Proprietary bank transaction code to identify the underlying transaction." - }, - "SubCode": { - "type": "string", - "description": "Identification of the issuer of the proprietary bank transaction code" - } - } - }, - "Balance": { - "type": "object", - "properties": { - "CreditDebitIndicator": { - "type": "string", - "description": "Indicates whether the balance is a credit or a debit balance" - }, - "Type": { - "type": "string", - "description": "Balance type, in a coded form." - }, - - "Amount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - } - }, - "ProprietaryBankTransactionCode": { - "type": "object", - "properties": { - "Code": { - "type": "string", - "description": "Proprietary bank transaction code to identify the underlying transaction." - }, - "Issuer": { - "type": "string", - "description": "Identification of the issuer of the proprietary bank transaction code." - } - } - }, - "MerchantDetails": { - "type": "object", - "properties": { - "Name": { - "type": "string", - "description": "Name by which the merchant is known." - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction." - } - } - } - }, - "xml": { - "name": "AccountTransactions" - } - }, - "AccountBeneficiaries": { - "description": "Account Beneficiary Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "BeneficiaryId": { - "type": "string", - "description": "maxLength 40 text" - }, - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference for the transaction" - }, - "CreditorAccount": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - } - }, - - "xml": { - "name": "AccountBeneficiaries" - } - }, - "AccReqResponse": { - "description": "Account-Request Response Object", - "type": "object", - "properties": { - "AccountRequestId": { - "type": "string", - "description": "Unique identification as assigned to identify the account request resource." - }, - "Status": { - "type": "string", - "description": "Specifies the status of the account request resource in code form." - }, - "PermissionsExpirationDateTime": { - "type": "string", - "description": "Specified date and time the permissions will expire." - }, - "TransactionFromDateTime": { - "type": "string", - "description": "Specified start date and time for the transaction query period." - }, - "TransactionToDateTime": { - "type": "string", - "description": "Specified end date and time for the transaction query period." - }, - "Permissions": { - "type": "array", - "items" : { - "type" : "string" - }, - "description": "Specified Permissions" - - }, - "SelectedAccounts": { - "type": "array", - "description": "Accounts for which Account Request is made", - "items": { - "type": "object", - "properties": { - "Account": { - "type": "object", - "description": "Accounts Details", - "properties": { - "Name": { - "type": "string", - "description": "Name of account" - }, - "SchemeName": { - "type": "string", - "description": "Scheme Name of account" - }, - "Identification": { - "type": "string", - "description": "Identification of account" - }, - "SecondaryIdentification": { - "type": "string", - "description": "Secondary Identification of account" - } - - } - }, - "Servicer": { - "type": "object", - "description": "Servicer", - "properties": { - "SchemeName": { - "type": "string", - "description": "Scheme Name of Servicer" - }, - "Identification": { - "type": "string", - "description": "Identification of Servicer" - } - - } - - } - } - } - } - }, - - "xml": { - "name": "AccReqResponse" - } - }, - "AccountStandingOrders": { - "description": "Account Standing Orders Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "StandingOrderId": { - "type": "string", - "description": "A unique and immutable identifier used to identify the standing order resource." - }, - "Currency": { - "type": "string", - "description": "Identification of the currency of the standing order" - }, - "Frequency": { - "type": "string", - "description": "Frequency Of the standing order" - }, - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction." - }, - "FirstPaymentDate": { - "type": "string", - "description": "The date on which the first payment for a Standing Order schedule will be made." - }, - "NextPaymentDate": { - "type": "string", - "description": "The date on which the next payment for a Standing Order schedule will be made." - }, - "FinalPaymentDate": { - "type": "string", - "description": "The date on which the final payment for a Standing Order schedule will be made" - }, - "CreditorAccount": { - "type": "object", - "properties": { - "SecondaryIdentification": { - "type": "string", - "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number" - }, - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the account, as assigned by the account servicing institution" - } - } - - }, - "Servicer": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "FirstPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "NextPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "FinalPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - - }, - - "xml": { - "name": "AccountStandingOrders" - } - - }, - "AccountDirectDebits": { - "description": "Account Direct Debits Object", - "type": "object", - "properties": { - "AccountId": { - "type": "string", - "description": "Account number to be used for the purposes of display. It does not give the complete account number but an obfuscated version only showing last 4 digits. Leading digits are replaced by ‘X’." - }, - "DirectDebitId": { - "type": "string", - "description": "A unique and immutable identifier used to identify the direct debit resource." - }, - "MandateIdentification": { - "type": "string", - "description": "Direct Debit reference" - }, - "DirectDebitStatusCode": { - "type": "string", - "description": "Specifies the status of the direct debit in code form" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme" - }, - "Name": { - "type": "string", - "description": "Name of Service User" - }, - "PreviousPaymentDate": { - "type": "string", - "description": "Date of most recent direct debit collection." - }, - "PreviousPaymentAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - } - - }, - - "xml": { - "name": "AccountDirectDebits" - } - } - - } -} diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json new file mode 100644 index 00000000..2e66c13e --- /dev/null +++ b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json @@ -0,0 +1,2864 @@ +{ + "swagger": "2.0", + "host": "testdemorrai-test.apigee.net", + "info": { + "title": "Account Information APIs", + "description": "Swagger specification for Account Information APIs", + "termsOfService": "https://www.openbanking.org.uk/terms", + "contact": { + "name": "Craig Greenhouse", + "email": "Craig.Greenhouse@openbanking.org.uk" + }, + "license": { + "name": "open-licence", + "url": "https://www.openbanking.org.uk/open-licence" + }, + "version": "v1.0.0" + }, + "basePath": "/ais/open-banking/v1.0", + "schemes": [ + "https" + ], + "produces": [ + "application/json" + ], + "paths": { + "/account-requests": { + "post": { + "summary": "Create an account request", + "description": "Create an account request", + "operationId": "CreateAccountRequest", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "description": "Create an Account Request", + "required": true, + "schema": { + + "$ref": "#/definitions/AccountRequest" + + } + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containig a detached JWS signature of the body of the payload." + } + ], + "responses": { + "201": { + "description": "Account Request resource successfully created", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containig a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/account-requests/{AccountRequestId}": { + "get": { + "summary": "Get an account request", + "description": "Get an account request", + "operationId": "GetAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Request resource successfully retrieved", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + }, + "delete": { + "summary": "Delete an account request", + "description": "Delete an account request", + "operationId": "DeleteAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + } + ], + "responses": { + "204": { + "description": "Account Request resource successfully deleted", + "headers": { + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/accounts": { + "get": { + "summary": "Get Accounts", + "description": "Get a list of accounts", + "operationId": "GetAccounts", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Accounts successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}": { + "get": { + "summary": "Get Account", + "description": "Get an account", + "operationId": "GetAccount", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account resource successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/transactions": { + "get": { + "summary": "Get Account Transactions", + "description": "Get transactions related to an account", + "operationId": "GetAccountTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/beneficiaries": { + "get": { + "summary": "Get Account Beneficiaries", + "description": "Get Beneficiaries related to an account", + "operationId": "GetAccountBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/balances": { + "get": { + "summary": "Get Account Balances", + "description": "Get Balances related to an account", + "operationId": "GetAccountBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/direct-debits": { + "get": { + "summary": "Get Account Direct Debits", + "description": "Get Direct Debits related to an account", + "operationId": "GetAccountDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/standing-orders": { + "get": { + "summary": "Get Account Standing Orders", + "description": "Get Standing Orders related to an account", + "operationId": "GetAccountStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/product": { + "get": { + "summary": "Get Account Product", + "description": "Get Product related to an account", + "operationId": "GetAccountProduct", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Product successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountProduct" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/standing-orders": { + "get": { + "summary": "Get Standing Orders", + "description": "Get Standing Orders", + "operationId": "GetStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/direct-debits": { + "get": { + "summary": "Get Direct Debits", + "description": "Get Direct Debits", + "operationId": "GetDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/beneficiaries": { + "get": { + "summary": "Get Beneficiaries", + "description": "Get Beneficiaries", + "operationId": "GetBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/transactions": { + "get": { + "summary": "Get Transactions", + "description": "Get Transactions", + "operationId": "GetTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + } + ], + "responses": { + "200": { + "description": "Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/balances": { + "get": { + "summary": "Get Balances", + "description": "Get Balances", + "operationId": "GetBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Balances successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + } + }, + "responses": { + "400ErrorResponse": { + "description": "Bad Request" + }, + "401ErrorResponse": { + "description": "Unauthorized" + }, + "403ErrorResponse": { + "description": "Forbidden" + }, + "429ErrorResponse": { + "description": "Too Many Requests" + } + }, + "securityDefinitions": { + "PSUOAuth2Security": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/token", + "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/authorize?response_type=code&client_id=zPq1BGV4OlLV7hJR1DsbfTI1t3orbDmD&state=abcd1234&scope=openid accounts&redirect_uri=https://api.enterprise.apigee.com/v1/o/testdemorrai/apimodels/accounts-apis-v1-0/templateauths/PSUOAuth2Security/callback", + "scopes": { + "accounts": "Ability to read Accounts information", + "openid" : "openId" + }, + "description": "OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU" + } + }, + "definitions": + { + "CreateAccountRequest" : + { + "title": "Account Request POST response", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "type": "object", + "properties": { + "AccountRequestId": { + "description": "Unique identification as assigned to identify the account request resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the account request resource.", + "type": "string", + "enum": [ + "Authorised", + "AwaitingAuthorisation", + "Rejected", + "Revoked" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "AccountRequestId", + "CreationDateTime", + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + }, + "AccountInfo": + { + "title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "Account", + "type": "array", + "items": { + "type": "object", + "title": "Account", + "description": "Account", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Currency": { + "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account.", + "type": "string", + "pattern": "^[A-Z]{3}$" + }, + "Nickname": { + "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "Account": { + "description": "Provides the details to identify an account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Currency" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountTransactions" : + { + "title": "Account Transactions GET response", + "type": "object", + "properties": { + "Data": { + "title": "Transaction", + "description": "Data Section of the Payload", + "type": "array", + "items": { + "type": "object", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionId": { + "description": "Unique identifier for the transaction within an servicing institution. This identifier is both unique and immutable.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionReference": { + "description": "Unique reference for the transaction. This reference is optionally populated, and may as an example be the FPID in the Faster Payments context.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Amount": { + "description": "Amount of money in the cash entry.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the transaction is a credit or a debit entry.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Status": { + "description": "Status of a transaction entry on the books of the account servicer.", + "type": "string", + "enum": [ + "Booked", + "Pending" + ] + }, + "BookingDateTime": { + "description": "Date and time when a transaction entry is posted to an account on the account servicer's books. Usage: Booking date is the expected booking date, unless the status is booked, in which case it is the actual booking date.", + "type": "string", + "format": "date-time" + }, + "ValueDateTime": { + "description": "Date and time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date. For entries subject to availability/float and for which availability information is provided, the value date must not be used. In this case the availability component identifies the number of availability days.", + "type": "string", + "format": "date-time" + }, + "TransactionInformation": { + "description": "Further details of the transaction. This is the transaction narrative, which is unstructured text.", + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BankTransactionCode": { + "description": "Set of elements used to fully identify the type of underlying transaction resulting in an entry.", + "type": "object", + "properties": { + "Code": { + "description": "Specifies the family within a domain.", + "type": "string" + }, + "SubCode": { + "description": "Specifies the sub-product family within a specific family.", + "type": "string" + } + }, + "required": [ + "Code", + "SubCode" + ], + "additionalProperties": false + }, + "ProprietaryBankTransactionCode": { + "description": "Set of elements to fully identify a proprietary bank transaction code.", + "type": "object", + "properties": { + "Code": { + "description": "Proprietary bank transaction code to identify the underlying transaction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Issuer": { + "description": "Identification of the issuer of the proprietary bank transaction code.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "Code" + ], + "additionalProperties": false + }, + "Balance": { + "description": "Set of elements used to define the balance as a numerical representation of the net increases and decreases in an account after a transaction entry is applied to the account.", + "type": "object", + "properties": { + "Amount": { + "description": "Amount of money of the cash balance after a transaction entry is applied to the account..", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + } + }, + "additionalProperties": false, + "required": [ + "Amount", + "CreditDebitIndicator", + "Type" + ] + }, + "MerchantDetails": { + "description": "Details of the merchant involved in the transaction.", + "type": "object", + "properties": { + "MerchantName": { + "description": "Name by which the merchant is known.", + "type": "string", + "minLength": 1, + "maxLength": 350 + }, + "MerchantCategoryCode": { + "description": "Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.", + "type": "string", + "minLength": 3, + "maxLength": 4 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "Status", + "BookingDateTime" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBeneficiaries" : + { + "title": "Beneficiaries GET response", + "type": "object", + "properties": { + "Data": { + "title": "Beneficiary", + "type": "array", + "items": { + "type": "object", + "title": "Beneficiary", + "description": "Beneficiary", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "BeneficiaryId": { + "description": "A unique and immutable identifier used to identify the beneficiary resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBalance": + { + "title": "Balances GET response", + "type": "object", + "properties": { + "Data": { + "title": "Balance", + "type": "array", + "items": { + "type": "object", + "title": "Balance", + "description": "Balance", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Amount": { + "description": "Amount of money of the cash balance.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + }, + "DateTime": { + "description": "Indicates the date (and time) of the balance.", + "type": "string", + "format": "date-time" + }, + "CreditLine": { + "type": "object", + "properties": { + "Included": { + "description": "Indicates whether or not the credit line is included in the balance of the account. Usage: If not present, credit line is not included in the balance amount of the account.", + "type": "boolean" + }, + "Amount": { + "description": "Active Or Historic Currency Code and Amount", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Type": { + "description": "Limit type, in a coded form.", + "type": "string", + "enum": [ + "Pre-Agreed", + "Emergency", + "Temporary" + ] + } + }, + "additionalProperties": false, + "required": [ + "Included" + ] + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "DateTime", + "Type" + ] + }, + "minItems": 1 + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountDirectDebits": + {"title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "DirectDebit", + "type": "array", + "items": { + "type": "object", + "title": "Direct Debit", + "description": "Direct Debit", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "DirectDebitId": { + "description": "A unique and immutable identifier used to identify the direct debit resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "MandateIdentification": { + "description": "Direct Debit reference. For AUDDIS service users provide Core Reference. For non AUDDIS service users provide Core reference if possible or last used reference.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "DirectDebitStatusCode": { + "description": "Specifies the status of the direct debit in code form.", + "type": "string", + "enum": [ + "Active", + "Inactive" + ] + }, + "Name": { + "description": "Name of Service User", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "PreviousPaymentDateTime": { + "description": "Date of most recent direct debit collection.", + "type": "string", + "format": "date-time" + }, + "PreviousPaymentAmount": { + "description": "The amount of the most recent direct debit collection.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "MandateIdentification", + "Name" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountStandingOrders" : + { + "title": "Standing Orders GET response", + "type": "object", + "properties": { + "Data": { + "title": "StandingOrder", + "type": "array", + "items": { + "type": "object", + "title": "Standing Order", + "description": "Standing Order", + "properties": { + "AccountId": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "StandingOrderId": { + "description": "A unique and immutable identifier used to identify the standing order resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Frequency": { + "description": "EvryWorkgDay - PSC070 IntrvlWkDay:PSC110:PSC080 (PSC070 code + PSC110 + PSC080) WkInMnthDay:PSC100:PSC080 (PSC070 code + PSC100 + PSC080) IntrvlMnthDay:PSC120:PSC090 (PSC070 code + PSC120 + PSC090) QtrDay: + either (ENGLISH, SCOTTISH or RECEIVED) PSC070 + PSC130 The following response codes may be generated by this data element: PSC070: T221 - Schedule code must be a valid enumeration value. PSC070: T245 - Must be provided for standing order only. PSC080: T222 - Day in week must be within defined bounds (range 1 to 5). PSC080: T229 - Must be present if Schedule Code = IntrvlWkDay. PSC080: T231 - Must be present if Schedule Code = WkInMnthDay. PSC090: T223 - Day in month must be within defined bounds (range -5 to 31 excluding: 0 & 00). PSC090: T233 - Must be present if Schedule Code = IntrvlMnthDay. PSC100: T224 - Week in month must be within defined bounds (range 1 to 5). PSC100: T232 - Must be present if Schedule Code = WkInMnthDay. PSC110: T225 - Interval in weeks must be within defined bounds (range 1 to 9). PSC110: T230 - Must be present if Schedule Code = IntrvlWkDay. PSC120: T226 - Interval in months must be a valid enumeration value (range 1 to 6, 12 and 24). PSC120: T234 - Must be present if Schedule Code = IntrvlMnthDay. PSC130: T227 - Quarter Day must be a valid enumeration value. PSC130: T235 - Must be present if Schedule Code = QtrDay. The regular expression for this element combines five smaller versions for each permitted pattern. To aid legibility - the components are presented individually here: EvryWorkgDay IntrvlWkDay:0[1-9]:0[1-5] WkInMnthDay:0[1-5]:0[1-5] IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]) QtrDay:(ENGLISH|SCOTTISH|RECEIVED) Mandatory/Conditional/Optional/Parent/Leaf: OL Type: 35 char string Regular Expression(s): (EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1- 6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))", + "type": "string", + "pattern": "^((EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED)))$" + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "FirstPaymentDateTime": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FirstPaymentAmount": { + "description": "The amount of the first Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "NextPaymentDateTime": { + "description": "The date on which the next payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "NextPaymentAmount": { + "description": "The amount of the next Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "FinalPaymentDateTime": { + "description": "The date on which the final payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FinalPaymentAmount": { + "description": "The amount of the final Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "Frequency", + "NextPaymentDateTime", + "NextPaymentAmount" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountProduct" : + { + "title": "Product GET response", + "type": "object", + "properties": { + "Data": { + "title": "Product", + "type": "array", + "items": { + "type": "object", + "title": "Product", + "description": "Product", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "ProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + }, + "ProductType": { + "description": "Descriptive code for the product category.", + "type": "string", + "enum": [ + "BCA", + "PCA" + ] + }, + "ProductName": { + "description": "The name of the product used for marketing purposes from a customer perspective. I.e. what the customer would recognise.", + "type": "string" + }, + "SecondaryProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "ProductIdentifier", + "ProductType" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountRequest" : + { + "title": "Account Request POST request", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + } + } +} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json.template new file mode 100644 index 00000000..f7100ba2 --- /dev/null +++ b/src/devportal/all/modules/custom/openbank_swagger/swaggers/accountv1-0.json.template @@ -0,0 +1,2864 @@ +{ + "swagger": "2.0", + "host": "{{ host }}", + "info": { + "title": "Account Information APIs", + "description": "Swagger specification for Account Information APIs", + "termsOfService": "https://www.openbanking.org.uk/terms", + "contact": { + "name": "Craig Greenhouse", + "email": "Craig.Greenhouse@openbanking.org.uk" + }, + "license": { + "name": "open-licence", + "url": "https://www.openbanking.org.uk/open-licence" + }, + "version": "v1.0.0" + }, + "basePath": "/ais/open-banking/v1.0", + "schemes": [ + "https" + ], + "produces": [ + "application/json" + ], + "paths": { + "/account-requests": { + "post": { + "summary": "Create an account request", + "description": "Create an account request", + "operationId": "CreateAccountRequest", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "description": "Create an Account Request", + "required": true, + "schema": { + + "$ref": "#/definitions/AccountRequest" + + } + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containig a detached JWS signature of the body of the payload." + } + ], + "responses": { + "201": { + "description": "Account Request resource successfully created", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containig a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/account-requests/{AccountRequestId}": { + "get": { + "summary": "Get an account request", + "description": "Get an account request", + "operationId": "GetAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Request resource successfully retrieved", + "schema": { + "$ref": "#/definitions/CreateAccountRequest" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + }, + "delete": { + "summary": "Delete an account request", + "description": "Delete an account request", + "operationId": "DeleteAccountRequest", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountRequestId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the account request resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "required": true, + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + } + ], + "responses": { + "204": { + "description": "Account Request resource successfully deleted", + "headers": { + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + } + } + }, + "/accounts": { + "get": { + "summary": "Get Accounts", + "description": "Get a list of accounts", + "operationId": "GetAccounts", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Accounts successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}": { + "get": { + "summary": "Get Account", + "description": "Get an account", + "operationId": "GetAccount", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account resource successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountInfo" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/transactions": { + "get": { + "summary": "Get Account Transactions", + "description": "Get transactions related to an account", + "operationId": "GetAccountTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/beneficiaries": { + "get": { + "summary": "Get Account Beneficiaries", + "description": "Get Beneficiaries related to an account", + "operationId": "GetAccountBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/balances": { + "get": { + "summary": "Get Account Balances", + "description": "Get Balances related to an account", + "operationId": "GetAccountBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/direct-debits": { + "get": { + "summary": "Get Account Direct Debits", + "description": "Get Direct Debits related to an account", + "operationId": "GetAccountDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/standing-orders": { + "get": { + "summary": "Get Account Standing Orders", + "description": "Get Standing Orders related to an account", + "operationId": "GetAccountStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/accounts/{AccountId}/product": { + "get": { + "summary": "Get Account Product", + "description": "Get Product related to an account", + "operationId": "GetAccountProduct", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "AccountId", + "in": "path", + "description": "A unique identifier used to identify the account resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Account Product successfully retrieved", + "schema": { + "$ref": "#/definitions/AccountProduct" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/standing-orders": { + "get": { + "summary": "Get Standing Orders", + "description": "Get Standing Orders", + "operationId": "GetStandingOrders", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Standing Orders successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountStandingOrders" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/direct-debits": { + "get": { + "summary": "Get Direct Debits", + "description": "Get Direct Debits", + "operationId": "GetDirectDebits", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Direct Debits successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountDirectDebits" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/beneficiaries": { + "get": { + "summary": "Get Beneficiaries", + "description": "Get Beneficiaries", + "operationId": "GetBeneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Beneficiaries successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBeneficiaries" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/transactions": { + "get": { + "summary": "Get Transactions", + "description": "Get Transactions", + "operationId": "GetTransactions", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "query", + "name": "fromBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions FROM - NB Time component is optional - set to 00:00:00 for just Date" + }, + { + "in": "query", + "name": "toBookingDateTime", + "type": "string", + "format": "date-time", + "description": "The UTC ISO 8601 Date Time to filter transactions TO - NB Time component is optional - set to 00:00:00 for just Date" + } + ], + "responses": { + "200": { + "description": "Transactions successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountTransactions" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + }, + "/balances": { + "get": { + "summary": "Get Balances", + "description": "Get Balances", + "operationId": "GetBalances", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456789", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Balances successfully retrieved", + "schema": { + + "$ref": "#/definitions/AccountBalance" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too Many Requests" + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "accounts","openid" + ] + } + ] + } + } + }, + "responses": { + "400ErrorResponse": { + "description": "Bad Request" + }, + "401ErrorResponse": { + "description": "Unauthorized" + }, + "403ErrorResponse": { + "description": "Forbidden" + }, + "429ErrorResponse": { + "description": "Too Many Requests" + } + }, + "securityDefinitions": { + "PSUOAuth2Security": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "{{ host_withprotocol }}/apis/v1.0/oauth/token", + "authorizationUrl": "{{ host_withprotocol }}/apis/v1.0/oauth/authorize?response_type=code&client_id={{ client_id_aisp }}&state=abcd1234&scope=openid accounts&redirect_uri=https://api.enterprise.apigee.com/v1/o/{{ org }}/apimodels/accounts-apis-v1-0/templateauths/PSUOAuth2Security/callback", + "scopes": { + "accounts": "Ability to read Accounts information", + "openid" : "openId" + }, + "description": "OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU" + } + }, + "definitions": + { + "CreateAccountRequest" : + { + "title": "Account Request POST response", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "type": "object", + "properties": { + "AccountRequestId": { + "description": "Unique identification as assigned to identify the account request resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the account request resource.", + "type": "string", + "enum": [ + "Authorised", + "AwaitingAuthorisation", + "Rejected", + "Revoked" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "AccountRequestId", + "CreationDateTime", + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + }, + "AccountInfo": + { + "title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "Account", + "type": "array", + "items": { + "type": "object", + "title": "Account", + "description": "Account", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Currency": { + "description": "Identification of the currency in which the account is held. Usage: Currency should only be used in case one and the same account number covers several currencies and the initiating party needs to identify which currency needs to be used for settlement on the account.", + "type": "string", + "pattern": "^[A-Z]{3}$" + }, + "Nickname": { + "description": "The nickname of the account, assigned by the account owner in order to provide an additional means of identification of the account.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "Account": { + "description": "Provides the details to identify an account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Currency" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountTransactions" : + { + "title": "Account Transactions GET response", + "type": "object", + "properties": { + "Data": { + "title": "Transaction", + "description": "Data Section of the Payload", + "type": "array", + "items": { + "type": "object", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionId": { + "description": "Unique identifier for the transaction within an servicing institution. This identifier is both unique and immutable.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "TransactionReference": { + "description": "Unique reference for the transaction. This reference is optionally populated, and may as an example be the FPID in the Faster Payments context.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Amount": { + "description": "Amount of money in the cash entry.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the transaction is a credit or a debit entry.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Status": { + "description": "Status of a transaction entry on the books of the account servicer.", + "type": "string", + "enum": [ + "Booked", + "Pending" + ] + }, + "BookingDateTime": { + "description": "Date and time when a transaction entry is posted to an account on the account servicer's books. Usage: Booking date is the expected booking date, unless the status is booked, in which case it is the actual booking date.", + "type": "string", + "format": "date-time" + }, + "ValueDateTime": { + "description": "Date and time at which assets become available to the account owner in case of a credit entry, or cease to be available to the account owner in case of a debit entry. Usage: If entry status is pending and value date is present, then the value date refers to an expected/requested value date. For entries subject to availability/float and for which availability information is provided, the value date must not be used. In this case the availability component identifies the number of availability days.", + "type": "string", + "format": "date-time" + }, + "TransactionInformation": { + "description": "Further details of the transaction. This is the transaction narrative, which is unstructured text.", + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BankTransactionCode": { + "description": "Set of elements used to fully identify the type of underlying transaction resulting in an entry.", + "type": "object", + "properties": { + "Code": { + "description": "Specifies the family within a domain.", + "type": "string" + }, + "SubCode": { + "description": "Specifies the sub-product family within a specific family.", + "type": "string" + } + }, + "required": [ + "Code", + "SubCode" + ], + "additionalProperties": false + }, + "ProprietaryBankTransactionCode": { + "description": "Set of elements to fully identify a proprietary bank transaction code.", + "type": "object", + "properties": { + "Code": { + "description": "Proprietary bank transaction code to identify the underlying transaction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Issuer": { + "description": "Identification of the issuer of the proprietary bank transaction code.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "Code" + ], + "additionalProperties": false + }, + "Balance": { + "description": "Set of elements used to define the balance as a numerical representation of the net increases and decreases in an account after a transaction entry is applied to the account.", + "type": "object", + "properties": { + "Amount": { + "description": "Amount of money of the cash balance after a transaction entry is applied to the account..", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + } + }, + "additionalProperties": false, + "required": [ + "Amount", + "CreditDebitIndicator", + "Type" + ] + }, + "MerchantDetails": { + "description": "Details of the merchant involved in the transaction.", + "type": "object", + "properties": { + "MerchantName": { + "description": "Name by which the merchant is known.", + "type": "string", + "minLength": 1, + "maxLength": 350 + }, + "MerchantCategoryCode": { + "description": "Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction.", + "type": "string", + "minLength": 3, + "maxLength": 4 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "Status", + "BookingDateTime" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBeneficiaries" : + { + "title": "Beneficiaries GET response", + "type": "object", + "properties": { + "Data": { + "title": "Beneficiary", + "type": "array", + "items": { + "type": "object", + "title": "Beneficiary", + "description": "Beneficiary", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "BeneficiaryId": { + "description": "A unique and immutable identifier used to identify the beneficiary resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountBalance": + { + "title": "Balances GET response", + "type": "object", + "properties": { + "Data": { + "title": "Balance", + "type": "array", + "items": { + "type": "object", + "title": "Balance", + "description": "Balance", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Amount": { + "description": "Amount of money of the cash balance.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "CreditDebitIndicator": { + "description": "Indicates whether the balance is a credit or a debit balance. Usage: A zero balance is considered to be a credit balance.", + "type": "string", + "enum": [ + "Credit", + "Debit" + ] + }, + "Type": { + "description": "Balance type, in a coded form.", + "type": "string", + "enum": [ + "ClosingAvailable", + "ClosingBooked", + "Expected", + "ForwardAvailable", + "Information", + "InterimAvailable", + "InterimBooked", + "OpeningAvailable", + "OpeningBooked", + "PreviouslyClosedBooked" + ] + }, + "DateTime": { + "description": "Indicates the date (and time) of the balance.", + "type": "string", + "format": "date-time" + }, + "CreditLine": { + "type": "object", + "properties": { + "Included": { + "description": "Indicates whether or not the credit line is included in the balance of the account. Usage: If not present, credit line is not included in the balance amount of the account.", + "type": "boolean" + }, + "Amount": { + "description": "Active Or Historic Currency Code and Amount", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Type": { + "description": "Limit type, in a coded form.", + "type": "string", + "enum": [ + "Pre-Agreed", + "Emergency", + "Temporary" + ] + } + }, + "additionalProperties": false, + "required": [ + "Included" + ] + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "Amount", + "CreditDebitIndicator", + "DateTime", + "Type" + ] + }, + "minItems": 1 + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountDirectDebits": + {"title": "Account GET response", + "type": "object", + "properties": { + "Data": { + "title": "DirectDebit", + "type": "array", + "items": { + "type": "object", + "title": "Direct Debit", + "description": "Direct Debit", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "DirectDebitId": { + "description": "A unique and immutable identifier used to identify the direct debit resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "MandateIdentification": { + "description": "Direct Debit reference. For AUDDIS service users provide Core Reference. For non AUDDIS service users provide Core reference if possible or last used reference.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "DirectDebitStatusCode": { + "description": "Specifies the status of the direct debit in code form.", + "type": "string", + "enum": [ + "Active", + "Inactive" + ] + }, + "Name": { + "description": "Name of Service User", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "PreviousPaymentDateTime": { + "description": "Date of most recent direct debit collection.", + "type": "string", + "format": "date-time" + }, + "PreviousPaymentAmount": { + "description": "The amount of the most recent direct debit collection.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "MandateIdentification", + "Name" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountStandingOrders" : + { + "title": "Standing Orders GET response", + "type": "object", + "properties": { + "Data": { + "title": "StandingOrder", + "type": "array", + "items": { + "type": "object", + "title": "Standing Order", + "description": "Standing Order", + "properties": { + "AccountId": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "StandingOrderId": { + "description": "A unique and immutable identifier used to identify the standing order resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "Frequency": { + "description": "EvryWorkgDay - PSC070 IntrvlWkDay:PSC110:PSC080 (PSC070 code + PSC110 + PSC080) WkInMnthDay:PSC100:PSC080 (PSC070 code + PSC100 + PSC080) IntrvlMnthDay:PSC120:PSC090 (PSC070 code + PSC120 + PSC090) QtrDay: + either (ENGLISH, SCOTTISH or RECEIVED) PSC070 + PSC130 The following response codes may be generated by this data element: PSC070: T221 - Schedule code must be a valid enumeration value. PSC070: T245 - Must be provided for standing order only. PSC080: T222 - Day in week must be within defined bounds (range 1 to 5). PSC080: T229 - Must be present if Schedule Code = IntrvlWkDay. PSC080: T231 - Must be present if Schedule Code = WkInMnthDay. PSC090: T223 - Day in month must be within defined bounds (range -5 to 31 excluding: 0 & 00). PSC090: T233 - Must be present if Schedule Code = IntrvlMnthDay. PSC100: T224 - Week in month must be within defined bounds (range 1 to 5). PSC100: T232 - Must be present if Schedule Code = WkInMnthDay. PSC110: T225 - Interval in weeks must be within defined bounds (range 1 to 9). PSC110: T230 - Must be present if Schedule Code = IntrvlWkDay. PSC120: T226 - Interval in months must be a valid enumeration value (range 1 to 6, 12 and 24). PSC120: T234 - Must be present if Schedule Code = IntrvlMnthDay. PSC130: T227 - Quarter Day must be a valid enumeration value. PSC130: T235 - Must be present if Schedule Code = QtrDay. The regular expression for this element combines five smaller versions for each permitted pattern. To aid legibility - the components are presented individually here: EvryWorkgDay IntrvlWkDay:0[1-9]:0[1-5] WkInMnthDay:0[1-5]:0[1-5] IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]) QtrDay:(ENGLISH|SCOTTISH|RECEIVED) Mandatory/Conditional/Optional/Parent/Leaf: OL Type: 35 char string Regular Expression(s): (EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1- 6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))", + "type": "string", + "pattern": "^((EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED)))$" + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "FirstPaymentDateTime": { + "description": "The date on which the first payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FirstPaymentAmount": { + "description": "The amount of the first Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "NextPaymentDateTime": { + "description": "The date on which the next payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "NextPaymentAmount": { + "description": "The amount of the next Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "FinalPaymentDateTime": { + "description": "The date on which the final payment for a Standing Order schedule will be made.", + "type": "string", + "format": "date-time" + }, + "FinalPaymentAmount": { + "description": "The amount of the final Standing Order", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^-?\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 'Codes for the representation of currencies and funds'", + "type": "string", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "Servicer": { + "description": "Party that manages the account on behalf of the account owner, that is manages the registration and booking of entries on the account, calculates balances on the account and provides information about the account. This is the servicer of the beneficiary account", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BICFI", + "UKSortCode" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of the servicing institution.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Provides the details to identify the beneficiary account.", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "type": "string", + "enum": [ + "BBAN", + "IBAN" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "This is secondary identification of the account, as assigned by the account servicing institution. This can be used by building societies to additionally identify accounts with a roll number (in addition to a sort code and account number combination).", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + } + }, + "required": [ + "AccountId", + "Frequency", + "NextPaymentDateTime", + "NextPaymentAmount" + ], + "additionalProperties": false + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountProduct" : + { + "title": "Product GET response", + "type": "object", + "properties": { + "Data": { + "title": "Product", + "type": "array", + "items": { + "type": "object", + "title": "Product", + "description": "Product", + "properties": { + "AccountId": { + "description": "A unique and immutable identifier used to identify the account resource. This identifier has no meaning to the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "ProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + }, + "ProductType": { + "description": "Descriptive code for the product category.", + "type": "string", + "enum": [ + "BCA", + "PCA" + ] + }, + "ProductName": { + "description": "The name of the product used for marketing purposes from a customer perspective. I.e. what the customer would recognise.", + "type": "string" + }, + "SecondaryProductIdentifier": { + "description": "Identifier within the parent organisation for the product. Must be unique in the organisation.", + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "AccountId", + "ProductIdentifier", + "ProductType" + ] + } + }, + "Links": { + "title": "Links", + "type": "object", + "description": "Links relevant to the payload", + "properties": { + "self": { + "type": "string", + "format": "uri" + }, + "first": { + "type": "string", + "format": "uri" + }, + "prev": { + "type": "string", + "format": "uri" + }, + "next": { + "type": "string", + "format": "uri" + }, + "last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "self" + ] + }, + "Meta": { + "title": "Meta Data", + "type": "object", + "description": "Meta Data relevant to the payload", + "properties": { + "total-pages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Links", + "Meta" + ] + }, + "AccountRequest" : + { + "title": "Account Request POST request", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Data": { + "title": "Data", + "description": "Allows setup of an account access request", + "type": "object", + "properties": { + "Permissions": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "array", + "items": { + "description": "Specifies the Open Banking account request types. This is a list of the data clusters being consented by the PSU, and requested for authorisation with the ASPSP.", + "type": "string", + "enum": [ + "ReadAccountsBasic", + "ReadAccountsDetail", + "ReadBalances", + "ReadBeneficiariesBasic", + "ReadBeneficiariesDetail", + "ReadDirectDebits", + "ReadProducts", + "ReadStandingOrdersBasic", + "ReadStandingOrdersDetail", + "ReadTransactionsBasic", + "ReadTransactionsCredits", + "ReadTransactionsDebits", + "ReadTransactionsDetail" + ] + }, + "minProperties": 1, + "additionalProperties": false + }, + "ExpirationDateTime": { + "description": "Specified date and time the permissions will expire. If this is not populated, the permissions will be open ended.", + "type": "string", + "format": "date-time" + }, + "TransactionFromDateTime": { + "description": "Specified start date and time for the transaction query period. If this is not populated, the start date will be open ended, and data will be returned from the earliest available transaction.", + "type": "string", + "format": "date-time" + }, + "TransactionToDateTime": { + "description": "Specified end date and time for the transaction query period. If this is not populated, the end date will be open ended, and data will be returned to the latest available transaction.", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "Permissions" + ] + }, + "Risk": { + "title": "Risk", + "type": "object", + "description": "The Risk payload is sent by the initiating party to the ASPSP. It is used to specify additional details for risk scoring for Account Info.", + "properties": {}, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "Data", + "Risk" + ] + } + } +} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/oauthv1-0.json similarity index 63% rename from src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json.template rename to src/devportal/all/modules/custom/openbank_swagger/swaggers/oauthv1-0.json index 0c751736..4e6b63f4 100644 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/authv2.json.template +++ b/src/devportal/all/modules/custom/openbank_swagger/swaggers/oauthv1-0.json @@ -1,6 +1,6 @@ { "swagger": "2.0", - "host": "{{ host }}", + "host": "testdemorrai-test.apigee.net", "schemes": [ "https" ], @@ -9,7 +9,7 @@ "title": "Generate Access Token", "version": "0.0.1" }, - "basePath": "/apis/v2/oauth", + "basePath": "/apis/v1.0/oauth", "paths": { "/authorize": { "get": { @@ -28,37 +28,46 @@ } }, "security": [], - "parameters": [ - { + "parameters": [{ "in": "query", "name": "client_id", - "description": "Client ID of the registered App.", + "description": "TPPs MUST provide this value and set it to the client id issued to them.", "type": "string", + "default": "zPq1BGV4OlLV7hJR1DsbfTI1t3orbDmD", "required": true }, { "in": "query", "name": "redirect_uri", - "description": "Redirect URI defined with your registered App.", + "description": "Redirect URI defined with your registered App. This MUST be a valid, absolute URL that was registered during Client Registration.", + "type": "string", + "default" : "http://localhost/", + "required": true + }, + { + "in": "query", + "name": "nonce", + "description": "A nonce value", "type": "string", "required": true }, { "in": "query", "name": "response_type", - "description": "The value must be one of 'code' for requesting an authorization code or 'token' for requesting an access token (implicit grant). The redirect url is passed with query params state and code.", + "description": "OAuth 2.0 requires that this parameter is provided. Value is set to ‘code id_token’ or ‘code’. The values for these parameters MUST match those in the Request Object, if present.", "type": "string", "required": true, "enum": [ + "code id_token", + "code", "token", - "code" - ], - "default": "token" + "token id_token" + ] }, { "in": "query", "name": "state", - "description": "Unique id to maintain state between asynchronous requests.", + "description": "TPPs MAY provide a state parameter. An Unique id to maintain state between asynchronous requests at the Client.", "type": "string", "required": true, "default": "af0ifjsldkj" @@ -66,31 +75,19 @@ { "in": "query", "name": "scope", - "description": "Scope of the access token requested.", + "description": "The scopes MUST be a sub-set of the scopes that were registered during Client Registration. At a minimum the scope parameter MUST contain openid. Other valid scopes are: accounts, payments", "type": "string", "required": true, "enum": [ - "accounts", - "payments", + "openid accounts", + "openid payments", "openid" ] }, { "in": "query", - "name": "acr_values", - "description": "Determines the level of security for authentication. A value of 2 will require only Customer Id and Password. A value of 3 will request for OTP.", - "type": "string", - "required": true, - "enum": [ - "2", - "3" - ], - "default": "2" - }, - { - "in": "query", - "name": "request_id", - "description": "Request Id for which Authorization Flow need to be executed", + "name": "request", + "description": "The parameter MUST contain a JWS that is signed by the TPP. The JWS payload MUST consist of a JSON object containing a request object as per OIDC Core 6.1.The request object MUST contain a claims section that includes as a minimum
Returns a list of ATMs with Address, Latitude and Longitude.
Optional parameters include search filters, latitude, longitude and radius of search.
", - "summary": "List of atms", - "operationId": "atms", - "tags": [ - "opendata" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AtmsResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [], - "parameters": [ - { - "in": "query", - "name": "latitude", - "description": "Latitude of the place around which you want to find ATMs. If latitude is provided, longitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "longitude", - "description": "Longitude of the place around which you want to find ATMs. If longitude is provided, latitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "radius", - "description": "This is the radius (in meters) from the search point. If radius is provided, then latitude and longitude has to also be provided", - "type": "integer", - "required": false - }, - { - "in": "query", - "name": "wheelchair", - "description": "This is check (in boolean) to see if the ATM is accessible by wheelchair", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "isWithdrawalCharged", - "description": "This is to check whether withdrawal of money from this ATM will be charged.", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "currency", - "description": "The currency required", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "status", - "description": "This is to check if the ATM is currently available for withdrawing money.", - "type": "string", - "required": false - } - ] - } - }, - "/branches": { - "get": { - "description": "Returns a list of Branches with Address, Latitude and Longitude.
Optional parameters include search filters, latitude, longitude and radius of search.
", - "summary": "List of Branches", - "operationId": "branches", - "tags": [ - "opendata" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/BranchesResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [], - "parameters": [ - { - "in": "query", - "name": "latitude", - "description": "Latitude of the place around which you want to find Branches. If latitude is provided, longitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "longitude", - "description": "Longitude of the place around which you want to find Branches. If longitude is provided, latitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "radius", - "description": "This is the radius (in meters) from the search point. If radius is provided, then latitude and longitude has to also be provided", - "type": "integer", - "required": false - }, - { - "in": "query", - "name": "wheelchair", - "description": "This is check (in boolean) to see if the Branch is accessible by wheelchair.", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "openingDay", - "description": "This is the day of the week on which the Branch needs to be checked if open", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "openAt", - "description": "This is the time (in minute format) at which the Branch needs to be checked if open on a particular week day", - "type": "string", - "required": false - } - ] - } - } - }, - "definitions": { - "AtmsResponse": { - "description": "List of ATM Locations", - "type": "object", - "properties": { - "AtmId": { - "type": "string", - "description": "Unique ATM Id " - }, - "AtmServices": { - "type": "string", - "description": "Types of service atm provide" - }, - "Address": { - "type": "object", - "description": "Address of the ATM" - }, - "Currency": { - "type": "string", - "description": "Currency of notes that is disposed by the ATM." - }, - "Location": { - "type": "object", - "description": "Latitude + Longitude of the ATM." - }, - "LocationCategory": { - "type": "string", - "description": "Location category" - }, - "MinimumValueDispensed": { - "type": "string", - "description": "Minimum amount dispensed" - }, - "Organisation": { - "type": "object", - "description": "Organization to which the ATM belongs" - }, - "SiteName": { - "type": "string", - "description": "Site of ATM" - }, - "SupportedLanguages": { - "type": "array", - "items" : { - "type":"string" - }, - "description": "Languages supported" - } - }, - "xml": { - "name": "AtmsResponse" - } - }, - "BranchesResponse": { - "description": "List of Branch Locations", - "type": "object", - "properties": { - "BranchIdentification": { - "type": "string", - "description": "Unique Identification of the Branch." - }, - "Address": { - "type": "string", - "description": "Address of the Branch." - }, - "Access": { - "type": "object", - "description": "Available accessibility features of the Branch." - }, - "Location": { - "type": "object", - "description": "Latitude + Longitude of the Branch." - }, - "AtmAtBranch": { - "type": "string", - "description": "Determines if ATM is available at the branch" - }, - "BranchName": { - "type": "string", - "description": "Name of branch" - }, - "BranchMediatedServiceName": { - "type": "string", - "description": "name of branch service mediator" - }, - "BranchPhoto": { - "type": "string", - "description": "link for branch photo" - }, - "BranchType": { - "type": "string", - "description": "type of branch" - }, - "CustomerSegment": { - "type": "array", - "items" : - { - "type" : "string" - }, - "description": "category of customers which the branch addresses" - }, - "FaxNumber": { - "type": "string", - "description": "fax number of branch" - }, - "OpeningTimes": { - "type": "array", - "items" : - { - "type" : "string" - }, - "description": "opening times of the branch" - }, - "Organisation": { - "type": "object", - "description": "Organisation details of branch" - }, - "TelephoneNumber": { - "type": "object", - "description": "Contact number of the branch" - } - }, - "xml": { - "name": "BranchesResponse" - } - } - } -} - diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-locations.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-locations.json.template deleted file mode 100644 index 81604488..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-locations.json.template +++ /dev/null @@ -1,298 +0,0 @@ -{ - "swagger": "2.0", - "host": "{{ host }}", - "schemes": [ - "https" - ], - "info": { - "description": "Locations API", - "title": "List of Branch and ATM Locations", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/locations", - "paths": { - "/atms": { - "get": { - "description": "Returns a list of ATMs with Address, Latitude and Longitude.
Optional parameters include search filters, latitude, longitude and radius of search.
", - "summary": "List of atms", - "operationId": "atms", - "tags": [ - "opendata" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/AtmsResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [], - "parameters": [ - { - "in": "query", - "name": "latitude", - "description": "Latitude of the place around which you want to find ATMs. If latitude is provided, longitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "longitude", - "description": "Longitude of the place around which you want to find ATMs. If longitude is provided, latitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "radius", - "description": "This is the radius (in meters) from the search point. If radius is provided, then latitude and longitude has to also be provided", - "type": "integer", - "required": false - }, - { - "in": "query", - "name": "wheelchair", - "description": "This is check (in boolean) to see if the ATM is accessible by wheelchair", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "isWithdrawalCharged", - "description": "This is to check whether withdrawal of money from this ATM will be charged.", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "currency", - "description": "The currency required", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "status", - "description": "This is to check if the ATM is currently available for withdrawing money.", - "type": "string", - "required": false - } - ] - } - }, - "/branches": { - "get": { - "description": "Returns a list of Branches with Address, Latitude and Longitude.
Optional parameters include search filters, latitude, longitude and radius of search.
", - "summary": "List of Branches", - "operationId": "branches", - "tags": [ - "opendata" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/BranchesResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [], - "parameters": [ - { - "in": "query", - "name": "latitude", - "description": "Latitude of the place around which you want to find Branches. If latitude is provided, longitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "longitude", - "description": "Longitude of the place around which you want to find Branches. If longitude is provided, latitude must also be provided.", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "radius", - "description": "This is the radius (in meters) from the search point. If radius is provided, then latitude and longitude has to also be provided", - "type": "integer", - "required": false - }, - { - "in": "query", - "name": "wheelchair", - "description": "This is check (in boolean) to see if the Branch is accessible by wheelchair.", - "type": "boolean", - "required": false - }, - { - "in": "query", - "name": "openingDay", - "description": "This is the day of the week on which the Branch needs to be checked if open", - "type": "string", - "required": false - }, - { - "in": "query", - "name": "openAt", - "description": "This is the time (in minute format) at which the Branch needs to be checked if open on a particular week day", - "type": "string", - "required": false - } - ] - } - } - }, - "definitions": { - "AtmsResponse": { - "description": "List of ATM Locations", - "type": "object", - "properties": { - "AtmId": { - "type": "string", - "description": "Unique ATM Id " - }, - "AtmServices": { - "type": "string", - "description": "Types of service atm provide" - }, - "Address": { - "type": "object", - "description": "Address of the ATM" - }, - "Currency": { - "type": "string", - "description": "Currency of notes that is disposed by the ATM." - }, - "Location": { - "type": "object", - "description": "Latitude + Longitude of the ATM." - }, - "LocationCategory": { - "type": "string", - "description": "Location category" - }, - "MinimumValueDispensed": { - "type": "string", - "description": "Minimum amount dispensed" - }, - "Organisation": { - "type": "object", - "description": "Organization to which the ATM belongs" - }, - "SiteName": { - "type": "string", - "description": "Site of ATM" - }, - "SupportedLanguages": { - "type": "array", - "items" : { - "type":"string" - }, - "description": "Languages supported" - } - }, - "xml": { - "name": "AtmsResponse" - } - }, - "BranchesResponse": { - "description": "List of Branch Locations", - "type": "object", - "properties": { - "BranchIdentification": { - "type": "string", - "description": "Unique Identification of the Branch." - }, - "Address": { - "type": "string", - "description": "Address of the Branch." - }, - "Access": { - "type": "object", - "description": "Available accessibility features of the Branch." - }, - "Location": { - "type": "object", - "description": "Latitude + Longitude of the Branch." - }, - "AtmAtBranch": { - "type": "string", - "description": "Determines if ATM is available at the branch" - }, - "BranchName": { - "type": "string", - "description": "Name of branch" - }, - "BranchMediatedServiceName": { - "type": "string", - "description": "name of branch service mediator" - }, - "BranchPhoto": { - "type": "string", - "description": "link for branch photo" - }, - "BranchType": { - "type": "string", - "description": "type of branch" - }, - "CustomerSegment": { - "type": "array", - "items" : - { - "type" : "string" - }, - "description": "category of customers which the branch addresses" - }, - "FaxNumber": { - "type": "string", - "description": "fax number of branch" - }, - "OpeningTimes": { - "type": "array", - "items" : - { - "type" : "string" - }, - "description": "opening times of the branch" - }, - "Organisation": { - "type": "object", - "description": "Organisation details of branch" - }, - "TelephoneNumber": { - "type": "object", - "description": "Contact number of the branch" - } - }, - "xml": { - "name": "BranchesResponse" - } - } - } -} - diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json deleted file mode 100644 index 9519c187..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "swagger": "2.0", - "host": "testdemorrai-test.apigee.net", - "schemes": [ - "https" - - ], - "info": { - "description": "Products API", - "title": "List of Bank Products", - "version": "1.0.0", - "contact": { - "name": "API Docs", - "email": "api-solutions@google.com" - - }, - "license": { - "name": "Apache 2.0" - - } - - }, - "basePath": "/apis/v2", - "paths": { - "/products": { - "get": { - "description": "Returns a list of Products that this bank offers.
", - "summary": "List of products", - "tags": [ - "opendata", - "products" - - ], - "produces": [ - "application/json; charset=utf-8" - - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ProductsResponse" - - } - - } - - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/Error" - - } - - } - - } - - } - - } - - }, - "definitions": { - "ProductsResponse": { - "description": "List of available products", - "type": "array", - "items": { - "$ref": "#/definitions/Product" - - }, - "xml": { - "name": "ProductsResponse" - - } - - }, - "Product": { - "description": "Single Product Item", - "type": "object", - "properties": { - "Id": { - "type": "string", - "description": "Unique identifier for this product" - - }, - "Name": { - "type": "string", - "description": "Name of the product offered" - - }, - "Category": { - "type": "string", - "description": "Classification of the product offering" - - }, - "Sub-category": { - "type": "object", - "description": "Sub-category of classification of this product" - - }, - "Landing-page": { - "type": "string", - "description": "Landing page for this product" - - }, - "More-info": { - "type": "object", - "description": "Additional information about the product" - - } - - } - - }, - "Error": { - "type": "object", - "properties": { - "Code": { - "type": "integer", - "format": "int32" - - }, - "Message": { - "type": "string" - - }, - "Fields": { - "type": "string" - - } - - } - - } - - } - -} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json.template deleted file mode 100644 index 333d3ebd..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/opendata-products.json.template +++ /dev/null @@ -1,142 +0,0 @@ -{ - "swagger": "2.0", - "host": "{{ host }}", - "schemes": [ - "https" - - ], - "info": { - "description": "Products API", - "title": "List of Bank Products", - "version": "1.0.0", - "contact": { - "name": "API Docs", - "email": "api-solutions@google.com" - - }, - "license": { - "name": "Apache 2.0" - - } - - }, - "basePath": "/apis/v2", - "paths": { - "/products": { - "get": { - "description": "Returns a list of Products that this bank offers.
", - "summary": "List of products", - "tags": [ - "opendata", - "products" - - ], - "produces": [ - "application/json; charset=utf-8" - - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/ProductsResponse" - - } - - } - - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/Error" - - } - - } - - } - - } - - } - - }, - "definitions": { - "ProductsResponse": { - "description": "List of available products", - "type": "array", - "items": { - "$ref": "#/definitions/Product" - - }, - "xml": { - "name": "ProductsResponse" - - } - - }, - "Product": { - "description": "Single Product Item", - "type": "object", - "properties": { - "Id": { - "type": "string", - "description": "Unique identifier for this product" - - }, - "Name": { - "type": "string", - "description": "Name of the product offered" - - }, - "Category": { - "type": "string", - "description": "Classification of the product offering" - - }, - "Sub-category": { - "type": "object", - "description": "Sub-category of classification of this product" - - }, - "Landing-page": { - "type": "string", - "description": "Landing page for this product" - - }, - "More-info": { - "type": "object", - "description": "Additional information about the product" - - } - - } - - }, - "Error": { - "type": "object", - "properties": { - "Code": { - "type": "integer", - "format": "int32" - - }, - "Message": { - "type": "string" - - }, - "Fields": { - "type": "string" - - } - - } - - } - - } - -} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json deleted file mode 100644 index 561669ce..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json +++ /dev/null @@ -1,584 +0,0 @@ -{ - "swagger": "2.0", - "host": "testdemorrai-test.apigee.net", - "schemes": [ - "https" - ], - "info": { - "description": "Payment Transfer API", - "title": "Payment Transfer", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/payments", - "paths": { - "/payments": { - "post": { - "description": "This API call is made to make a payment request and fetch its Payment Request Id, which will further be used for making payment submissions
", - "summary": "POST Payment Request", - "operationId": "POST Payment Request", - "tags": [ - "POST Payment Request" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using grant_type as 'client_credentials' (App credential based authorization) using Oauth API", - "type": "string", - "required": true - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "X-Idempotency-Key", - "in": "header", - "description": "Unique key for the payment request, using which only one payment request can be created in a given time period", - "type": "string", - "required": true - }, - { - "name": "PaymentRequest", - "in": "body", - "description": "Payment Request details", - "schema": { - "$ref": "#/definitions/NewPaymentRequest" - }, - "required": true - } - ] - } - }, - "/payments/{PaymentId}": { - "get": { - "description": "This API call is made to get a previously made payment request based on a Payment Request Id, which will further be used for making payment submissions
", - "summary": "GET Payment Request", - "operationId": "GET Payment Request", - "tags": [ - "GET Payment Request" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using Oauth API", - "type": "string", - "required": true - }, - { - "name": "PaymentId", - "in": "path", - "type" : "string", - "description": "Payment Request Id", - "required": true - } - ] - } - }, - "/payment-submissions": { - "post": { - "description": "This API call is made to make a payment submission for a previously created payment Request
", - "summary": "POST Payment Submission", - "operationId": "POST Payment Submission", - "tags": [ - "POST Payment Submission" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentSubResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "pisp_auth": ["payments"] - }], - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token is obtained using grant_type as 'authorization_code' (App credential based authorization) using Oauth API", - "type": "string" - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "PaymentSubmission", - "in": "body", - "description": "Payment Submission details", - "schema": { - "$ref": "#/definitions/NewPaymentSubmission" - }, - "required": true - } - ] - } - }, - "/payment-submissions/{PaymentSubmissionId}": { - "get": { - "description": "This API call is made to get a previously made payment Submission based on a Payment Submission Id
", - "summary": "GET Payment Submission", - "operationId": "GET Payment Submission", - "tags": [ - "GET Payment Submission" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentSubResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using Oauth API", - "type": "string", - "required": true - }, - { - "name": "PaymentSubmissionId", - "in": "path", - "type" : "string", - "description": "Payment Submission Id", - "required": true - } - ] - } - } - }, - "securityDefinitions": { - "pisp_auth": { - "type": "oauth2", - "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/authorize?client_id=ljIcpckr2HyRqkAluHX3BiTEUzGjFbev&redirect_uri=http://localhost/&response_type=code&state=af0ifjsldkj&scope=payments&acr_values=2&request_id=firstpaymentrequest", - "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "payments" : "PISP apis" - } - } - }, - "definitions": { - "NewPaymentRequest": { - "type": "object", - "description": "New Payments Request", - "properties": { - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "NewPaymentRequest" - } - }, - "PaymentReqResponse": { - "type": "object", - "description": "New Payments Request", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique identification for the payment request " - }, - "Status": { - "type": "string", - "description": "status of the payment request" - }, - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "PaymentReqResponse" - } - }, - "NewPaymentSubmission": { - "type": "object", - "description": "New Payments Request", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique identification for the payment request " - }, - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "NewPaymentSubmission" - } - }, - "PaymentSubResponse": { - "description": "Payment Submission Response", - "type": "object", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique Payment Request Id" - }, - "PaymentSubmissionId": { - "type": "string", - "description": "Unique Payment Submission Id" - }, - "Status": { - "type": "string", - "description": "Status of payment submission" - } - }, - "xml": { - "name": "PaymentSubResponse" - } - } - } -} - diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json.template deleted file mode 100644 index 6a3bac50..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentsV2.json.template +++ /dev/null @@ -1,584 +0,0 @@ -{ - "swagger": "2.0", - "host": "{{ host }}", - "schemes": [ - "https" - ], - "info": { - "description": "Payment Transfer API", - "title": "Payment Transfer", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/payments", - "paths": { - "/payments": { - "post": { - "description": "This API call is made to make a payment request and fetch its Payment Request Id, which will further be used for making payment submissions
", - "summary": "POST Payment Request", - "operationId": "POST Payment Request", - "tags": [ - "POST Payment Request" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using grant_type as 'client_credentials' (App credential based authorization) using Oauth API", - "type": "string", - "required": true - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "X-Idempotency-Key", - "in": "header", - "description": "Unique key for the payment request, using which only one payment request can be created in a given time period", - "type": "string", - "required": true - }, - { - "name": "PaymentRequest", - "in": "body", - "description": "Payment Request details", - "schema": { - "$ref": "#/definitions/NewPaymentRequest" - }, - "required": true - } - ] - } - }, - "/payments/{PaymentId}": { - "get": { - "description": "This API call is made to get a previously made payment request based on a Payment Request Id, which will further be used for making payment submissions
", - "summary": "GET Payment Request", - "operationId": "GET Payment Request", - "tags": [ - "GET Payment Request" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentReqResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using Oauth API", - "type": "string", - "required": true - }, - { - "name": "PaymentId", - "in": "path", - "type" : "string", - "description": "Payment Request Id", - "required": true - } - ] - } - }, - "/payment-submissions": { - "post": { - "description": "This API call is made to make a payment submission for a previously created payment Request
", - "summary": "POST Payment Submission", - "operationId": "POST Payment Submission", - "tags": [ - "POST Payment Submission" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentSubResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [{ - "pisp_auth": ["payments"] - }], - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token is obtained using grant_type as 'authorization_code' (App credential based authorization) using Oauth API", - "type": "string" - }, - { - "name": "Content-Type", - "in": "header", - "description": "Content-Type application/json", - "type": "string", - "default": "application/json", - "required": true - }, - { - "name": "PaymentSubmission", - "in": "body", - "description": "Payment Submission details", - "schema": { - "$ref": "#/definitions/NewPaymentSubmission" - }, - "required": true - } - ] - } - }, - "/payment-submissions/{PaymentSubmissionId}": { - "get": { - "description": "This API call is made to get a previously made payment Submission based on a Payment Submission Id
", - "summary": "GET Payment Submission", - "operationId": "GET Payment Submission", - "tags": [ - "GET Payment Submission" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/PaymentSubResponse" - } - }, - "400": { - "description": "Bad Request" - } - }, - "parameters": [{ - "in": "header", - "name": "Authorization", - "description": "This is Mandatory parameter. Authorization Bearer {token}; token obtained using Oauth API", - "type": "string", - "required": true - }, - { - "name": "PaymentSubmissionId", - "in": "path", - "type" : "string", - "description": "Payment Submission Id", - "required": true - } - ] - } - } - }, - "securityDefinitions": { - "pisp_auth": { - "type": "oauth2", - "authorizationUrl": "{{ host_withprotocol }}/apis/v2/oauth/authorize?client_id={{ client_id_pisp }}&redirect_uri={{ edge_host }}/v1/o/{{ org }}/apimodels/paymentsapisv2/templateauths/pisp_auth/callback&response_type=code&state=af0ifjsldkj&scope=payments&acr_values=2&request_id=firstpaymentrequest", - "tokenUrl": "{{ host_withprotocol }}/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "payments" : "PISP apis" - } - } - }, - "definitions": { - "NewPaymentRequest": { - "type": "object", - "description": "New Payments Request", - "properties": { - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "NewPaymentRequest" - } - }, - "PaymentReqResponse": { - "type": "object", - "description": "New Payments Request", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique identification for the payment request " - }, - "Status": { - "type": "string", - "description": "status of the payment request" - }, - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "PaymentReqResponse" - } - }, - "NewPaymentSubmission": { - "type": "object", - "description": "New Payments Request", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique identification for the payment request " - }, - "InstructionIdentification": { - "type": "string", - "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. " - }, - "EndToEndIdentification": { - "type": "string", - "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. " - }, - "RemittanceInformation": { - "type": "object", - "properties": { - "CreditorReferenceInformation": { - "type": "string", - "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money." - }, - "Unstructured": { - "type": "string", - "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form." - } - } - }, - "InstructedAmount": { - "type": "object", - "properties": { - "Amount": { - "type": "string", - "description": "Amount To be transferred" - }, - "Currency": { - "type": "string", - "description": "A code allocated to a currency by a Maintenance Agency " - } - } - }, - "DebtorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAgent": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the servicing institution of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - } - } - }, - "CreditorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of account of creditor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the creditor account, as assigned by the account servicing institution" - } - } - - }, - "DebtorAccount": { - "type": "object", - "properties": { - "Identification": { - "type": "string", - "description": "Unique and unambiguous identification of the account of debtor." - }, - "SchemeName": { - "type": "string", - "description": "Name of the identification scheme, in a coded form as published in an external list." - }, - "Name": { - "type": "string", - "description": "Name of the debtor account, as assigned by the account servicing institution" - } - } - - }, - "MerchantCategoryCode": { - "type": "string", - "description": "Category code of merchant" - } - }, - "xml": { - "name": "NewPaymentSubmission" - } - }, - "PaymentSubResponse": { - "description": "Payment Submission Response", - "type": "object", - "properties": { - "PaymentId": { - "type": "string", - "description": "Unique Payment Request Id" - }, - "PaymentSubmissionId": { - "type": "string", - "description": "Unique Payment Submission Id" - }, - "Status": { - "type": "string", - "description": "Status of payment submission" - } - }, - "xml": { - "name": "PaymentSubResponse" - } - } - } -} - diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json new file mode 100644 index 00000000..69495141 --- /dev/null +++ b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json @@ -0,0 +1,1666 @@ +{ + "swagger": "2.0", + "host": "testdemorrai-test.apigee.net", + "info": { + "title": "Payment Initiation API Specification", + "description": "Swagger for Payment Initiation API Specification", + "termsOfService": "https://www.openbanking.org.uk/terms", + "contact": { + "name": "Service Desk", + "email": "ServiceDesk@openbanking.org.uk" + }, + "license": { + "name": "open-licence", + "url": "https://www.openbanking.org.uk/open-licence" + }, + "version": "v1.1.0" + }, + "basePath": "/pis/open-banking/v1.0", + "schemes": [ + "https" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "paths": { + "/payments": { + "post": { + "tags": [ + "Payments" + ], + "summary": "Create a single immediate payment", + "description": "Create a single immediate payment", + "operationId": "CreateSingleImmediatePayment", + "consumes": [ + "application/json; charset=utf-8" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "x-idempotency-key", + "in": "header", + "description": "Every request will be processed only once per x-idempotency-key. The Idempotency Key will be valid for 24 hours.", + "required": true, + "type": "string", + "default" : "12345", + "pattern": "^(?!\\s)(.*)(\\S)$", + "maxLength": 40 + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containing a detached JWS signature of the body of the payload." + }, + { + "name": "body", + "in": "body", + "description": "Setup a single immediate payment", + "required": true, + "schema": { + "$ref": "#/definitions/PaymentRequest" + } + } + ], + "responses": { + "201": { + "description": "Payment setup resource successfully created", + "schema": { + + "$ref": "#/definitions/PaymentResponse" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + } + } + }, + "/payments/{PaymentId}": { + "get": { + "tags": [ + "Payments" + ], + "summary": "Get a single immediate payment", + "description": "Get a single immediate payment", + "operationId": "GetSingleImmediatePayment", + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "PaymentId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Payment resource successfully retrieved", + "schema": { + + "$ref": "#/definitions/PaymentResponse" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments" + ] + } + ] + } + }, + "/payment-submissions": { + "post": { + "tags": [ + "Payments" + ], + "summary": "Create a payment submission", + "description": "Submit a previously setup payment", + "operationId": "CreatePaymentSubmission", + "consumes": [ + "application/json; charset=utf-8" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "x-idempotency-key", + "in": "header", + "description": "Every request will be processed only once per x-idempotency-key. The Idempotency Key will be valid for 24 hours.", + "required": true, + "type": "string", + "default" : "12345", + "pattern": "^(?!\\s)(.*)(\\S)$", + "maxLength": 40 + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "default" : "123456", + "required": true, + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containing a detached JWS signature of the body of the payload." + }, + { + "name": "body", + "in": "body", + "description": "Setup a single immediate payment", + "required": true, + "schema": { + "$ref": "#/definitions/PaymentSubmissionRequest" + } + } + ], + "responses": { + "201": { + "description": "Payment submit resource successfully created", + "schema": { + + "$ref": "#/definitions/PaymentSubmissionResponse" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments", "openid" + ] + } + ] + } + }, + "/payment-submissions/{PaymentSubmissionId}": { + "get": { + "tags": [ + "Payments" + ], + "summary": "Get a payment submission", + "description": "Get payment submission", + "operationId": "GetPaymentSubmission", + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "PaymentSubmissionId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the payment submission resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "default":"123456", + "required": true, + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Payment resource successfully retrieved", + "schema": { + + "$ref": "#/definitions/PaymentSubmissionResponse" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments" + ] + } + ] + } + } + }, + "securityDefinitions": { + "PSUOAuth2Security": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/token", + "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v1.0/oauth/authorize?response_type=code&client_id=WN6WqzK7iMrexdi7wGMGMx77eRVbYWKG&state=abcd1234&scope=openid payments&redirect_uri=https://api.enterprise.apigee.com/v1/o/testdemorrai/apimodels/payments-apis-v1-0/templateauths/PSUOAuth2Security/callback", + "scopes": { + "payments": "Generic payment scope", + "openid" : "openId" + }, + "description": "OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU" + } + }, + "tags": [ + { + "name": "Payments", + "description": "Payments endpoints" + } + ], + "responses": { + "400ErrorResponse": { + "description": "Bad Request" + }, + "401ErrorResponse": { + "description": "Unauthorized" + }, + "403ErrorResponse": { + "description": "Forbidden" + }, + "405ErrorResponse": { + "description": "Method Not Allowed" + }, + "406ErrorResponse": { + "description": "Not Acceptable" + }, + "429ErrorResponse": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "definitions": + { + "PaymentResponse": + { + "title": "Payment setup POST response", + "type": "object", + "properties": { + "Data": { + "description": "Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp", + "title": "PaymentSetupResponse", + "type": "object", + "properties": { + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the payment resource.", + "title": "PaymentStatusCode", + "type": "string", + "enum": [ + "AcceptedCustomerProfile", + "AcceptedTechnicalValidation", + "Pending", + "Rejected" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created. \nAll dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00", + "type": "string", + "format": "date-time" + }, + "Initiation": { + "description": "The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor.", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "PaymentId", + "CreationDateTime", + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "Reflection of POSTed Risk profile ", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "Links": { + "type": "object", + "description": "Link URIs relevant to the payload", + "properties": { + "Self": { + "type": "string", + "format": "uri" + }, + "First": { + "type": "string", + "format": "uri" + }, + "Prev": { + "type": "string", + "format": "uri" + }, + "Next": { + "type": "string", + "format": "uri" + }, + "Last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "Self" + ] + }, + "Meta": { + "type": "object", + "description": "Meta Data Relevant to the payload", + "properties": { + "TotalPages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk", + "Links", + "Meta" + ], + "additionalProperties": false + }, + "PaymentSubmissionResponse" : + { + "title": "Payment Submit POST 201 Response", + "type": "object", + "properties": { + "Data": { + "description": "Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp", + "title": "PaymentSetupResponse", + "type": "object", + "properties": { + "PaymentSubmissionId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment submission resource.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the payment resource.", + "title": "PaymentSubmissionStatusCode", + "type": "string", + "enum": [ + "AcceptedSettlementCompleted", + "AcceptedSettlementInProcess", + "Pending", + "Rejected" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created. \nAll dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00", + "type": "string", + "format": "date-time" + } + }, + "required": [ + "PaymentSubmissionId", + "PaymentId", + "CreationDateTime" + ], + "additionalProperties": false + }, + "Links": { + "type": "object", + "description": "Link URIs relevant to the payload", + "properties": { + "Self": { + "type": "string", + "format": "uri" + }, + "First": { + "type": "string", + "format": "uri" + }, + "Prev": { + "type": "string", + "format": "uri" + }, + "Next": { + "type": "string", + "format": "uri" + }, + "Last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "Self" + ] + }, + "Meta": { + "type": "object", + "description": "Meta Data Relevant to the payload", + "properties": { + "TotalPages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Links", + "Meta" + ], + "additionalProperties": false + + }, + "PaymentRequest" : { + "title": "Payment setup POST request", + "description": "Allows setup of a payment", + "type": "object", + "properties": { + "Data": { + "description": "", + "title": "PaymentSetup", + "type": "object", + "properties": { + "Initiation": { + "description": "", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk" + ], + "additionalProperties": false + }, + "PaymentSubmissionRequest" : + { + "title": "Payment Submission POST request", + "description": "Allows Submission of a payment", + "type": "object", + "properties": { + "Data": { + "description": "", + "title": "PaymentSubmission", + "type": "object", + "properties": { + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Initiation": { + "description": "The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor.", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "PaymentId", + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json.template new file mode 100644 index 00000000..ed1fb4fc --- /dev/null +++ b/src/devportal/all/modules/custom/openbank_swagger/swaggers/paymentv1-0.json.template @@ -0,0 +1,1666 @@ +{ + "swagger": "2.0", + "host": "{{ host }}", + "info": { + "title": "Payment Initiation API Specification", + "description": "Swagger for Payment Initiation API Specification", + "termsOfService": "https://www.openbanking.org.uk/terms", + "contact": { + "name": "Service Desk", + "email": "ServiceDesk@openbanking.org.uk" + }, + "license": { + "name": "open-licence", + "url": "https://www.openbanking.org.uk/open-licence" + }, + "version": "v1.1.0" + }, + "basePath": "/pis/open-banking/v1.0", + "schemes": [ + "https" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "paths": { + "/payments": { + "post": { + "tags": [ + "Payments" + ], + "summary": "Create a single immediate payment", + "description": "Create a single immediate payment", + "operationId": "CreateSingleImmediatePayment", + "consumes": [ + "application/json; charset=utf-8" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "x-idempotency-key", + "in": "header", + "description": "Every request will be processed only once per x-idempotency-key. The Idempotency Key will be valid for 24 hours.", + "required": true, + "type": "string", + "default" : "12345", + "pattern": "^(?!\\s)(.*)(\\S)$", + "maxLength": 40 + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containing a detached JWS signature of the body of the payload." + }, + { + "name": "body", + "in": "body", + "description": "Setup a single immediate payment", + "required": true, + "schema": { + "$ref": "#/definitions/PaymentRequest" + } + } + ], + "responses": { + "201": { + "description": "Payment setup resource successfully created", + "schema": { + + "$ref": "#/definitions/PaymentResponse" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + } + } + }, + "/payments/{PaymentId}": { + "get": { + "tags": [ + "Payments" + ], + "summary": "Get a single immediate payment", + "description": "Get a single immediate payment", + "operationId": "GetSingleImmediatePayment", + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "PaymentId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "required": true, + "default" : "123456", + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Payment resource successfully retrieved", + "schema": { + + "$ref": "#/definitions/PaymentResponse" + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments" + ] + } + ] + } + }, + "/payment-submissions": { + "post": { + "tags": [ + "Payments" + ], + "summary": "Create a payment submission", + "description": "Submit a previously setup payment", + "operationId": "CreatePaymentSubmission", + "consumes": [ + "application/json; charset=utf-8" + ], + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "x-idempotency-key", + "in": "header", + "description": "Every request will be processed only once per x-idempotency-key. The Idempotency Key will be valid for 24 hours.", + "required": true, + "type": "string", + "default" : "12345", + "pattern": "^(?!\\s)(.*)(\\S)$", + "maxLength": 40 + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "default" : "123456", + "required": true, + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "required": false, + "default" : "10.20.30.40", + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + }, + { + "in": "header", + "name": "x-jws-signature", + "type": "string", + "required": true, + "description": "Header containing a detached JWS signature of the body of the payload." + }, + { + "name": "body", + "in": "body", + "description": "Setup a single immediate payment", + "required": true, + "schema": { + "$ref": "#/definitions/PaymentSubmissionRequest" + } + } + ], + "responses": { + "201": { + "description": "Payment submit resource successfully created", + "schema": { + + "$ref": "#/definitions/PaymentSubmissionResponse" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments", "openid" + ] + } + ] + } + }, + "/payment-submissions/{PaymentSubmissionId}": { + "get": { + "tags": [ + "Payments" + ], + "summary": "Get a payment submission", + "description": "Get payment submission", + "operationId": "GetPaymentSubmission", + "produces": [ + "application/json; charset=utf-8" + ], + "parameters": [ + { + "name": "PaymentSubmissionId", + "in": "path", + "description": "Unique identification as assigned by the ASPSP to uniquely identify the payment submission resource.", + "required": true, + "type": "string" + }, + { + "in": "header", + "name": "x-fapi-financial-id", + "type": "string", + "default":"123456", + "required": true, + "description": "The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB." + }, + { + "in": "header", + "name": "x-fapi-customer-last-logged-time", + "type": "string", + "required": false, + "description": "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC", + "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$" + }, + { + "in": "header", + "name": "x-fapi-customer-ip-address", + "type": "string", + "default" : "10.20.30.40", + "required": false, + "description": "The PSU's IP address if the PSU is currently logged in with the TPP." + }, + { + "in": "header", + "name": "x-fapi-interaction-id", + "type": "string", + "required": false, + "description": "An RFC4122 UID used as a correlation id." + }, + { + "in": "header", + "name": "Authorization", + "type": "string", + "description": "An Authorisation Token as per https://tools.ietf.org/html/rfc6750" + } + ], + "responses": { + "200": { + "description": "Payment resource successfully retrieved", + "schema": { + + "$ref": "#/definitions/PaymentSubmissionResponse" + + }, + "headers": { + "x-jws-signature": { + "type": "string", + "description": "Header containing a detached JWS signature of the body of the payload." + }, + "x-fapi-interaction-id": { + "type": "string", + "description": "An RFC4122 UID used as a correlation id." + } + } + }, + "400": { + "description": "Bad Request" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "405": { + "description": "Method Not Allowed" + }, + "406": { + "description": "Not Acceptable" + }, + "429": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "security": [ + { + "PSUOAuth2Security": [ + "payments" + ] + } + ] + } + } + }, + "securityDefinitions": { + "PSUOAuth2Security": { + "type": "oauth2", + "flow": "accessCode", + "tokenUrl": "{{ host_withprotocol }}/apis/v1.0/oauth/token", + "authorizationUrl": "{{ host_withprotocol }}/apis/v1.0/oauth/authorize?response_type=code&client_id={{ client_id_pisp }}&state=abcd1234&scope=openid payments&redirect_uri=https://api.enterprise.apigee.com/v1/o/{{ org }}/apimodels/payments-apis-v1-0/templateauths/PSUOAuth2Security/callback", + "scopes": { + "payments": "Generic payment scope", + "openid" : "openId" + }, + "description": "OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU" + } + }, + "tags": [ + { + "name": "Payments", + "description": "Payments endpoints" + } + ], + "responses": { + "400ErrorResponse": { + "description": "Bad Request" + }, + "401ErrorResponse": { + "description": "Unauthorized" + }, + "403ErrorResponse": { + "description": "Forbidden" + }, + "405ErrorResponse": { + "description": "Method Not Allowed" + }, + "406ErrorResponse": { + "description": "Not Acceptable" + }, + "429ErrorResponse": { + "description": "Too Many Requests", + "headers": { + "Retry-After": { + "description": "Number in seconds to wait", + "type": "integer" + } + } + } + }, + "definitions": + { + "PaymentResponse": + { + "title": "Payment setup POST response", + "type": "object", + "properties": { + "Data": { + "description": "Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp", + "title": "PaymentSetupResponse", + "type": "object", + "properties": { + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the payment resource.", + "title": "PaymentStatusCode", + "type": "string", + "enum": [ + "AcceptedCustomerProfile", + "AcceptedTechnicalValidation", + "Pending", + "Rejected" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created. \nAll dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00", + "type": "string", + "format": "date-time" + }, + "Initiation": { + "description": "The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor.", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "PaymentId", + "CreationDateTime", + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "Reflection of POSTed Risk profile ", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "Links": { + "type": "object", + "description": "Link URIs relevant to the payload", + "properties": { + "Self": { + "type": "string", + "format": "uri" + }, + "First": { + "type": "string", + "format": "uri" + }, + "Prev": { + "type": "string", + "format": "uri" + }, + "Next": { + "type": "string", + "format": "uri" + }, + "Last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "Self" + ] + }, + "Meta": { + "type": "object", + "description": "Meta Data Relevant to the payload", + "properties": { + "TotalPages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk", + "Links", + "Meta" + ], + "additionalProperties": false + }, + "PaymentSubmissionResponse" : + { + "title": "Payment Submit POST 201 Response", + "type": "object", + "properties": { + "Data": { + "description": "Reflection of The Main Data Payload, with Created Resource ID, Status and Timestamp", + "title": "PaymentSetupResponse", + "type": "object", + "properties": { + "PaymentSubmissionId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment submission resource.", + "type": "string", + "minLength": 1, + "maxLength": 40 + }, + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Status": { + "description": "Specifies the status of the payment resource.", + "title": "PaymentSubmissionStatusCode", + "type": "string", + "enum": [ + "AcceptedSettlementCompleted", + "AcceptedSettlementInProcess", + "Pending", + "Rejected" + ] + }, + "CreationDateTime": { + "description": "Date and time at which the resource was created. \nAll dates in the JSON payloads are represented in ISO 8601 date-time format. \nAll date-time fields in responses must include the timezone. An example is below:\n2017-04-05T10:43:07+00:00", + "type": "string", + "format": "date-time" + } + }, + "required": [ + "PaymentSubmissionId", + "PaymentId", + "CreationDateTime" + ], + "additionalProperties": false + }, + "Links": { + "type": "object", + "description": "Link URIs relevant to the payload", + "properties": { + "Self": { + "type": "string", + "format": "uri" + }, + "First": { + "type": "string", + "format": "uri" + }, + "Prev": { + "type": "string", + "format": "uri" + }, + "Next": { + "type": "string", + "format": "uri" + }, + "Last": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": false, + "required": [ + "Self" + ] + }, + "Meta": { + "type": "object", + "description": "Meta Data Relevant to the payload", + "properties": { + "TotalPages": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Links", + "Meta" + ], + "additionalProperties": false + + }, + "PaymentRequest" : { + "title": "Payment setup POST request", + "description": "Allows setup of a payment", + "type": "object", + "properties": { + "Data": { + "description": "", + "title": "PaymentSetup", + "type": "object", + "properties": { + "Initiation": { + "description": "", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk" + ], + "additionalProperties": false + }, + "PaymentSubmissionRequest" : + { + "title": "Payment Submission POST request", + "description": "Allows Submission of a payment", + "type": "object", + "properties": { + "Data": { + "description": "", + "title": "PaymentSubmission", + "type": "object", + "properties": { + "PaymentId": { + "description": "OB: Unique identification as assigned by the ASPSP to uniquely identify the payment setup resource.", + "type": "string", + "minLength": 1, + "maxLength": 128 + }, + "Initiation": { + "description": "The Initiation payload is sent by the initiating party to the ASPSP. It is used to request movement of funds from the debtor account to a creditor.", + "type": "object", + "properties": { + "InstructionIdentification": { + "description": "Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. Usage: the instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "EndToEndIdentification": { + "description": "Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. OB: The Faster Payments Scheme can only access 31 characters for the EndToEndIdentification field.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "InstructedAmount": { + "description": "Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party. Usage: This amount has to be transported unchanged through the transaction chain.", + "type": "object", + "properties": { + "Amount": { + "type": "string", + "pattern": "^\\d{1,13}\\.\\d{1,5}$" + }, + "Currency": { + "description": "A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 - Codes for the representation of currencies and funds.", + "type": "string", + "pattern": "^[A-Z]{3,3}$" + } + }, + "required": [ + "Amount", + "Currency" + ], + "additionalProperties": false + }, + "DebtorAgent": { + "description": "Financial institution servicing an account for the debtor.", + "title": "DebtorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "DebtorAccount": { + "description": "Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.", + "title": "DebtorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAgent": { + "description": "Financial institution servicing an account for the creditor.", + "title": "CreditorAgent", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "BICFI" + ] + }, + "Identification": { + "description": "Unique and unambiguous identification of a person.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "required": [ + "SchemeName", + "Identification" + ], + "additionalProperties": false + }, + "CreditorAccount": { + "description": "Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.", + "title": "CreditorAccount", + "type": "object", + "properties": { + "SchemeName": { + "description": "Name of the identification scheme, in a coded form as published in an external list.", + "title": "SchemeName", + "type": "string", + "enum": [ + "IBAN", + "SortCodeAccountNumber" + ] + }, + "Identification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + }, + "Name": { + "description": "Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account. Usage: The account name is different from the account owner name. The account name is used in certain user communities to provide a means of identifying the account, in addition to the account owner's identity and the account number. ASPSPs may carry out name validation for Confirmation of Payee, but it is not mandatory.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "SecondaryIdentification": { + "description": "Identification assigned by an institution to identify an account. This identification is known by the account owner.", + "type": "string", + "minLength": 1, + "maxLength": 34 + } + }, + "required": [ + "SchemeName", + "Identification", + "Name" + ], + "additionalProperties": false + }, + "RemittanceInformation": { + "description": "Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an accounts' receivable system.", + "title": "RemittanceInformation", + "type": "object", + "properties": { + "Unstructured": { + "description": "Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts' receivable system, in an unstructured form.", + "type": "string", + "minLength": 1, + "maxLength": 140 + }, + "Reference": { + "description": "Unique reference, as assigned by the creditor, to unambiguously refer to the payment transaction. Usage: If available, the initiating party should provide this reference in the structured remittance information, to enable reconciliation by the creditor upon receipt of the amount of money. If the business context requires the use of a creditor reference or a payment remit identification, and only one identifier can be passed through the end-to-end chain, the creditor's reference or payment remittance identification should be quoted in the end-to-end transaction identification. OB: The Faster Payments Scheme can only accept 18 characters for the ReferenceInformation field - which is where this ISO field will be mapped.", + "type": "string", + "minLength": 1, + "maxLength": 35 + } + }, + "additionalProperties": false + } + }, + "required": [ + "InstructionIdentification", + "EndToEndIdentification", + "InstructedAmount", + "CreditorAccount" + ], + "additionalProperties": false + } + }, + "required": [ + "PaymentId", + "Initiation" + ], + "additionalProperties": false + }, + "Risk": { + "description": "", + "title": "Risk", + "type": "object", + "properties": { + "PaymentContextCode": { + "description": "Specifies the payment context", + "title": "PaymentContextCode", + "type": "string", + "enum": [ + "BillPayment", + "EcommerceGoods", + "EcommerceServices", + "Other", + "PersonToPerson" + ] + }, + "MerchantCategoryCode": { + "description": "Category code conforms to ISO 18245, related to the type of services or goods the merchant provides for the transaction", + "type": "string", + "minLength": 3, + "maxLength": 4 + }, + "MerchantCustomerIdentification": { + "description": "The unique customer identifier of the PSU with the merchant.", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "DeliveryAddress": { + "description": "Information that locates and identifies a specific address, as defined by postal services or in free format text.", + "type": "object", + "properties": { + "AddressLine": { + "description": "Information that locates and identifies a specific address, as defined by postal services, that is presented in free format text.", + "type": "array", + "items": { + "description": "maxLength 70 text", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "minItems": 0, + "maxItems": 2 + }, + "StreetName": { + "description": "Name of a street or thoroughfare", + "type": "string", + "minLength": 1, + "maxLength": 70 + }, + "BuildingNumber": { + "description": "Number that identifies the position of a building on a street.", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "PostCode": { + "description": "Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail", + "type": "string", + "minLength": 1, + "maxLength": 16 + }, + "TownName": { + "description": "Name of a built-up area, with defined boundaries, and a local government.", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "CountrySubDivision": { + "description": "Identifies a subdivision of a country, for instance state, region, county.", + "type": "array", + "items": { + "description": "maxLength 35 text", + "type": "string", + "minLength": 1, + "maxLength": 35 + }, + "minItems": 0, + "maxItems": 2 + }, + "Country": { + "description": "Nation with its own government, occupying a particular territory.", + "type": "string", + "pattern": "^[A-Z]{2,2}$" + } + }, + "required": [ + "TownName", + "Country" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "Data", + "Risk" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json b/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json deleted file mode 100644 index 39d17b69..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "swagger": "2.0", - "host": "testdemorrai-test.apigee.net", - "schemes": [ - "https" - ], - "info": { - "description": "UserInfo API", - "title": "User Info", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/userinfo", - "paths": { - "/acr:token": { - "get": { - "description": "Get details of logged-in customer, including name, address and contact information. The user is identified from the user Bearer Token.", - "summary": "User Info", - "operationId": "User Info", - "tags": [ - "UserInfo" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/UserInfo" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [ - { - "aisp_auth": [ - "openid" - ] - } - ], - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - } - ] - } - } - }, - "securityDefinitions": { - "aisp_auth": { - "type": "oauth2", - "authorizationUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/authorize?client_id=kFKyyXFnuV8VQ6y1vBhyVQtGQNNbrIG0&redirect_uri=http://localhost/&response_type=code&state=af0ifjsldkj&scope=openid&acr_values=2", - "tokenUrl": "https://testdemorrai-test.apigee.net/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "openid": "openID" - } - } - }, - "definitions": { - "UserInfo": { - "description": "This subset of OpenID Connect defines a set of standard Claims. They are returned in the UserInfo Response. https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims", - "type": "object", - "properties": { - "sub": { - "type": "string", - "description": "Subject - Identifier for the End-User at the Issuer." - }, - "customer_id": { - "type": "string", - "description": "Subject - Identifier for the End-User at the Issuer." - }, - "name": { - "type": "string", - "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences." - }, - "given_name": { - "type": "string", - "description": "Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters." - }, - "family_name": { - "type": "string", - "description": "Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters." - }, - "middle_name": { - "type": "string", - "description": "Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used." - }, - "nickname": { - "type": "string", - "description": "Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael." - }, - "preferred_username": { - "type": "string", - "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace. The RP MUST NOT rely upon this value being unique, as discussed in Section 2.5.3." - }, - "profile": { - "type": "string", - "description": "URL of the End-User's profile page. The contents of this Web page SHOULD be about the End-User." - }, - "picture": { - "type": "string", - "description": "URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User." - }, - "website": { - "type": "string", - "description": "URL of the End-User's Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with." - }, - "gender": { - "type": "string", - "description": "End-User's gender. Values defined by this document are female and male. Other values MAY be used when neither of the defined values are applicable." - }, - "birthday": { - "type": "string", - "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed. Note that depending on the underlying platform's date related function, providing just year can result in varying month and day, so the implementers need to take this factor into account to correctly process the dates." - }, - "zoneinfo": { - "type": "string", - "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone. For example, Europe/Paris or America/Los_Angeles." - }, - "locale": { - "type": "string", - "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639‑1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166‑1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well." - }, - "phone_number": { - "type": "string", - "description": "End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400. If the phone number contains an extension, it is RECOMMENDED that the extension be represented using the RFC 3966 [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678." - }, - "phone_number_verified": { - "type": "string", - "description": "True if the End-User's phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format." - }, - "email": { - "type": "string", - "description": "End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, as discussed in Section 2.5.3." - }, - "email_verified": { - "type": "string", - "description": "True if the End-User's e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context specific, and dependent upon the trust framework or contractual agreements within which the parties are operating." - }, - "formatted": { - "type": "string", - "description": "Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines." - }, - "house_name": { - "type": "string", - "description": "Street address component, which MAY include house number, house name." - }, - "street": { - "type": "string", - "description": "Street address component, which MAY include street name, Post Office Box, and multi-line extended street address information." - }, - "locality": { - "type": "string", - "description": "City or locality component." - }, - "region": { - "type": "string", - "description": "State, province, prefecture, or region component." - }, - "postal_code": { - "type": "string", - "description": "Zip code or postal code component." - }, - "country": { - "type": "string", - "description": "Country name component." - }, - "updated_at": { - "type": "string", - "description": "Time the End-User's information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T00:00:00Z as measured in UTC until the date/time." - } - }, - "xml": { - "name": "UserInfo" - } - } - } -} \ No newline at end of file diff --git a/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json.template b/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json.template deleted file mode 100644 index 6907ebf0..00000000 --- a/src/devportal/all/modules/custom/openbank_swagger/swaggers/userinfov2.json.template +++ /dev/null @@ -1,194 +0,0 @@ -{ - "swagger": "2.0", - "host": "{{ host }}", - "schemes": [ - "https" - ], - "info": { - "description": "UserInfo API", - "title": "User Info", - "version": "0.0.1", - "termsOfService": "http://example.com/about/terms", - "contact": { - "name": "API Docs", - "url": "http://example.com/contact", - "email": "solution-ninjas@google.com" - }, - "license": { - "name": "Apache 2.0", - "url": "http://example.com" - } - }, - "basePath": "/apis/v2/userinfo", - "paths": { - "/acr:token": { - "get": { - "description": "Get details of logged-in customer, including name, address and contact information. The user is identified from the user Bearer Token.", - "summary": "User Info", - "operationId": "User Info", - "tags": [ - "UserInfo" - ], - "produces": [ - "application/json; charset=utf-8" - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/UserInfo" - } - }, - "400": { - "description": "Bad Request" - } - }, - "security": [ - { - "aisp_auth": [ - "openid" - ] - } - ], - "parameters": [ - { - "name": "Authorization", - "in": "header", - "description": "Authorization Bearer Token", - "type": "string" - } - ] - } - } - }, - "securityDefinitions": { - "aisp_auth": { - "type": "oauth2", - "authorizationUrl": "{{ host_withprotocol }}/apis/v2/oauth/authorize?client_id={{ client_id_openid }}&redirect_uri={{ edge_host }}/v1/o/{{ org }}/apimodels/userinfoapis/templateauths/aisp_auth/callback&response_type=code&state=af0ifjsldkj&scope=openid&acr_values=2", - "tokenUrl": "{{ host_withprotocol }}/apis/v2/oauth/token", - "flow": "accessCode", - "scopes": { - "openid": "openID" - } - } - }, - "definitions": { - "UserInfo": { - "description": "This subset of OpenID Connect defines a set of standard Claims. They are returned in the UserInfo Response. https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims", - "type": "object", - "properties": { - "sub": { - "type": "string", - "description": "Subject - Identifier for the End-User at the Issuer." - }, - "customer_id": { - "type": "string", - "description": "Subject - Identifier for the End-User at the Issuer." - }, - "name": { - "type": "string", - "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences." - }, - "given_name": { - "type": "string", - "description": "Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters." - }, - "family_name": { - "type": "string", - "description": "Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters." - }, - "middle_name": { - "type": "string", - "description": "Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used." - }, - "nickname": { - "type": "string", - "description": "Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael." - }, - "preferred_username": { - "type": "string", - "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace. The RP MUST NOT rely upon this value being unique, as discussed in Section 2.5.3." - }, - "profile": { - "type": "string", - "description": "URL of the End-User's profile page. The contents of this Web page SHOULD be about the End-User." - }, - "picture": { - "type": "string", - "description": "URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User." - }, - "website": { - "type": "string", - "description": "URL of the End-User's Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with." - }, - "gender": { - "type": "string", - "description": "End-User's gender. Values defined by this document are female and male. Other values MAY be used when neither of the defined values are applicable." - }, - "birthday": { - "type": "string", - "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed. Note that depending on the underlying platform's date related function, providing just year can result in varying month and day, so the implementers need to take this factor into account to correctly process the dates." - }, - "zoneinfo": { - "type": "string", - "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone. For example, Europe/Paris or America/Los_Angeles." - }, - "locale": { - "type": "string", - "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639‑1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166‑1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well." - }, - "phone_number": { - "type": "string", - "description": "End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400. If the phone number contains an extension, it is RECOMMENDED that the extension be represented using the RFC 3966 [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678." - }, - "phone_number_verified": { - "type": "string", - "description": "True if the End-User's phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format." - }, - "email": { - "type": "string", - "description": "End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax. The RP MUST NOT rely upon this value being unique, as discussed in Section 2.5.3." - }, - "email_verified": { - "type": "string", - "description": "True if the End-User's e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context specific, and dependent upon the trust framework or contractual agreements within which the parties are operating." - }, - "formatted": { - "type": "string", - "description": "Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines." - }, - "house_name": { - "type": "string", - "description": "Street address component, which MAY include house number, house name." - }, - "street": { - "type": "string", - "description": "Street address component, which MAY include street name, Post Office Box, and multi-line extended street address information." - }, - "locality": { - "type": "string", - "description": "City or locality component." - }, - "region": { - "type": "string", - "description": "State, province, prefecture, or region component." - }, - "postal_code": { - "type": "string", - "description": "Zip code or postal code component." - }, - "country": { - "type": "string", - "description": "Country name component." - }, - "updated_at": { - "type": "string", - "description": "Time the End-User's information was last updated. Its value is a JSON number representing the number of seconds from 1970-01-01T00:00:00Z as measured in UTC until the date/time." - } - }, - "xml": { - "name": "UserInfo" - } - } - } -} \ No newline at end of file diff --git a/src/devportal/all/modules/home_page_blocks/home_page_blocks.features.fe_block_boxes.inc b/src/devportal/all/modules/home_page_blocks/home_page_blocks.features.fe_block_boxes.inc index 3ce43189..6b57e5c2 100644 --- a/src/devportal/all/modules/home_page_blocks/home_page_blocks.features.fe_block_boxes.inc +++ b/src/devportal/all/modules/home_page_blocks/home_page_blocks.features.fe_block_boxes.inc @@ -33,7 +33,7 @@ function home_page_blocks_default_fe_block_boxes() { ->>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o >>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join("")},parse:function(p){var n=p.length;var q=[];for(var o=0;o >>0?1:0),b=b+c,j=j+u+(b>>>0 >>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a< =0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;
+this._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;
+return(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,
+blockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a,
+b,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}();
+
+/*
+CryptoJS v3.1.2 aes.js
+code.google.com/p/crypto-js
+(c) 2009-2013 by Jeff Mott. All rights reserved.
+code.google.com/p/crypto-js/wiki/License
+*/
+(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8,
+16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h