diff --git a/.ncurc.js b/.ncurc.js index a8c471b3..bf55739e 100644 --- a/.ncurc.js +++ b/.ncurc.js @@ -10,6 +10,8 @@ module.exports = { // Upgrading typescript to 5.0.4 causing unit test failures due to breaking changes related to `ttypescript` for 'custom transformers' 'typescript', // TODO: The new version of npm-check-updates uses new Glob v9.x and it is introducing a dependency Package "path-scurry@1.6.1" which is licensed under "BlueOak-1.0.0" which is not permitted by the Mojaloop License Policy - 'npm-check-updates' + 'npm-check-updates', + // TODO: Upgrading ts-auto-mock is breaking the npm install + 'ts-auto-mock' ] } diff --git a/docs/sdk-scheme-adapter-backend-v2_0_0-openapi3-snippets.yaml b/docs/sdk-scheme-adapter-backend-v2_0_0-openapi3-snippets.yaml index 7bf82b8a..9bfc0fde 100644 --- a/docs/sdk-scheme-adapter-backend-v2_0_0-openapi3-snippets.yaml +++ b/docs/sdk-scheme-adapter-backend-v2_0_0-openapi3-snippets.yaml @@ -152,11 +152,11 @@ paths: specified identifier value. tags: - BulkTransfers - /otp/{requestToPayId}: + /otp/{transactionRequestId}: get: operationId: BackendOtpGet parameters: - - $ref: '#/components/parameters/requestToPayId' + - $ref: '#/components/parameters/transactionRequestId' responses: '200': content: @@ -430,14 +430,12 @@ components: required: true schema: type: string - requestToPayId: + transactionRequestId: in: path - name: requestToPayId + name: transactionRequestId required: true schema: - maxLength: 128 - minLength: 1 - type: string + $ref: '#/components/schemas/transactionRequestId' transferId: in: path name: transferId @@ -1328,6 +1326,8 @@ components: $ref: '#/components/schemas/transactionType' subScenario: $ref: '#/components/schemas/TransactionSubScenario' + authenticationType: + $ref: '#/components/schemas/AuthenticationType' required: - transactionRequestId - to @@ -1346,9 +1346,14 @@ components: transactionRequestResponse: description: A response to a request for a quote. properties: + homeR2PTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. transactionId: $ref: '#/components/schemas/transactionId' - transferAmount: + transactionRequestState: $ref: '#/components/schemas/transactionRequestState' required: - transactionId @@ -2311,3 +2316,16 @@ components: $ref: '#/components/schemas/bulkTransactionIndividualTransferResult' extensions: $ref: '#/components/schemas/ExtensionList' + AuthenticationType: + title: AuthenticationType + type: string + enum: + - OTP + - QRCODE + - U2F + description: |- + Below are the allowed values for the enumeration AuthenticationType. + - OTP - One-time password generated by the Payer FSP. + - QRCODE - QR code used as One Time Password. + - U2F - U2F is a new addition isolated to Thirdparty stream. + example: OTP diff --git a/docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml b/docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml index 2af6d0c4..6f0d5832 100644 --- a/docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml +++ b/docs/sdk-scheme-adapter-outbound-v2_0_0-openapi3-snippets.yaml @@ -294,6 +294,37 @@ paths: responses: '200': $ref: '#/components/responses/requestToPaySuccess' + /requestToPay/{transactionRequestId}: + put: + summary: >- + Continues a request funds from sender that has paused at the party + resolution stage in order to accept or reject party information + description: > + The HTTP request `PUT /requestToPay/{transactionRequestId}` is used to + continue a transfer initiated via the `POST /requestToPay` method that + has halted after party lookup stage. + + The request body should contain the "acceptParty" property set to `true` + as required to continue the transfer. + + See the description of the `POST /requestToPay` HTTP method for more + information on modes of transfer. + tags: + - RequestToPay + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/transferContinuationAcceptParty' + parameters: + - $ref: '#/components/parameters/transactionRequestId' + responses: + '200': + $ref: '#/components/responses/requestToPaySuccess' + '500': + $ref: '#/components/responses/transferServerError' + '504': + $ref: '#/components/responses/transferTimeout' /requestToPayTransfer: post: summary: >- @@ -2051,10 +2082,23 @@ components: allOf: - $ref: '#/components/schemas/errorResponse' - type: object + AuthenticationType: + title: AuthenticationType + type: string + enum: + - OTP + - QRCODE + - U2F + description: |- + Below are the allowed values for the enumeration AuthenticationType. + - OTP - One-time password generated by the Payer FSP. + - QRCODE - QR code used as One Time Password. + - U2F - U2F is a new addition isolated to Thirdparty stream. + example: OTP requestToPayRequest: type: object required: - - homeTransactionId + - homeR2PTransactionId - from - to - amountType @@ -2062,7 +2106,7 @@ components: - amount - transactionType properties: - homeTransactionId: + homeR2PTransactionId: type: string description: >- Transaction ID from the DFSP backend, used to reconcile transactions @@ -2081,19 +2125,27 @@ components: $ref: '#/components/schemas/TransactionScenario' subScenario: $ref: '#/components/schemas/TransactionSubScenario' - AuthenticationType: - title: AuthenticationType + authenticationType: + $ref: '#/components/schemas/AuthenticationType' + requestToPayStatus: type: string enum: - - OTP - - QRCODE - - U2F - description: |- - Below are the allowed values for the enumeration AuthenticationType. - - OTP - One-time password generated by the Payer FSP. - - QRCODE - QR code used as One Time Password. - - U2F - U2F is a new addition isolated to Thirdparty stream. - example: OTP + - ERROR_OCCURRED + - WAITING_FOR_PARTY_ACCEPTANCE + - COMPLETED + getPartiesResponse: + title: getPartiesResponse + type: object + description: The object sent in the GET /parties/{Type}/{ID} callback. + properties: + body: + $ref: '#/components/schemas/Party' + description: Information regarding the requested Party. + headers: + type: object + required: + - body + - headers TransactionRequestState: title: TransactionRequestState type: string @@ -2109,6 +2161,27 @@ components: - ACCEPTED - Payer has approved the transaction. - REJECTED - Payer has rejected the transaction. example: RECEIVED + TransactionRequestResponse: + title: TransactionRequestResponse + type: object + description: The object sent in the PUT /transactionRequests/{ID} callback. + properties: + body: + type: object + properties: + transactionId: + $ref: '#/components/schemas/CorrelationId' + transactionRequestState: + $ref: '#/components/schemas/TransactionRequestState' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - transactionRequestState + headers: + type: object + required: + - body + - headers requestToPayResponse: type: object required: @@ -2119,7 +2192,7 @@ components: - currency - amount - transactionType - - requestToPayState + - currentState properties: transactionRequestId: $ref: '#/components/schemas/CorrelationId' @@ -2137,46 +2210,19 @@ components: $ref: '#/components/schemas/TransactionScenario' subScenario: $ref: '#/components/schemas/TransactionSubScenario' - authenticationType: - $ref: '#/components/schemas/AuthenticationType' - requestToPayState: - $ref: '#/components/schemas/TransactionRequestState' - requestToPayTransferRequest: - type: object - required: - - requestToPayTransactionId - - from - - to - - amountType - - currency - - amount - - scenario - - initiator - - initiatorType - properties: - requestToPayTransactionId: - type: string - description: >- - Transaction ID from the DFSP backend, used to reconcile transactions - between the Switch and DFSP backend systems. - from: - $ref: '#/components/schemas/transferParty' - to: - $ref: '#/components/schemas/transferParty' - amountType: - $ref: '#/components/schemas/AmountType' - currency: - $ref: '#/components/schemas/Currency' - amount: - $ref: '#/components/schemas/Amount' - scenario: - $ref: '#/components/schemas/TransactionType' - initiator: - $ref: '#/components/schemas/TransactionInitiator' - initiatorType: - $ref: '#/components/schemas/TransactionInitiatorType' - note: - $ref: '#/components/schemas/Note' + currentState: + $ref: '#/components/schemas/requestToPayStatus' + getPartiesResponse: + $ref: '#/components/schemas/getPartiesResponse' + transactionRequestResponse: + $ref: '#/components/schemas/TransactionRequestResponse' + lastError: + description: > + Object representing the last error to occur during a transfer + process. This may be a Mojaloop API error returned from another + entity in the scheme or an object representing other types of error + e.g. exceptions that may occur inside the scheme adapter. + $ref: '#/components/schemas/transferError' transferStatus: type: string enum: @@ -2227,10 +2273,10 @@ components: $ref: '#/components/schemas/ExtensionList' required: - transferState - requestToPayTransferResponse: + transferResponse: type: object required: - - requestToPayTransactionId + - homeTransactionId - from - to - amountType @@ -2240,7 +2286,7 @@ components: properties: transferId: $ref: '#/components/schemas/CorrelationId' - requestToPayTransactionId: + homeTransactionId: type: string description: >- Transaction ID from the DFSP backend, used to reconcile transactions @@ -2257,14 +2303,32 @@ components: $ref: '#/components/schemas/Amount' transactionType: $ref: '#/components/schemas/transferTransactionType' + subScenario: + $ref: '#/components/schemas/TransactionSubScenario' note: $ref: '#/components/schemas/Note' currentState: $ref: '#/components/schemas/transferStatus' quoteId: $ref: '#/components/schemas/CorrelationId' + getPartiesResponse: + type: object + required: + - body + properties: + body: + type: object + headers: + type: object quoteResponse: - $ref: '#/components/schemas/QuotesIDPutResponse' + type: object + required: + - body + properties: + body: + $ref: '#/components/schemas/QuotesIDPutResponse' + headers: + type: object quoteResponseSource: type: string description: > @@ -2273,7 +2337,14 @@ components: account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. fulfil: - $ref: '#/components/schemas/TransfersIDPutResponse' + type: object + required: + - body + properties: + body: + $ref: '#/components/schemas/TransfersIDPutResponse' + headers: + type: object lastError: description: > Object representing the last error to occur during a transfer @@ -2281,10 +2352,61 @@ components: entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. $ref: '#/components/schemas/transferError' - transferResponse: + skipPartyLookup: + description: >- + Set to true if supplying an FSPID for the payee party and no party + resolution is needed. This may be useful is a previous party + resolution has been performed. + type: boolean + errorTransferResponse: + allOf: + - $ref: '#/components/schemas/errorResponse' + - type: object + required: + - transferState + properties: + transferState: + $ref: '#/components/schemas/transferResponse' + requestToPayTransferRequest: type: object required: - - homeTransactionId + - requestToPayTransactionId + - from + - to + - amountType + - currency + - amount + - scenario + - initiator + - initiatorType + properties: + requestToPayTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. + from: + $ref: '#/components/schemas/transferParty' + to: + $ref: '#/components/schemas/transferParty' + amountType: + $ref: '#/components/schemas/AmountType' + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + scenario: + $ref: '#/components/schemas/TransactionType' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + note: + $ref: '#/components/schemas/Note' + requestToPayTransferResponse: + type: object + required: + - requestToPayTransactionId - from - to - amountType @@ -2294,7 +2416,7 @@ components: properties: transferId: $ref: '#/components/schemas/CorrelationId' - homeTransactionId: + requestToPayTransactionId: type: string description: >- Transaction ID from the DFSP backend, used to reconcile transactions @@ -2311,32 +2433,14 @@ components: $ref: '#/components/schemas/Amount' transactionType: $ref: '#/components/schemas/transferTransactionType' - subScenario: - $ref: '#/components/schemas/TransactionSubScenario' note: $ref: '#/components/schemas/Note' currentState: $ref: '#/components/schemas/transferStatus' quoteId: $ref: '#/components/schemas/CorrelationId' - getPartiesResponse: - type: object - required: - - body - properties: - body: - type: object - headers: - type: object quoteResponse: - type: object - required: - - body - properties: - body: - $ref: '#/components/schemas/QuotesIDPutResponse' - headers: - type: object + $ref: '#/components/schemas/QuotesIDPutResponse' quoteResponseSource: type: string description: > @@ -2345,14 +2449,7 @@ components: account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. fulfil: - type: object - required: - - body - properties: - body: - $ref: '#/components/schemas/TransfersIDPutResponse' - headers: - type: object + $ref: '#/components/schemas/TransfersIDPutResponse' lastError: description: > Object representing the last error to occur during a transfer @@ -2360,21 +2457,6 @@ components: entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. $ref: '#/components/schemas/transferError' - skipPartyLookup: - description: >- - Set to true if supplying an FSPID for the payee party and no party - resolution is needed. This may be useful is a previous party - resolution has been performed. - type: boolean - errorTransferResponse: - allOf: - - $ref: '#/components/schemas/errorResponse' - - type: object - required: - - transferState - properties: - transferState: - $ref: '#/components/schemas/transferResponse' transferContinuationAcceptOTP: type: object required: @@ -2613,26 +2695,26 @@ components: application/json: schema: $ref: '#/components/schemas/requestToPayResponse' - requestToPayTransferSuccess: - description: Transfer completed successfully + transferServerError: + description: An error occurred processing the transfer content: application/json: schema: - $ref: '#/components/schemas/requestToPayTransferResponse' - requestToPayTransferBadRequest: - description: Malformed or missing required body, headers or parameters + $ref: '#/components/schemas/errorTransferResponse' + transferTimeout: + description: Timeout occurred processing the transfer content: application/json: schema: $ref: '#/components/schemas/errorTransferResponse' - transferServerError: - description: An error occurred processing the transfer + requestToPayTransferSuccess: + description: Transfer completed successfully content: application/json: schema: - $ref: '#/components/schemas/errorTransferResponse' - transferTimeout: - description: Timeout occurred processing the transfer + $ref: '#/components/schemas/requestToPayTransferResponse' + requestToPayTransferBadRequest: + description: Malformed or missing required body, headers or parameters content: application/json: schema: @@ -2712,6 +2794,15 @@ components: description: >- A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. + transactionRequestId: + name: transactionRequestId + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + description: >- + Identifier of the merchant request to pay to continue as returned in the + response to a `POST /requestToPay` request. requestToPayTransactionId: name: requestToPayTransactionId in: path diff --git a/package-lock.json b/package-lock.json index 10571f35..873e46a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@mojaloop/api-snippets", - "version": "17.0.4", + "version": "17.1.0-snapshot.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@mojaloop/api-snippets", - "version": "17.0.4", + "version": "17.1.0-snapshot.1", "license": "Apache-2.0", "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.1.2", @@ -20,14 +20,14 @@ "ttypescript": "^1.5.15" }, "devDependencies": { - "@commitlint/cli": "^17.6.1", - "@commitlint/config-conventional": "^17.6.1", + "@commitlint/cli": "^17.6.3", + "@commitlint/config-conventional": "^17.6.3", "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^29.5.1", - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", "diff": "^5.1.0", - "eslint": "^8.39.0", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-config-standard": "^17.0.0", "eslint-import-resolver-typescript": "^3.5.5", @@ -48,7 +48,7 @@ "swagger-cli": "^4.0.4", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "tslib": "^2.5.0", + "tslib": "^2.5.2", "typescript": "^4.9.4" }, "engines": { @@ -947,13 +947,13 @@ } }, "node_modules/@commitlint/cli": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.1.tgz", - "integrity": "sha512-kCnDD9LE2ySiTnj/VPaxy4/oRayRcdv4aCuVxtoum8SxIU7OADHc0nJPQfheE8bHcs3zZdWzDMWltRosuT13bg==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.3.tgz", + "integrity": "sha512-ItSz2fd4F+CujgIbQOfNNerDF1eFlsBGEfp9QcCb1kxTYMuKTYZzA6Nu1YRRrIaaWwe2E7awUGpIMrPoZkOG3A==", "dev": true, "dependencies": { "@commitlint/format": "^17.4.4", - "@commitlint/lint": "^17.6.1", + "@commitlint/lint": "^17.6.3", "@commitlint/load": "^17.5.0", "@commitlint/read": "^17.5.1", "@commitlint/types": "^17.4.4", @@ -971,9 +971,9 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.1.tgz", - "integrity": "sha512-ng/ybaSLuTCH9F+7uavSOnEQ9EFMl7lHEjfAEgRh1hwmEe8SpLKpQeMo2aT1IWvHaGMuTb+gjfbzoRf2IR23NQ==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.3.tgz", + "integrity": "sha512-bLyHEjjRWqlLQWIgYFHmUPbEFMOOLXeF3QbUinDIJev/u9e769tkoTH9YPknEywiuIrAgZaVo+OfzAIsJP0fsw==", "dev": true, "dependencies": { "conventional-changelog-conventionalcommits": "^5.0.0" @@ -1049,25 +1049,25 @@ } }, "node_modules/@commitlint/is-ignored": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.4.4.tgz", - "integrity": "sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.3.tgz", + "integrity": "sha512-LQbNdnPbxrpbcrVKR5yf51SvquqktpyZJwqXx3lUMF6+nT9PHB8xn3wLy8pi2EQv5Zwba484JnUwDE1ygVYNQA==", "dev": true, "dependencies": { "@commitlint/types": "^17.4.4", - "semver": "7.3.8" + "semver": "7.5.0" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/lint": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.1.tgz", - "integrity": "sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.3.tgz", + "integrity": "sha512-fBlXwt6SHJFgm3Tz+luuo3DkydAx9HNC5y4eBqcKuDuMVqHd2ugMNr+bQtx6riv9mXFiPoKp7nE4Xn/ls3iVDA==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^17.4.4", + "@commitlint/is-ignored": "^17.6.3", "@commitlint/parse": "^17.4.4", "@commitlint/rules": "^17.6.1", "@commitlint/types": "^17.4.4" @@ -1279,14 +1279,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1324,9 +1324,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2499,9 +2499,9 @@ } }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "node_modules/@types/stack-utils": { @@ -2526,15 +2526,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", + "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/type-utils": "5.59.6", + "@typescript-eslint/utils": "5.59.6", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -2560,14 +2560,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", + "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "debug": "^4.3.4" }, "engines": { @@ -2587,13 +2587,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", + "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1" + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2604,13 +2604,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", + "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.6", + "@typescript-eslint/utils": "5.59.6", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2631,9 +2631,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", + "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2644,13 +2644,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", + "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2671,17 +2671,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", + "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2697,12 +2697,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", + "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/types": "5.59.6", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5114,15 +5114,15 @@ } }, "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5133,8 +5133,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -5626,9 +5626,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5697,14 +5697,14 @@ "dev": true }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -11571,9 +11571,9 @@ "optional": true }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12799,9 +12799,9 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", "dev": true }, "node_modules/tsutils": { @@ -14371,13 +14371,13 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" }, "@commitlint/cli": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.1.tgz", - "integrity": "sha512-kCnDD9LE2ySiTnj/VPaxy4/oRayRcdv4aCuVxtoum8SxIU7OADHc0nJPQfheE8bHcs3zZdWzDMWltRosuT13bg==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.3.tgz", + "integrity": "sha512-ItSz2fd4F+CujgIbQOfNNerDF1eFlsBGEfp9QcCb1kxTYMuKTYZzA6Nu1YRRrIaaWwe2E7awUGpIMrPoZkOG3A==", "dev": true, "requires": { "@commitlint/format": "^17.4.4", - "@commitlint/lint": "^17.6.1", + "@commitlint/lint": "^17.6.3", "@commitlint/load": "^17.5.0", "@commitlint/read": "^17.5.1", "@commitlint/types": "^17.4.4", @@ -14389,9 +14389,9 @@ } }, "@commitlint/config-conventional": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.1.tgz", - "integrity": "sha512-ng/ybaSLuTCH9F+7uavSOnEQ9EFMl7lHEjfAEgRh1hwmEe8SpLKpQeMo2aT1IWvHaGMuTb+gjfbzoRf2IR23NQ==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.3.tgz", + "integrity": "sha512-bLyHEjjRWqlLQWIgYFHmUPbEFMOOLXeF3QbUinDIJev/u9e769tkoTH9YPknEywiuIrAgZaVo+OfzAIsJP0fsw==", "dev": true, "requires": { "conventional-changelog-conventionalcommits": "^5.0.0" @@ -14451,22 +14451,22 @@ } }, "@commitlint/is-ignored": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.4.4.tgz", - "integrity": "sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.3.tgz", + "integrity": "sha512-LQbNdnPbxrpbcrVKR5yf51SvquqktpyZJwqXx3lUMF6+nT9PHB8xn3wLy8pi2EQv5Zwba484JnUwDE1ygVYNQA==", "dev": true, "requires": { "@commitlint/types": "^17.4.4", - "semver": "7.3.8" + "semver": "7.5.0" } }, "@commitlint/lint": { - "version": "17.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.1.tgz", - "integrity": "sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ==", + "version": "17.6.3", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.3.tgz", + "integrity": "sha512-fBlXwt6SHJFgm3Tz+luuo3DkydAx9HNC5y4eBqcKuDuMVqHd2ugMNr+bQtx6riv9mXFiPoKp7nE4Xn/ls3iVDA==", "dev": true, "requires": { - "@commitlint/is-ignored": "^17.4.4", + "@commitlint/is-ignored": "^17.6.3", "@commitlint/parse": "^17.4.4", "@commitlint/rules": "^17.6.1", "@commitlint/types": "^17.4.4" @@ -14634,14 +14634,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -14671,9 +14671,9 @@ } }, "@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", "dev": true }, "@gar/promisify": { @@ -15634,9 +15634,9 @@ } }, "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", "dev": true }, "@types/stack-utils": { @@ -15661,15 +15661,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", + "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/type-utils": "5.59.6", + "@typescript-eslint/utils": "5.59.6", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -15679,53 +15679,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", + "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", + "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1" + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6" } }, "@typescript-eslint/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", + "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.6", + "@typescript-eslint/utils": "5.59.6", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", + "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", + "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -15734,28 +15734,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", + "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", + "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/types": "5.59.6", "eslint-visitor-keys": "^3.3.0" } }, @@ -17581,15 +17581,15 @@ "dev": true }, "eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -17600,8 +17600,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -17971,20 +17971,20 @@ } }, "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true }, "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -22357,9 +22357,9 @@ "optional": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -23272,9 +23272,9 @@ } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", "dev": true }, "tsutils": { diff --git a/package.json b/package.json index 7d36e806..bc68a0cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mojaloop/api-snippets", - "version": "17.0.4", + "version": "17.1.0-snapshot.1", "description": "Mojaloop API specification reusable snippets", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -82,14 +82,14 @@ "@types/responselike": "^1.0.0" }, "devDependencies": { - "@commitlint/cli": "^17.6.1", - "@commitlint/config-conventional": "^17.6.1", + "@commitlint/cli": "^17.6.3", + "@commitlint/config-conventional": "^17.6.3", "@redocly/openapi-cli": "^1.0.0-beta.94", "@types/jest": "^29.5.1", - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", "diff": "^5.1.0", - "eslint": "^8.39.0", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", "eslint-config-standard": "^17.0.0", "eslint-import-resolver-typescript": "^3.5.5", @@ -110,7 +110,7 @@ "swagger-cli": "^4.0.4", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "tslib": "^2.5.0", + "tslib": "^2.5.2", "typescript": "^4.9.4" }, "publishConfig": { diff --git a/sdk-scheme-adapter/v2_0_0/backend/openapi.yaml b/sdk-scheme-adapter/v2_0_0/backend/openapi.yaml index bb14d081..6160947b 100644 --- a/sdk-scheme-adapter/v2_0_0/backend/openapi.yaml +++ b/sdk-scheme-adapter/v2_0_0/backend/openapi.yaml @@ -133,11 +133,11 @@ paths: summary: Requests information relating to a bulk transfer identified by the specified identifier value. tags: - BulkTransfers - /otp/{requestToPayId}: + /otp/{transactionRequestId}: get: operationId: BackendOtpGet parameters: - - $ref: '#/components/parameters/requestToPayId' + - $ref: '#/components/parameters/transactionRequestId' responses: '200': content: @@ -379,14 +379,12 @@ components: required: true schema: type: string - requestToPayId: + transactionRequestId: in: path - name: requestToPayId + name: transactionRequestId required: true schema: - maxLength: 128 - minLength: 1 - type: string + $ref: '#/components/schemas/transactionRequestId' transferId: in: path name: transferId @@ -1224,6 +1222,8 @@ components: $ref: '#/components/schemas/transactionType' subScenario: $ref: '../components/schemas/TransactionSubScenario.yaml' + authenticationType: + $ref: '../components/schemas/AuthenticationType.yaml' required: - transactionRequestId - to @@ -1241,9 +1241,14 @@ components: transactionRequestResponse: description: A response to a request for a quote. properties: + homeR2PTransactionId: + type: string + description: >- + Transaction ID from the DFSP backend, used to reconcile transactions + between the Switch and DFSP backend systems. transactionId: $ref: '#/components/schemas/transactionId' - transferAmount: + transactionRequestState: $ref: '#/components/schemas/transactionRequestState' required: - transactionId diff --git a/sdk-scheme-adapter/v2_0_0/components/parameters/transactionRequestId.yaml b/sdk-scheme-adapter/v2_0_0/components/parameters/transactionRequestId.yaml new file mode 100644 index 00000000..8c5893da --- /dev/null +++ b/sdk-scheme-adapter/v2_0_0/components/parameters/transactionRequestId.yaml @@ -0,0 +1,8 @@ +name: transactionRequestId +in: path +required: true +schema: + $ref: ../schemas/CorrelationId.yaml +description: >- + Identifier of the merchant request to pay to continue as returned in + the response to a `POST /requestToPay` request. diff --git a/sdk-scheme-adapter/v2_0_0/components/schemas/TransactionRequestResponse.yaml b/sdk-scheme-adapter/v2_0_0/components/schemas/TransactionRequestResponse.yaml new file mode 100644 index 00000000..497f93a9 --- /dev/null +++ b/sdk-scheme-adapter/v2_0_0/components/schemas/TransactionRequestResponse.yaml @@ -0,0 +1,20 @@ +title: TransactionRequestResponse +type: object +description: 'The object sent in the PUT /transactionRequests/{ID} callback.' +properties: + body: + type: object + properties: + transactionId: + $ref: ./CorrelationId.yaml + transactionRequestState: + $ref: ./TransactionRequestState.yaml + extensionList: + $ref: ./ExtensionList.yaml + required: + - transactionRequestState + headers: + type: object +required: + - body + - headers diff --git a/sdk-scheme-adapter/v2_0_0/components/schemas/getPartiesResponse.yaml b/sdk-scheme-adapter/v2_0_0/components/schemas/getPartiesResponse.yaml new file mode 100644 index 00000000..091a2f7d --- /dev/null +++ b/sdk-scheme-adapter/v2_0_0/components/schemas/getPartiesResponse.yaml @@ -0,0 +1,12 @@ +title: getPartiesResponse +type: object +description: 'The object sent in the GET /parties/{Type}/{ID} callback.' +properties: + body: + $ref: ./Party.yaml + description: Information regarding the requested Party. + headers: + type: object +required: + - body + - headers diff --git a/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayRequest.yaml b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayRequest.yaml index 6df62f66..975eb9bf 100644 --- a/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayRequest.yaml +++ b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayRequest.yaml @@ -1,6 +1,6 @@ type: object required: - - homeTransactionId + - homeR2PTransactionId - from - to - amountType @@ -8,7 +8,7 @@ required: - amount - transactionType properties: - homeTransactionId: + homeR2PTransactionId: type: string description: >- Transaction ID from the DFSP backend, used to reconcile transactions @@ -27,4 +27,6 @@ properties: $ref: ./TransactionScenario.yaml subScenario: $ref: ./TransactionSubScenario.yaml + authenticationType: + $ref: './AuthenticationType.yaml' diff --git a/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayResponse.yaml b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayResponse.yaml index 2d83707e..9518ac71 100644 --- a/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayResponse.yaml +++ b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayResponse.yaml @@ -7,7 +7,7 @@ required: - currency - amount - transactionType - - requestToPayState + - currentState properties: transactionRequestId: $ref: ./CorrelationId.yaml @@ -25,7 +25,16 @@ properties: $ref: ./TransactionScenario.yaml subScenario: $ref: ./TransactionSubScenario.yaml - authenticationType: - $ref: ./AuthenticationType.yaml - requestToPayState: - $ref: ./TransactionRequestState.yaml + currentState: + $ref: ./requestToPayStatus.yaml + getPartiesResponse: + $ref: ./getPartiesResponse.yaml + transactionRequestResponse: + $ref: ./TransactionRequestResponse.yaml + lastError: + description: > + Object representing the last error to occur during a transfer process. + This may be a Mojaloop API error returned from another entity in the + scheme or an object representing other types of error e.g. exceptions that + may occur inside the scheme adapter. + $ref: ./transferError.yaml diff --git a/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayStatus.yaml b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayStatus.yaml new file mode 100644 index 00000000..fcf72654 --- /dev/null +++ b/sdk-scheme-adapter/v2_0_0/components/schemas/requestToPayStatus.yaml @@ -0,0 +1,5 @@ +type: string +enum: + - ERROR_OCCURRED + - WAITING_FOR_PARTY_ACCEPTANCE + - COMPLETED diff --git a/sdk-scheme-adapter/v2_0_0/outbound/openapi.yaml b/sdk-scheme-adapter/v2_0_0/outbound/openapi.yaml index e6dfcb96..c5d91f01 100644 --- a/sdk-scheme-adapter/v2_0_0/outbound/openapi.yaml +++ b/sdk-scheme-adapter/v2_0_0/outbound/openapi.yaml @@ -44,6 +44,8 @@ paths: $ref: paths/quotes.yaml /requestToPay: $ref: paths/requestToPay.yaml + /requestToPay/{transactionRequestId}: + $ref: paths/requestToPay_transactionRequestId.yaml /requestToPayTransfer: $ref: paths/requestToPayTransfer.yaml /requestToPayTransfer/{requestToPayTransactionId}: diff --git a/sdk-scheme-adapter/v2_0_0/outbound/paths/requestToPay_transactionRequestId.yaml b/sdk-scheme-adapter/v2_0_0/outbound/paths/requestToPay_transactionRequestId.yaml new file mode 100644 index 00000000..65fc4c12 --- /dev/null +++ b/sdk-scheme-adapter/v2_0_0/outbound/paths/requestToPay_transactionRequestId.yaml @@ -0,0 +1,29 @@ +put: + summary: >- + Continues a request funds from sender that has paused at the party resolution stage in order to accept or + reject party information + description: > + The HTTP request `PUT /requestToPay/{transactionRequestId}` is used to continue a + transfer initiated via the `POST /requestToPay` method that has halted after + party lookup stage. + + The request body should contain the "acceptParty" property set to `true` as required to continue the transfer. + + See the description of the `POST /requestToPay` HTTP method for more + information on modes of transfer. + tags: + - RequestToPay + requestBody: + content: + application/json: + schema: + $ref: ../../components/schemas/transferContinuationAcceptParty.yaml + parameters: + - $ref: ../../components/parameters/transactionRequestId.yaml + responses: + '200': + $ref: ../../components/responses/requestToPaySuccess.yaml + '500': + $ref: ../../components/responses/transferServerError.yaml + '504': + $ref: ../../components/responses/transferTimeout.yaml diff --git a/src/sdk-scheme-adapter/v2_0_0/backend/json-schemas.json b/src/sdk-scheme-adapter/v2_0_0/backend/json-schemas.json index e4792619..256d6153 100644 --- a/src/sdk-scheme-adapter/v2_0_0/backend/json-schemas.json +++ b/src/sdk-scheme-adapter/v2_0_0/backend/json-schemas.json @@ -8004,6 +8004,17 @@ "pattern": "^[A-Z_]{1,32}$", "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", "example": "LOCALLY_DEFINED_SUBSCENARIO" + }, + "authenticationType": { + "title": "AuthenticationType", + "type": "string", + "enum": [ + "OTP", + "QRCODE", + "U2F" + ], + "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", + "example": "OTP" } }, "required": [ @@ -8026,12 +8037,16 @@ "transactionRequestResponse": { "description": "A response to a request for a quote.", "properties": { + "homeR2PTransactionId": { + "type": "string", + "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." + }, "transactionId": { "description": "ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote.", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "type": "string" }, - "transferAmount": { + "transactionRequestState": { "enum": [ "RECEIVED", "PENDING", @@ -17135,5 +17150,16 @@ ] } } + }, + "AuthenticationType": { + "title": "AuthenticationType", + "type": "string", + "enum": [ + "OTP", + "QRCODE", + "U2F" + ], + "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", + "example": "OTP" } } \ No newline at end of file diff --git a/src/sdk-scheme-adapter/v2_0_0/backend/openapi.ts b/src/sdk-scheme-adapter/v2_0_0/backend/openapi.ts index d278b106..85cec23a 100644 --- a/src/sdk-scheme-adapter/v2_0_0/backend/openapi.ts +++ b/src/sdk-scheme-adapter/v2_0_0/backend/openapi.ts @@ -23,7 +23,7 @@ export interface paths { "/bulkTransfers/{idValue}": { get: operations["BackendBulkTransfersGet"]; }; - "/otp/{requestToPayId}": { + "/otp/{transactionRequestId}": { get: operations["BackendOtpGet"]; }; "/participants/{idType}/{idValue}": { @@ -550,15 +550,16 @@ export interface components { transactionRequestId: components["schemas"]["transactionRequestId"]; transactionType: components["schemas"]["transactionType"]; subScenario?: components["schemas"]["TransactionSubScenario"]; + authenticationType?: components["schemas"]["AuthenticationType"]; }; /** @description A Mojaloop API transaction request identifier (UUID). */ transactionRequestId: string; /** @description A response to a request for a quote. */ transactionRequestResponse: { + /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ + homeR2PTransactionId?: string; transactionId: components["schemas"]["transactionId"]; - transferAmount?: components["schemas"]["transactionRequestState"]; - } & { - transactionRequestState: unknown; + transactionRequestState: components["schemas"]["transactionRequestState"]; }; /** @enum {string} */ transactionRequestState: "RECEIVED" | "PENDING" | "ACCEPTED" | "REJECTED"; @@ -1132,6 +1133,16 @@ export interface components { individualTransferResults: components["schemas"]["bulkTransactionIndividualTransferResult"][]; extensions?: components["schemas"]["ExtensionList"]; }; + /** + * AuthenticationType + * @description Below are the allowed values for the enumeration AuthenticationType. + * - OTP - One-time password generated by the Payer FSP. + * - QRCODE - QR code used as One Time Password. + * - U2F - U2F is a new addition isolated to Thirdparty stream. + * @example OTP + * @enum {string} + */ + AuthenticationType: "OTP" | "QRCODE" | "U2F"; }; responses: { /** Malformed or missing required headers or parameters. */ @@ -1156,7 +1167,7 @@ export interface components { idType: string; /** @description The identifier value. */ idValue: string; - requestToPayId: string; + transactionRequestId: components["schemas"]["transactionRequestId"]; transferId: string; /** @description Identifier of the bulk transaction to continue as returned in the response to a `POST /bulkTransaction` request. */ bulkTransactionId: components["schemas"]["CorrelationId"]; @@ -1267,7 +1278,7 @@ export interface operations { BackendOtpGet: { parameters: { path: { - requestToPayId: components["parameters"]["requestToPayId"]; + transactionRequestId: components["parameters"]["transactionRequestId"]; }; }; responses: { diff --git a/src/sdk-scheme-adapter/v2_0_0/backend/schemas.ts b/src/sdk-scheme-adapter/v2_0_0/backend/schemas.ts index f086a420..57500d91 100644 --- a/src/sdk-scheme-adapter/v2_0_0/backend/schemas.ts +++ b/src/sdk-scheme-adapter/v2_0_0/backend/schemas.ts @@ -111,4 +111,5 @@ export namespace Schemas { export const individualTransferResult = JsonSchemas.individualTransferResult export const bulkTransactionIndividualTransferResult = JsonSchemas.bulkTransactionIndividualTransferResult export const bulkTransactionResponse = JsonSchemas.bulkTransactionResponse + export const AuthenticationType = JsonSchemas.AuthenticationType } diff --git a/src/sdk-scheme-adapter/v2_0_0/backend/types.ts b/src/sdk-scheme-adapter/v2_0_0/backend/types.ts index 360118a1..0e708399 100644 --- a/src/sdk-scheme-adapter/v2_0_0/backend/types.ts +++ b/src/sdk-scheme-adapter/v2_0_0/backend/types.ts @@ -111,4 +111,5 @@ export namespace Types { export type individualTransferResult = components['schemas']['individualTransferResult'] export type bulkTransactionIndividualTransferResult = components['schemas']['bulkTransactionIndividualTransferResult'] export type bulkTransactionResponse = components['schemas']['bulkTransactionResponse'] + export type AuthenticationType = components['schemas']['AuthenticationType'] } diff --git a/src/sdk-scheme-adapter/v2_0_0/outbound/json-schemas.json b/src/sdk-scheme-adapter/v2_0_0/outbound/json-schemas.json index 61c16b93..a17a75a1 100644 --- a/src/sdk-scheme-adapter/v2_0_0/outbound/json-schemas.json +++ b/src/sdk-scheme-adapter/v2_0_0/outbound/json-schemas.json @@ -14860,10 +14860,21 @@ } ] }, + "AuthenticationType": { + "title": "AuthenticationType", + "type": "string", + "enum": [ + "OTP", + "QRCODE", + "U2F" + ], + "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", + "example": "OTP" + }, "requestToPayRequest": { "type": "object", "required": [ - "homeTransactionId", + "homeR2PTransactionId", "from", "to", "amountType", @@ -14872,7 +14883,7 @@ "transactionType" ], "properties": { - "homeTransactionId": { + "homeR2PTransactionId": { "type": "string", "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." }, @@ -15353,19 +15364,201 @@ "pattern": "^[A-Z_]{1,32}$", "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", "example": "LOCALLY_DEFINED_SUBSCENARIO" + }, + "authenticationType": { + "title": "AuthenticationType", + "type": "string", + "enum": [ + "OTP", + "QRCODE", + "U2F" + ], + "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", + "example": "OTP" } } }, - "AuthenticationType": { - "title": "AuthenticationType", + "requestToPayStatus": { "type": "string", "enum": [ - "OTP", - "QRCODE", - "U2F" - ], - "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", - "example": "OTP" + "ERROR_OCCURRED", + "WAITING_FOR_PARTY_ACCEPTANCE", + "COMPLETED" + ] + }, + "getPartiesResponse": { + "title": "getPartiesResponse", + "type": "object", + "description": "The object sent in the GET /parties/{Type}/{ID} callback.", + "properties": { + "body": { + "title": "Party", + "type": "object", + "description": "Data model for the complex type Party.", + "properties": { + "partyIdInfo": { + "title": "PartyIdInfo", + "type": "object", + "description": "Data model for the complex type PartyIdInfo. An ExtensionList element has been added to this reqeust in version v1.1", + "properties": { + "partyIdType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "partyIdentifier": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "partySubIdOrType": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "partyIdType", + "partyIdentifier" + ] + }, + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "name": { + "title": "PartyName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Name of the Party. Could be a real name or a nickname." + }, + "personalInfo": { + "title": "PartyPersonalInfo", + "type": "object", + "description": "Data model for the complex type PartyPersonalInfo.", + "properties": { + "complexName": { + "title": "PartyComplexName", + "type": "object", + "description": "Data model for the complex type PartyComplexName.", + "properties": { + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + } + } + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + } + } + } + }, + "required": [ + "partyIdInfo" + ] + }, + "headers": { + "type": "object" + } + }, + "required": [ + "body", + "headers" + ] }, "TransactionRequestState": { "title": "TransactionRequestState", @@ -15379,64 +15572,146 @@ "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Payer FSP has received the transaction from the Payee FSP.\n- PENDING - Payer FSP has sent the transaction request to the Payer.\n- ACCEPTED - Payer has approved the transaction.\n- REJECTED - Payer has rejected the transaction.", "example": "RECEIVED" }, - "requestToPayResponse": { + "TransactionRequestResponse": { + "title": "TransactionRequestResponse", "type": "object", - "required": [ - "transactionRequestId", - "from", - "to", - "amountType", - "currency", - "amount", - "transactionType", - "requestToPayState" - ], + "description": "The object sent in the PUT /transactionRequests/{ID} callback.", "properties": { - "transactionRequestId": { - "title": "CorrelationId", - "type": "string", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", - "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", - "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" - }, - "from": { + "body": { "type": "object", - "required": [ - "idType", - "idValue" - ], "properties": { - "type": { - "title": "TransactionInitiatorType", + "transactionId": { + "title": "CorrelationId", "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" }, - "idType": { - "title": "PartyIdType", + "transactionRequestState": { + "title": "TransactionRequestState", "type": "string", "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" + "RECEIVED", + "PENDING", + "ACCEPTED", + "REJECTED" ], - "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Payer FSP has received the transaction from the Payee FSP.\n- PENDING - Payer FSP has sent the transaction request to the Payer.\n- ACCEPTED - Payer has approved the transaction.\n- REJECTED - Payer has rejected the transaction.", + "example": "RECEIVED" }, - "idValue": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "transactionRequestState" + ] + }, + "headers": { + "type": "object" + } + }, + "required": [ + "body", + "headers" + ] + }, + "requestToPayResponse": { + "type": "object", + "required": [ + "transactionRequestId", + "from", + "to", + "amountType", + "currency", + "amount", + "transactionType", + "currentState" + ], + "properties": { + "transactionRequestId": { + "title": "CorrelationId", + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" + }, + "from": { + "type": "object", + "required": [ + "idType", + "idValue" + ], + "properties": { + "type": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "idType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "idValue": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, "maxLength": 128, "description": "Identifier of the Party.", "example": "16135551212" @@ -15877,622 +16152,350 @@ "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", "example": "LOCALLY_DEFINED_SUBSCENARIO" }, - "authenticationType": { - "title": "AuthenticationType", - "type": "string", - "enum": [ - "OTP", - "QRCODE", - "U2F" - ], - "description": "Below are the allowed values for the enumeration AuthenticationType.\n- OTP - One-time password generated by the Payer FSP.\n- QRCODE - QR code used as One Time Password.\n- U2F - U2F is a new addition isolated to Thirdparty stream.", - "example": "OTP" - }, - "requestToPayState": { - "title": "TransactionRequestState", + "currentState": { "type": "string", "enum": [ - "RECEIVED", - "PENDING", - "ACCEPTED", - "REJECTED" - ], - "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Payer FSP has received the transaction from the Payee FSP.\n- PENDING - Payer FSP has sent the transaction request to the Payer.\n- ACCEPTED - Payer has approved the transaction.\n- REJECTED - Payer has rejected the transaction.", - "example": "RECEIVED" - } - } - }, - "requestToPayTransferRequest": { - "type": "object", - "required": [ - "requestToPayTransactionId", - "from", - "to", - "amountType", - "currency", - "amount", - "scenario", - "initiator", - "initiatorType" - ], - "properties": { - "requestToPayTransactionId": { - "type": "string", - "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." + "ERROR_OCCURRED", + "WAITING_FOR_PARTY_ACCEPTANCE", + "COMPLETED" + ] }, - "from": { + "getPartiesResponse": { + "title": "getPartiesResponse", "type": "object", - "required": [ - "idType", - "idValue" - ], + "description": "The object sent in the GET /parties/{Type}/{ID} callback.", "properties": { - "type": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "idType": { - "title": "PartyIdType", - "type": "string", - "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" - ], - "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." - }, - "idValue": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Identifier of the Party.", - "example": "16135551212" - }, - "idSubValue": { - "title": "PartySubIdOrType", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." - }, - "displayName": { - "title": "Name", - "type": "string", - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." - }, - "firstName": { - "title": "FirstName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "First name of the Party (Name Type).", - "example": "Henrik" - }, - "middleName": { - "title": "MiddleName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Middle name of the Party (Name Type).", - "example": "Johannes" - }, - "lastName": { - "title": "LastName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Last name of the Party (Name Type).", - "example": "Karlsson" - }, - "dateOfBirth": { - "title": "DateofBirth (type Date)", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", - "description": "Date of Birth of the Party.", - "example": "1966-06-16" - }, - "merchantClassificationCode": { - "title": "MerchantClassificationCode", - "type": "string", - "pattern": "^[\\d]{1,4}$", - "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." - }, - "fspId": { - "title": "FspId", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "FSP identifier." - }, - "extensionList": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." + "body": { + "title": "Party", + "type": "object", + "description": "Data model for the complex type Party.", + "properties": { + "partyIdInfo": { + "title": "PartyIdInfo", + "type": "object", + "description": "Data model for the complex type PartyIdInfo. An ExtensionList element has been added to this reqeust in version v1.1", + "properties": { + "partyIdType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "partyIdentifier": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "partySubIdOrType": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } + "required": [ + "partyIdType", + "partyIdentifier" + ] }, - "required": [ - "key", - "value" - ] + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "name": { + "title": "PartyName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Name of the Party. Could be a real name or a nickname." + }, + "personalInfo": { + "title": "PartyPersonalInfo", + "type": "object", + "description": "Data model for the complex type PartyPersonalInfo.", + "properties": { + "complexName": { + "title": "PartyComplexName", + "type": "object", + "description": "Data model for the complex type PartyComplexName.", + "properties": { + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + } + } + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + } + } + } }, - "minItems": 0, - "maxItems": 16 + "required": [ + "partyIdInfo" + ] + }, + "headers": { + "type": "object" } - } + }, + "required": [ + "body", + "headers" + ] }, - "to": { + "transactionRequestResponse": { + "title": "TransactionRequestResponse", "type": "object", - "required": [ - "idType", - "idValue" - ], + "description": "The object sent in the PUT /transactionRequests/{ID} callback.", "properties": { - "type": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "idType": { - "title": "PartyIdType", - "type": "string", - "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" - ], - "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." - }, - "idValue": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Identifier of the Party.", - "example": "16135551212" - }, - "idSubValue": { - "title": "PartySubIdOrType", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." - }, - "displayName": { - "title": "Name", - "type": "string", - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." - }, - "firstName": { - "title": "FirstName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "First name of the Party (Name Type).", - "example": "Henrik" - }, - "middleName": { - "title": "MiddleName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Middle name of the Party (Name Type).", - "example": "Johannes" - }, - "lastName": { - "title": "LastName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Last name of the Party (Name Type).", - "example": "Karlsson" - }, - "dateOfBirth": { - "title": "DateofBirth (type Date)", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", - "description": "Date of Birth of the Party.", - "example": "1966-06-16" - }, - "merchantClassificationCode": { - "title": "MerchantClassificationCode", - "type": "string", - "pattern": "^[\\d]{1,4}$", - "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + "body": { + "type": "object", + "properties": { + "transactionId": { + "title": "CorrelationId", + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" + }, + "transactionRequestState": { + "title": "TransactionRequestState", + "type": "string", + "enum": [ + "RECEIVED", + "PENDING", + "ACCEPTED", + "REJECTED" + ], + "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Payer FSP has received the transaction from the Payee FSP.\n- PENDING - Payer FSP has sent the transaction request to the Payer.\n- ACCEPTED - Payer has approved the transaction.\n- REJECTED - Payer has rejected the transaction.", + "example": "RECEIVED" + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "transactionRequestState" + ] }, - "fspId": { - "title": "FspId", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "FSP identifier." + "headers": { + "type": "object" + } + }, + "required": [ + "body", + "headers" + ] + }, + "lastError": { + "type": "object", + "description": "This object represents a Mojaloop API error received at any time during the transfer process", + "properties": { + "httpStatusCode": { + "type": "integer", + "description": "The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response." }, - "extensionList": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." + "mojaloopError": { + "type": "object", + "properties": { + "errorInformation": { + "title": "ErrorInformation", + "type": "object", + "description": "Data model for the complex type ErrorInformation.", + "properties": { + "errorCode": { + "title": "ErrorCode", + "type": "string", + "pattern": "^[1-9]\\d{3}$", + "description": "The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error.", + "example": "5100" + }, + "errorDescription": { + "title": "ErrorDescription", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Error description string." + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 0, - "maxItems": 16 + "required": [ + "errorCode", + "errorDescription" + ] + } + } } } - }, - "amountType": { - "title": "AmountType", - "type": "string", - "enum": [ - "SEND", - "RECEIVE" - ], - "description": "Below are the allowed values for the enumeration AmountType.\n- SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees.\n- RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees.", - "example": "RECEIVE" - }, - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - }, - "scenario": { - "title": "TransactionType", - "type": "object", - "description": "Data model for the complex type TransactionType.", - "properties": { - "scenario": { - "title": "TransactionScenario", - "type": "string", - "enum": [ - "DEPOSIT", - "WITHDRAWAL", - "TRANSFER", - "PAYMENT", - "REFUND" - ], - "description": "Below are the allowed values for the enumeration.\n- DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User.\n- WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer.\n- TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction.\n- PAYMENT - Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on.\n- REFUND - Used for performing a refund of transaction.", - "example": "DEPOSIT" - }, - "subScenario": { - "title": "TransactionSubScenario", - "type": "string", - "pattern": "^[A-Z_]{1,32}$", - "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", - "example": "LOCALLY_DEFINED_SUBSCENARIO" - }, - "initiator": { - "title": "TransactionInitiator", - "type": "string", - "enum": [ - "PAYER", - "PAYEE" - ], - "description": "Below are the allowed values for the enumeration.\n- PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way.\n- PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device.", - "example": "PAYEE" - }, - "initiatorType": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "refundInfo": { - "title": "Refund", - "type": "object", - "description": "Data model for the complex type Refund.", - "properties": { - "originalTransactionId": { - "title": "CorrelationId", - "type": "string", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", - "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", - "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" - }, - "refundReason": { - "title": "RefundReason", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Reason for the refund.", - "example": "Free text indicating reason for the refund." - } - }, - "required": [ - "originalTransactionId" - ] - }, - "balanceOfPayments": { - "title": "BalanceOfPayments", - "type": "string", - "pattern": "^[1-9]\\d{2}$", - "description": "(BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed.", - "example": "123" - } - }, - "required": [ - "scenario", - "initiator", - "initiatorType" - ] - }, - "initiator": { - "title": "TransactionInitiator", - "type": "string", - "enum": [ - "PAYER", - "PAYEE" - ], - "description": "Below are the allowed values for the enumeration.\n- PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way.\n- PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device.", - "example": "PAYEE" - }, - "initiatorType": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "note": { - "title": "Note", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Memo assigned to transaction.", - "example": "Note sent to Payee." } } }, @@ -17449,10 +17452,10 @@ "transferState" ] }, - "requestToPayTransferResponse": { + "transferResponse": { "type": "object", "required": [ - "requestToPayTransactionId", + "homeTransactionId", "from", "to", "amountType", @@ -17468,7 +17471,7 @@ "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" }, - "requestToPayTransactionId": { + "homeTransactionId": { "type": "string", "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." }, @@ -17938,8 +17941,15 @@ ], "description": "Type of transaction." }, - "note": { - "title": "Note", + "subScenario": { + "title": "TransactionSubScenario", + "type": "string", + "pattern": "^[A-Z_]{1,32}$", + "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", + "example": "LOCALLY_DEFINED_SUBSCENARIO" + }, + "note": { + "title": "Note", "type": "string", "minLength": 1, "maxLength": 128, @@ -17962,1581 +17972,30 @@ "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" }, - "quoteResponse": { - "title": "QuotesIDPutResponse", + "getPartiesResponse": { "type": "object", - "description": "The object sent in the PUT /quotes/{ID} callback.", + "required": [ + "body" + ], "properties": { - "transferAmount": { - "title": "Money", - "type": "object", - "description": "Data model for the complex type Money.", - "properties": { - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - } - }, - "required": [ - "currency", - "amount" - ] + "body": { + "type": "object" }, - "payeeReceiveAmount": { - "title": "Money", + "headers": { + "type": "object" + } + } + }, + "quoteResponse": { + "type": "object", + "required": [ + "body" + ], + "properties": { + "body": { + "title": "QuotesIDPutResponse", "type": "object", - "description": "Data model for the complex type Money.", - "properties": { - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - } - }, - "required": [ - "currency", - "amount" - ] - }, - "payeeFspFee": { - "title": "Money", - "type": "object", - "description": "Data model for the complex type Money.", - "properties": { - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - } - }, - "required": [ - "currency", - "amount" - ] - }, - "payeeFspCommission": { - "title": "Money", - "type": "object", - "description": "Data model for the complex type Money.", - "properties": { - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - } - }, - "required": [ - "currency", - "amount" - ] - }, - "expiration": { - "title": "DateTime", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", - "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", - "example": "2016-05-24T08:38:08.699-04:00" - }, - "geoCode": { - "title": "GeoCode", - "type": "object", - "description": "Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.", - "properties": { - "latitude": { - "title": "Latitude", - "type": "string", - "pattern": "^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$", - "description": "The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.", - "example": "+45.4215" - }, - "longitude": { - "title": "Longitude", - "type": "string", - "pattern": "^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$", - "description": "The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.", - "example": "+75.6972" - } - }, - "required": [ - "latitude", - "longitude" - ] - }, - "ilpPacket": { - "title": "IlpPacket", - "type": "string", - "pattern": "^[A-Za-z0-9-_]+[=]{0,2}$", - "minLength": 1, - "maxLength": 32768, - "description": "Information for recipient (transport layer information).", - "example": "AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA" - }, - "condition": { - "title": "IlpCondition", - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "maxLength": 48, - "description": "Condition that must be attached to the transfer by the Payer." - }, - "extensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", - "properties": { - "extension": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements." - } - }, - "required": [ - "extension" - ] - } - }, - "required": [ - "transferAmount", - "expiration", - "ilpPacket", - "condition" - ] - }, - "quoteResponseSource": { - "type": "string", - "description": "FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway.\n" - }, - "fulfil": { - "title": "TransfersIDPutResponse", - "type": "object", - "description": "The object sent in the PUT /transfers/{ID} callback.", - "properties": { - "fulfilment": { - "title": "IlpFulfilment", - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "maxLength": 48, - "description": "Fulfilment that must be attached to the transfer by the Payee.", - "example": "WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8" - }, - "completedTimestamp": { - "title": "DateTime", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", - "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", - "example": "2016-05-24T08:38:08.699-04:00" - }, - "transferState": { - "title": "TransferState", - "type": "string", - "enum": [ - "RECEIVED", - "RESERVED", - "COMMITTED", - "ABORTED" - ], - "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Next ledger has received the transfer.\n- RESERVED - Next ledger has reserved the transfer.\n- COMMITTED - Next ledger has successfully performed the transfer.\n- ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer.", - "example": "RESERVED" - }, - "extensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", - "properties": { - "extension": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements." - } - }, - "required": [ - "extension" - ] - } - }, - "required": [ - "transferState" - ] - }, - "lastError": { - "type": "object", - "description": "This object represents a Mojaloop API error received at any time during the transfer process", - "properties": { - "httpStatusCode": { - "type": "integer", - "description": "The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response." - }, - "mojaloopError": { - "type": "object", - "properties": { - "errorInformation": { - "title": "ErrorInformation", - "type": "object", - "description": "Data model for the complex type ErrorInformation.", - "properties": { - "errorCode": { - "title": "ErrorCode", - "type": "string", - "pattern": "^[1-9]\\d{3}$", - "description": "The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error.", - "example": "5100" - }, - "errorDescription": { - "title": "ErrorDescription", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Error description string." - }, - "extensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", - "properties": { - "extension": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements." - } - }, - "required": [ - "extension" - ] - } - }, - "required": [ - "errorCode", - "errorDescription" - ] - } - } - } - } - } - } - }, - "transferResponse": { - "type": "object", - "required": [ - "homeTransactionId", - "from", - "to", - "amountType", - "currency", - "amount", - "transactionType" - ], - "properties": { - "transferId": { - "title": "CorrelationId", - "type": "string", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", - "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", - "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" - }, - "homeTransactionId": { - "type": "string", - "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." - }, - "from": { - "type": "object", - "required": [ - "idType", - "idValue" - ], - "properties": { - "type": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "idType": { - "title": "PartyIdType", - "type": "string", - "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" - ], - "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." - }, - "idValue": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Identifier of the Party.", - "example": "16135551212" - }, - "idSubValue": { - "title": "PartySubIdOrType", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." - }, - "displayName": { - "title": "Name", - "type": "string", - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." - }, - "firstName": { - "title": "FirstName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "First name of the Party (Name Type).", - "example": "Henrik" - }, - "middleName": { - "title": "MiddleName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Middle name of the Party (Name Type).", - "example": "Johannes" - }, - "lastName": { - "title": "LastName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Last name of the Party (Name Type).", - "example": "Karlsson" - }, - "dateOfBirth": { - "title": "DateofBirth (type Date)", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", - "description": "Date of Birth of the Party.", - "example": "1966-06-16" - }, - "merchantClassificationCode": { - "title": "MerchantClassificationCode", - "type": "string", - "pattern": "^[\\d]{1,4}$", - "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." - }, - "fspId": { - "title": "FspId", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "FSP identifier." - }, - "extensionList": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 0, - "maxItems": 16 - } - } - }, - "to": { - "type": "object", - "required": [ - "idType", - "idValue" - ], - "properties": { - "type": { - "title": "TransactionInitiatorType", - "type": "string", - "enum": [ - "CONSUMER", - "AGENT", - "BUSINESS", - "DEVICE" - ], - "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", - "example": "CONSUMER" - }, - "idType": { - "title": "PartyIdType", - "type": "string", - "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" - ], - "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." - }, - "idValue": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Identifier of the Party.", - "example": "16135551212" - }, - "idSubValue": { - "title": "PartySubIdOrType", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." - }, - "displayName": { - "title": "Name", - "type": "string", - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." - }, - "firstName": { - "title": "FirstName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "First name of the Party (Name Type).", - "example": "Henrik" - }, - "middleName": { - "title": "MiddleName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Middle name of the Party (Name Type).", - "example": "Johannes" - }, - "lastName": { - "title": "LastName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", - "description": "Last name of the Party (Name Type).", - "example": "Karlsson" - }, - "dateOfBirth": { - "title": "DateofBirth (type Date)", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", - "description": "Date of Birth of the Party.", - "example": "1966-06-16" - }, - "merchantClassificationCode": { - "title": "MerchantClassificationCode", - "type": "string", - "pattern": "^[\\d]{1,4}$", - "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." - }, - "fspId": { - "title": "FspId", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "FSP identifier." - }, - "extensionList": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 0, - "maxItems": 16 - } - } - }, - "amountType": { - "title": "AmountType", - "type": "string", - "enum": [ - "SEND", - "RECEIVE" - ], - "description": "Below are the allowed values for the enumeration AmountType.\n- SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees.\n- RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees.", - "example": "RECEIVE" - }, - "currency": { - "title": "Currency", - "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", - "type": "string", - "minLength": 3, - "maxLength": 3, - "enum": [ - "AED", - "AFN", - "ALL", - "AMD", - "ANG", - "AOA", - "ARS", - "AUD", - "AWG", - "AZN", - "BAM", - "BBD", - "BDT", - "BGN", - "BHD", - "BIF", - "BMD", - "BND", - "BOB", - "BRL", - "BSD", - "BTN", - "BWP", - "BYN", - "BZD", - "CAD", - "CDF", - "CHF", - "CLP", - "CNY", - "COP", - "CRC", - "CUC", - "CUP", - "CVE", - "CZK", - "DJF", - "DKK", - "DOP", - "DZD", - "EGP", - "ERN", - "ETB", - "EUR", - "FJD", - "FKP", - "GBP", - "GEL", - "GGP", - "GHS", - "GIP", - "GMD", - "GNF", - "GTQ", - "GYD", - "HKD", - "HNL", - "HRK", - "HTG", - "HUF", - "IDR", - "ILS", - "IMP", - "INR", - "IQD", - "IRR", - "ISK", - "JEP", - "JMD", - "JOD", - "JPY", - "KES", - "KGS", - "KHR", - "KMF", - "KPW", - "KRW", - "KWD", - "KYD", - "KZT", - "LAK", - "LBP", - "LKR", - "LRD", - "LSL", - "LYD", - "MAD", - "MDL", - "MGA", - "MKD", - "MMK", - "MNT", - "MOP", - "MRO", - "MUR", - "MVR", - "MWK", - "MXN", - "MYR", - "MZN", - "NAD", - "NGN", - "NIO", - "NOK", - "NPR", - "NZD", - "OMR", - "PAB", - "PEN", - "PGK", - "PHP", - "PKR", - "PLN", - "PYG", - "QAR", - "RON", - "RSD", - "RUB", - "RWF", - "SAR", - "SBD", - "SCR", - "SDG", - "SEK", - "SGD", - "SHP", - "SLL", - "SOS", - "SPL", - "SRD", - "STD", - "SVC", - "SYP", - "SZL", - "THB", - "TJS", - "TMT", - "TND", - "TOP", - "TRY", - "TTD", - "TVD", - "TWD", - "TZS", - "UAH", - "UGX", - "USD", - "UYU", - "UZS", - "VEF", - "VND", - "VUV", - "WST", - "XAF", - "XCD", - "XDR", - "XOF", - "XPF", - "XTS", - "XXX", - "YER", - "ZAR", - "ZMW", - "ZWD" - ] - }, - "amount": { - "title": "Amount", - "type": "string", - "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", - "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", - "example": "123.45" - }, - "transactionType": { - "title": "transferTransactionType", - "type": "string", - "enum": [ - "TRANSFER" - ], - "description": "Type of transaction." - }, - "subScenario": { - "title": "TransactionSubScenario", - "type": "string", - "pattern": "^[A-Z_]{1,32}$", - "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", - "example": "LOCALLY_DEFINED_SUBSCENARIO" - }, - "note": { - "title": "Note", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Memo assigned to transaction.", - "example": "Note sent to Payee." - }, - "currentState": { - "type": "string", - "enum": [ - "ERROR_OCCURRED", - "WAITING_FOR_PARTY_ACCEPTANCE", - "WAITING_FOR_QUOTE_ACCEPTANCE", - "COMPLETED" - ] - }, - "quoteId": { - "title": "CorrelationId", - "type": "string", - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", - "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", - "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" - }, - "getPartiesResponse": { - "type": "object", - "required": [ - "body" - ], - "properties": { - "body": { - "type": "object" - }, - "headers": { - "type": "object" - } - } - }, - "quoteResponse": { - "type": "object", - "required": [ - "body" - ], - "properties": { - "body": { - "title": "QuotesIDPutResponse", - "type": "object", - "description": "The object sent in the PUT /quotes/{ID} callback.", + "description": "The object sent in the PUT /quotes/{ID} callback.", "properties": { "transferAmount": { "title": "Money", @@ -22016,189 +20475,2327 @@ } } }, - "quoteResponseSource": { + "quoteResponseSource": { + "type": "string", + "description": "FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway.\n" + }, + "fulfil": { + "type": "object", + "required": [ + "body" + ], + "properties": { + "body": { + "title": "TransfersIDPutResponse", + "type": "object", + "description": "The object sent in the PUT /transfers/{ID} callback.", + "properties": { + "fulfilment": { + "title": "IlpFulfilment", + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "maxLength": 48, + "description": "Fulfilment that must be attached to the transfer by the Payee.", + "example": "WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8" + }, + "completedTimestamp": { + "title": "DateTime", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", + "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", + "example": "2016-05-24T08:38:08.699-04:00" + }, + "transferState": { + "title": "TransferState", + "type": "string", + "enum": [ + "RECEIVED", + "RESERVED", + "COMMITTED", + "ABORTED" + ], + "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Next ledger has received the transfer.\n- RESERVED - Next ledger has reserved the transfer.\n- COMMITTED - Next ledger has successfully performed the transfer.\n- ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer.", + "example": "RESERVED" + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "transferState" + ] + }, + "headers": { + "type": "object" + } + } + }, + "lastError": { + "type": "object", + "description": "This object represents a Mojaloop API error received at any time during the transfer process", + "properties": { + "httpStatusCode": { + "type": "integer", + "description": "The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response." + }, + "mojaloopError": { + "type": "object", + "properties": { + "errorInformation": { + "title": "ErrorInformation", + "type": "object", + "description": "Data model for the complex type ErrorInformation.", + "properties": { + "errorCode": { + "title": "ErrorCode", + "type": "string", + "pattern": "^[1-9]\\d{3}$", + "description": "The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error.", + "example": "5100" + }, + "errorDescription": { + "title": "ErrorDescription", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Error description string." + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "errorCode", + "errorDescription" + ] + } + } + } + } + }, + "skipPartyLookup": { + "description": "Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed.", + "type": "boolean" + } + } + } + } + } + ] + }, + "requestToPayTransferRequest": { + "type": "object", + "required": [ + "requestToPayTransactionId", + "from", + "to", + "amountType", + "currency", + "amount", + "scenario", + "initiator", + "initiatorType" + ], + "properties": { + "requestToPayTransactionId": { + "type": "string", + "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." + }, + "from": { + "type": "object", + "required": [ + "idType", + "idValue" + ], + "properties": { + "type": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "idType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "idValue": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "idSubValue": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "displayName": { + "title": "Name", + "type": "string", + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." + }, + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + }, + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 0, + "maxItems": 16 + } + } + }, + "to": { + "type": "object", + "required": [ + "idType", + "idValue" + ], + "properties": { + "type": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "idType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "idValue": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "idSubValue": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "displayName": { + "title": "Name", + "type": "string", + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." + }, + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + }, + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 0, + "maxItems": 16 + } + } + }, + "amountType": { + "title": "AmountType", + "type": "string", + "enum": [ + "SEND", + "RECEIVE" + ], + "description": "Below are the allowed values for the enumeration AmountType.\n- SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees.\n- RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees.", + "example": "RECEIVE" + }, + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", + "type": "string", + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + }, + "scenario": { + "title": "TransactionType", + "type": "object", + "description": "Data model for the complex type TransactionType.", + "properties": { + "scenario": { + "title": "TransactionScenario", + "type": "string", + "enum": [ + "DEPOSIT", + "WITHDRAWAL", + "TRANSFER", + "PAYMENT", + "REFUND" + ], + "description": "Below are the allowed values for the enumeration.\n- DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a normal scenario, electronic funds are transferred from a Business account to a Consumer account, and physical cash is given from the Consumer to the Business User.\n- WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. In a normal scenario, electronic funds are transferred from a Consumer’s account to a Business account, and physical cash is given from the Business User to the Consumer.\n- TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to Consumer) transaction.\n- PAYMENT - Usually used for performing a transaction from a Consumer to a Merchant or Organization, but could also be for a B2B (Business to Business) payment. The transaction could be online for a purchase in an Internet store, in a physical store where both the Consumer and Business User are present, a bill payment, a donation, and so on.\n- REFUND - Used for performing a refund of transaction.", + "example": "DEPOSIT" + }, + "subScenario": { + "title": "TransactionSubScenario", + "type": "string", + "pattern": "^[A-Z_]{1,32}$", + "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type).", + "example": "LOCALLY_DEFINED_SUBSCENARIO" + }, + "initiator": { + "title": "TransactionInitiator", + "type": "string", + "enum": [ + "PAYER", + "PAYEE" + ], + "description": "Below are the allowed values for the enumeration.\n- PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way.\n- PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device.", + "example": "PAYEE" + }, + "initiatorType": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "refundInfo": { + "title": "Refund", + "type": "object", + "description": "Data model for the complex type Refund.", + "properties": { + "originalTransactionId": { + "title": "CorrelationId", + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" + }, + "refundReason": { + "title": "RefundReason", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Reason for the refund.", + "example": "Free text indicating reason for the refund." + } + }, + "required": [ + "originalTransactionId" + ] + }, + "balanceOfPayments": { + "title": "BalanceOfPayments", + "type": "string", + "pattern": "^[1-9]\\d{2}$", + "description": "(BopCode) The API data type [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed.", + "example": "123" + } + }, + "required": [ + "scenario", + "initiator", + "initiatorType" + ] + }, + "initiator": { + "title": "TransactionInitiator", + "type": "string", + "enum": [ + "PAYER", + "PAYEE" + ], + "description": "Below are the allowed values for the enumeration.\n- PAYER - Sender of funds is initiating the transaction. The account to send from is either owned by the Payer or is connected to the Payer in some way.\n- PAYEE - Recipient of the funds is initiating the transaction by sending a transaction request. The Payer must approve the transaction, either automatically by a pre-generated OTP or by pre-approval of the Payee, or by manually approving in his or her own Device.", + "example": "PAYEE" + }, + "initiatorType": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "note": { + "title": "Note", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Memo assigned to transaction.", + "example": "Note sent to Payee." + } + } + }, + "requestToPayTransferResponse": { + "type": "object", + "required": [ + "requestToPayTransactionId", + "from", + "to", + "amountType", + "currency", + "amount", + "transactionType" + ], + "properties": { + "transferId": { + "title": "CorrelationId", + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" + }, + "requestToPayTransactionId": { + "type": "string", + "description": "Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems." + }, + "from": { + "type": "object", + "required": [ + "idType", + "idValue" + ], + "properties": { + "type": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "idType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "idValue": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "idSubValue": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "displayName": { + "title": "Name", + "type": "string", + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." + }, + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + }, + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 0, + "maxItems": 16 + } + } + }, + "to": { + "type": "object", + "required": [ + "idType", + "idValue" + ], + "properties": { + "type": { + "title": "TransactionInitiatorType", + "type": "string", + "enum": [ + "CONSUMER", + "AGENT", + "BUSINESS", + "DEVICE" + ], + "description": "Below are the allowed values for the enumeration.\n- CONSUMER - Consumer is the initiator of the transaction.\n- AGENT - Agent is the initiator of the transaction.\n- BUSINESS - Business is the initiator of the transaction.\n- DEVICE - Device is the initiator of the transaction.", + "example": "CONSUMER" + }, + "idType": { + "title": "PartyIdType", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "Below are the allowed values for the enumeration.\n- MSISDN - An MSISDN (Mobile Station International Subscriber Directory Number, that is, the phone number) is used as reference to a participant. The MSISDN identifier should be in international format according to the [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the MSISDN may be prefixed by a single plus sign, indicating the international prefix.\n- EMAIL - An email is used as reference to a participant. The format of the email should be according to the informational [RFC 3696](https://tools.ietf.org/html/rfc3696).\n- PERSONAL_ID - A personal identifier is used as reference to a participant. Examples of personal identification are passport number, birth certificate number, and national registration number. The identifier number is added in the PartyIdentifier element. The personal identifier type is added in the PartySubIdOrType element.\n- BUSINESS - A specific Business (for example, an organization or a company) is used as reference to a participant. The BUSINESS identifier can be in any format. To make a transaction connected to a specific username or bill number in a Business, the PartySubIdOrType element should be used.\n- DEVICE - A specific device (for example, a POS or ATM) ID connected to a specific business or organization is used as reference to a Party. For referencing a specific device under a specific business or organization, use the PartySubIdOrType element.\n- ACCOUNT_ID - A bank account number or FSP account ID should be used as reference to a participant. The ACCOUNT_ID identifier can be in any format, as formats can greatly differ depending on country and FSP.\n- IBAN - A bank account number or FSP account ID is used as reference to a participant. The IBAN identifier can consist of up to 34 alphanumeric characters and should be entered without whitespace.\n- ALIAS An alias is used as reference to a participant. The alias should be created in the FSP as an alternative reference to an account owner. Another example of an alias is a username in the FSP system. The ALIAS identifier can be in any format. It is also possible to use the PartySubIdOrType element for identifying an account under an Alias defined by the PartyIdentifier." + }, + "idValue": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party.", + "example": "16135551212" + }, + "idSubValue": { + "title": "PartySubIdOrType", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Either a sub-identifier of a PartyIdentifier, or a sub-type of the PartyIdType, normally a PersonalIdentifierType." + }, + "displayName": { + "title": "Name", + "type": "string", + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "The API data type Name is a JSON String, restricted by a regular expression to avoid characters which are generally not used in a name.\n\nRegular Expression - The regular expression for restricting the Name type is \"^(?!\\s*$)[\\w .,'-]{1,128}$\". The restriction does not allow a string consisting of whitespace only, all Unicode characters are allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) and space characters ( ).\n\n**Note:** In some programming languages, Unicode support must be specifically enabled. For example, if Java is used, the flag UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters." + }, + "firstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "First name of the Party (Name Type).", + "example": "Henrik" + }, + "middleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Middle name of the Party (Name Type).", + "example": "Johannes" + }, + "lastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\p{L}\\p{gc=Mark}\\p{digit}\\p{gc=Connector_Punctuation}\\p{Join_Control} .,''-]{1,128}$", + "description": "Last name of the Party (Name Type).", + "example": "Karlsson" + }, + "dateOfBirth": { + "title": "DateofBirth (type Date)", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$", + "description": "Date of Birth of the Party.", + "example": "1966-06-16" + }, + "merchantClassificationCode": { + "title": "MerchantClassificationCode", + "type": "string", + "pattern": "^[\\d]{1,4}$", + "description": "A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc." + }, + "fspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "extensionList": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 0, + "maxItems": 16 + } + } + }, + "amountType": { + "title": "AmountType", + "type": "string", + "enum": [ + "SEND", + "RECEIVE" + ], + "description": "Below are the allowed values for the enumeration AmountType.\n- SEND - Amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees.\n- RECEIVE - Amount the Payer would like the Payee to receive, that is, the amount that should be sent to the receiver exclusive of any fees.", + "example": "RECEIVE" + }, + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", + "type": "string", + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + }, + "transactionType": { + "title": "transferTransactionType", + "type": "string", + "enum": [ + "TRANSFER" + ], + "description": "Type of transaction." + }, + "note": { + "title": "Note", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Memo assigned to transaction.", + "example": "Note sent to Payee." + }, + "currentState": { + "type": "string", + "enum": [ + "ERROR_OCCURRED", + "WAITING_FOR_PARTY_ACCEPTANCE", + "WAITING_FOR_QUOTE_ACCEPTANCE", + "COMPLETED" + ] + }, + "quoteId": { + "title": "CorrelationId", + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Identifier that correlates all messages of the same sequence. The API data type UUID (Universally Unique Identifier) is a JSON String in canonical format, conforming to [RFC 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a regular expression for interoperability reasons. A UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).", + "example": "b51ec534-ee48-4575-b6a9-ead2955b8069" + }, + "quoteResponse": { + "title": "QuotesIDPutResponse", + "type": "object", + "description": "The object sent in the PUT /quotes/{ID} callback.", + "properties": { + "transferAmount": { + "title": "Money", + "type": "object", + "description": "Data model for the complex type Money.", + "properties": { + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", + "type": "string", + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + } + }, + "required": [ + "currency", + "amount" + ] + }, + "payeeReceiveAmount": { + "title": "Money", + "type": "object", + "description": "Data model for the complex type Money.", + "properties": { + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", + "type": "string", + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + } + }, + "required": [ + "currency", + "amount" + ] + }, + "payeeFspFee": { + "title": "Money", + "type": "object", + "description": "Data model for the complex type Money.", + "properties": { + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", + "type": "string", + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + } + }, + "required": [ + "currency", + "amount" + ] + }, + "payeeFspCommission": { + "title": "Money", + "type": "object", + "description": "Data model for the complex type Money.", + "properties": { + "currency": { + "title": "Currency", + "description": "The currency codes defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter alphabetic codes are used as the standard naming representation for currencies.", + "type": "string", + "minLength": 3, + "maxLength": 3, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTN", + "BWP", + "BYN", + "BZD", + "CAD", + "CDF", + "CHF", + "CLP", + "CNY", + "COP", + "CRC", + "CUC", + "CUP", + "CVE", + "CZK", + "DJF", + "DKK", + "DOP", + "DZD", + "EGP", + "ERN", + "ETB", + "EUR", + "FJD", + "FKP", + "GBP", + "GEL", + "GGP", + "GHS", + "GIP", + "GMD", + "GNF", + "GTQ", + "GYD", + "HKD", + "HNL", + "HRK", + "HTG", + "HUF", + "IDR", + "ILS", + "IMP", + "INR", + "IQD", + "IRR", + "ISK", + "JEP", + "JMD", + "JOD", + "JPY", + "KES", + "KGS", + "KHR", + "KMF", + "KPW", + "KRW", + "KWD", + "KYD", + "KZT", + "LAK", + "LBP", + "LKR", + "LRD", + "LSL", + "LYD", + "MAD", + "MDL", + "MGA", + "MKD", + "MMK", + "MNT", + "MOP", + "MRO", + "MUR", + "MVR", + "MWK", + "MXN", + "MYR", + "MZN", + "NAD", + "NGN", + "NIO", + "NOK", + "NPR", + "NZD", + "OMR", + "PAB", + "PEN", + "PGK", + "PHP", + "PKR", + "PLN", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SPL", + "SRD", + "STD", + "SVC", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TVD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XDR", + "XOF", + "XPF", + "XTS", + "XXX", + "YER", + "ZAR", + "ZMW", + "ZWD" + ] + }, + "amount": { + "title": "Amount", "type": "string", - "description": "FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway.\n" + "pattern": "^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$", + "description": "The API data type Amount is a JSON String in a canonical format that is restricted by a regular expression for interoperability reasons. This pattern does not allow any trailing zeroes at all, but allows an amount without a minor currency unit. It also only allows four digits in the minor currency unit; a negative value is not allowed. Using more than 18 digits in the major currency unit is not allowed.", + "example": "123.45" + } + }, + "required": [ + "currency", + "amount" + ] + }, + "expiration": { + "title": "DateTime", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", + "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", + "example": "2016-05-24T08:38:08.699-04:00" + }, + "geoCode": { + "title": "GeoCode", + "type": "object", + "description": "Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.", + "properties": { + "latitude": { + "title": "Latitude", + "type": "string", + "pattern": "^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$", + "description": "The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.", + "example": "+45.4215" }, - "fulfil": { - "type": "object", - "required": [ - "body" - ], - "properties": { - "body": { - "title": "TransfersIDPutResponse", - "type": "object", - "description": "The object sent in the PUT /transfers/{ID} callback.", - "properties": { - "fulfilment": { - "title": "IlpFulfilment", - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "maxLength": 48, - "description": "Fulfilment that must be attached to the transfer by the Payee.", - "example": "WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8" - }, - "completedTimestamp": { - "title": "DateTime", - "type": "string", - "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", - "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", - "example": "2016-05-24T08:38:08.699-04:00" - }, - "transferState": { - "title": "TransferState", - "type": "string", - "enum": [ - "RECEIVED", - "RESERVED", - "COMMITTED", - "ABORTED" - ], - "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Next ledger has received the transfer.\n- RESERVED - Next ledger has reserved the transfer.\n- COMMITTED - Next ledger has successfully performed the transfer.\n- ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer.", - "example": "RESERVED" - }, - "extensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", - "properties": { - "extension": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements." - } - }, - "required": [ - "extension" - ] - } + "longitude": { + "title": "Longitude", + "type": "string", + "pattern": "^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$", + "description": "The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.", + "example": "+75.6972" + } + }, + "required": [ + "latitude", + "longitude" + ] + }, + "ilpPacket": { + "title": "IlpPacket", + "type": "string", + "pattern": "^[A-Za-z0-9-_]+[=]{0,2}$", + "minLength": 1, + "maxLength": 32768, + "description": "Information for recipient (transport layer information).", + "example": "AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA" + }, + "condition": { + "title": "IlpCondition", + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "maxLength": 48, + "description": "Condition that must be attached to the transfer by the Payer." + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." + }, + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "transferAmount", + "expiration", + "ilpPacket", + "condition" + ] + }, + "quoteResponseSource": { + "type": "string", + "description": "FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway.\n" + }, + "fulfil": { + "title": "TransfersIDPutResponse", + "type": "object", + "description": "The object sent in the PUT /transfers/{ID} callback.", + "properties": { + "fulfilment": { + "title": "IlpFulfilment", + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "maxLength": 48, + "description": "Fulfilment that must be attached to the transfer by the Payee.", + "example": "WLctttbu2HvTsa1XWvUoGRcQozHsqeu9Ahl2JW9Bsu8" + }, + "completedTimestamp": { + "title": "DateTime", + "type": "string", + "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:(\\.\\d{3}))(?:Z|[+-][01]\\d:[0-5]\\d)$", + "description": "The API data type DateTime is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. The format is according to [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed in a combined date, time and time zone format. A more readable version of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC).", + "example": "2016-05-24T08:38:08.699-04:00" + }, + "transferState": { + "title": "TransferState", + "type": "string", + "enum": [ + "RECEIVED", + "RESERVED", + "COMMITTED", + "ABORTED" + ], + "description": "Below are the allowed values for the enumeration.\n- RECEIVED - Next ledger has received the transfer.\n- RESERVED - Next ledger has reserved the transfer.\n- COMMITTED - Next ledger has successfully performed the transfer.\n- ABORTED - Next ledger has aborted the transfer due to a rejection or failure to perform the transfer.", + "example": "RESERVED" + }, + "extensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", + "properties": { + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." }, - "required": [ - "transferState" - ] + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } }, - "headers": { - "type": "object" - } - } - }, - "lastError": { + "required": [ + "key", + "value" + ] + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." + } + }, + "required": [ + "extension" + ] + } + }, + "required": [ + "transferState" + ] + }, + "lastError": { + "type": "object", + "description": "This object represents a Mojaloop API error received at any time during the transfer process", + "properties": { + "httpStatusCode": { + "type": "integer", + "description": "The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response." + }, + "mojaloopError": { + "type": "object", + "properties": { + "errorInformation": { + "title": "ErrorInformation", "type": "object", - "description": "This object represents a Mojaloop API error received at any time during the transfer process", + "description": "Data model for the complex type ErrorInformation.", "properties": { - "httpStatusCode": { - "type": "integer", - "description": "The HTTP status code returned to the caller. This is the same as the actual HTTP status code returned with the response." + "errorCode": { + "title": "ErrorCode", + "type": "string", + "pattern": "^[1-9]\\d{3}$", + "description": "The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error.", + "example": "5100" }, - "mojaloopError": { + "errorDescription": { + "title": "ErrorDescription", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Error description string." + }, + "extensionList": { + "title": "ExtensionList", "type": "object", + "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", "properties": { - "errorInformation": { - "title": "ErrorInformation", - "type": "object", - "description": "Data model for the complex type ErrorInformation.", - "properties": { - "errorCode": { - "title": "ErrorCode", - "type": "string", - "pattern": "^[1-9]\\d{3}$", - "description": "The API data type ErrorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represent the specific error.", - "example": "5100" - }, - "errorDescription": { - "title": "ErrorDescription", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Error description string." - }, - "extensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList. An optional list of extensions, specific to deployment.", - "properties": { - "extension": { - "type": "array", - "items": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension.", - "properties": { - "key": { - "title": "ExtensionKey", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "Extension key." - }, - "value": { - "title": "ExtensionValue", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements." - } + "extension": { + "type": "array", + "items": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension.", + "properties": { + "key": { + "title": "ExtensionKey", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "Extension key." }, - "required": [ - "extension" - ] - } + "value": { + "title": "ExtensionValue", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] }, - "required": [ - "errorCode", - "errorDescription" - ] + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements." } - } + }, + "required": [ + "extension" + ] } - } - }, - "skipPartyLookup": { - "description": "Set to true if supplying an FSPID for the payee party and no party resolution is needed. This may be useful is a previous party resolution has been performed.", - "type": "boolean" + }, + "required": [ + "errorCode", + "errorDescription" + ] } } } } } - ] + } }, "transferContinuationAcceptOTP": { "type": "object", diff --git a/src/sdk-scheme-adapter/v2_0_0/outbound/openapi.ts b/src/sdk-scheme-adapter/v2_0_0/outbound/openapi.ts index 43fdeb6f..e442a233 100644 --- a/src/sdk-scheme-adapter/v2_0_0/outbound/openapi.ts +++ b/src/sdk-scheme-adapter/v2_0_0/outbound/openapi.ts @@ -213,6 +213,31 @@ export interface paths { }; }; }; + "/requestToPay/{transactionRequestId}": { + /** + * The HTTP request `PUT /requestToPay/{transactionRequestId}` is used to continue a transfer initiated via the `POST /requestToPay` method that has halted after party lookup stage. + * The request body should contain the "acceptParty" property set to `true` as required to continue the transfer. + * See the description of the `POST /requestToPay` HTTP method for more information on modes of transfer. + */ + put: { + parameters: { + path: { + /** Identifier of the merchant request to pay to continue as returned in the response to a `POST /requestToPay` request. */ + transactionRequestId: components["parameters"]["transactionRequestId"]; + }; + }; + responses: { + 200: components["responses"]["requestToPaySuccess"]; + 500: components["responses"]["transferServerError"]; + 504: components["responses"]["transferTimeout"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["transferContinuationAcceptParty"]; + }; + }; + }; + }; "/requestToPayTransfer": { /** * The HTTP request `POST /requestToPayTransfer` is used to request the movement of funds from payer DFSP to payee DFSP. @@ -1227,9 +1252,19 @@ export interface components { errorQuotesResponse: components["schemas"]["errorResponse"] & { [key: string]: unknown; }; + /** + * AuthenticationType + * @description Below are the allowed values for the enumeration AuthenticationType. + * - OTP - One-time password generated by the Payer FSP. + * - QRCODE - QR code used as One Time Password. + * - U2F - U2F is a new addition isolated to Thirdparty stream. + * @example OTP + * @enum {string} + */ + AuthenticationType: "OTP" | "QRCODE" | "U2F"; requestToPayRequest: { /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - homeTransactionId: string; + homeR2PTransactionId: string; from: components["schemas"]["transferParty"]; to: components["schemas"]["transferParty"]; amountType: components["schemas"]["AmountType"]; @@ -1237,17 +1272,22 @@ export interface components { amount: components["schemas"]["Amount"]; transactionType: components["schemas"]["TransactionScenario"]; subScenario?: components["schemas"]["TransactionSubScenario"]; + authenticationType?: components["schemas"]["AuthenticationType"]; }; + /** @enum {string} */ + requestToPayStatus: + | "ERROR_OCCURRED" + | "WAITING_FOR_PARTY_ACCEPTANCE" + | "COMPLETED"; /** - * AuthenticationType - * @description Below are the allowed values for the enumeration AuthenticationType. - * - OTP - One-time password generated by the Payer FSP. - * - QRCODE - QR code used as One Time Password. - * - U2F - U2F is a new addition isolated to Thirdparty stream. - * @example OTP - * @enum {string} + * getPartiesResponse + * @description The object sent in the GET /parties/{Type}/{ID} callback. */ - AuthenticationType: "OTP" | "QRCODE" | "U2F"; + getPartiesResponse: { + /** @description Information regarding the requested Party. */ + body: components["schemas"]["Party"]; + headers: { [key: string]: unknown }; + }; /** * TransactionRequestState * @description Below are the allowed values for the enumeration. @@ -1259,6 +1299,18 @@ export interface components { * @enum {string} */ TransactionRequestState: "RECEIVED" | "PENDING" | "ACCEPTED" | "REJECTED"; + /** + * TransactionRequestResponse + * @description The object sent in the PUT /transactionRequests/{ID} callback. + */ + TransactionRequestResponse: { + body: { + transactionId?: components["schemas"]["CorrelationId"]; + transactionRequestState: components["schemas"]["TransactionRequestState"]; + extensionList?: components["schemas"]["ExtensionList"]; + }; + headers: { [key: string]: unknown }; + }; requestToPayResponse: { transactionRequestId: components["schemas"]["CorrelationId"]; from: components["schemas"]["transferParty"]; @@ -1268,21 +1320,11 @@ export interface components { amount: components["schemas"]["Amount"]; transactionType: components["schemas"]["TransactionScenario"]; subScenario?: components["schemas"]["TransactionSubScenario"]; - authenticationType?: components["schemas"]["AuthenticationType"]; - requestToPayState: components["schemas"]["TransactionRequestState"]; - }; - requestToPayTransferRequest: { - /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - requestToPayTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - scenario: components["schemas"]["TransactionType"]; - initiator: components["schemas"]["TransactionInitiator"]; - initiatorType: components["schemas"]["TransactionInitiatorType"]; - note?: components["schemas"]["Note"]; + currentState: components["schemas"]["requestToPayStatus"]; + getPartiesResponse?: components["schemas"]["getPartiesResponse"]; + transactionRequestResponse?: components["schemas"]["TransactionRequestResponse"]; + /** @description Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ + lastError?: components["schemas"]["transferError"]; }; /** @enum {string} */ transferStatus: @@ -1315,26 +1357,6 @@ export interface components { transferState: components["schemas"]["TransferState"]; extensionList?: components["schemas"]["ExtensionList"]; }; - requestToPayTransferResponse: { - transferId?: components["schemas"]["CorrelationId"]; - /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ - requestToPayTransactionId: string; - from: components["schemas"]["transferParty"]; - to: components["schemas"]["transferParty"]; - amountType: components["schemas"]["AmountType"]; - currency: components["schemas"]["Currency"]; - amount: components["schemas"]["Amount"]; - transactionType: components["schemas"]["transferTransactionType"]; - note?: components["schemas"]["Note"]; - currentState?: components["schemas"]["transferStatus"]; - quoteId?: components["schemas"]["CorrelationId"]; - quoteResponse?: components["schemas"]["QuotesIDPutResponse"]; - /** @description FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. */ - quoteResponseSource?: string; - fulfil?: components["schemas"]["TransfersIDPutResponse"]; - /** @description Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ - lastError?: components["schemas"]["transferError"]; - }; transferResponse: { transferId?: components["schemas"]["CorrelationId"]; /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ @@ -1371,6 +1393,39 @@ export interface components { errorTransferResponse: components["schemas"]["errorResponse"] & { transferState: components["schemas"]["transferResponse"]; }; + requestToPayTransferRequest: { + /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ + requestToPayTransactionId: string; + from: components["schemas"]["transferParty"]; + to: components["schemas"]["transferParty"]; + amountType: components["schemas"]["AmountType"]; + currency: components["schemas"]["Currency"]; + amount: components["schemas"]["Amount"]; + scenario: components["schemas"]["TransactionType"]; + initiator: components["schemas"]["TransactionInitiator"]; + initiatorType: components["schemas"]["TransactionInitiatorType"]; + note?: components["schemas"]["Note"]; + }; + requestToPayTransferResponse: { + transferId?: components["schemas"]["CorrelationId"]; + /** @description Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems. */ + requestToPayTransactionId: string; + from: components["schemas"]["transferParty"]; + to: components["schemas"]["transferParty"]; + amountType: components["schemas"]["AmountType"]; + currency: components["schemas"]["Currency"]; + amount: components["schemas"]["Amount"]; + transactionType: components["schemas"]["transferTransactionType"]; + note?: components["schemas"]["Note"]; + currentState?: components["schemas"]["transferStatus"]; + quoteId?: components["schemas"]["CorrelationId"]; + quoteResponse?: components["schemas"]["QuotesIDPutResponse"]; + /** @description FSPID of the entity that supplied the quote response. This may not be the same as the FSPID of the entity which owns the end user account in the case of a FOREX transfer. i.e. it may be a FOREX gateway. */ + quoteResponseSource?: string; + fulfil?: components["schemas"]["TransfersIDPutResponse"]; + /** @description Object representing the last error to occur during a transfer process. This may be a Mojaloop API error returned from another entity in the scheme or an object representing other types of error e.g. exceptions that may occur inside the scheme adapter. */ + lastError?: components["schemas"]["transferError"]; + }; transferContinuationAcceptOTP: { /** @enum {boolean} */ acceptOTP: true | false; @@ -1533,26 +1588,26 @@ export interface components { "application/json": components["schemas"]["requestToPayResponse"]; }; }; - /** Transfer completed successfully */ - requestToPayTransferSuccess: { + /** An error occurred processing the transfer */ + transferServerError: { content: { - "application/json": components["schemas"]["requestToPayTransferResponse"]; + "application/json": components["schemas"]["errorTransferResponse"]; }; }; - /** Malformed or missing required body, headers or parameters */ - requestToPayTransferBadRequest: { + /** Timeout occurred processing the transfer */ + transferTimeout: { content: { "application/json": components["schemas"]["errorTransferResponse"]; }; }; - /** An error occurred processing the transfer */ - transferServerError: { + /** Transfer completed successfully */ + requestToPayTransferSuccess: { content: { - "application/json": components["schemas"]["errorTransferResponse"]; + "application/json": components["schemas"]["requestToPayTransferResponse"]; }; }; - /** Timeout occurred processing the transfer */ - transferTimeout: { + /** Malformed or missing required body, headers or parameters */ + requestToPayTransferBadRequest: { content: { "application/json": components["schemas"]["errorTransferResponse"]; }; @@ -1595,6 +1650,8 @@ export interface components { ID: string; /** @description A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`. */ SubId: string; + /** @description Identifier of the merchant request to pay to continue as returned in the response to a `POST /requestToPay` request. */ + transactionRequestId: components["schemas"]["CorrelationId"]; /** @description Identifier of the merchant request to pay transfer to continue as returned in the response to a `POST /requestToPayTransfer` request. */ requestToPayTransactionId: components["schemas"]["CorrelationId"]; /** @description Identifier of the transfer to continue as returned in the response to a `POST /transfers` request. */ diff --git a/src/sdk-scheme-adapter/v2_0_0/outbound/schemas.ts b/src/sdk-scheme-adapter/v2_0_0/outbound/schemas.ts index 7665a0aa..3a51df72 100644 --- a/src/sdk-scheme-adapter/v2_0_0/outbound/schemas.ts +++ b/src/sdk-scheme-adapter/v2_0_0/outbound/schemas.ts @@ -96,17 +96,20 @@ export namespace Schemas { export const simpleQuotesPostRequest = JsonSchemas.simpleQuotesPostRequest export const quotesPostResponse = JsonSchemas.quotesPostResponse export const errorQuotesResponse = JsonSchemas.errorQuotesResponse - export const requestToPayRequest = JsonSchemas.requestToPayRequest export const AuthenticationType = JsonSchemas.AuthenticationType + export const requestToPayRequest = JsonSchemas.requestToPayRequest + export const requestToPayStatus = JsonSchemas.requestToPayStatus + export const getPartiesResponse = JsonSchemas.getPartiesResponse export const TransactionRequestState = JsonSchemas.TransactionRequestState + export const TransactionRequestResponse = JsonSchemas.TransactionRequestResponse export const requestToPayResponse = JsonSchemas.requestToPayResponse - export const requestToPayTransferRequest = JsonSchemas.requestToPayTransferRequest export const transferStatus = JsonSchemas.transferStatus export const QuotesIDPutResponse = JsonSchemas.QuotesIDPutResponse export const TransfersIDPutResponse = JsonSchemas.TransfersIDPutResponse - export const requestToPayTransferResponse = JsonSchemas.requestToPayTransferResponse export const transferResponse = JsonSchemas.transferResponse export const errorTransferResponse = JsonSchemas.errorTransferResponse + export const requestToPayTransferRequest = JsonSchemas.requestToPayTransferRequest + export const requestToPayTransferResponse = JsonSchemas.requestToPayTransferResponse export const transferContinuationAcceptOTP = JsonSchemas.transferContinuationAcceptOTP export const TransfersPostRequest = JsonSchemas.TransfersPostRequest export const simpleTransfersPostRequest = JsonSchemas.simpleTransfersPostRequest diff --git a/src/sdk-scheme-adapter/v2_0_0/outbound/types.ts b/src/sdk-scheme-adapter/v2_0_0/outbound/types.ts index da521111..0114bce6 100644 --- a/src/sdk-scheme-adapter/v2_0_0/outbound/types.ts +++ b/src/sdk-scheme-adapter/v2_0_0/outbound/types.ts @@ -96,17 +96,20 @@ export namespace Types { export type simpleQuotesPostRequest = components['schemas']['simpleQuotesPostRequest'] export type quotesPostResponse = components['schemas']['quotesPostResponse'] export type errorQuotesResponse = components['schemas']['errorQuotesResponse'] - export type requestToPayRequest = components['schemas']['requestToPayRequest'] export type AuthenticationType = components['schemas']['AuthenticationType'] + export type requestToPayRequest = components['schemas']['requestToPayRequest'] + export type requestToPayStatus = components['schemas']['requestToPayStatus'] + export type getPartiesResponse = components['schemas']['getPartiesResponse'] export type TransactionRequestState = components['schemas']['TransactionRequestState'] + export type TransactionRequestResponse = components['schemas']['TransactionRequestResponse'] export type requestToPayResponse = components['schemas']['requestToPayResponse'] - export type requestToPayTransferRequest = components['schemas']['requestToPayTransferRequest'] export type transferStatus = components['schemas']['transferStatus'] export type QuotesIDPutResponse = components['schemas']['QuotesIDPutResponse'] export type TransfersIDPutResponse = components['schemas']['TransfersIDPutResponse'] - export type requestToPayTransferResponse = components['schemas']['requestToPayTransferResponse'] export type transferResponse = components['schemas']['transferResponse'] export type errorTransferResponse = components['schemas']['errorTransferResponse'] + export type requestToPayTransferRequest = components['schemas']['requestToPayTransferRequest'] + export type requestToPayTransferResponse = components['schemas']['requestToPayTransferResponse'] export type transferContinuationAcceptOTP = components['schemas']['transferContinuationAcceptOTP'] export type TransfersPostRequest = components['schemas']['TransfersPostRequest'] export type simpleTransfersPostRequest = components['schemas']['simpleTransfersPostRequest']