ml-testing-toolkit 18.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/.dockerignore +10 -0
  2. package/.grype.yaml +16 -0
  3. package/.ncurc.yaml +9 -0
  4. package/.nvmrc +1 -0
  5. package/.versionrc.js +16 -0
  6. package/CHANGELOG.md +504 -0
  7. package/CODEOWNERS +30 -0
  8. package/Dockerfile +42 -0
  9. package/Dockerfile-newman +13 -0
  10. package/LICENSE.md +9 -0
  11. package/README.md +119 -0
  12. package/assets/diagrams/architectural/architectural-diagram.svg +3 -0
  13. package/assets/diagrams/flow/flow-diagram.svg +3 -0
  14. package/assets/images/Sample-Response-Failure.png +0 -0
  15. package/assets/images/Screenshot 2020-04-16 at 22.58.04.png +0 -0
  16. package/assets/images/TLS-Enabled-on-Environment.png +0 -0
  17. package/assets/images/adapter-mutual-tls-enabled.png +0 -0
  18. package/assets/images/add-additional-input-values.png +0 -0
  19. package/assets/images/add-condition-button.png +0 -0
  20. package/assets/images/add-new-assertion.png +0 -0
  21. package/assets/images/add-new-input-value.png +0 -0
  22. package/assets/images/add-new-input-variable.png +0 -0
  23. package/assets/images/additional-transfers.png +0 -0
  24. package/assets/images/api-provisioning-add-new-api-confirmation.png +0 -0
  25. package/assets/images/api-provisioning-file-input-window.png +0 -0
  26. package/assets/images/api-provisioning-list-apis-view.png +0 -0
  27. package/assets/images/api-provisioning-menu-item.png +0 -0
  28. package/assets/images/apply_and_restart.jpg +0 -0
  29. package/assets/images/assess-request-or-response.png +0 -0
  30. package/assets/images/assess-response-equation-save.png +0 -0
  31. package/assets/images/assess-response-equation.png +0 -0
  32. package/assets/images/assess-response-status.png +0 -0
  33. package/assets/images/building-new-rules-file.png +0 -0
  34. package/assets/images/callback-rules-screen.png +0 -0
  35. package/assets/images/configurable-parameter-assertion.png +0 -0
  36. package/assets/images/configurable-parameter-currency.png +0 -0
  37. package/assets/images/configurable-parameter.png +0 -0
  38. package/assets/images/connection-manager-ui-opening.png +0 -0
  39. package/assets/images/create-inbound-user-simulator.png +0 -0
  40. package/assets/images/creating-new-rule-file.png +0 -0
  41. package/assets/images/dfsp-client-cacert.png +0 -0
  42. package/assets/images/dfsp-client-submit.png +0 -0
  43. package/assets/images/dfsp-client.png +0 -0
  44. package/assets/images/dfsp-p2p-happy-path.png +0 -0
  45. package/assets/images/dfsp-server-cacert.png +0 -0
  46. package/assets/images/dfsp-server-cert.png +0 -0
  47. package/assets/images/download-report.png +0 -0
  48. package/assets/images/drive_have_not_been_shared.jpg +0 -0
  49. package/assets/images/event-response-options.png +0 -0
  50. package/assets/images/expand-monitoring-messages.png +0 -0
  51. package/assets/images/fixed-response-sample.png +0 -0
  52. package/assets/images/header-selection.png +0 -0
  53. package/assets/images/heap_error_windows.jpg +0 -0
  54. package/assets/images/hosted-mode-docker-compose-intro.png +0 -0
  55. package/assets/images/hub-client-cert.png +0 -0
  56. package/assets/images/import-template.png +0 -0
  57. package/assets/images/inbound-requests-environment.png +0 -0
  58. package/assets/images/inbound-requests-scripts.png +0 -0
  59. package/assets/images/jws-certificate-submit.png +0 -0
  60. package/assets/images/jws-certificate.png +0 -0
  61. package/assets/images/jws-certs-keys.png +0 -0
  62. package/assets/images/jws-hub-certs-keys.png +0 -0
  63. package/assets/images/local-enable-jws-publickey.png +0 -0
  64. package/assets/images/local-mutual-tls-enabled.png +0 -0
  65. package/assets/images/local_drives_to_be_available.jpg +0 -0
  66. package/assets/images/mcm-environment-opening.png +0 -0
  67. package/assets/images/menu-items.png +0 -0
  68. package/assets/images/mock-response-sample.png +0 -0
  69. package/assets/images/monitoring-initial-state.png +0 -0
  70. package/assets/images/monitoring-messages.png +0 -0
  71. package/assets/images/new-empty-assertion.png +0 -0
  72. package/assets/images/opened-imported-template.png +0 -0
  73. package/assets/images/opening-default-settings.png +0 -0
  74. package/assets/images/opening-sync-response-rules.png +0 -0
  75. package/assets/images/opening-view.png +0 -0
  76. package/assets/images/outbound-display-opening-hub.png +0 -0
  77. package/assets/images/outbound-display-opening.png +0 -0
  78. package/assets/images/override-with-environment-variable.png +0 -0
  79. package/assets/images/populate-with-sample-body.png +0 -0
  80. package/assets/images/resource-selection.png +0 -0
  81. package/assets/images/rule-builder-select-api.png +0 -0
  82. package/assets/images/sample-condition-add-configurable-params.png +0 -0
  83. package/assets/images/sample-condition.png +0 -0
  84. package/assets/images/sample-editor.png +0 -0
  85. package/assets/images/sample-request.png +0 -0
  86. package/assets/images/sample-test-assertion.png +0 -0
  87. package/assets/images/send-transfer.png +0 -0
  88. package/assets/images/sending-single-test-case-1.png +0 -0
  89. package/assets/images/sending-single-test-case-2.png +0 -0
  90. package/assets/images/sending-test-cases.png +0 -0
  91. package/assets/images/server-certificates-submitted.png +0 -0
  92. package/assets/images/simulator-response.png +0 -0
  93. package/assets/images/simulator-scheme-adapter-endpoint.png +0 -0
  94. package/assets/images/summarized-view-of-rule.png +0 -0
  95. package/assets/images/template-window.png +0 -0
  96. package/assets/images/test-case-editor-console-log.png +0 -0
  97. package/assets/images/test-case-editor-environment-state.png +0 -0
  98. package/assets/images/test-case-editor-scripts.png +0 -0
  99. package/assets/images/test-case-editor.png +0 -0
  100. package/assets/images/testcase-definition-download.png +0 -0
  101. package/assets/images/testcase-definition-edit-meta-info.png +0 -0
  102. package/assets/images/testing-toolkit-mojaloop-testing-toolkit-endpoint.png +0 -0
  103. package/assets/images/tls-hub-certs-keys.png +0 -0
  104. package/assets/images/tls-jws-enabled-on-environment.png +0 -0
  105. package/assets/images/updated-sample-body-data.png +0 -0
  106. package/assets/images/using-configurable-parameter.png +0 -0
  107. package/assets/images/validation-rules-screen.png +0 -0
  108. package/assets/images/view-response.png +0 -0
  109. package/audit-ci.jsonc +7 -0
  110. package/connection-manager/docker-compose.yml +55 -0
  111. package/database/docker-compose.yml +16 -0
  112. package/docker/hosted-mode/docker-compose.yaml +107 -0
  113. package/docker/hosted-mode/keycloak/keycloak-realm.json +2298 -0
  114. package/docker/hosted-mode/mongo-init.sh +1 -0
  115. package/docker/hosted-mode-tls/docker-compose.yaml +171 -0
  116. package/docker/hosted-mode-tls/keycloak/keycloak-realm.json +2298 -0
  117. package/docker/hosted-mode-tls/mongo-init.sh +1 -0
  118. package/docker-compose.yml +62 -0
  119. package/documents/Mojaloop-Testing-Toolkit.md +296 -0
  120. package/documents/RULES_ENGINE.md +403 -0
  121. package/documents/User-Guide-API-Provisioning.md +121 -0
  122. package/documents/User-Guide-CLI.md +218 -0
  123. package/documents/User-Guide-Connection-Manager.md +282 -0
  124. package/documents/User-Guide-Frequently-Asked-Questions.md +39 -0
  125. package/documents/User-Guide-Hosted-Mode-Docker-Compose.md +110 -0
  126. package/documents/User-Guide-Installation.md +163 -0
  127. package/documents/User-Guide-Mojaloop-Testing-Toolkit.md +642 -0
  128. package/documents/User-Guide-OAuth-Server-Deployment.md +283 -0
  129. package/documents/User-Guide-Onboarding-DFSP.md +197 -0
  130. package/documents/User-Guide-Onboarding-HUB.md +191 -0
  131. package/documents/User-Guide.md +53 -0
  132. package/examples/collections/dfsp/p2p_failed_tests.json +7161 -0
  133. package/examples/collections/dfsp/p2p_fx_happy_path.json +502 -0
  134. package/examples/collections/dfsp/p2p_happy_path.json +350 -0
  135. package/examples/collections/dfsp/p2p_happy_path_extended.json +6106 -0
  136. package/examples/collections/dfsp/p2p_happy_path_jws.json +511 -0
  137. package/examples/collections/dfsp/p2p_payee_assertions_websocket.json +441 -0
  138. package/examples/collections/dfsp/sample.json +5029 -0
  139. package/examples/collections/dfsp/transaction_request_service.json +240 -0
  140. package/examples/collections/fxp/FXP.json +264 -0
  141. package/examples/collections/fxp/SDK_backend.json +98 -0
  142. package/examples/collections/fxp/SDK_outbound.json +163 -0
  143. package/examples/collections/hub/hub_01_p2p_happy_path/hub_p2p_receive_quote.json +400 -0
  144. package/examples/collections/hub/hub_01_p2p_happy_path/hub_p2p_send_quote.json +395 -0
  145. package/examples/collections/hub/hub_02_block_transfer/hub_block_transfer.json +393 -0
  146. package/examples/collections/hub/hub_03_funds_in_out/hub_funds_in.json +224 -0
  147. package/examples/collections/hub/hub_03_funds_in_out/hub_funds_out.json +780 -0
  148. package/examples/collections/hub/hub_04_settlements/hub_settlements.json +3138 -0
  149. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_payee_abort.json +475 -0
  150. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_payee_invalid_fulfillment.json +370 -0
  151. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_transfer_timeout.json +262 -0
  152. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_authorizations.json +117 -0
  153. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_error_framework.json +591 -0
  154. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_received_state.json +379 -0
  155. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_reject_state.json +361 -0
  156. package/examples/collections/hub/hub_07_quoting_service.json +525 -0
  157. package/examples/collections/hub/hub_08_participant_inactive_stop_transfers.json +706 -0
  158. package/examples/collections/hub/hub_09_duplicate_handling_transfers.json +1377 -0
  159. package/examples/collections/hub/hub_10_on_us_transfers.json +245 -0
  160. package/examples/collections/hub/hub_11_accented_and_spl_chars.json +629 -0
  161. package/examples/collections/hub/hub_12_fspiop_version_1.1.json +646 -0
  162. package/examples/collections/hub/hub_13_bulk_transfers.json +1857 -0
  163. package/examples/collections/iso20022/self_referencing_iso20022.json +926 -0
  164. package/examples/collections/provisioning/testingtoolkitdfsp.json +904 -0
  165. package/examples/environments/dfsp_local_environment.json +46 -0
  166. package/examples/environments/hub_local_environment.json +57 -0
  167. package/jest.config.js +17 -0
  168. package/package.json +199 -0
  169. package/sbom-v18.12.4.csv +1553 -0
  170. package/secrets/keygen.sh +5 -0
  171. package/secrets/privatekey.pem +27 -0
  172. package/secrets/publickey.cer +21 -0
  173. package/secrets/tls/01.pem +132 -0
  174. package/secrets/tls/createSecrets.sh +20 -0
  175. package/secrets/tls/hub_client.csr +32 -0
  176. package/secrets/tls/hub_client_cacert.pem +35 -0
  177. package/secrets/tls/hub_client_cakey.pem +52 -0
  178. package/secrets/tls/hub_client_key.key +52 -0
  179. package/secrets/tls/hub_server.csr +31 -0
  180. package/secrets/tls/hub_server_cacert.pem +35 -0
  181. package/secrets/tls/hub_server_cakey.pem +52 -0
  182. package/secrets/tls/hub_server_cert.pem +132 -0
  183. package/secrets/tls/hub_server_key.key +52 -0
  184. package/secrets/tls/index.txt +1 -0
  185. package/secrets/tls/index.txt.attr +1 -0
  186. package/secrets/tls/openssl-client.cnf +36 -0
  187. package/secrets/tls/openssl-clientca.cnf +71 -0
  188. package/secrets/tls/openssl-server.cnf +39 -0
  189. package/secrets/tls/openssl-serverca.cnf +71 -0
  190. package/secrets/tls/serial.txt +1 -0
  191. package/spec_files/api_definitions/als_admin_1.1/api_spec.yaml +804 -0
  192. package/spec_files/api_definitions/central_admin_1.0/api_spec.yaml +1850 -0
  193. package/spec_files/api_definitions/central_admin_1.0/response_map.json +96 -0
  194. package/spec_files/api_definitions/central_admin_old_9.3/api_spec.yaml +2467 -0
  195. package/spec_files/api_definitions/central_admin_old_9.3/response_map.json +96 -0
  196. package/spec_files/api_definitions/fspiop_1.0/api_spec.yaml +4187 -0
  197. package/spec_files/api_definitions/fspiop_1.0/callback_map.json +568 -0
  198. package/spec_files/api_definitions/fspiop_1.0/mockRef.json +79 -0
  199. package/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup.json +126 -0
  200. package/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup_quotes_only.json +97 -0
  201. package/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +3778 -0
  202. package/spec_files/api_definitions/fspiop_1.1/callback_map.json +568 -0
  203. package/spec_files/api_definitions/fspiop_1.1/mockRef.json +79 -0
  204. package/spec_files/api_definitions/fspiop_1.1/trigger_templates/transaction_request_followup.json +125 -0
  205. package/spec_files/api_definitions/fspiop_2.0/api_spec.yaml +4839 -0
  206. package/spec_files/api_definitions/fspiop_2.0/callback_map.json +716 -0
  207. package/spec_files/api_definitions/fspiop_2.0/mockRef.json +79 -0
  208. package/spec_files/api_definitions/fspiop_2.0/trigger_templates/transaction_request_followup.json +125 -0
  209. package/spec_files/api_definitions/fspiop_2.0_iso20022/api_spec.yaml +8331 -0
  210. package/spec_files/api_definitions/fspiop_2.0_iso20022/callback_map.json +508 -0
  211. package/spec_files/api_definitions/fspiop_2.0_iso20022/mockRef.json +66 -0
  212. package/spec_files/api_definitions/fx-api_2.0/api_spec.yaml +1768 -0
  213. package/spec_files/api_definitions/fx-api_2.0/callback_map.json +188 -0
  214. package/spec_files/api_definitions/fx-api_2.0/mockRef.json +83 -0
  215. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml +2612 -0
  216. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json +22 -0
  217. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json +35 -0
  218. package/spec_files/api_definitions/mojaloop_simulator_0.1/api_spec.yaml +225 -0
  219. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml +1087 -0
  220. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json +75 -0
  221. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json +55 -0
  222. package/spec_files/api_definitions/payment_manager_1.4/api_spec.yaml +1389 -0
  223. package/spec_files/api_definitions/sdk-scheme-adapter-backend-v2_1_0-openapi3-snippets_2.1/api_spec.yaml +2834 -0
  224. package/spec_files/api_definitions/sdk-scheme-adapter-outbound-v2_1_0-openapi3-snippets_2.1/api_spec.yaml +3449 -0
  225. package/spec_files/api_definitions/settlements_1.0/api_spec.yaml +983 -0
  226. package/spec_files/api_definitions/settlements_1.0/mockRef.json +38 -0
  227. package/spec_files/api_definitions/settlements_1.0/response_map.json +34 -0
  228. package/spec_files/api_definitions/settlements_2.0/api_spec.yaml +1001 -0
  229. package/spec_files/api_definitions/settlements_2.0/mockRef.json +38 -0
  230. package/spec_files/api_definitions/settlements_2.0/response_map.json +34 -0
  231. package/spec_files/api_definitions/thirdparty_sdk_outbound_0.1/api_spec.yaml +2139 -0
  232. package/spec_files/reports/templates/newman/html_template.html +1202 -0
  233. package/spec_files/reports/templates/newman/pdf_template.html +790 -0
  234. package/spec_files/reports/templates/testcase_definition/table_view.html +1602 -0
  235. package/spec_files/rules_callback/config.json +3 -0
  236. package/spec_files/rules_callback/default.json +2698 -0
  237. package/spec_files/rules_callback/p2p-limit.json +129 -0
  238. package/spec_files/rules_forward/config.json +3 -0
  239. package/spec_files/rules_forward/default.json +482 -0
  240. package/spec_files/rules_response/config.json +3 -0
  241. package/spec_files/rules_response/default.json +295 -0
  242. package/spec_files/rules_validation/config.json +3 -0
  243. package/spec_files/rules_validation/default.json +1 -0
  244. package/spec_files/rules_validation/p2p-limit.json +55 -0
  245. package/spec_files/system_config.json +175 -0
  246. package/spec_files/user_config.json +109 -0
  247. package/src/index.js +67 -0
  248. package/src/lib/MyEventEmitter.js +54 -0
  249. package/src/lib/api-management.js +143 -0
  250. package/src/lib/api-routes/config.js +83 -0
  251. package/src/lib/api-routes/history.js +139 -0
  252. package/src/lib/api-routes/keycloak.js +54 -0
  253. package/src/lib/api-routes/longpolling.js +70 -0
  254. package/src/lib/api-routes/oauth2.js +149 -0
  255. package/src/lib/api-routes/objectstore.js +53 -0
  256. package/src/lib/api-routes/openapi.js +224 -0
  257. package/src/lib/api-routes/outbound.js +134 -0
  258. package/src/lib/api-routes/reports.js +72 -0
  259. package/src/lib/api-routes/rules.js +356 -0
  260. package/src/lib/api-routes/samples.js +92 -0
  261. package/src/lib/api-routes/server-logs.js +44 -0
  262. package/src/lib/api-routes/settings.js +71 -0
  263. package/src/lib/api-server.js +135 -0
  264. package/src/lib/arrayStore.js +101 -0
  265. package/src/lib/callbackHandler.js +201 -0
  266. package/src/lib/config.js +177 -0
  267. package/src/lib/configuration-providers/mb-connection-manager.js +625 -0
  268. package/src/lib/db/adapters/dbAdapter.js +184 -0
  269. package/src/lib/db/dfspMockUsers.js +64 -0
  270. package/src/lib/db/models/mongoDBWrapper.js +78 -0
  271. package/src/lib/eventListenerClient/inboundEventListener.js +176 -0
  272. package/src/lib/fileAdapter.js +57 -0
  273. package/src/lib/httpAgentStore.js +135 -0
  274. package/src/lib/importExport.js +186 -0
  275. package/src/lib/jws/JwsSigning.js +141 -0
  276. package/src/lib/loadSamples.js +128 -0
  277. package/src/lib/logger.js +20 -0
  278. package/src/lib/longpollingEmitter.js +56 -0
  279. package/src/lib/metrics.js +51 -0
  280. package/src/lib/mocking/custom-functions/generic.js +57 -0
  281. package/src/lib/mocking/middleware-functions/ilpModel.js +238 -0
  282. package/src/lib/mocking/middleware-functions/quotesAssociation.js +75 -0
  283. package/src/lib/mocking/middleware-functions/transactionRequestsService.js +78 -0
  284. package/src/lib/mocking/openApiDefinitionsModel.js +64 -0
  285. package/src/lib/mocking/openApiMockHandler.js +466 -0
  286. package/src/lib/mocking/openApiRulesEngine.js +492 -0
  287. package/src/lib/mocking/openApiVersionTools.js +136 -0
  288. package/src/lib/mocking/transformers/fspiopToISO20022.js +230 -0
  289. package/src/lib/mocking/transformers/index.js +41 -0
  290. package/src/lib/notificationEmitter.js +64 -0
  291. package/src/lib/oauth/KeycloakHelper.js +220 -0
  292. package/src/lib/oauth/LoginService.js +133 -0
  293. package/src/lib/oauth/OAuthHelper.js +181 -0
  294. package/src/lib/oauth/OAuthValidator.js +118 -0
  295. package/src/lib/oauth/Wso2Client.js +64 -0
  296. package/src/lib/objectStore/inMemoryImpl.js +50 -0
  297. package/src/lib/objectStore/objectStoreInterface.js +51 -0
  298. package/src/lib/objectStore.js +122 -0
  299. package/src/lib/report-generator/generator.js +126 -0
  300. package/src/lib/report-generator/helpers.js +154 -0
  301. package/src/lib/requestLogger.js +190 -0
  302. package/src/lib/resources/wso2carbon-publickey.cert +20 -0
  303. package/src/lib/rulesEngine.js +95 -0
  304. package/src/lib/rulesEngineModel.js +463 -0
  305. package/src/lib/scripting-engines/postman-sandbox.js +142 -0
  306. package/src/lib/scripting-engines/vm-javascript-sandbox.js +294 -0
  307. package/src/lib/server-logs/adapters/elastic-search.js +102 -0
  308. package/src/lib/server-logs/adapters/grafana.js +0 -0
  309. package/src/lib/server-logs/index.js +75 -0
  310. package/src/lib/socket-server.js +55 -0
  311. package/src/lib/storageAdapter.js +109 -0
  312. package/src/lib/test-outbound/TestCaseRunner.js +173 -0
  313. package/src/lib/test-outbound/getTracing.js +19 -0
  314. package/src/lib/test-outbound/outbound-initiator.js +1107 -0
  315. package/src/lib/uniqueIdGenerator.js +35 -0
  316. package/src/lib/utils.js +89 -0
  317. package/src/lib/utilsInternal.js +56 -0
  318. package/src/lib/webSocketClient/WebSocketClientManager.js +197 -0
  319. package/src/server.js +218 -0
