--- swagger: "2.0" info: version: 1.0.4 title: BT - BG PSD2 PISP API description: "# Summary\nThe **NextGenPSD2** *Framework Version 1.2* offers a modern, open, harmonised and interoperable set of \nApplication Programming Interfaces (APIs) as the safest and most efficient way to provide data securely. \nThe NextGenPSD2 Framework reduces XS2A complexity and costs, addresses the problem of multiple competing standards \nin Europe and, aligned with the goals of the Euro Retail Payments Board,\nenables European banking customers to benefit from innovative products and services ('Banking as a Service') \nby granting TPPs safe and secure (authenticated and authorised) access to their bank accounts and financial data.\n\nThe BT chosen approach is:\n * OAuth SCA Approach\n\n Futhermore this API definition contains only a subset of the methods, the ones which are mandatory or which are applicable in the BT ecosystem.\n \n## Some General Remarks Related to this version of the OpenAPI Specification:\n* **This API definition is based on the Implementation Guidelines of the Berlin Group PSD2 API.** \n It is not an replacement in any sense.\n The main specification is (at the moment) allways the Implementation Guidelines of the Berlin Group PSD2 API.\n* **This API definition contains the REST-API for requests from the PISP to the ASPSP.**\n* **This API definition contains the messages for all different approaches defined in the Implementation Guidelines.**\n*\n\nChangelog:\n- Dynamic generation of paymentId\n- tppMessages error parameter is array instead of object\n- GET Payment Details and GET Payment status paths now include the payment-product parameter (support values: ron-payment, other-currency-payment)\n- various minor corrections and additions" x-ibm-name: bt-bg-psd2-pisp-api host: psd03cj099.bt.wan basePath: /bt-psd2 schemes: - https consumes: - application/json produces: - application/json paths: /v2/{payment-service}/{payment-product}: post: description: "This method is used to initiate a payment at the ASPSP.\n\n## Variants of Payment Initiation Requests\n\nThis method to initiate a payment initiation at the ASPSP can be sent with a JSON body for the payment product in the path.\n\nThere are the following **payment products**:\n\n - Payment products with payment information in *JSON* format:\n - ***ron-payment***\n \ - ***other-currency-payment***\n\nFurthermore the request body depends on the **payment-service**\n * ***payments***: A single payment initiation request.\n\n In case of a *JSON* there are several JSON payment blocks contained in a joining list.\n * ***periodic-payments***: \n Create a standing order initiation resource for recurrent i.e. periodic payments addressable under {paymentId} \n with all data relevant for the corresponding payment product and the execution of the standing order contained in a JSON body. \n\nThis is the first step in the API to initiate the related recurring/periodic payment.\n \ \n## Single and mulitilevel SCA Processes\n\nThe Payment Initiation Requests are independent from the need of one ore multilevel \nSCA processing, i.e. independent from the number of authorisations needed for the execution of payments. \n\nBut the response messages are specific to either one SCA processing or multilevel SCA processing. \n\nFor payment initiation with multilevel SCA, this specification requires an explicit start of the authorisation, \ni.e. links directly associated with SCA processing like 'scaRedirect' or 'scaOAuth' cannot be contained in the \nresponse message of a Payment Initation Request for a payment, where multiple authorisations are needed. \nAlso if any data is needed for the next action, like selecting an SCA method is not supported in the response, \nsince all starts of the multiple authorisations are fully equal. \nIn these cases, first an authorisation sub-resource has to be generated following the 'startAuthorisation' link." summary: Payment initiation request tags: - Payment Initiation Service (PIS) operationId: V1ByPaymentServiceAndPaymentProductPost produces: - application/json consumes: - application/json - application/x-www-form-urlencoded parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" type: string description: Payment service:Possible values are:* payments* periodic-payments - name: payment-product in: path required: true enum: - ron-payment - other-currency-payment x-enum-elements: - name: ron-payment description: "" - name: other-currency-payment description: "" type: string description: 'The following payment products are supported: - ron-payment - other-currency-payment' - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: true type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: body required: true in: body schema: type: object example: debtorAccount: iban: RO98BTRLRONCRT0ABCDEFGHI instructedAmount: currency: RON amount: "50" creditorAccount: iban: RO98BTRLEURCRT0ABCDEFGHI creditorName: Dan Popescu creditorId: "" endToEndIdentification: Test remittanceInformationUnstructured: explicatii description: json body of BTPaymentInitiationRon or BTPaymentInitiationVal types - name: Content-Type type: string required: true in: header description: application/json - name: PSU-Geo-Location type: string required: false in: header description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. responses: 201: description: CREATED schema: type: object example: paymentId: 273c540e6c534b1f8d873baf23728969ron transactionStatus: Submit psuMessage: Text to be displayed to the PSU tppMessages: Messages to the TPP on operational issues. _links: scaOAuth: href: https://api.apistorebt.ro/bt/sb/oauth/.well-known/oauth-authorization-server self: href: https://api.apistorebt.ro/bt/sb/bt-psd2/v1/payments/273c540e6c534b1f8d873baf23728969ron status: href: https://api.apistorebt.ro/bt/sb/bt-psd2/v1/payments/273c540e6c534b1f8d873baf23728969ron/status 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false /v2/{payment-service}/{payment-product}/{paymentId}: get: description: Returns the content of a payment object summary: Get Payment Information tags: - Payment Initiation Service (PIS) operationId: V1ByPaymentServiceAndPaymentIdGet produces: - application/json parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" type: string description: |- Payment service: Possible values are: * payments * periodic-payments - name: paymentId in: path required: true type: string description: Resource identification of the generated payment initiation resource. - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: false type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: PSU-Geo-Location in: header required: false type: string pattern: (GEO:)[0-9]{1,3}\.[-][0-9]{6}\,[-][0-9]{1,3}\.[0-9]{6} description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. - $ref: '#/parameters/Authorization' - name: payment-product type: string required: true in: path description: 'The following payment products are supported: - ron-payment - other-currency-payment' responses: 200: description: OK schema: type: object example: debtorAccount: iban: RO98BTRLRONCRT0ABCDEFGHI instructedAmount: currency: RON amount: "50" creditorAccount: iban: RO98BTRLEURCRT0ABCDEFGHI creditorName: Dan Popescu creditorId: "" endToEndIdentification: Test remittanceInformationUnstructured: explicatii 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false deprecated: false /v2/{payment-service}/{payment-product}/{paymentId}/status: get: description: Check the transaction status of a payment initiation. summary: Payment initiation status request tags: - Payment Initiation Service (PIS) operationId: V1StatusByPaymentServiceAndPaymentIdGet produces: - application/json parameters: - name: payment-service in: path required: true enum: - payments - periodic-payments x-enum-elements: - name: payments description: "" - name: periodic-payments description: "" type: string description: |- Payment service: Possible values are: * payments * periodic-payments - name: paymentId in: path required: true type: string description: Resource identification of the generated payment initiation resource. - name: X-Request-ID in: header required: true type: string format: uuid description: ID of the request, unique to the call, as determined by the initiating party. - name: PSU-IP-Address in: header required: false type: string description: The forwarded IP Address header field consists of the corresponding http request IP Address field between PSU and TPP. - name: PSU-Geo-Location in: header required: false type: string pattern: (GEO:)[0-9]{1,3}\.[-][0-9]{6}\,[-][0-9]{1,3}\.[0-9]{6} description: The forwarded Geo Location of the corresponding http request between PSU and TPP if available. - $ref: '#/parameters/Authorization' - name: payment-product type: string required: true in: path description: 'The following payment products are supported: - ron-payment - other-currency-payment' responses: 200: description: OK schema: type: object example: transactionStatus: submit 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 404: description: Not found 405: description: Method Not Allowed 406: description: Not Acceptable 408: description: Request Timeout 415: description: Unsupported Media Type 429: description: Too Many Requests 503: description: Service Unavailable default: description: Internal Server Error security: [] x-unitTests: [] x-operation-settings: CollectParameters: false AllowDynamicQueryParameters: false AllowDynamicFormParameters: false IsMultiContentStreaming: false definitions: BTPaymentInitiationResponse: title: BTPaymentInitiationResponse type: object properties: TransactionId: description: The ID of the initiated transaction type: string TransactionStatus: description: Current status of the transaction type: string required: - TransactionId BTPaymentInitiationVal: description: "" type: object properties: debtorAccount: properties: [] description: Debtor Account $ref: '#/definitions/Account' instructedAmount: properties: currency: type: string amount: type: string $ref: '#/definitions/Amount' description: Amount Object creditorAccount: properties: iban: type: string $ref: '#/definitions/Account' description: Creditor Account creditorAgent: type: string description: BIC/SWIFT creditorAgentName: type: string description: Creditor Bank Name creditorName: type: string description: Creditor Name creditorAddress: properties: street: type: string buildingNumber: type: string city: type: string country: type: string description: Credit Address $ref: '#/definitions/Address' endToEndIdentification: type: string description: Transaction Reference remittanceInformationUnstructured: type: string description: Merchant payment reference example: '{"instructedAmount":{"currency":"EUR","amount":"100"},"debtorAccount":{"iban":"RO98BTRLEURCRT0ABCDEFGHI"},"creditorAccount":{"iban":"RO98BTRLEURCRT0ABCDEFGHJ"},"creditorAgent":"BTRLRO99","creditorAgentName":"Banca Transilvania","creditorName":"Creditor Name","creditorAddress":{"street":"Street name","buildingNumber":"Building number","city":"City","country":"RO"},"endToEndIdentification":"123456","remittanceInformationUnstructured":"123456"}' required: - instructedAmount - creditorAccount - creditorAgent - creditorAgentName - creditorName - creditorAddress additionalProperties: false BTPaymentInitiationRon: description: "" type: object properties: debtorAccount: properties: [] description: Debtor Account $ref: '#/definitions/Account' instructedAmount: properties: currency: type: string amount: type: string $ref: '#/definitions/Amount' description: Amount Object creditorAccount: properties: iban: type: string $ref: '#/definitions/Account' description: Creditor Account creditorName: type: string description: Creditor Name debtorId: type: string description: Debtor Fiscal Identification Number. Mandatory only for Treasury Payments. endToEndIdentification: type: string description: Transaction Reference remittanceInformationUnstructured: type: string description: Merchant payment reference example: '{ "debtorAccount": { "iban": "RO98BTRLRONCRT0ABCDEFGHI" }, "instructedAmount": { "currency": "RON", "amount": 50 }, "creditorAccount": { "iban": "RO98BTRLEURCRT0ABCDEFGHI" }, "creditorName": "Dan Popescu", "creditorId": "", "endToEndIdentification": "Test", "remittanceInformationUnstructured": "explicatii" }' required: - instructedAmount - creditorAccount - creditorName additionalProperties: false RonPaymentsList: type: array items: $ref: '#/definitions/BTPaymentInitiationRon' ValPaymentsList: type: array items: $ref: '#/definitions/BTPaymentInitiationVal' Account: properties: iban: type: string minLength: 1 description: Account IBAN additionalProperties: false required: - iban Amount: properties: currency: type: string description: ISO 4217 Alpha 3 currency code amount: type: string description: The amount given with 2 fractional digits additionalProperties: false required: - currency - amount Address: properties: country: type: string description: ISO Country Code city: type: string description: City Name street: type: string description: Street Name buildingNumber: type: string description: Builiding Number additionalProperties: false required: - country BT-TppMessage_Error: properties: tppMessages: $ref: '#/definitions/TppMessages' additionalProperties: false TppMessages: type: array items: $ref: '#/definitions/TppMessage' TppMessage: type: object properties: category: type: string code: type: string text: type: string additionalProperties: false x-ibm-configuration: enforced: true testable: true phase: realized parameters: Authorization: name: Authorization type: string required: true in: header description: This header should be in the form "Bearer Token", where Token is returned from the call to OAuth2 x-ibm-endpoints: - endpointUrl: https://api.apistorebt.ro/bt/sb type: - production - development ...