@@ -0,0 +1,2612 @@
1
+ openapi: 3.0.1
2
+ info:
3
+ title: Mojaloop SDK Outbound Scheme Adapter API
4
+ description: >
5
+ Specification for the Mojaloop SDK Scheme Adapter Outbound Transfers API
6
+
7
+
8
+ This API can be used by DFSP backends to simplify the process of sending
9
+ funds to other parties within a Mojaloop scheme.
10
+
11
+
12
+ Please see other documentation on
13
+ https://github.com/mojaloop/sdk-scheme-adapter for more information.
14
+
15
+
16
+ **Note on terminology:** The term "Switch" is equal to the term "Hub", and
17
+ the term "FSP" is equal to the term "DFSP".
18
+ license:
19
+ name: 'Apache License Version 2.0, January 2004'
20
+ url: 'http://www.apache.org/licenses/'
21
+ version: 1.0.0
22
+ paths:
23
+ /:
24
+ get:
25
+ summary: Health check endpoint
26
+ description: >-
27
+ This endpoint allows a user of the SDK scheme adapter to check the
28
+ outbound transfers service is listening.
29
+ tags:
30
+ - Health
31
+ responses:
32
+ '200':
33
+ description: >-
34
+ Returns empty body if the scheme adapter outbound transfers service
35
+ is running.
36
+ /transfers:
37
+ post:
38
+ summary: Sends money from one account to another
39
+ description: >
40
+ The HTTP request `POST /transfers` is used to request the movement of
41
+ funds from payer DFSP to payee DFSP.
42
+
43
+ The underlying Mojaloop API has three stages for money transfer:
44
+
45
+ 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement.
46
+ 2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred.
47
+ 3. Transfer. The enactment of the previously agreed "contract"
48
+
49
+ This method has several modes of operation.
50
+
51
+ - If the configuration variables `AUTO_ACCEPT_PARTIES` is set to
52
+ `"false"` this method will terminate when the payee party has been
53
+ resolved and return the payee party details.
54
+ If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation.
55
+ The scheme adapter will then proceed with quotation stage...
56
+
57
+ - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"`
58
+ this method will terminate and return the quotation when it has been
59
+ received from the payee DFSP.
60
+ If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
61
+ The scheme adapter will then proceed with the transfer state.
62
+
63
+ If the configuration variables `AUTO_ACCEPT_PARTIES` and
64
+ `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block
65
+ until all three transfer stages are complete. Upon completion it will
66
+ return the entire set of transfer details received during the operation.
67
+
68
+
69
+ Combinations of settings for `AUTO_ACCEPT...` configuration variables
70
+ allow the scheme adapter user to decide which mode of operation best
71
+ suits their use cases. i.e. the scheme adapter can be configured to
72
+ "break" the three stage transfer at these points in order to execute
73
+ backend logic such as party verification, quoted fees assessments etc...
74
+ tags:
75
+ - Transfers
76
+ operationId: TransfersPost
77
+ requestBody:
78
+ description: Transfer request body
79
+ content:
80
+ application/json:
81
+ schema:
82
+ $ref: '#/components/schemas/transferRequest'
83
+ required: true
84
+ responses:
85
+ '200':
86
+ $ref: '#/components/responses/transferSuccess'
87
+ '400':
88
+ $ref: '#/components/responses/transferBadRequest'
89
+ '500':
90
+ $ref: '#/components/responses/transferServerError'
91
+ '504':
92
+ $ref: '#/components/responses/transferTimeout'
93
+ '/transfers/{transferId}':
94
+ put:
95
+ summary: >-
96
+ Continues a transfer that has paused at the quote stage in order to
97
+ accept or reject payee party and/or quote
98
+ description: >
99
+ The HTTP request `PUT /transfers/{transferId}` is used to continue a
100
+ transfer initiated via the `POST /transfers` method that has halted
101
+ after party lookup and/or quotation stage.
102
+
103
+
104
+ The request body should contain either the "acceptParty" or
105
+ "acceptQuote" property set to `true` as required to continue the
106
+ transfer.
107
+
108
+
109
+ See the description of the `POST /transfers` HTTP method for more
110
+ information on modes of transfer.
111
+ tags:
112
+ - Transfers
113
+ operationId: TransfersPut
114
+ requestBody:
115
+ content:
116
+ application/json:
117
+ schema:
118
+ oneOf:
119
+ - $ref: '#/components/schemas/transferContinuationAcceptParty'
120
+ - $ref: '#/components/schemas/transferContinuationAcceptQuote'
121
+ parameters:
122
+ - $ref: '#/components/parameters/transferId'
123
+ responses:
124
+ '200':
125
+ $ref: '#/components/responses/transferSuccess'
126
+ '500':
127
+ $ref: '#/components/responses/transferServerError'
128
+ '504':
129
+ $ref: '#/components/responses/transferTimeout'
130
+ get:
131
+ summary: Retrieves information for a specific transfer
132
+ description: >-
133
+ The HTTP request `GET /transfers/{transferId}` is used to get
134
+ information regarding a transfer created or requested earlier. The
135
+ `{transferId}` in the URI should contain the `transferId` that was used
136
+ for the creation of the transfer.
137
+ tags:
138
+ - Transfers
139
+ operationId: TransfersGet
140
+ parameters:
141
+ - $ref: '#/components/parameters/transferId'
142
+ responses:
143
+ '200':
144
+ description: Transfer information successfully retrieved
145
+ content:
146
+ application/json:
147
+ schema:
148
+ $ref: '#/components/schemas/transferStatusResponse'
149
+ '500':
150
+ description: An error occurred processing the transfer
151
+ content:
152
+ application/json:
153
+ schema:
154
+ $ref: '#/components/schemas/errorResponse'
155
+ /bulkTransfers:
156
+ post:
157
+ summary: Sends money from one account to multiple accounts
158
+ description: >
159
+ The HTTP request `POST /bulkTransfers` is used to request the movement
160
+ of funds from payer DFSP to payees' DFSP.
161
+ tags:
162
+ - BulkTransfers
163
+ operationId: BulkTransfersPost
164
+ requestBody:
165
+ description: Bulk transfer request body
166
+ content:
167
+ application/json:
168
+ schema:
169
+ $ref: '#/components/schemas/bulkTransferRequest'
170
+ required: true
171
+ responses:
172
+ '200':
173
+ $ref: '#/components/responses/bulkTransferSuccess'
174
+ '400':
175
+ $ref: '#/components/responses/bulkTransferBadRequest'
176
+ '500':
177
+ $ref: '#/components/responses/bulkTransferServerError'
178
+ '504':
179
+ $ref: '#/components/responses/bulkTransferTimeout'
180
+ '/bulkTransfers/{bulkTransferId}':
181
+ get:
182
+ summary: Retrieves information for a specific bulk transfer
183
+ description: >-
184
+ The HTTP request `GET /bulkTransfers/{bulktTransferId}` is used to get
185
+ information regarding a bulk transfer created or requested earlier. The
186
+ `{bulkTransferId}` in the URI should contain the `bulkTransferId` that
187
+ was used for the creation of the bulk transfer.
188
+ tags:
189
+ - BulkTransfers
190
+ operationId: BulkTransfersGet
191
+ parameters:
192
+ - $ref: '#/components/parameters/bulkTransferId'
193
+ responses:
194
+ '200':
195
+ description: Bulk transfer information successfully retrieved
196
+ content:
197
+ application/json:
198
+ schema:
199
+ $ref: '#/components/schemas/bulkTransferStatusResponse'
200
+ '500':
201
+ description: An error occurred processing the bulk transfer
202
+ content:
203
+ application/json:
204
+ schema:
205
+ $ref: '#/components/schemas/errorResponse'
206
+ /bulkQuotes:
207
+ post:
208
+ summary: Request bulk quotes for the provided financial transactions
209
+ description: >
210
+ The HTTP request `POST /bulkQuotes` is used to request a bulk quote to
211
+ fascilitate funds transfer from payer DFSP to payees' DFSP.
212
+ tags:
213
+ - BulkQuotes
214
+ operationId: BulkQuotesPost
215
+ requestBody:
216
+ description: Bulk quote request body
217
+ content:
218
+ application/json:
219
+ schema:
220
+ $ref: '#/components/schemas/bulkQuoteRequest'
221
+ required: true
222
+ responses:
223
+ '200':
224
+ $ref: '#/components/responses/bulkQuoteSuccess'
225
+ '400':
226
+ $ref: '#/components/responses/bulkQuoteBadRequest'
227
+ '500':
228
+ $ref: '#/components/responses/bulkQuoteServerError'
229
+ '504':
230
+ $ref: '#/components/responses/bulkQuoteTimeout'
231
+ '/bulkQuotes/{bulkQuoteId}':
232
+ get:
233
+ summary: Retrieves information for a specific bulk quote
234
+ description: >-
235
+ The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get
236
+ information regarding a bulk quote created or requested earlier. The
237
+ `{bulkQuoteId}` in the URI should contain the `bulkQuoteId` that was
238
+ used for the creation of the bulk quote.
239
+ tags:
240
+ - BulkQuotes
241
+ operationId: BulkQuotesGet
242
+ parameters:
243
+ - $ref: '#/components/parameters/bulkQuoteId'
244
+ responses:
245
+ '200':
246
+ description: Bulk quote information successfully retrieved
247
+ content:
248
+ application/json:
249
+ schema:
250
+ $ref: '#/components/schemas/bulkQuoteStatusResponse'
251
+ '500':
252
+ description: An error occurred processing the bulk quote
253
+ content:
254
+ application/json:
255
+ schema:
256
+ $ref: '#/components/schemas/errorResponse'
257
+ /requestToPay:
258
+ post:
259
+ summary: Receiver requesting funds from Sender
260
+ description: >
261
+ The HTTP request `POST /requestToPay` is used to support Pull Funds
262
+ pattern where in a receiver can request for funds from the Sender.
263
+
264
+ The underlying API has two stages:
265
+
266
+ 1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement.
267
+ 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee.
268
+ tags:
269
+ - RequestToPay
270
+ operationId: RequestToPayPost
271
+ requestBody:
272
+ description: RequestToPay request body
273
+ content:
274
+ application/json:
275
+ schema:
276
+ $ref: '#/components/schemas/requestToPayRequest'
277
+ required: true
278
+ responses:
279
+ '200':
280
+ $ref: '#/components/responses/requestToPaySuccess'
281
+ /requestToPayTransfer:
282
+ post:
283
+ summary: >-
284
+ Used to trigger funds from customer fsp account to merchant fsp account.
285
+ This is a follow-up request to requestToPay.
286
+ description: >
287
+ The HTTP request `POST /requestToPayTransfer` is used to request the
288
+ movement of funds from payer DFSP to payee DFSP.
289
+
290
+ The underlying Mojaloop API has three stages for money transfer:
291
+
292
+ 1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred.
293
+ 2. Authorization. This facilitates getting OTP from payee DFSP.
294
+ 3. Transfer. The enactment of the previously agreed "contract"
295
+
296
+ This method has several modes of operation.
297
+
298
+ - If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"`
299
+ this method will terminate and return the quotation when it has been
300
+ received from the payee DFSP.
301
+ If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
302
+ The scheme adapter will then proceed with the transfer state.
303
+
304
+ - If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"`
305
+ this method will terminate and return the otp when it has been received
306
+ from the payee DFSP.
307
+ If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
308
+ The scheme adapter will then proceed with the transfer state.
309
+
310
+ If the configuration variables `AUTO_ACCEPT_PARTIES` and
311
+ `AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block
312
+ until all three transfer stages are complete. Upon completion it will
313
+ return the entire set of transfer details received during the operation.
314
+
315
+
316
+ Combinations of settings for `AUTO_ACCEPT...` configuration variables
317
+ allow the scheme adapter user to decide which mode of operation best
318
+ suits their use cases. i.e. the scheme adapter can be configured to
319
+ "break" the three stage transfer at these points in order to execute
320
+ backend logic such as party verification, quoted fees assessments etc...
321
+ tags:
322
+ - RequestToPayTransfer
323
+ operationId: RequestToPayTransferPost
324
+ requestBody:
325
+ description: Request To Pay Transfer request body
326
+ content:
327
+ application/json:
328
+ schema:
329
+ $ref: '#/components/schemas/requestToPayTransferRequest'
330
+ required: true
331
+ responses:
332
+ '200':
333
+ $ref: '#/components/responses/requestToPayTransferSuccess'
334
+ '400':
335
+ $ref: '#/components/responses/requestToPayTransferBadRequest'
336
+ '500':
337
+ $ref: '#/components/responses/transferServerError'
338
+ '504':
339
+ $ref: '#/components/responses/transferTimeout'
340
+ '/requestToPayTransfer/{requestToPayTransactionId}':
341
+ put:
342
+ summary: >-
343
+ Continues a transfer that has paused at the otp stage in order to accept
344
+ or reject quote
345
+ description: >
346
+ The HTTP request `PUT /transfers/{transferId}` is used to continue a
347
+ transfer initiated via the `POST /transfers` method that has halted
348
+ after party lookup and/or quotation stage.
349
+
350
+
351
+ The request body should contain either the "acceptOTP" or "acceptQuote"
352
+ property set to `true` as required to continue the transfer.
353
+
354
+
355
+ See the description of the `POST /requestToPayTransfer` HTTP method for
356
+ more information on modes of transfer.
357
+ tags:
358
+ - RequestToPayTransferID
359
+ operationId: RequestToPayTransferPut
360
+ requestBody:
361
+ content:
362
+ application/json:
363
+ schema:
364
+ oneOf:
365
+ - $ref: '#/components/schemas/transferContinuationAcceptQuote'
366
+ - $ref: '#/components/schemas/transferContinuationAcceptOTP'
367
+ parameters:
368
+ - $ref: '#/components/parameters/requestToPayTransactionId'
369
+ responses:
370
+ '200':
371
+ $ref: '#/components/responses/transferSuccess'
372
+ '500':
373
+ $ref: '#/components/responses/transferServerError'
374
+ '504':
375
+ $ref: '#/components/responses/transferTimeout'
376
+ /accounts:
377
+ post:
378
+ summary: Create accounts on the Account Lookup Service
379
+ description: >-
380
+ The HTTP request `POST /accounts` is used to create account information
381
+ on the Account Lookup Service (ALS) regarding the provided list of
382
+ identities.
383
+
384
+
385
+ Caller DFSP is used as the account source FSP information
386
+ tags:
387
+ - Accounts
388
+ operationId: AccountsPost
389
+ requestBody:
390
+ description: Identities list request body
391
+ content:
392
+ application/json:
393
+ schema:
394
+ $ref: '#/components/schemas/accountsRequest'
395
+ required: true
396
+ responses:
397
+ '200':
398
+ $ref: '#/components/responses/accountsCreationCompleted'
399
+ '400':
400
+ $ref: '#/components/responses/accountsCreationError'
401
+ '500':
402
+ $ref: '#/components/responses/accountsCreationError'
403
+ '504':
404
+ $ref: '#/components/responses/accountsCreationTimeout'
405
+ '/parties/{Type}/{ID}':
406
+ parameters:
407
+ - $ref: '#/components/parameters/Type'
408
+ - $ref: '#/components/parameters/ID'
409
+ get:
410
+ description: >-
411
+ The HTTP request GET /parties// (or GET /parties///) is used to lookup
412
+ information regarding the requested Party, defined by , and optionally
413
+ (for example, GET /parties/MSISDN/123456789, or GET
414
+ /parties/BUSINESS/shoecompany/employee1).
415
+ summary: PartiesByTypeAndID
416
+ tags:
417
+ - parties
418
+ operationId: PartiesByTypeAndID
419
+ responses:
420
+ '200':
421
+ $ref: '#/components/responses/partiesByIdSuccess'
422
+ '404':
423
+ $ref: '#/components/responses/partiesByIdError404'
424
+ '/parties/{Type}/{ID}/{SubId}':
425
+ parameters:
426
+ - $ref: '#/components/parameters/Type'
427
+ - $ref: '#/components/parameters/ID'
428
+ - $ref: '#/components/parameters/SubId'
429
+ get:
430
+ description: >-
431
+ The HTTP request GET /parties// (or GET /parties///) is used to lookup
432
+ information regarding the requested Party, defined by , and optionally
433
+ (for example, GET /parties/MSISDN/123456789, or GET
434
+ /parties/BUSINESS/shoecompany/employee1).
435
+ summary: PartiesSubIdByTypeAndID
436
+ tags:
437
+ - parties
438
+ operationId: PartiesSubIdByTypeAndID
439
+ responses:
440
+ '200':
441
+ $ref: '#/components/responses/partiesByIdSuccess'
442
+ '404':
443
+ $ref: '#/components/responses/partiesByIdError404'
444
+ /quotes:
445
+ post:
446
+ summary: Quotes endpoint
447
+ description: is used to request quotes from other DFSP
448
+ tags:
449
+ - quotes
450
+ operationId: QuotesPost
451
+ requestBody:
452
+ description: Quotes request payload
453
+ content:
454
+ application/json:
455
+ schema:
456
+ $ref: '#/components/schemas/quotesPostRequest'
457
+ required: true
458
+ responses:
459
+ '200':
460
+ $ref: '#/components/responses/quotesPostSuccess'
461
+ '500':
462
+ $ref: '#/components/responses/quotesServerError'
463
+ /simpleTransfers:
464
+ post:
465
+ summary: Simple Transfers endpoint
466
+ description: is used to request a transfer
467
+ tags:
468
+ - transfers
469
+ operationId: SimpleTransfersPost
470
+ requestBody:
471
+ description: Simple Transfer request payload
472
+ content:
473
+ application/json:
474
+ schema:
475
+ $ref: '#/components/schemas/simpleTransfersPostRequest'
476
+ required: true
477
+ responses:
478
+ '200':
479
+ $ref: '#/components/responses/simpleTransfersPostSuccess'
480
+ '500':
481
+ $ref: '#/components/responses/simpleTransfersServerError'
482
+ /authorizations:
483
+ post:
484
+ description: >-
485
+ The HTTP request `POST /authorizations` is used to request the Payer to
486
+ enter the applicable credentials in the PISP system.
487
+ summary: Authorizations endpoint
488
+ operationId: AuthorizationsPost
489
+ tags:
490
+ - authorizations
491
+ requestBody:
492
+ description: Perform authorization
493
+ required: true
494
+ content:
495
+ application/json:
496
+ schema:
497
+ $ref: '#/components/schemas/authorizationsPostRequest'
498
+ responses:
499
+ '200':
500
+ $ref: '#/components/responses/authorizationPostSuccess'
501
+ '500':
502
+ $ref: '#/components/responses/authorizationsServerError'
503
+ components:
504
+ schemas:
505
+ TransactionInitiatorType:
506
+ title: TransactionInitiatorType
507
+ type: string
508
+ enum:
509
+ - CONSUMER
510
+ - AGENT
511
+ - BUSINESS
512
+ - DEVICE
513
+ description: |-
514
+ Below are the allowed values for the enumeration.
515
+ - CONSUMER - Consumer is the initiator of the transaction.
516
+ - AGENT - Agent is the initiator of the transaction.
517
+ - BUSINESS - Business is the initiator of the transaction.
518
+ - DEVICE - Device is the initiator of the transaction.
519
+ PartyIdType:
520
+ title: PartyIdType
521
+ type: string
522
+ enum:
523
+ - MSISDN
524
+ - EMAIL
525
+ - PERSONAL_ID
526
+ - BUSINESS
527
+ - DEVICE
528
+ - ACCOUNT_ID
529
+ - IBAN
530
+ - ALIAS
531
+ - CONSENT
532
+ - THIRD_PARTY_LINK
533
+ description: >
534
+ This is a variant based on FSPIOP `PartyIdType` specification.
535
+
536
+ Main difference being the CONSENT and THIRD_PARTY_LINK enums.
537
+
538
+
539
+ Below are the allowed values for the enumeration.
540
+
541
+ - MSISDN - An MSISDN (Mobile Station International Subscriber Directory
542
+
543
+ Number, that is, the phone number) is used as reference to a
544
+ participant.
545
+
546
+ The MSISDN identifier should be in international format according to the
547
+
548
+ [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en).
549
+
550
+ Optionally, the MSISDN may be prefixed by a single plus sign, indicating
551
+ the
552
+
553
+ international prefix.
554
+
555
+ - EMAIL - An email is used as reference to a
556
+
557
+ participant. The format of the email should be according to the
558
+ informational
559
+
560
+ [RFC 3696](https://tools.ietf.org/html/rfc3696).
561
+
562
+ - PERSONAL_ID - A personal identifier is used as reference to a
563
+ participant.
564
+
565
+ Examples of personal identification are passport number, birth
566
+ certificate
567
+
568
+ number, and national registration number. The identifier number is added
569
+ in
570
+
571
+ the PartyIdentifier element. The personal identifier type is added in
572
+ the
573
+
574
+ PartySubIdOrType element.
575
+
576
+ - BUSINESS - A specific Business (for example, an organization or a
577
+ company)
578
+
579
+ is used as reference to a participant. The BUSINESS identifier can be in
580
+ any
581
+
582
+ format. To make a transaction connected to a specific username or bill
583
+ number
584
+
585
+ in a Business, the PartySubIdOrType element should be used.
586
+
587
+ - DEVICE - A specific device (for example, a POS or ATM) ID connected to
588
+ a
589
+
590
+ specific business or organization is used as reference to a Party.
591
+
592
+ For referencing a specific device under a specific business or
593
+ organization,
594
+
595
+ use the PartySubIdOrType element.
596
+
597
+ - ACCOUNT_ID - A bank account number or FSP account ID should be used as
598
+
599
+ reference to a participant. The ACCOUNT_ID identifier can be in any
600
+ format,
601
+
602
+ as formats can greatly differ depending on country and FSP.
603
+
604
+ - IBAN - A bank account number or FSP account ID is used as reference to
605
+ a
606
+
607
+ participant. The IBAN identifier can consist of up to 34 alphanumeric
608
+
609
+ characters and should be entered without whitespace.
610
+
611
+ - ALIAS An alias is used as reference to a participant. The alias should
612
+ be
613
+
614
+ created in the FSP as an alternative reference to an account owner.
615
+
616
+ Another example of an alias is a username in the FSP system.
617
+
618
+ The ALIAS identifier can be in any format. It is also possible to use
619
+ the
620
+
621
+ PartySubIdOrType element for identifying an account under an Alias
622
+ defined
623
+
624
+ by the PartyIdentifier.
625
+
626
+ - CONSENT - TBD
627
+
628
+ - THIRD_PARTY_LINK - TBD
629
+ example: PERSONAL_ID
630
+ PartyIdentifier:
631
+ title: PartyIdentifier
632
+ type: string
633
+ minLength: 1
634
+ maxLength: 128
635
+ description: Identifier of the Party.
636
+ PartySubIdOrType:
637
+ title: PartySubIdOrType
638
+ type: string
639
+ minLength: 1
640
+ maxLength: 128
641
+ description: >-
642
+ Either a sub-identifier of a PartyIdentifier, or a sub-type of the
643
+ PartyIdType, normally a PersonalIdentifierType.
644
+ Name:
645
+ title: Name
646
+ type: string
647
+ pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
648
+ description: >-
649
+ The API data type Name is a JSON String, restricted by a regular
650
+ expression to avoid characters which are generally not used in a name.
651
+
652
+
653
+ Regular Expression - The regular expression for restricting the Name
654
+ type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a
655
+ string consisting of whitespace only, all Unicode characters are
656
+ allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,)
657
+ and space characters ( ).
658
+
659
+
660
+ **Note:** In some programming languages, Unicode support must be
661
+ specifically enabled. For example, if Java is used, the flag
662
+ UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters.
663
+ FirstName:
664
+ title: FirstName
665
+ type: string
666
+ minLength: 1
667
+ maxLength: 128
668
+ pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
669
+ description: First name of the Party (Name Type).
670
+ MiddleName:
671
+ title: MiddleName
672
+ type: string
673
+ minLength: 1
674
+ maxLength: 128
675
+ pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
676
+ description: Middle name of the Party (Name Type).
677
+ LastName:
678
+ title: LastName
679
+ type: string
680
+ minLength: 1
681
+ maxLength: 128
682
+ pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
683
+ description: Last name of the Party (Name Type).
684
+ DateOfBirth:
685
+ title: DateofBirth (type Date)
686
+ type: string
687
+ pattern: >-
688
+ ^(?:[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)$
689
+ description: Date of Birth of the Party.
690
+ MerchantClassificationCode:
691
+ title: MerchantClassificationCode
692
+ type: string
693
+ pattern: '^[\d]{1,4}$'
694
+ description: >-
695
+ A limited set of pre-defined numbers. This list would be a limited set
696
+ of numbers identifying a set of popular merchant types like School Fees,
697
+ Pubs and Restaurants, Groceries, etc.
698
+ FspId:
699
+ title: FspId
700
+ type: string
701
+ minLength: 1
702
+ maxLength: 32
703
+ description: FSP identifier.
704
+ ExtensionKey:
705
+ title: ExtensionKey
706
+ type: string
707
+ minLength: 1
708
+ maxLength: 32
709
+ description: Extension key.
710
+ ExtensionValue:
711
+ title: ExtensionValue
712
+ type: string
713
+ minLength: 1
714
+ maxLength: 128
715
+ description: Extension value.
716
+ Extension:
717
+ title: Extension
718
+ type: object
719
+ description: Data model for the complex type Extension.
720
+ properties:
721
+ key:
722
+ $ref: '#/components/schemas/ExtensionKey'
723
+ value:
724
+ $ref: '#/components/schemas/ExtensionValue'
725
+ required:
726
+ - key
727
+ - value
728
+ extensionListEmptiable:
729
+ type: array
730
+ items:
731
+ $ref: '#/components/schemas/Extension'
732
+ minItems: 0
733
+ maxItems: 16
734
+ transferParty:
735
+ type: object
736
+ required:
737
+ - idType
738
+ - idValue
739
+ properties:
740
+ type:
741
+ $ref: '#/components/schemas/TransactionInitiatorType'
742
+ idType:
743
+ $ref: '#/components/schemas/PartyIdType'
744
+ idValue:
745
+ $ref: '#/components/schemas/PartyIdentifier'
746
+ idSubValue:
747
+ $ref: '#/components/schemas/PartySubIdOrType'
748
+ displayName:
749
+ $ref: '#/components/schemas/Name'
750
+ firstName:
751
+ $ref: '#/components/schemas/FirstName'
752
+ middleName:
753
+ $ref: '#/components/schemas/MiddleName'
754
+ lastName:
755
+ $ref: '#/components/schemas/LastName'
756
+ dateOfBirth:
757
+ $ref: '#/components/schemas/DateOfBirth'
758
+ merchantClassificationCode:
759
+ $ref: '#/components/schemas/MerchantClassificationCode'
760
+ fspId:
761
+ $ref: '#/components/schemas/FspId'
762
+ extensionList:
763
+ $ref: '#/components/schemas/extensionListEmptiable'
764
+ AmountType:
765
+ title: AmountType
766
+ type: string
767
+ enum:
768
+ - SEND
769
+ - RECEIVE
770
+ description: >-
771
+ Below are the allowed values for the enumeration AmountType.
772
+
773
+ - SEND - Amount the Payer would like to send, that is, the amount that
774
+ should be withdrawn from the Payer account including any fees.
775
+
776
+ - RECEIVE - Amount the Payer would like the Payee to receive, that is,
777
+ the amount that should be sent to the receiver exclusive of any fees.
778
+ Currency:
779
+ title: Currency
780
+ description: >-
781
+ The currency codes defined in [ISO
782
+ 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter
783
+ alphabetic codes are used as the standard naming representation for
784
+ currencies.
785
+ type: string
786
+ minLength: 3
787
+ maxLength: 3
788
+ enum:
789
+ - AED
790
+ - AFN
791
+ - ALL
792
+ - AMD
793
+ - ANG
794
+ - AOA
795
+ - ARS
796
+ - AUD
797
+ - AWG
798
+ - AZN
799
+ - BAM
800
+ - BBD
801
+ - BDT
802
+ - BGN
803
+ - BHD
804
+ - BIF
805
+ - BMD
806
+ - BND
807
+ - BOB
808
+ - BRL
809
+ - BSD
810
+ - BTN
811
+ - BWP
812
+ - BYN
813
+ - BZD
814
+ - CAD
815
+ - CDF
816
+ - CHF
817
+ - CLP
818
+ - CNY
819
+ - COP
820
+ - CRC
821
+ - CUC
822
+ - CUP
823
+ - CVE
824
+ - CZK
825
+ - DJF
826
+ - DKK
827
+ - DOP
828
+ - DZD
829
+ - EGP
830
+ - ERN
831
+ - ETB
832
+ - EUR
833
+ - FJD
834
+ - FKP
835
+ - GBP
836
+ - GEL
837
+ - GGP
838
+ - GHS
839
+ - GIP
840
+ - GMD
841
+ - GNF
842
+ - GTQ
843
+ - GYD
844
+ - HKD
845
+ - HNL
846
+ - HRK
847
+ - HTG
848
+ - HUF
849
+ - IDR
850
+ - ILS
851
+ - IMP
852
+ - INR
853
+ - IQD
854
+ - IRR
855
+ - ISK
856
+ - JEP
857
+ - JMD
858
+ - JOD
859
+ - JPY
860
+ - KES
861
+ - KGS
862
+ - KHR
863
+ - KMF
864
+ - KPW
865
+ - KRW
866
+ - KWD
867
+ - KYD
868
+ - KZT
869
+ - LAK
870
+ - LBP
871
+ - LKR
872
+ - LRD
873
+ - LSL
874
+ - LYD
875
+ - MAD
876
+ - MDL
877
+ - MGA
878
+ - MKD
879
+ - MMK
880
+ - MNT
881
+ - MOP
882
+ - MRO
883
+ - MUR
884
+ - MVR
885
+ - MWK
886
+ - MXN
887
+ - MYR
888
+ - MZN
889
+ - NAD
890
+ - NGN
891
+ - NIO
892
+ - NOK
893
+ - NPR
894
+ - NZD
895
+ - OMR
896
+ - PAB
897
+ - PEN
898
+ - PGK
899
+ - PHP
900
+ - PKR
901
+ - PLN
902
+ - PYG
903
+ - QAR
904
+ - RON
905
+ - RSD
906
+ - RUB
907
+ - RWF
908
+ - SAR
909
+ - SBD
910
+ - SCR
911
+ - SDG
912
+ - SEK
913
+ - SGD
914
+ - SHP
915
+ - SLL
916
+ - SOS
917
+ - SPL
918
+ - SRD
919
+ - STD
920
+ - SVC
921
+ - SYP
922
+ - SZL
923
+ - THB
924
+ - TJS
925
+ - TMT
926
+ - TND
927
+ - TOP
928
+ - TRY
929
+ - TTD
930
+ - TVD
931
+ - TWD
932
+ - TZS
933
+ - UAH
934
+ - UGX
935
+ - USD
936
+ - UYU
937
+ - UZS
938
+ - VEF
939
+ - VND
940
+ - VUV
941
+ - WST
942
+ - XAF
943
+ - XCD
944
+ - XDR
945
+ - XOF
946
+ - XPF
947
+ - XTS
948
+ - XXX
949
+ - YER
950
+ - ZAR
951
+ - ZMW
952
+ - ZWD
953
+ Amount:
954
+ title: Amount
955
+ type: string
956
+ pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$'
957
+ description: >-
958
+ The API data type Amount is a JSON String in a canonical format that is
959
+ restricted by a regular expression for interoperability reasons. This
960
+ pattern does not allow any trailing zeroes at all, but allows an amount
961
+ without a minor currency unit. It also only allows four digits in the
962
+ minor currency unit; a negative value is not allowed. Using more than 18
963
+ digits in the major currency unit is not allowed.
964
+ transactionType:
965
+ type: string
966
+ enum:
967
+ - TRANSFER
968
+ description: Type of transaction.
969
+ Note:
970
+ title: Note
971
+ type: string
972
+ minLength: 1
973
+ maxLength: 128
974
+ description: Memo assigned to transaction.
975
+ transferRequest:
976
+ type: object
977
+ required:
978
+ - homeTransactionId
979
+ - from
980
+ - to
981
+ - amountType
982
+ - currency
983
+ - amount
984
+ - transactionType
985
+ properties:
986
+ homeTransactionId:
987
+ type: string
988
+ description: >-
989
+ Transaction ID from the DFSP backend, used to reconcile transactions
990
+ between the Switch and DFSP backend systems.
991
+ from:
992
+ $ref: '#/components/schemas/transferParty'
993
+ to:
994
+ $ref: '#/components/schemas/transferParty'
995
+ amountType:
996
+ $ref: '#/components/schemas/AmountType'
997
+ currency:
998
+ $ref: '#/components/schemas/Currency'
999
+ amount:
1000
+ $ref: '#/components/schemas/Amount'
1001
+ transactionType:
1002
+ $ref: '#/components/schemas/transactionType'
1003
+ note:
1004
+ $ref: '#/components/schemas/Note'
1005
+ quoteRequestExtensions:
1006
+ $ref: '#/components/schemas/extensionListEmptiable'
1007
+ transferRequestExtensions:
1008
+ $ref: '#/components/schemas/extensionListEmptiable'
1009
+ CorrelationId:
1010
+ title: CorrelationId
1011
+ type: string
1012
+ pattern: >-
1013
+ ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
1014
+ description: >-
1015
+ Identifier that correlates all messages of the same sequence.
1016
+ The supported identifiers formats are for
1017
+ lowercase [UUID](https://datatracker.ietf.org/doc/html/rfc9562) and
1018
+ uppercase [ULID](https://github.com/ulid/spec)
1019
+ transferStatus:
1020
+ type: string
1021
+ enum:
1022
+ - ERROR_OCCURRED
1023
+ - WAITING_FOR_PARTY_ACCEPTANCE
1024
+ - WAITING_FOR_QUOTE_ACCEPTANCE
1025
+ - COMPLETED
1026
+ Money:
1027
+ title: Money
1028
+ type: object
1029
+ description: Data model for the complex type Money.
1030
+ properties:
1031
+ currency:
1032
+ $ref: '#/components/schemas/Currency'
1033
+ amount:
1034
+ $ref: '#/components/schemas/Amount'
1035
+ required:
1036
+ - currency
1037
+ - amount
1038
+ DateTime:
1039
+ title: DateTime
1040
+ type: string
1041
+ pattern: >-
1042
+ ^(?:[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)$
1043
+ description: >-
1044
+ The API data type DateTime is a JSON String in a lexical format that is
1045
+ restricted by a regular expression for interoperability reasons. The
1046
+ format is according to [ISO
1047
+ 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed
1048
+ in a combined date, time and time zone format. A more readable version
1049
+ of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are
1050
+ "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z
1051
+ indicates Zulu time zone, same as UTC).
1052
+ Latitude:
1053
+ title: Latitude
1054
+ type: string
1055
+ pattern: >-
1056
+ ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
1057
+ description: >-
1058
+ The API data type Latitude is a JSON String in a lexical format that is
1059
+ restricted by a regular expression for interoperability reasons.
1060
+ Longitude:
1061
+ title: Longitude
1062
+ type: string
1063
+ pattern: >-
1064
+ ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
1065
+ description: >-
1066
+ The API data type Longitude is a JSON String in a lexical format that is
1067
+ restricted by a regular expression for interoperability reasons.
1068
+ GeoCode:
1069
+ title: GeoCode
1070
+ type: object
1071
+ description: >-
1072
+ Data model for the complex type GeoCode. Indicates the geographic
1073
+ location from where the transaction was initiated.
1074
+ properties:
1075
+ latitude:
1076
+ $ref: '#/components/schemas/Latitude'
1077
+ longitude:
1078
+ $ref: '#/components/schemas/Longitude'
1079
+ required:
1080
+ - latitude
1081
+ - longitude
1082
+ IlpPacket:
1083
+ title: IlpPacket
1084
+ type: string
1085
+ pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
1086
+ minLength: 1
1087
+ maxLength: 32768
1088
+ description: Information for recipient (transport layer information).
1089
+ IlpCondition:
1090
+ title: IlpCondition
1091
+ type: string
1092
+ pattern: '^[A-Za-z0-9-_]{43}$'
1093
+ maxLength: 48
1094
+ description: Condition that must be attached to the transfer by the Payer.
1095
+ ExtensionList:
1096
+ title: ExtensionList
1097
+ type: object
1098
+ description: >-
1099
+ Data model for the complex type ExtensionList. An optional list of
1100
+ extensions, specific to deployment.
1101
+ properties:
1102
+ extension:
1103
+ type: array
1104
+ items:
1105
+ $ref: '#/components/schemas/Extension'
1106
+ minItems: 1
1107
+ maxItems: 16
1108
+ description: Number of Extension elements.
1109
+ required:
1110
+ - extension
1111
+ QuotesIDPutResponse:
1112
+ title: QuotesIDPutResponse
1113
+ type: object
1114
+ description: 'The object sent in the PUT /quotes/{ID} callback.'
1115
+ properties:
1116
+ transferAmount:
1117
+ $ref: '#/components/schemas/Money'
1118
+ payeeReceiveAmount:
1119
+ $ref: '#/components/schemas/Money'
1120
+ payeeFspFee:
1121
+ $ref: '#/components/schemas/Money'
1122
+ payeeFspCommission:
1123
+ $ref: '#/components/schemas/Money'
1124
+ expiration:
1125
+ $ref: '#/components/schemas/DateTime'
1126
+ geoCode:
1127
+ $ref: '#/components/schemas/GeoCode'
1128
+ ilpPacket:
1129
+ $ref: '#/components/schemas/IlpPacket'
1130
+ condition:
1131
+ $ref: '#/components/schemas/IlpCondition'
1132
+ extensionList:
1133
+ $ref: '#/components/schemas/ExtensionList'
1134
+ required:
1135
+ - transferAmount
1136
+ - expiration
1137
+ - ilpPacket
1138
+ - condition
1139
+ IlpFulfilment:
1140
+ title: IlpFulfilment
1141
+ type: string
1142
+ pattern: '^[A-Za-z0-9-_]{43}$'
1143
+ maxLength: 48
1144
+ description: Fulfilment that must be attached to the transfer by the Payee.
1145
+ TransferState:
1146
+ title: TransferState
1147
+ type: string
1148
+ enum:
1149
+ - RECEIVED
1150
+ - RESERVED
1151
+ - COMMITTED
1152
+ - ABORTED
1153
+ description: >-
1154
+ Below are the allowed values for the enumeration.
1155
+
1156
+ - RECEIVED - Next ledger has received the transfer.
1157
+
1158
+ - RESERVED - Next ledger has reserved the transfer.
1159
+
1160
+ - COMMITTED - Next ledger has successfully performed the transfer.
1161
+
1162
+ - ABORTED - Next ledger has aborted the transfer due to a rejection or
1163
+ failure to perform the transfer.
1164
+ TransfersIDPutResponse:
1165
+ title: TransfersIDPutResponse
1166
+ type: object
1167
+ description: 'The object sent in the PUT /transfers/{ID} callback.'
1168
+ properties:
1169
+ fulfilment:
1170
+ $ref: '#/components/schemas/IlpFulfilment'
1171
+ completedTimestamp:
1172
+ $ref: '#/components/schemas/DateTime'
1173
+ transferState:
1174
+ $ref: '#/components/schemas/TransferState'
1175
+ extensionList:
1176
+ $ref: '#/components/schemas/ExtensionList'
1177
+ required:
1178
+ - transferState
1179
+ ErrorCode:
1180
+ title: ErrorCode
1181
+ type: string
1182
+ pattern: '^[1-9]\d{3}$'
1183
+ description: >-
1184
+ The API data type ErrorCode is a JSON String of four characters,
1185
+ consisting of digits only. Negative numbers are not allowed. A leading
1186
+ zero is not allowed. Each error code in the API is a four-digit number,
1187
+ for example, 1234, where the first number (1 in the example) represents
1188
+ the high-level error category, the second number (2 in the example)
1189
+ represents the low-level error category, and the last two numbers (34 in
1190
+ the example) represent the specific error.
1191
+ ErrorDescription:
1192
+ title: ErrorDescription
1193
+ type: string
1194
+ minLength: 1
1195
+ maxLength: 128
1196
+ description: Error description string.
1197
+ ErrorInformation:
1198
+ title: ErrorInformation
1199
+ type: object
1200
+ description: Data model for the complex type ErrorInformation.
1201
+ properties:
1202
+ errorCode:
1203
+ $ref: '#/components/schemas/ErrorCode'
1204
+ errorDescription:
1205
+ $ref: '#/components/schemas/ErrorDescription'
1206
+ extensionList:
1207
+ $ref: '#/components/schemas/ExtensionList'
1208
+ required:
1209
+ - errorCode
1210
+ - errorDescription
1211
+ mojaloopError:
1212
+ type: object
1213
+ properties:
1214
+ errorInformation:
1215
+ $ref: '#/components/schemas/ErrorInformation'
1216
+ transferError:
1217
+ type: object
1218
+ description: >-
1219
+ This object represents a Mojaloop API error received at any time during
1220
+ the transfer process
1221
+ properties:
1222
+ httpStatusCode:
1223
+ type: integer
1224
+ description: >-
1225
+ The HTTP status code returned to the caller. This is the same as the
1226
+ actual HTTP status code returned with the response.
1227
+ mojaloopError:
1228
+ $ref: '#/components/schemas/mojaloopError'
1229
+ transferResponse:
1230
+ type: object
1231
+ required:
1232
+ - homeTransactionId
1233
+ - from
1234
+ - to
1235
+ - amountType
1236
+ - currency
1237
+ - amount
1238
+ - transactionType
1239
+ properties:
1240
+ transferId:
1241
+ $ref: '#/components/schemas/CorrelationId'
1242
+ homeTransactionId:
1243
+ type: string
1244
+ description: >-
1245
+ Transaction ID from the DFSP backend, used to reconcile transactions
1246
+ between the Switch and DFSP backend systems.
1247
+ from:
1248
+ $ref: '#/components/schemas/transferParty'
1249
+ to:
1250
+ $ref: '#/components/schemas/transferParty'
1251
+ amountType:
1252
+ $ref: '#/components/schemas/AmountType'
1253
+ currency:
1254
+ $ref: '#/components/schemas/Currency'
1255
+ amount:
1256
+ $ref: '#/components/schemas/Amount'
1257
+ transactionType:
1258
+ $ref: '#/components/schemas/transactionType'
1259
+ note:
1260
+ $ref: '#/components/schemas/Note'
1261
+ currentState:
1262
+ $ref: '#/components/schemas/transferStatus'
1263
+ quoteId:
1264
+ $ref: '#/components/schemas/CorrelationId'
1265
+ quoteResponse:
1266
+ $ref: '#/components/schemas/QuotesIDPutResponse'
1267
+ quoteResponseSource:
1268
+ type: string
1269
+ description: >
1270
+ FSPID of the entity that supplied the quote response. This may not
1271
+ be the same as the FSPID of the entity which owns the end user
1272
+ account in the case of a FOREX transfer. i.e. it may be a FOREX
1273
+ gateway.
1274
+ fulfil:
1275
+ $ref: '#/components/schemas/TransfersIDPutResponse'
1276
+ lastError:
1277
+ $ref: '#/components/schemas/transferError'
1278
+ errorResponse:
1279
+ type: object
1280
+ properties:
1281
+ statusCode:
1282
+ type: string
1283
+ description: Error code as string.
1284
+ message:
1285
+ type: string
1286
+ description: Error message text.
1287
+ errorTransferResponse:
1288
+ allOf:
1289
+ - $ref: '#/components/schemas/errorResponse'
1290
+ - type: object
1291
+ required:
1292
+ - transferState
1293
+ properties:
1294
+ transferState:
1295
+ $ref: '#/components/schemas/transferResponse'
1296
+ transferStatusResponse:
1297
+ type: object
1298
+ required:
1299
+ - transferId
1300
+ - currentState
1301
+ - fulfil
1302
+ properties:
1303
+ transferId:
1304
+ $ref: '#/components/schemas/CorrelationId'
1305
+ currentState:
1306
+ $ref: '#/components/schemas/transferStatus'
1307
+ fulfil:
1308
+ $ref: '#/components/schemas/TransfersIDPutResponse'
1309
+ transferContinuationAcceptParty:
1310
+ type: object
1311
+ required:
1312
+ - acceptParty
1313
+ properties:
1314
+ acceptParty:
1315
+ type: boolean
1316
+ enum:
1317
+ - true
1318
+ transferContinuationAcceptQuote:
1319
+ type: object
1320
+ required:
1321
+ - acceptQuote
1322
+ properties:
1323
+ acceptQuote:
1324
+ type: boolean
1325
+ enum:
1326
+ - true
1327
+ - false
1328
+ individualTransfer:
1329
+ title: IndividualTransfer
1330
+ type: object
1331
+ description: Data model for the complex type 'individualTransfer'.
1332
+ properties:
1333
+ transferId:
1334
+ $ref: '#/components/schemas/CorrelationId'
1335
+ to:
1336
+ $ref: '#/components/schemas/transferParty'
1337
+ amountType:
1338
+ $ref: '#/components/schemas/AmountType'
1339
+ currency:
1340
+ $ref: '#/components/schemas/Currency'
1341
+ amount:
1342
+ $ref: '#/components/schemas/Amount'
1343
+ transactionType:
1344
+ $ref: '#/components/schemas/transactionType'
1345
+ note:
1346
+ $ref: '#/components/schemas/Note'
1347
+ extensions:
1348
+ $ref: '#/components/schemas/ExtensionList'
1349
+ required:
1350
+ - transferId
1351
+ - to
1352
+ - amountType
1353
+ - currency
1354
+ - transactionType
1355
+ bulkTransferRequest:
1356
+ type: object
1357
+ required:
1358
+ - homeTransactionId
1359
+ - from
1360
+ - individualTransfers
1361
+ properties:
1362
+ homeTransactionId:
1363
+ type: string
1364
+ description: >-
1365
+ Transaction ID from the DFSP backend, used to reconcile transactions
1366
+ between the Switch and DFSP backend systems.
1367
+ bulkTransferId:
1368
+ $ref: '#/components/schemas/CorrelationId'
1369
+ from:
1370
+ $ref: '#/components/schemas/transferParty'
1371
+ individualTransfers:
1372
+ description: List of individual transfers in a bulk transfer.
1373
+ type: array
1374
+ minItems: 1
1375
+ maxItems: 1000
1376
+ items:
1377
+ $ref: '#/components/schemas/individualTransfer'
1378
+ extensions:
1379
+ $ref: '#/components/schemas/ExtensionList'
1380
+ individualTransferResult:
1381
+ type: object
1382
+ properties:
1383
+ transferId:
1384
+ $ref: '#/components/schemas/CorrelationId'
1385
+ to:
1386
+ $ref: '#/components/schemas/transferParty'
1387
+ amountType:
1388
+ $ref: '#/components/schemas/AmountType'
1389
+ currency:
1390
+ $ref: '#/components/schemas/Currency'
1391
+ amount:
1392
+ $ref: '#/components/schemas/Amount'
1393
+ transactionType:
1394
+ $ref: '#/components/schemas/transactionType'
1395
+ note:
1396
+ $ref: '#/components/schemas/Note'
1397
+ quoteId:
1398
+ $ref: '#/components/schemas/CorrelationId'
1399
+ quoteResponse:
1400
+ $ref: '#/components/schemas/QuotesIDPutResponse'
1401
+ quoteResponseSource:
1402
+ type: string
1403
+ description: >
1404
+ FSPID of the entity that supplied the quote response. This may not
1405
+ be the same as the FSPID of the entity which owns the end user
1406
+ account in the case of a FOREX transfer. i.e. it may be a FOREX
1407
+ gateway.
1408
+ fulfil:
1409
+ $ref: '#/components/schemas/TransfersIDPutResponse'
1410
+ lastError:
1411
+ $ref: '#/components/schemas/transferError'
1412
+ bulkTransferResponse:
1413
+ type: object
1414
+ required:
1415
+ - from
1416
+ - individualTransferResults
1417
+ properties:
1418
+ transferId:
1419
+ $ref: '#/components/schemas/CorrelationId'
1420
+ from:
1421
+ $ref: '#/components/schemas/transferParty'
1422
+ individualTransferResults:
1423
+ type: array
1424
+ maxItems: 1000
1425
+ items:
1426
+ $ref: '#/components/schemas/individualTransferResult'
1427
+ description: List of individual transfer result in a bulk transfer response.
1428
+ bulkTransferErrorResponse:
1429
+ allOf:
1430
+ - $ref: '#/components/schemas/errorResponse'
1431
+ - type: object
1432
+ required:
1433
+ - bulkTansferState
1434
+ properties:
1435
+ bulkTransferState:
1436
+ $ref: '#/components/schemas/bulkTransferResponse'
1437
+ bulkTransferStatus:
1438
+ type: string
1439
+ enum:
1440
+ - ERROR_OCCURRED
1441
+ - COMPLETED
1442
+ individualTransferFulfilment:
1443
+ type: object
1444
+ description: >-
1445
+ A Mojaloop API transfer fulfilment for individual transfers in a bulk
1446
+ transfer
1447
+ properties:
1448
+ fulfilment:
1449
+ $ref: '#/components/schemas/IlpFulfilment'
1450
+ extensionList:
1451
+ $ref: '#/components/schemas/ExtensionList'
1452
+ bulkTransferStatusResponse:
1453
+ type: object
1454
+ required:
1455
+ - bulkTransferId
1456
+ - currentState
1457
+ - fulfils
1458
+ properties:
1459
+ bulkTransferId:
1460
+ $ref: '#/components/schemas/CorrelationId'
1461
+ currentState:
1462
+ $ref: '#/components/schemas/bulkTransferStatus'
1463
+ fulfils:
1464
+ type: array
1465
+ minItems: 1
1466
+ maxItems: 1000
1467
+ items:
1468
+ $ref: '#/components/schemas/individualTransferFulfilment'
1469
+ individualQuote:
1470
+ title: IndividualQuote
1471
+ type: object
1472
+ description: Data model for the complex type 'individualQuote'.
1473
+ properties:
1474
+ quoteId:
1475
+ $ref: '#/components/schemas/CorrelationId'
1476
+ to:
1477
+ $ref: '#/components/schemas/transferParty'
1478
+ amountType:
1479
+ $ref: '#/components/schemas/AmountType'
1480
+ currency:
1481
+ $ref: '#/components/schemas/Currency'
1482
+ amount:
1483
+ $ref: '#/components/schemas/Amount'
1484
+ transactionType:
1485
+ $ref: '#/components/schemas/transactionType'
1486
+ note:
1487
+ $ref: '#/components/schemas/Note'
1488
+ extensions:
1489
+ $ref: '#/components/schemas/ExtensionList'
1490
+ required:
1491
+ - quoteId
1492
+ - to
1493
+ - amountType
1494
+ - currency
1495
+ - transactionType
1496
+ bulkQuoteRequest:
1497
+ type: object
1498
+ required:
1499
+ - homeTransactionId
1500
+ - from
1501
+ - individualQuotes
1502
+ properties:
1503
+ homeTransactionId:
1504
+ type: string
1505
+ description: >-
1506
+ Transaction ID from the DFSP backend, used to reconcile transactions
1507
+ between the Switch and DFSP backend systems.
1508
+ bulkQuoteId:
1509
+ $ref: '#/components/schemas/CorrelationId'
1510
+ from:
1511
+ $ref: '#/components/schemas/transferParty'
1512
+ individualQuotes:
1513
+ description: List of individual quotes in a bulk quote.
1514
+ type: array
1515
+ minItems: 1
1516
+ maxItems: 1000
1517
+ items:
1518
+ $ref: '#/components/schemas/individualQuote'
1519
+ extensions:
1520
+ $ref: '#/components/schemas/ExtensionList'
1521
+ quoteError:
1522
+ type: object
1523
+ description: >-
1524
+ This object represents a Mojaloop API error received at any time during
1525
+ the quote process
1526
+ properties:
1527
+ httpStatusCode:
1528
+ type: integer
1529
+ description: >-
1530
+ The HTTP status code returned to the caller. This is the same as the
1531
+ actual HTTP status code returned with the response.
1532
+ mojaloopError:
1533
+ $ref: '#/components/schemas/mojaloopError'
1534
+ individualQuoteResult:
1535
+ type: object
1536
+ properties:
1537
+ quoteId:
1538
+ $ref: '#/components/schemas/CorrelationId'
1539
+ to:
1540
+ $ref: '#/components/schemas/transferParty'
1541
+ amountType:
1542
+ $ref: '#/components/schemas/AmountType'
1543
+ currency:
1544
+ $ref: '#/components/schemas/Currency'
1545
+ amount:
1546
+ $ref: '#/components/schemas/Amount'
1547
+ transactionType:
1548
+ $ref: '#/components/schemas/transactionType'
1549
+ note:
1550
+ $ref: '#/components/schemas/Note'
1551
+ lastError:
1552
+ $ref: '#/components/schemas/quoteError'
1553
+ bulkQuoteResponse:
1554
+ type: object
1555
+ required:
1556
+ - from
1557
+ - individualQuoteResults
1558
+ properties:
1559
+ quoteId:
1560
+ $ref: '#/components/schemas/CorrelationId'
1561
+ homeTransactionId:
1562
+ type: string
1563
+ description: >-
1564
+ Transaction ID from the DFSP backend, used to reconcile transactions
1565
+ between the Switch and DFSP backend systems.
1566
+ from:
1567
+ $ref: '#/components/schemas/transferParty'
1568
+ individualQuoteResults:
1569
+ type: array
1570
+ maxItems: 1000
1571
+ items:
1572
+ $ref: '#/components/schemas/individualQuoteResult'
1573
+ description: List of individualQuoteResults in a bulk transfer response.
1574
+ bulkQuoteErrorResponse:
1575
+ allOf:
1576
+ - $ref: '#/components/schemas/errorResponse'
1577
+ - type: object
1578
+ required:
1579
+ - bulkTansferState
1580
+ properties:
1581
+ bulkQuoteState:
1582
+ $ref: '#/components/schemas/bulkQuoteResponse'
1583
+ bulkQuoteStatus:
1584
+ type: string
1585
+ enum:
1586
+ - ERROR_OCCURRED
1587
+ - COMPLETED
1588
+ bulkQuoteStatusResponse:
1589
+ type: object
1590
+ required:
1591
+ - bulkQuoteId
1592
+ - currentState
1593
+ - individualQuotes
1594
+ properties:
1595
+ bulkQuoteId:
1596
+ $ref: '#/components/schemas/CorrelationId'
1597
+ currentState:
1598
+ $ref: '#/components/schemas/bulkQuoteStatus'
1599
+ individualQuotes:
1600
+ type: array
1601
+ minItems: 1
1602
+ maxItems: 1000
1603
+ items:
1604
+ $ref: '#/components/schemas/individualQuote'
1605
+ TransactionScenario:
1606
+ title: TransactionScenario
1607
+ type: string
1608
+ enum:
1609
+ - DEPOSIT
1610
+ - WITHDRAWAL
1611
+ - TRANSFER
1612
+ - PAYMENT
1613
+ - REFUND
1614
+ description: >-
1615
+ Below are the allowed values for the enumeration.
1616
+
1617
+ - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a
1618
+ normal scenario, electronic funds are transferred from a Business
1619
+ account to a Consumer account, and physical cash is given from the
1620
+ Consumer to the Business User.
1621
+
1622
+ - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction.
1623
+ In a normal scenario, electronic funds are transferred from a Consumer’s
1624
+ account to a Business account, and physical cash is given from the
1625
+ Business User to the Consumer.
1626
+
1627
+ - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to
1628
+ Consumer) transaction.
1629
+
1630
+ - PAYMENT - Usually used for performing a transaction from a Consumer to
1631
+ a Merchant or Organization, but could also be for a B2B (Business to
1632
+ Business) payment. The transaction could be online for a purchase in an
1633
+ Internet store, in a physical store where both the Consumer and Business
1634
+ User are present, a bill payment, a donation, and so on.
1635
+
1636
+ - REFUND - Used for performing a refund of transaction.
1637
+ TransactionSubScenario:
1638
+ title: TransactionSubScenario
1639
+ type: string
1640
+ pattern: '^[A-Z_]{1,32}$'
1641
+ description: >-
1642
+ Possible sub-scenario, defined locally within the scheme (UndefinedEnum
1643
+ Type).
1644
+ TransactionInitiator:
1645
+ title: TransactionInitiator
1646
+ type: string
1647
+ enum:
1648
+ - PAYER
1649
+ - PAYEE
1650
+ description: >-
1651
+ Below are the allowed values for the enumeration.
1652
+
1653
+ - PAYER - Sender of funds is initiating the transaction. The account to
1654
+ send from is either owned by the Payer or is connected to the Payer in
1655
+ some way.
1656
+
1657
+ - PAYEE - Recipient of the funds is initiating the transaction by
1658
+ sending a transaction request. The Payer must approve the transaction,
1659
+ either automatically by a pre-generated OTP or by pre-approval of the
1660
+ Payee, or by manually approving in his or her own Device.
1661
+ RefundReason:
1662
+ title: RefundReason
1663
+ type: string
1664
+ minLength: 1
1665
+ maxLength: 128
1666
+ description: Reason for the refund.
1667
+ Refund:
1668
+ title: Refund
1669
+ type: object
1670
+ description: Data model for the complex type Refund.
1671
+ properties:
1672
+ originalTransactionId:
1673
+ $ref: '#/components/schemas/CorrelationId'
1674
+ refundReason:
1675
+ $ref: '#/components/schemas/RefundReason'
1676
+ required:
1677
+ - originalTransactionId
1678
+ BalanceOfPayments:
1679
+ title: BalanceOfPayments
1680
+ type: string
1681
+ pattern: '^[1-9]\d{2}$'
1682
+ description: >-
1683
+ (BopCode) The API data type
1684
+ [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String
1685
+ of 3 characters, consisting of digits only. Negative numbers are not
1686
+ allowed. A leading zero is not allowed.
1687
+ TransactionType:
1688
+ title: TransactionType
1689
+ type: object
1690
+ description: Data model for the complex type TransactionType.
1691
+ properties:
1692
+ scenario:
1693
+ $ref: '#/components/schemas/TransactionScenario'
1694
+ subScenario:
1695
+ $ref: '#/components/schemas/TransactionSubScenario'
1696
+ initiator:
1697
+ $ref: '#/components/schemas/TransactionInitiator'
1698
+ initiatorType:
1699
+ $ref: '#/components/schemas/TransactionInitiatorType'
1700
+ refundInfo:
1701
+ $ref: '#/components/schemas/Refund'
1702
+ balanceOfPayments:
1703
+ $ref: '#/components/schemas/BalanceOfPayments'
1704
+ required:
1705
+ - scenario
1706
+ - initiator
1707
+ - initiatorType
1708
+ requestToPayRequest:
1709
+ type: object
1710
+ required:
1711
+ - homeTransactionId
1712
+ - from
1713
+ - to
1714
+ - amountType
1715
+ - currency
1716
+ - amount
1717
+ - scenario
1718
+ - initiator
1719
+ - initiatorType
1720
+ properties:
1721
+ homeTransactionId:
1722
+ type: string
1723
+ description: >-
1724
+ Transaction ID from the DFSP backend, used to reconcile transactions
1725
+ between the Switch and DFSP backend systems.
1726
+ from:
1727
+ $ref: '#/components/schemas/transferParty'
1728
+ to:
1729
+ $ref: '#/components/schemas/transferParty'
1730
+ amountType:
1731
+ $ref: '#/components/schemas/AmountType'
1732
+ currency:
1733
+ $ref: '#/components/schemas/Currency'
1734
+ amount:
1735
+ $ref: '#/components/schemas/Amount'
1736
+ scenario:
1737
+ $ref: '#/components/schemas/TransactionType'
1738
+ initiator:
1739
+ $ref: '#/components/schemas/TransactionInitiator'
1740
+ initiatorType:
1741
+ $ref: '#/components/schemas/TransactionInitiatorType'
1742
+ AuthenticationType:
1743
+ title: AuthenticationType
1744
+ type: string
1745
+ enum:
1746
+ - OTP
1747
+ - QRCODE
1748
+ - U2F
1749
+ description: |-
1750
+ Below are the allowed values for the enumeration AuthenticationType.
1751
+ - OTP - One-time password generated by the Payer FSP.
1752
+ - QRCODE - QR code used as One Time Password.
1753
+ - U2F - U2F is a new addition isolated to Thirdparty stream.
1754
+ TransactionRequestState:
1755
+ title: TransactionRequestState
1756
+ type: string
1757
+ enum:
1758
+ - RECEIVED
1759
+ - PENDING
1760
+ - ACCEPTED
1761
+ - REJECTED
1762
+ description: |-
1763
+ Below are the allowed values for the enumeration.
1764
+ - RECEIVED - Payer FSP has received the transaction from the Payee FSP.
1765
+ - PENDING - Payer FSP has sent the transaction request to the Payer.
1766
+ - ACCEPTED - Payer has approved the transaction.
1767
+ - REJECTED - Payer has rejected the transaction.
1768
+ requestToPayResponse:
1769
+ type: object
1770
+ required:
1771
+ - transactionRequestId
1772
+ - from
1773
+ - to
1774
+ - amountType
1775
+ - currency
1776
+ - amount
1777
+ - transactionType
1778
+ - requestToPayState
1779
+ properties:
1780
+ transactionRequestId:
1781
+ $ref: '#/components/schemas/CorrelationId'
1782
+ from:
1783
+ $ref: '#/components/schemas/transferParty'
1784
+ to:
1785
+ $ref: '#/components/schemas/transferParty'
1786
+ amountType:
1787
+ $ref: '#/components/schemas/AmountType'
1788
+ currency:
1789
+ $ref: '#/components/schemas/Currency'
1790
+ amount:
1791
+ $ref: '#/components/schemas/Amount'
1792
+ scenario:
1793
+ $ref: '#/components/schemas/TransactionType'
1794
+ initiator:
1795
+ $ref: '#/components/schemas/TransactionInitiator'
1796
+ initiatorType:
1797
+ $ref: '#/components/schemas/TransactionInitiatorType'
1798
+ authenticationType:
1799
+ $ref: '#/components/schemas/AuthenticationType'
1800
+ requestToPayState:
1801
+ $ref: '#/components/schemas/TransactionRequestState'
1802
+ requestToPayTransferRequest:
1803
+ type: object
1804
+ required:
1805
+ - requestToPayTransactionId
1806
+ - from
1807
+ - to
1808
+ - amountType
1809
+ - currency
1810
+ - amount
1811
+ - scenario
1812
+ - initiator
1813
+ - initiatorType
1814
+ properties:
1815
+ requestToPayTransactionId:
1816
+ type: string
1817
+ description: >-
1818
+ Transaction ID from the DFSP backend, used to reconcile transactions
1819
+ between the Switch and DFSP backend systems.
1820
+ from:
1821
+ $ref: '#/components/schemas/transferParty'
1822
+ to:
1823
+ $ref: '#/components/schemas/transferParty'
1824
+ amountType:
1825
+ $ref: '#/components/schemas/AmountType'
1826
+ currency:
1827
+ $ref: '#/components/schemas/Currency'
1828
+ amount:
1829
+ $ref: '#/components/schemas/Amount'
1830
+ scenario:
1831
+ $ref: '#/components/schemas/TransactionType'
1832
+ initiator:
1833
+ $ref: '#/components/schemas/TransactionInitiator'
1834
+ initiatorType:
1835
+ $ref: '#/components/schemas/TransactionInitiatorType'
1836
+ note:
1837
+ $ref: '#/components/schemas/Note'
1838
+ requestToPayTransferResponse:
1839
+ type: object
1840
+ required:
1841
+ - requestToPayTransactionId
1842
+ - from
1843
+ - to
1844
+ - amountType
1845
+ - currency
1846
+ - amount
1847
+ - transactionType
1848
+ properties:
1849
+ transferId:
1850
+ $ref: '#/components/schemas/CorrelationId'
1851
+ requestToPayTransactionId:
1852
+ type: string
1853
+ description: >-
1854
+ Transaction ID from the DFSP backend, used to reconcile transactions
1855
+ between the Switch and DFSP backend systems.
1856
+ from:
1857
+ $ref: '#/components/schemas/transferParty'
1858
+ to:
1859
+ $ref: '#/components/schemas/transferParty'
1860
+ amountType:
1861
+ $ref: '#/components/schemas/AmountType'
1862
+ currency:
1863
+ $ref: '#/components/schemas/Currency'
1864
+ amount:
1865
+ $ref: '#/components/schemas/Amount'
1866
+ transactionType:
1867
+ $ref: '#/components/schemas/transactionType'
1868
+ note:
1869
+ $ref: '#/components/schemas/Note'
1870
+ currentState:
1871
+ $ref: '#/components/schemas/transferStatus'
1872
+ quoteId:
1873
+ $ref: '#/components/schemas/CorrelationId'
1874
+ quoteResponse:
1875
+ $ref: '#/components/schemas/QuotesIDPutResponse'
1876
+ quoteResponseSource:
1877
+ type: string
1878
+ description: >
1879
+ FSPID of the entity that supplied the quote response. This may not
1880
+ be the same as the FSPID of the entity which owns the end user
1881
+ account in the case of a FOREX transfer. i.e. it may be a FOREX
1882
+ gateway.
1883
+ fulfil:
1884
+ $ref: '#/components/schemas/TransfersIDPutResponse'
1885
+ lastError:
1886
+ $ref: '#/components/schemas/transferError'
1887
+ transferContinuationAcceptOTP:
1888
+ type: object
1889
+ required:
1890
+ - acceptOTP
1891
+ properties:
1892
+ acceptOTP:
1893
+ type: boolean
1894
+ enum:
1895
+ - true
1896
+ - false
1897
+ accountsRequest:
1898
+ type: array
1899
+ items:
1900
+ type: object
1901
+ required:
1902
+ - idType
1903
+ - idValue
1904
+ - currency
1905
+ properties:
1906
+ idType:
1907
+ $ref: '#/components/schemas/PartyIdType'
1908
+ idValue:
1909
+ $ref: '#/components/schemas/PartyIdentifier'
1910
+ idSubValue:
1911
+ $ref: '#/components/schemas/PartySubIdOrType'
1912
+ currency:
1913
+ $ref: '#/components/schemas/Currency'
1914
+ accountCreationStatus:
1915
+ type: array
1916
+ items:
1917
+ type: object
1918
+ required:
1919
+ - idType
1920
+ - idValue
1921
+ properties:
1922
+ idType:
1923
+ $ref: '#/components/schemas/PartyIdType'
1924
+ idValue:
1925
+ $ref: '#/components/schemas/PartyIdentifier'
1926
+ idSubValue:
1927
+ $ref: '#/components/schemas/PartySubIdOrType'
1928
+ error:
1929
+ $ref: '#/components/schemas/errorResponse'
1930
+ accountsCreationState:
1931
+ type: string
1932
+ enum:
1933
+ - ERROR_OCCURRED
1934
+ - COMPLETED
1935
+ accountsResponse:
1936
+ type: object
1937
+ required:
1938
+ - accounts
1939
+ properties:
1940
+ modelId:
1941
+ $ref: '#/components/schemas/CorrelationId'
1942
+ accounts:
1943
+ $ref: '#/components/schemas/accountsRequest'
1944
+ response:
1945
+ $ref: '#/components/schemas/accountCreationStatus'
1946
+ currentState:
1947
+ $ref: '#/components/schemas/accountsCreationState'
1948
+ lastError:
1949
+ $ref: '#/components/schemas/transferError'
1950
+ errorAccountsResponse:
1951
+ allOf:
1952
+ - $ref: '#/components/schemas/errorResponse'
1953
+ - type: object
1954
+ required:
1955
+ - executionState
1956
+ properties:
1957
+ executionState:
1958
+ $ref: '#/components/schemas/accountsResponse'
1959
+ AccountAddress:
1960
+ title: AccountAddress
1961
+ type: string
1962
+ description: >
1963
+ A long-lived unique account identifier provided by the DFSP. This MUST
1964
+ NOT
1965
+
1966
+ be Bank Account Number or anything that may expose a User's private bank
1967
+
1968
+ account information.
1969
+ pattern: '^([0-9A-Za-z_~\-\.]+[0-9A-Za-z_~\-])$'
1970
+ minLength: 1
1971
+ maxLength: 1023
1972
+ Account:
1973
+ title: Account
1974
+ type: object
1975
+ description: Data model for the complex type Account.
1976
+ properties:
1977
+ address:
1978
+ $ref: '#/components/schemas/AccountAddress'
1979
+ currency:
1980
+ $ref: '#/components/schemas/Currency'
1981
+ description:
1982
+ $ref: '#/components/schemas/Name'
1983
+ required:
1984
+ - currency
1985
+ AccountList:
1986
+ title: AccountList
1987
+ type: object
1988
+ description: Data model for the complex type AccountList.
1989
+ properties:
1990
+ account:
1991
+ type: array
1992
+ items:
1993
+ $ref: '#/components/schemas/Account'
1994
+ minItems: 1
1995
+ maxItems: 32
1996
+ description: Accounts associated with the Party.
1997
+ required:
1998
+ - account
1999
+ PartyIdInfo:
2000
+ title: PartyIdInfo
2001
+ type: object
2002
+ description: Data model for the complex type PartyIdInfo.
2003
+ properties:
2004
+ partyIdType:
2005
+ $ref: '#/components/schemas/PartyIdType'
2006
+ partyIdentifier:
2007
+ $ref: '#/components/schemas/PartyIdentifier'
2008
+ partySubIdOrType:
2009
+ $ref: '#/components/schemas/PartySubIdOrType'
2010
+ fspId:
2011
+ $ref: '#/components/schemas/FspId'
2012
+ extensionList:
2013
+ $ref: '#/components/schemas/ExtensionList'
2014
+ required:
2015
+ - partyIdType
2016
+ - partyIdentifier
2017
+ PartyName:
2018
+ title: PartyName
2019
+ type: string
2020
+ minLength: 1
2021
+ maxLength: 128
2022
+ description: Name of the Party. Could be a real name or a nickname.
2023
+ PartyComplexName:
2024
+ title: PartyComplexName
2025
+ type: object
2026
+ description: Data model for the complex type PartyComplexName.
2027
+ properties:
2028
+ firstName:
2029
+ $ref: '#/components/schemas/FirstName'
2030
+ middleName:
2031
+ $ref: '#/components/schemas/MiddleName'
2032
+ lastName:
2033
+ $ref: '#/components/schemas/LastName'
2034
+ PartyPersonalInfo:
2035
+ title: PartyPersonalInfo
2036
+ type: object
2037
+ description: Data model for the complex type PartyPersonalInfo.
2038
+ properties:
2039
+ complexName:
2040
+ $ref: '#/components/schemas/PartyComplexName'
2041
+ dateOfBirth:
2042
+ $ref: '#/components/schemas/DateOfBirth'
2043
+ Party:
2044
+ title: Party
2045
+ type: object
2046
+ description: Data model for the complex type Party.
2047
+ properties:
2048
+ accounts:
2049
+ $ref: '#/components/schemas/AccountList'
2050
+ partyIdInfo:
2051
+ $ref: '#/components/schemas/PartyIdInfo'
2052
+ merchantClassificationCode:
2053
+ $ref: '#/components/schemas/MerchantClassificationCode'
2054
+ name:
2055
+ $ref: '#/components/schemas/PartyName'
2056
+ personalInfo:
2057
+ $ref: '#/components/schemas/PartyPersonalInfo'
2058
+ required:
2059
+ - partyIdInfo
2060
+ async2SyncCurrentState:
2061
+ type: string
2062
+ enum:
2063
+ - WAITING_FOR_ACTION
2064
+ - COMPLETED
2065
+ - ERROR_OCCURRED
2066
+ partiesByIdResponse:
2067
+ title: partiesByIdResponse
2068
+ type: object
2069
+ description: 'GET /parties/{Type}/{ID} response object'
2070
+ properties:
2071
+ party:
2072
+ $ref: '#/components/schemas/Party'
2073
+ currentState:
2074
+ $ref: '#/components/schemas/async2SyncCurrentState'
2075
+ required:
2076
+ - party
2077
+ - currentState
2078
+ QuotesPostRequest:
2079
+ title: QuotesPostRequest
2080
+ type: object
2081
+ description: The object sent in the POST /quotes request.
2082
+ properties:
2083
+ quoteId:
2084
+ $ref: '#/components/schemas/CorrelationId'
2085
+ transactionId:
2086
+ $ref: '#/components/schemas/CorrelationId'
2087
+ transactionRequestId:
2088
+ $ref: '#/components/schemas/CorrelationId'
2089
+ payee:
2090
+ $ref: '#/components/schemas/Party'
2091
+ payer:
2092
+ $ref: '#/components/schemas/Party'
2093
+ amountType:
2094
+ $ref: '#/components/schemas/AmountType'
2095
+ amount:
2096
+ $ref: '#/components/schemas/Money'
2097
+ fees:
2098
+ $ref: '#/components/schemas/Money'
2099
+ transactionType:
2100
+ $ref: '#/components/schemas/TransactionType'
2101
+ geoCode:
2102
+ $ref: '#/components/schemas/GeoCode'
2103
+ note:
2104
+ $ref: '#/components/schemas/Note'
2105
+ expiration:
2106
+ $ref: '#/components/schemas/DateTime'
2107
+ extensionList:
2108
+ $ref: '#/components/schemas/ExtensionList'
2109
+ required:
2110
+ - quoteId
2111
+ - transactionId
2112
+ - payee
2113
+ - payer
2114
+ - amountType
2115
+ - amount
2116
+ - transactionType
2117
+ quotesPostRequest:
2118
+ title: QuotesPostRequest
2119
+ type: object
2120
+ properties:
2121
+ fspId:
2122
+ $ref: '#/components/schemas/FspId'
2123
+ quotesPostRequest:
2124
+ $ref: '#/components/schemas/QuotesPostRequest'
2125
+ required:
2126
+ - fspId
2127
+ - quotesPostRequest
2128
+ quotesPostResponse:
2129
+ title: QuotesPostResponse
2130
+ type: object
2131
+ properties:
2132
+ quotes:
2133
+ title: QuotesIDPutResponse
2134
+ type: object
2135
+ description: 'The object sent in the PUT /quotes/{ID} callback.'
2136
+ properties:
2137
+ transferAmount:
2138
+ $ref: '#/components/schemas/Money'
2139
+ payeeReceiveAmount:
2140
+ $ref: '#/components/schemas/Money'
2141
+ payeeFspFee:
2142
+ $ref: '#/components/schemas/Money'
2143
+ payeeFspCommission:
2144
+ $ref: '#/components/schemas/Money'
2145
+ expiration:
2146
+ type: string
2147
+ description: >-
2148
+ Date and time until when the quotation is valid and can be
2149
+ honored when used in the subsequent transaction.
2150
+ example: '2016-05-24T08:38:08.699-04:00'
2151
+ geoCode:
2152
+ $ref: '#/components/schemas/GeoCode'
2153
+ ilpPacket:
2154
+ $ref: '#/components/schemas/IlpPacket'
2155
+ condition:
2156
+ $ref: '#/components/schemas/IlpCondition'
2157
+ extensionList:
2158
+ $ref: '#/components/schemas/ExtensionList'
2159
+ required:
2160
+ - transferAmount
2161
+ - expiration
2162
+ - ilpPacket
2163
+ - condition
2164
+ currentState:
2165
+ $ref: '#/components/schemas/async2SyncCurrentState'
2166
+ required:
2167
+ - quotes
2168
+ - currentState
2169
+ errorQuotesResponse:
2170
+ allOf:
2171
+ - $ref: '#/components/schemas/errorResponse'
2172
+ - type: object
2173
+ TransfersPostRequest:
2174
+ title: TransfersPostRequest
2175
+ type: object
2176
+ description: The object sent in the POST /transfers request.
2177
+ properties:
2178
+ transferId:
2179
+ $ref: '#/components/schemas/CorrelationId'
2180
+ payeeFsp:
2181
+ $ref: '#/components/schemas/FspId'
2182
+ payerFsp:
2183
+ $ref: '#/components/schemas/FspId'
2184
+ amount:
2185
+ $ref: '#/components/schemas/Money'
2186
+ ilpPacket:
2187
+ $ref: '#/components/schemas/IlpPacket'
2188
+ condition:
2189
+ $ref: '#/components/schemas/IlpCondition'
2190
+ expiration:
2191
+ $ref: '#/components/schemas/DateTime'
2192
+ extensionList:
2193
+ $ref: '#/components/schemas/ExtensionList'
2194
+ required:
2195
+ - transferId
2196
+ - payeeFsp
2197
+ - payerFsp
2198
+ - amount
2199
+ - ilpPacket
2200
+ - condition
2201
+ - expiration
2202
+ simpleTransfersPostRequest:
2203
+ title: SimpleTransfersPostRequest
2204
+ type: object
2205
+ properties:
2206
+ fspId:
2207
+ $ref: '#/components/schemas/FspId'
2208
+ transfersPostRequest:
2209
+ $ref: '#/components/schemas/TransfersPostRequest'
2210
+ required:
2211
+ - fspId
2212
+ - transfersPostRequest
2213
+ simpleTransfersPostResponse:
2214
+ title: SimpleTransfersPostResponse
2215
+ type: object
2216
+ properties:
2217
+ transfer:
2218
+ $ref: '#/components/schemas/TransfersIDPutResponse'
2219
+ currentState:
2220
+ $ref: '#/components/schemas/async2SyncCurrentState'
2221
+ required:
2222
+ - transfer
2223
+ - currentState
2224
+ errorSimpleTransfersResponse:
2225
+ allOf:
2226
+ - $ref: '#/components/schemas/errorResponse'
2227
+ - type: object
2228
+ AuthorizationChannelType:
2229
+ title: AuthorizationChannelType
2230
+ type: string
2231
+ enum:
2232
+ - OTP
2233
+ - QRCODE
2234
+ - U2F
2235
+ description: >
2236
+ Below are the allowed values for the enumeration
2237
+ AuthorizationChannelType.
2238
+
2239
+ - OTP - One-time password generated by the Payer FSP.
2240
+
2241
+ - QRCODE - QR code used as One Time Password.
2242
+
2243
+ - U2F - U2F is a new addition isolated to Thirdparty stream.
2244
+
2245
+
2246
+ This is based on FSPIOP `AuthenticationType` with U2F added.
2247
+ example: U2F
2248
+ Integer:
2249
+ title: Integer
2250
+ type: string
2251
+ pattern: '^[1-9]\d*$'
2252
+ description: >-
2253
+ The API data type Integer is a JSON String consisting of digits only.
2254
+ Negative numbers and leading zeroes are not allowed. The data type is
2255
+ always limited to a specific number of digits.
2256
+ AuthorizationsPostRequest:
2257
+ title: AuthorizationsPostRequest
2258
+ description: POST /authorizations request object.
2259
+ type: object
2260
+ properties:
2261
+ authenticationType:
2262
+ $ref: '#/components/schemas/AuthorizationChannelType'
2263
+ retriesLeft:
2264
+ $ref: '#/components/schemas/Integer'
2265
+ amount:
2266
+ $ref: '#/components/schemas/Money'
2267
+ transactionId:
2268
+ $ref: '#/components/schemas/CorrelationId'
2269
+ transactionRequestId:
2270
+ $ref: '#/components/schemas/CorrelationId'
2271
+ quote:
2272
+ $ref: '#/components/schemas/QuotesIDPutResponse'
2273
+ required:
2274
+ - authenticationType
2275
+ - retriesLeft
2276
+ - amount
2277
+ - transactionId
2278
+ - transactionRequestId
2279
+ - quote
2280
+ additionalProperties: false
2281
+ authorizationsPostRequest:
2282
+ title: AuthorizationsPostRequest
2283
+ description: POST /authorizations Request object
2284
+ type: object
2285
+ properties:
2286
+ fspId:
2287
+ $ref: '#/components/schemas/FspId'
2288
+ authorizationsPostRequest:
2289
+ $ref: '#/components/schemas/AuthorizationsPostRequest'
2290
+ required:
2291
+ - fspId
2292
+ - authorizationsPostRequest
2293
+ OtpValue:
2294
+ title: OtpValue
2295
+ type: string
2296
+ pattern: '^\d{3,10}$'
2297
+ description: >-
2298
+ The API data type OtpValue is a JSON String of 3 to 10 characters,
2299
+ consisting of digits only. Negative numbers are not allowed. One or more
2300
+ leading zeros are allowed.
2301
+ QRCODE:
2302
+ title: QRCODE
2303
+ type: string
2304
+ minLength: 1
2305
+ maxLength: 64
2306
+ description: QR code used as a One Time Password.
2307
+ U2FPIN:
2308
+ title: U2FPIN
2309
+ type: string
2310
+ pattern: '^\S{1,64}$'
2311
+ minLength: 1
2312
+ maxLength: 64
2313
+ description: >
2314
+ U2F challenge-response, where payer FSP verifies if the response
2315
+ provided by end-user device matches the previously registered key.
2316
+ U2FPinValue:
2317
+ title: U2FPinValue
2318
+ type: object
2319
+ description: >
2320
+ U2F challenge-response, where payer FSP verifies if the response
2321
+ provided by end-user device matches the previously registered key.
2322
+ properties:
2323
+ pinValue:
2324
+ allOf:
2325
+ - $ref: '#/components/schemas/U2FPIN'
2326
+ description: U2F challenge-response.
2327
+ counter:
2328
+ allOf:
2329
+ - $ref: '#/components/schemas/Integer'
2330
+ description: >-
2331
+ Sequential counter used for cloning detection. Present only for U2F
2332
+ authentication.
2333
+ required:
2334
+ - pinValue
2335
+ - counter
2336
+ AuthenticationValue:
2337
+ title: AuthenticationValue
2338
+ anyOf:
2339
+ - $ref: '#/components/schemas/OtpValue'
2340
+ - $ref: '#/components/schemas/QRCODE'
2341
+ - $ref: '#/components/schemas/U2FPinValue'
2342
+ pattern: '^\d{3,10}$|^\S{1,64}$'
2343
+ description: >-
2344
+ Contains the authentication value. The format depends on the
2345
+ authentication type used in the AuthenticationInfo complex type.
2346
+ AuthenticationInfo:
2347
+ title: AuthenticationInfo
2348
+ type: object
2349
+ description: Data model for the complex type AuthenticationInfo.
2350
+ properties:
2351
+ authentication:
2352
+ $ref: '#/components/schemas/AuthenticationType'
2353
+ authenticationValue:
2354
+ $ref: '#/components/schemas/AuthenticationValue'
2355
+ required:
2356
+ - authentication
2357
+ - authenticationValue
2358
+ AuthorizationResponseType:
2359
+ title: AuthorizationResponseType
2360
+ description: |
2361
+ Enum containing response information; if the customer entered the
2362
+ authentication value, rejected the transaction, or requested a
2363
+ resend of the authentication value.
2364
+ type: string
2365
+ enum:
2366
+ - ENTERED
2367
+ - REJECTED
2368
+ - RESEND
2369
+ authorizationsPostResponse:
2370
+ title: AuthorizationsPostResponse
2371
+ description: POST /authorizations response object
2372
+ type: object
2373
+ properties:
2374
+ authorizations:
2375
+ type: object
2376
+ properties:
2377
+ authenticationInfo:
2378
+ $ref: '#/components/schemas/AuthenticationInfo'
2379
+ responseType:
2380
+ $ref: '#/components/schemas/AuthorizationResponseType'
2381
+ required:
2382
+ - responseType
2383
+ currentState:
2384
+ $ref: '#/components/schemas/async2SyncCurrentState'
2385
+ required:
2386
+ - authorizations
2387
+ - currentState
2388
+ additionalProperties: false
2389
+ errorAuthorizationsResponse:
2390
+ allOf:
2391
+ - $ref: '#/components/schemas/errorResponse'
2392
+ - type: object
2393
+ responses:
2394
+ transferSuccess:
2395
+ description: Transfer completed successfully
2396
+ content:
2397
+ application/json:
2398
+ schema:
2399
+ $ref: '#/components/schemas/transferResponse'
2400
+ transferBadRequest:
2401
+ description: 'Malformed or missing required body, headers or parameters'
2402
+ content:
2403
+ application/json:
2404
+ schema:
2405
+ $ref: '#/components/schemas/errorTransferResponse'
2406
+ transferServerError:
2407
+ description: An error occurred processing the transfer
2408
+ content:
2409
+ application/json:
2410
+ schema:
2411
+ $ref: '#/components/schemas/errorTransferResponse'
2412
+ transferTimeout:
2413
+ description: Timeout occurred processing the transfer
2414
+ content:
2415
+ application/json:
2416
+ schema:
2417
+ $ref: '#/components/schemas/errorTransferResponse'
2418
+ bulkTransferSuccess:
2419
+ description: Bulk transfer completed successfully
2420
+ content:
2421
+ application/json:
2422
+ schema:
2423
+ $ref: '#/components/schemas/bulkTransferResponse'
2424
+ bulkTransferBadRequest:
2425
+ description: 'Malformed or missing required body, headers or parameters'
2426
+ content:
2427
+ application/json:
2428
+ schema:
2429
+ $ref: '#/components/schemas/bulkTransferErrorResponse'
2430
+ bulkTransferServerError:
2431
+ description: An error occurred processing the bulk transfer
2432
+ content:
2433
+ application/json:
2434
+ schema:
2435
+ $ref: '#/components/schemas/bulkTransferErrorResponse'
2436
+ bulkTransferTimeout:
2437
+ description: Timeout occurred processing the bulk transfer
2438
+ content:
2439
+ application/json:
2440
+ schema:
2441
+ $ref: '#/components/schemas/bulkTransferErrorResponse'
2442
+ bulkQuoteSuccess:
2443
+ description: Bulk quote completed successfully
2444
+ content:
2445
+ application/json:
2446
+ schema:
2447
+ $ref: '#/components/schemas/bulkQuoteResponse'
2448
+ bulkQuoteBadRequest:
2449
+ description: 'Malformed or missing required body, headers or parameters'
2450
+ content:
2451
+ application/json:
2452
+ schema:
2453
+ $ref: '#/components/schemas/bulkQuoteErrorResponse'
2454
+ bulkQuoteServerError:
2455
+ description: An error occurred processing the bulk quote
2456
+ content:
2457
+ application/json:
2458
+ schema:
2459
+ $ref: '#/components/schemas/bulkQuoteErrorResponse'
2460
+ bulkQuoteTimeout:
2461
+ description: Timeout occurred processing the bulk quote
2462
+ content:
2463
+ application/json:
2464
+ schema:
2465
+ $ref: '#/components/schemas/bulkQuoteErrorResponse'
2466
+ requestToPaySuccess:
2467
+ description: Request to Pay completed successfully
2468
+ content:
2469
+ application/json:
2470
+ schema:
2471
+ $ref: '#/components/schemas/requestToPayResponse'
2472
+ requestToPayTransferSuccess:
2473
+ description: Transfer completed successfully
2474
+ content:
2475
+ application/json:
2476
+ schema:
2477
+ $ref: '#/components/schemas/requestToPayTransferResponse'
2478
+ requestToPayTransferBadRequest:
2479
+ description: 'Malformed or missing required body, headers or parameters'
2480
+ content:
2481
+ application/json:
2482
+ schema:
2483
+ $ref: '#/components/schemas/errorTransferResponse'
2484
+ accountsCreationCompleted:
2485
+ description: Accounts creation completed
2486
+ content:
2487
+ application/json:
2488
+ schema:
2489
+ $ref: '#/components/schemas/accountsResponse'
2490
+ accountsCreationError:
2491
+ description: An error occurred creating accounts
2492
+ content:
2493
+ application/json:
2494
+ schema:
2495
+ $ref: '#/components/schemas/errorAccountsResponse'
2496
+ accountsCreationTimeout:
2497
+ description: Timeout occurred creating accounts
2498
+ content:
2499
+ application/json:
2500
+ schema:
2501
+ $ref: '#/components/schemas/errorAccountsResponse'
2502
+ partiesByIdSuccess:
2503
+ description: PartiesByIdSuccess
2504
+ content:
2505
+ application/json:
2506
+ schema:
2507
+ $ref: '#/components/schemas/partiesByIdResponse'
2508
+ partiesByIdError404:
2509
+ description: PartiesByIdError404
2510
+ content:
2511
+ application/json:
2512
+ schema:
2513
+ type: object
2514
+ properties:
2515
+ errorInformation:
2516
+ $ref: '#/components/schemas/ErrorInformation'
2517
+ quotesPostSuccess:
2518
+ description: sync response from POST /quotes
2519
+ content:
2520
+ application/json:
2521
+ schema:
2522
+ $ref: '#/components/schemas/quotesPostResponse'
2523
+ quotesServerError:
2524
+ description: An error occurred processing the quotes request
2525
+ content:
2526
+ application/json:
2527
+ schema:
2528
+ $ref: '#/components/schemas/errorQuotesResponse'
2529
+ simpleTransfersPostSuccess:
2530
+ description: sync response from POST /simpleTransfers
2531
+ content:
2532
+ application/json:
2533
+ schema:
2534
+ $ref: '#/components/schemas/simpleTransfersPostResponse'
2535
+ simpleTransfersServerError:
2536
+ description: An error occurred processing the simple transfers request
2537
+ content:
2538
+ application/json:
2539
+ schema:
2540
+ $ref: '#/components/schemas/errorSimpleTransfersResponse'
2541
+ authorizationPostSuccess:
2542
+ description: Sync response from POST /authorizations
2543
+ content:
2544
+ application/json:
2545
+ schema:
2546
+ $ref: '#/components/schemas/authorizationsPostResponse'
2547
+ authorizationsServerError:
2548
+ description: An error occurred processing the authorizations request
2549
+ content:
2550
+ application/json:
2551
+ schema:
2552
+ $ref: '#/components/schemas/errorAuthorizationsResponse'
2553
+ parameters:
2554
+ transferId:
2555
+ name: transferId
2556
+ in: path
2557
+ required: true
2558
+ schema:
2559
+ $ref: '#/components/schemas/CorrelationId'
2560
+ description: >-
2561
+ Identifier of the transfer to continue as returned in the response to a
2562
+ `POST /transfers` request.
2563
+ bulkTransferId:
2564
+ name: bulkTransferId
2565
+ in: path
2566
+ required: true
2567
+ schema:
2568
+ $ref: '#/components/schemas/CorrelationId'
2569
+ description: >-
2570
+ Identifier of the bulk transfer to continue as returned in the response
2571
+ to a `POST /bulkTransfers` request.
2572
+ bulkQuoteId:
2573
+ name: bulkQuoteId
2574
+ in: path
2575
+ required: true
2576
+ schema:
2577
+ $ref: '#/components/schemas/CorrelationId'
2578
+ description: >-
2579
+ Identifier of the bulk transfer to continue as returned in the response
2580
+ to a `POST /bulkTransfers` request.
2581
+ requestToPayTransactionId:
2582
+ name: requestToPayTransactionId
2583
+ in: path
2584
+ required: true
2585
+ schema:
2586
+ $ref: '#/components/schemas/CorrelationId'
2587
+ description: >-
2588
+ Identifier of the merchant request to pay transfer to continue as
2589
+ returned in the response to a `POST /requestToPayTransfer` request.
2590
+ Type:
2591
+ name: Type
2592
+ in: path
2593
+ required: true
2594
+ schema:
2595
+ type: string
2596
+ description: 'The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.'
2597
+ ID:
2598
+ name: ID
2599
+ in: path
2600
+ required: true
2601
+ schema:
2602
+ type: string
2603
+ description: The identifier value.
2604
+ SubId:
2605
+ name: SubId
2606
+ in: path
2607
+ required: true
2608
+ schema:
2609
+ type: string
2610
+ description: >-
2611
+ A sub-identifier of the party identifier, or a sub-type of the party
2612
+ identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`.