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,1087 @@
1
+ openapi: 3.0.1
2
+ info:
3
+ title: Mojaloop SDK Inbound Scheme Adapter API
4
+ description: Mojaloop SDK Inbound Scheme Adapter API - To be implemented by DFSP backend
5
+ license:
6
+ name: Open API for FSP Interoperability (FSPIOP)
7
+ url: http://www.majaloop.io
8
+ version: 1.0.0
9
+
10
+ paths:
11
+ /:
12
+ get:
13
+ summary: Health check endpoint.
14
+ operationId: healthCheck
15
+ responses:
16
+ 200:
17
+ description: Returns empty body if the service is running.
18
+ /participants/{idType}/{idValue}:
19
+ get:
20
+ summary: Asks for the FSPID of the scheme participant that can handle transfers for the specified identifier type and value
21
+ tags:
22
+ - Participants
23
+ operationId: ParticipantsGetByTypeAndID
24
+ parameters:
25
+ - name: idType
26
+ in: path
27
+ required: true
28
+ schema:
29
+ $ref: '#/components/schemas/idType'
30
+ - name: idValue
31
+ in: path
32
+ required: true
33
+ schema:
34
+ $ref: '#/components/schemas/idValue'
35
+ responses:
36
+ 200:
37
+ description: Response containing details of the requested party
38
+ content:
39
+ application/json:
40
+ schema:
41
+ $ref: '#/components/schemas/participantsResponse'
42
+ 404:
43
+ description: The party specified by the provided identifier type and value is not known to the server
44
+ 400:
45
+ description: Malformed or missing required headers or parameters
46
+ content:
47
+ application/json:
48
+ schema:
49
+ $ref: '#/components/schemas/errorResponse'
50
+ 500:
51
+ description: An error occured processing the request
52
+ content:
53
+ application/json:
54
+ schema:
55
+ $ref: '#/components/schemas/errorResponse'
56
+
57
+ /participants/{idType}/{idValue}/{subIdValue}:
58
+ get:
59
+ summary: Asks for the FSPID of the scheme participant that can handle transfers for the specified identifier type, value and subId value
60
+ tags:
61
+ - Participants
62
+ operationId: ParticipantsGetByTypeIDAndSubId
63
+ parameters:
64
+ - name: idType
65
+ in: path
66
+ required: true
67
+ schema:
68
+ $ref: '#/components/schemas/idType'
69
+ - name: idValue
70
+ in: path
71
+ required: true
72
+ schema:
73
+ $ref: '#/components/schemas/idValue'
74
+ - name: subIdValue
75
+ in: path
76
+ required: true
77
+ schema:
78
+ $ref: '#/components/schemas/subIdValue'
79
+ responses:
80
+ 200:
81
+ description: Response containing details of the requested party
82
+ content:
83
+ application/json:
84
+ schema:
85
+ $ref: '#/components/schemas/participantsResponse'
86
+ 404:
87
+ description: The party specified by the provided identifier type and value/subId is not known to the server
88
+ 400:
89
+ description: Malformed or missing required headers or parameters
90
+ content:
91
+ application/json:
92
+ schema:
93
+ $ref: '#/components/schemas/errorResponse'
94
+ 500:
95
+ description: An error occured processing the request
96
+ content:
97
+ application/json:
98
+ schema:
99
+ $ref: '#/components/schemas/errorResponse'
100
+
101
+ /parties/{idType}/{idValue}:
102
+ get:
103
+ summary: Requests information relating to a transfer party identified by the specified identifier type and value
104
+ tags:
105
+ - Parties
106
+ operationId: PartiesGetByTypeAndID
107
+ parameters:
108
+ - name: idType
109
+ in: path
110
+ required: true
111
+ schema:
112
+ $ref: '#/components/schemas/idType'
113
+ - name: idValue
114
+ in: path
115
+ required: true
116
+ schema:
117
+ $ref: '#/components/schemas/idValue'
118
+ responses:
119
+ 200:
120
+ description: Response containing details of the requested party
121
+ content:
122
+ application/json:
123
+ schema:
124
+ $ref: '#/components/schemas/transferParty'
125
+ 404:
126
+ description: The party specified by the provided identifier type and value is not known to the server
127
+ 400:
128
+ description: Malformed or missing required headers or parameters
129
+ content:
130
+ application/json:
131
+ schema:
132
+ $ref: '#/components/schemas/errorResponse'
133
+ 500:
134
+ description: An error occured processing the request
135
+ content:
136
+ application/json:
137
+ schema:
138
+ $ref: '#/components/schemas/errorResponse'
139
+
140
+ /parties/{idType}/{idValue}/{subIdValue}:
141
+ get:
142
+ summary: Requests information relating to a transfer party identified by the specified identifier type, value and subId value
143
+ tags:
144
+ - Parties
145
+ operationId: PartiesGetByTypeIdAndSubId
146
+ parameters:
147
+ - name: idType
148
+ in: path
149
+ required: true
150
+ schema:
151
+ $ref: '#/components/schemas/idType'
152
+ - name: idValue
153
+ in: path
154
+ required: true
155
+ schema:
156
+ $ref: '#/components/schemas/idValue'
157
+ - name: subIdValue
158
+ in: path
159
+ required: true
160
+ schema:
161
+ $ref: '#/components/schemas/subIdValue'
162
+ responses:
163
+ 200:
164
+ description: Response containing details of the requested party
165
+ content:
166
+ application/json:
167
+ schema:
168
+ $ref: '#/components/schemas/transferParty'
169
+ 404:
170
+ description: The party specified by the provided identifier type and value is not known to the server
171
+ 400:
172
+ description: Malformed or missing required headers or parameters
173
+ content:
174
+ application/json:
175
+ schema:
176
+ $ref: '#/components/schemas/errorResponse'
177
+ 500:
178
+ description: An error occured processing the request
179
+ content:
180
+ application/json:
181
+ schema:
182
+ $ref: '#/components/schemas/errorResponse'
183
+
184
+ /quoterequests:
185
+ post:
186
+ summary: Requests a quote for the specified transfer
187
+ tags:
188
+ - Quotes
189
+ operationId: QuoteRequest
190
+ requestBody:
191
+ description: Request for a transfer quotation
192
+ content:
193
+ application/json:
194
+ schema:
195
+ $ref: '#/components/schemas/quoteRequest'
196
+ responses:
197
+ 200:
198
+ description: A response to the transfer quotation request
199
+ content:
200
+ application/json:
201
+ schema:
202
+ $ref: '#/components/schemas/quoteResponse'
203
+ 400:
204
+ description: Malformed or missing required headers or parameters
205
+ content:
206
+ application/json:
207
+ schema:
208
+ $ref: '#/components/schemas/errorResponse'
209
+ 500:
210
+ description: An error occured processing the request
211
+ content:
212
+ application/json:
213
+ schema:
214
+ $ref: '#/components/schemas/errorResponse'
215
+
216
+ /transactionrequests:
217
+ post:
218
+ summary: transaction request that supports pull based transfers
219
+ tags:
220
+ - TransactionRequest
221
+ operationId: TransactionRequest
222
+ requestBody:
223
+ description: Request for Transaction Request
224
+ content:
225
+ application/json:
226
+ schema:
227
+ $ref: '#/components/schemas/transactionRequest'
228
+ responses:
229
+ 200:
230
+ description: A response to the transfer transaction request
231
+ content:
232
+ application/json:
233
+ schema:
234
+ $ref: '#/components/schemas/transactionRequestResponse'
235
+ 400:
236
+ description: Malformed or missing required headers or parameters
237
+ content:
238
+ application/json:
239
+ schema:
240
+ $ref: '#/components/schemas/errorResponse'
241
+ 500:
242
+ description: An error occured processing the request
243
+ content:
244
+ application/json:
245
+ schema:
246
+ $ref: '#/components/schemas/errorResponse'
247
+
248
+ /transfers:
249
+ post:
250
+ summary: Transfers funds from an external account to an internal account
251
+ tags:
252
+ - Transfers
253
+ operationId: TransfersPost
254
+ requestBody:
255
+ description: An incoming transfer request
256
+ content:
257
+ application/json:
258
+ schema:
259
+ $ref: '#/components/schemas/transferRequest'
260
+ responses:
261
+ 200:
262
+ description: The transfer was accepted
263
+ content:
264
+ application/json:
265
+ schema:
266
+ $ref: '#/components/schemas/transferResponse'
267
+ 400:
268
+ description: Malformed or missing required headers or parameters
269
+ content:
270
+ application/json:
271
+ schema:
272
+ $ref: '#/components/schemas/errorResponse'
273
+ 500:
274
+ description: An error occured processing the request
275
+ content:
276
+ application/json:
277
+ schema:
278
+ $ref: '#/components/schemas/errorResponse'
279
+
280
+ /transfers/{transferId}:
281
+ put:
282
+ summary: Receive notification for a specific transfer
283
+ description: The HTTP request `PUT /transfers/{transferId}` is used to receive notification for transfer being fulfiled when the FSP is a Payee
284
+ parameters:
285
+ - name: transferId
286
+ in: path
287
+ required: true
288
+ schema:
289
+ $ref: '#/components/schemas/idValue'
290
+ tags:
291
+ - Transfers
292
+ operationId: TransfersPut
293
+ requestBody:
294
+ description: An incoming notification for fulfiled transfer
295
+ content:
296
+ application/json:
297
+ schema:
298
+ $ref: '#/components/schemas/fulfilNotification'
299
+ responses:
300
+ 200:
301
+ description: The notification was accepted
302
+ 500:
303
+ description: An error occured processing the request
304
+ content:
305
+ application/json:
306
+ schema:
307
+ $ref: '#/components/schemas/errorResponse'
308
+
309
+
310
+ /otp/{requestToPayId}:
311
+ get:
312
+ summary: Requests OTP
313
+ tags:
314
+ - OTP
315
+ operationId: OtpGet
316
+ parameters:
317
+ - name: requestToPayId
318
+ in: path
319
+ required: true
320
+ schema:
321
+ $ref: '#/components/schemas/idValue'
322
+ responses:
323
+ 200:
324
+ description: Response containing details of the OTP
325
+ content:
326
+ application/json:
327
+ schema:
328
+ $ref: '#/components/schemas/otpDetails'
329
+ 404:
330
+ description: The party specified by the provided identifier type and value is not known to the server
331
+ 400:
332
+ description: Malformed or missing required headers or parameters
333
+ content:
334
+ application/json:
335
+ schema:
336
+ $ref: '#/components/schemas/errorResponse'
337
+ 500:
338
+ description: An error occured processing the request
339
+ content:
340
+ application/json:
341
+ schema:
342
+ $ref: '#/components/schemas/errorResponse'
343
+
344
+ /bulkQuotes:
345
+ post:
346
+ summary: Requests a bulk quote
347
+ tags:
348
+ - BulkQuotes
349
+ operationId: BulkQuotesPost
350
+ requestBody:
351
+ description: Incoming request for a bulk quotation
352
+ content:
353
+ application/json:
354
+ schema:
355
+ $ref: '#/components/schemas/bulkQuoteRequest'
356
+ responses:
357
+ 200:
358
+ description: A response to the bulk quote request
359
+ content:
360
+ application/json:
361
+ schema:
362
+ $ref: '#/components/schemas/bulkQuoteResponse'
363
+ 400:
364
+ description: Malformed or missing required headers or parameters
365
+ content:
366
+ application/json:
367
+ schema:
368
+ $ref: '#/components/schemas/errorResponse'
369
+ 500:
370
+ description: An error occured processing the request
371
+ content:
372
+ application/json:
373
+ schema:
374
+ $ref: '#/components/schemas/errorResponse'
375
+
376
+ /bulkQuotes/{idValue}:
377
+ get:
378
+ summary: Requests information relating to a bulk quote identified by the specified identifier value
379
+ tags:
380
+ - BulkQuotes
381
+ operationId: BulkQuotesGet
382
+ parameters:
383
+ - name: idValue
384
+ in: path
385
+ required: true
386
+ schema:
387
+ $ref: '#/components/schemas/idValue'
388
+ responses:
389
+ 200:
390
+ description: Response containing details of the requested bulk quote
391
+ content:
392
+ application/json:
393
+ schema:
394
+ $ref: '#/components/schemas/bulkQuoteResponse'
395
+ 404:
396
+ description: The bulk quote specified by the provided identifier value is not known to the server
397
+ 400:
398
+ description: Malformed or missing required headers or parameters
399
+ content:
400
+ application/json:
401
+ schema:
402
+ $ref: '#/components/schemas/errorResponse'
403
+ 500:
404
+ description: An error occured processing the request
405
+ content:
406
+ application/json:
407
+ schema:
408
+ $ref: '#/components/schemas/errorResponse'
409
+
410
+ /bulkTransfers:
411
+ post:
412
+ summary: Execute bulk transfer of funds from an external account to internal accounts
413
+ tags:
414
+ - BulkTransfers
415
+ operationId: BulkTransfersPost
416
+ requestBody:
417
+ description: An incoming bulk transfer request
418
+ content:
419
+ application/json:
420
+ schema:
421
+ $ref: '#/components/schemas/bulkTransferRequest'
422
+ responses:
423
+ 200:
424
+ description: The bulk transfer was accepted
425
+ content:
426
+ application/json:
427
+ schema:
428
+ $ref: '#/components/schemas/bulkTransferResponse'
429
+ 400:
430
+ description: Malformed or missing required headers or parameters
431
+ content:
432
+ application/json:
433
+ schema:
434
+ $ref: '#/components/schemas/errorResponse'
435
+ 500:
436
+ description: An error occured processing the request
437
+ content:
438
+ application/json:
439
+ schema:
440
+ $ref: '#/components/schemas/errorResponse'
441
+
442
+ /bulkTransfers/{idValue}:
443
+ get:
444
+ summary: Requests information relating to a bulk transfer identified by the specified identifier value
445
+ tags:
446
+ - BulkTransfers
447
+ operationId: BulkTransfersGet
448
+ parameters:
449
+ - name: idValue
450
+ in: path
451
+ required: true
452
+ schema:
453
+ $ref: '#/components/schemas/idValue'
454
+ responses:
455
+ 200:
456
+ description: Response containing details of the requested bulk transfer
457
+ content:
458
+ application/json:
459
+ schema:
460
+ $ref: '#/components/schemas/bulkTransferResponse'
461
+ 404:
462
+ description: The bulk transfer specified by the provided identifier value is not known to the server
463
+ 400:
464
+ description: Malformed or missing required headers or parameters
465
+ content:
466
+ application/json:
467
+ schema:
468
+ $ref: '#/components/schemas/errorResponse'
469
+ 500:
470
+ description: An error occured processing the request
471
+ content:
472
+ application/json:
473
+ schema:
474
+ $ref: '#/components/schemas/errorResponse'
475
+
476
+ components:
477
+ schemas:
478
+ quoteRequest:
479
+ type: object
480
+ description: A request for a quote for transfer from the DFSP backend
481
+ required:
482
+ - quoteId
483
+ - transactionId
484
+ - to
485
+ - from
486
+ - amountType
487
+ - amount
488
+ - currency
489
+ - transactionType
490
+ - initiator
491
+ - initiatorType
492
+ properties:
493
+ quoteId:
494
+ $ref: '#/components/schemas/quoteId'
495
+ transactionId:
496
+ $ref: '#/components/schemas/transactionId'
497
+ to:
498
+ $ref: '#/components/schemas/transferParty'
499
+ from:
500
+ $ref: '#/components/schemas/transferParty'
501
+ amountType:
502
+ $ref: '#/components/schemas/amountType'
503
+ amount:
504
+ $ref: '#/components/schemas/money'
505
+ currency:
506
+ $ref: '#/components/schemas/currency'
507
+ feesAmount:
508
+ $ref: '#/components/schemas/money'
509
+ feesCurrency:
510
+ $ref: '#/components/schemas/currency'
511
+ transactionType:
512
+ $ref: '#/components/schemas/transactionType'
513
+ initiator:
514
+ $ref: '#/components/schemas/initiator'
515
+ initiatorType:
516
+ $ref: '#/components/schemas/initiatorType'
517
+ geoCode:
518
+ $ref: '#/components/schemas/geoCode'
519
+ note:
520
+ type: string
521
+ minLength: 1
522
+ maxLength: 128
523
+ description: An optional note associated with the requested transfer
524
+ expiration:
525
+ $ref: '#/components/schemas/timestamp'
526
+
527
+ transactionRequest:
528
+ type: object
529
+ description: A request for a pull based transfer
530
+ required:
531
+ - transactionRequestId
532
+ - to
533
+ - from
534
+ - amount
535
+ - currency
536
+ - transactionType
537
+ - initiator
538
+ - initiatorType
539
+ properties:
540
+ transactionRequestId:
541
+ $ref: '#/components/schemas/transactionRequestId'
542
+ to:
543
+ $ref: '#/components/schemas/transferParty'
544
+ from:
545
+ $ref: '#/components/schemas/transferParty'
546
+ amount:
547
+ $ref: '#/components/schemas/money'
548
+ currency:
549
+ $ref: '#/components/schemas/currency'
550
+ transactionType:
551
+ $ref: '#/components/schemas/transactionType'
552
+ initiator:
553
+ $ref: '#/components/schemas/initiator'
554
+ initiatorType:
555
+ $ref: '#/components/schemas/initiatorType'
556
+ geoCode:
557
+ $ref: '#/components/schemas/geoCode'
558
+ note:
559
+ type: string
560
+ minLength: 1
561
+ maxLength: 128
562
+ description: An optional note associated with the requested transfer
563
+ expiration:
564
+ $ref: '#/components/schemas/timestamp'
565
+
566
+ timestamp:
567
+ type: string
568
+ description: An ISO-8601 formatted timestamp
569
+ pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
570
+
571
+ dateOfBirth:
572
+ type: string
573
+ description: Date of birth in the form YYYY-MM-DD
574
+ pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
575
+
576
+ initiator:
577
+ type: string
578
+ enum:
579
+ - PAYER
580
+ - PAYEE
581
+
582
+ initiatorType:
583
+ type: string
584
+ enum:
585
+ - CONSUMER
586
+ - AGENT
587
+ - BUSINESS
588
+ - DEVICE
589
+
590
+ quoteResponse:
591
+ type: object
592
+ description: A response to a request for a quote
593
+ required:
594
+ - quoteId
595
+ - transactionId
596
+ - transferAmount
597
+ - transferAmountCurrency
598
+ properties:
599
+ quoteId:
600
+ $ref: '#/components/schemas/quoteId'
601
+ transactionId:
602
+ $ref: '#/components/schemas/transactionId'
603
+ transferAmount:
604
+ $ref: '#/components/schemas/money'
605
+ transferAmountCurrency:
606
+ $ref: '#/components/schemas/currency'
607
+ payeeReceiveAmount:
608
+ $ref: '#/components/schemas/money'
609
+ payeeReceiveAmountCurrency:
610
+ $ref: '#/components/schemas/currency'
611
+ payeeFspFeeAmount:
612
+ $ref: '#/components/schemas/money'
613
+ payeeFspFeeAmountCurrency:
614
+ $ref: '#/components/schemas/currency'
615
+ payeeFspCommissionAmount:
616
+ $ref: '#/components/schemas/money'
617
+ payeeFspCommissionAmountCurrency:
618
+ $ref: '#/components/schemas/currency'
619
+ expiration:
620
+ $ref: '#/components/schemas/timestamp'
621
+ geoCode:
622
+ $ref: '#/components/schemas/geoCode'
623
+ extensionList:
624
+ $ref: '#/components/schemas/extensionList'
625
+
626
+ transactionRequestResponse:
627
+ type: object
628
+ description: A response to a request for a quote
629
+ required:
630
+ - transactionId
631
+ - transactionRequestState
632
+ properties:
633
+ transactionId:
634
+ $ref: '#/components/schemas/transactionId'
635
+ transferAmount:
636
+ $ref: '#/components/schemas/transactionRequestState'
637
+
638
+ participantsResponse:
639
+ type: object
640
+ properties:
641
+ fspId:
642
+ $ref: '#/components/schemas/fspId'
643
+
644
+ fspId:
645
+ type: string
646
+ minLength: 1
647
+ maxLength: 32
648
+
649
+ payerType:
650
+ type: string
651
+ enum:
652
+ - CONSUMER
653
+ - AGENT
654
+ - BUSINESS
655
+ - DEVICE
656
+
657
+ amountType:
658
+ type: string
659
+ enum:
660
+ - SEND
661
+ - RECEIVE
662
+
663
+ transactionType:
664
+ type: string
665
+ enum:
666
+ - TRANSFER
667
+ - DEPOSIT
668
+ - PAYMENT
669
+
670
+ transactionRequestState:
671
+ type: string
672
+ enum:
673
+ - RECEIVED
674
+ - PENDING
675
+ - ACCEPTED
676
+ - REJECTED
677
+
678
+ transferRequest:
679
+ type: object
680
+ required:
681
+ - transferId
682
+ - currency
683
+ - amount
684
+ properties:
685
+ transferId:
686
+ $ref: '#/components/schemas/transferId'
687
+ quote:
688
+ $ref: '#/components/schemas/quoteResponse'
689
+ from:
690
+ $ref: '#/components/schemas/transferParty'
691
+ to:
692
+ $ref: '#/components/schemas/transferParty'
693
+ amountType:
694
+ $ref: '#/components/schemas/amountType'
695
+ currency:
696
+ $ref: '#/components/schemas/currency'
697
+ amount:
698
+ $ref: '#/components/schemas/money'
699
+ transactionType:
700
+ $ref: '#/components/schemas/transactionType'
701
+ note:
702
+ maxLength: 128
703
+ type: string
704
+
705
+ otpDetails:
706
+ type: object
707
+ required:
708
+ - otpValue
709
+ properties:
710
+ otpValue:
711
+ type: string
712
+ description: OTP value
713
+
714
+ idType:
715
+ type: string
716
+ enum:
717
+ - MSISDN
718
+ - ACCOUNT_NO
719
+ - EMAIL
720
+ - PERSONAL_ID
721
+ - BUSINESS
722
+ - DEVICE
723
+ - ACCOUNT_ID
724
+ - IBAN
725
+ - ALIAS
726
+
727
+ idValue:
728
+ type: string
729
+ minLength: 1
730
+ maxLength: 128
731
+
732
+ subIdValue:
733
+ type: string
734
+ minLength: 1
735
+ maxLength: 128
736
+
737
+ money:
738
+ pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$
739
+ type: string
740
+
741
+ transferResponse:
742
+ type: object
743
+ required:
744
+ - homeTransactionId
745
+ properties:
746
+ homeTransactionId:
747
+ type: string
748
+ description: Transaction ID from the DFSP backend, used to reconcile transactions between the switch and DFSP backend systems
749
+
750
+ currency:
751
+ maxLength: 3
752
+ minLength: 3
753
+ type: string
754
+
755
+ transferId:
756
+ pattern: ^[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}$
757
+ type: string
758
+ description: A Mojaloop API transfer identifier (UUID/ULID)
759
+
760
+ quoteId:
761
+ pattern: ^[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}$
762
+ type: string
763
+ description: A Mojaloop API quote identifier (UUID/ULID)
764
+
765
+ transactionRequestId:
766
+ pattern: ^[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}$
767
+ type: string
768
+ description: A Mojaloop API transaction request identifier (UUID/ULID)
769
+
770
+ transactionId:
771
+ pattern: ^[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}$
772
+ type: string
773
+ description: ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote
774
+
775
+ transferParty:
776
+ type: object
777
+ required:
778
+ - idType
779
+ - idValue
780
+ properties:
781
+ type:
782
+ $ref: '#/components/schemas/payerType'
783
+ idType:
784
+ $ref: '#/components/schemas/idType'
785
+ idValue:
786
+ type: string
787
+ description: The identifier string used to identify the sender
788
+ subIdValue:
789
+ type: string
790
+ description: The sub identifier string used to identify the sender
791
+ displayName:
792
+ type: string
793
+ description: Display name of the sender if known
794
+ firstName:
795
+ type: string
796
+ description: Party first name
797
+ middleName:
798
+ type: string
799
+ description: Party moddle name
800
+ lastName:
801
+ type: string
802
+ description: Party last name
803
+ dateOfBirth:
804
+ $ref: '#/components/schemas/dateOfBirth'
805
+ merchantClassificationCode:
806
+ type: string
807
+ description: Up to 4 digits specifying the senders merchant classification, if known and applicable
808
+
809
+ bulkQuoteRequest:
810
+ type: object
811
+ description: A request for a bulk quote
812
+ required:
813
+ - bulkQuoteId
814
+ - from
815
+ - individualQuotes
816
+ properties:
817
+ bulkQuoteId:
818
+ $ref: '#/components/schemas/bulkQuoteId'
819
+ from:
820
+ $ref: '#/components/schemas/transferParty'
821
+ geoCode:
822
+ $ref: '#/components/schemas/geoCode'
823
+ expiration:
824
+ $ref: '#/components/schemas/timestamp'
825
+ individualQuotes:
826
+ type: array
827
+ minItems: 1
828
+ maxItems: 1000
829
+ items:
830
+ $ref: '#/components/schemas/IndividualQuote'
831
+
832
+ bulkQuoteResponse:
833
+ type: object
834
+ description: A response to a request for a bulk quote
835
+ required:
836
+ - bulkQuoteId
837
+ - individualQuoteResults
838
+ properties:
839
+ bulkQuoteId:
840
+ $ref: '#/components/schemas/bulkQuoteId'
841
+ expiration:
842
+ $ref: '#/components/schemas/timestamp'
843
+ individualQuoteResults:
844
+ type: array
845
+ minItems: 1
846
+ maxItems: 1000
847
+ items:
848
+ $ref: '#/components/schemas/IndividualQuoteResult'
849
+ description: Fees for each individual transaction, if any of them are charged per
850
+ transaction.
851
+
852
+ IndividualQuote:
853
+ type: object
854
+ description: Data model for individual quote in a bulk quote request
855
+ required:
856
+ - quoteId
857
+ - transactionId
858
+ - to
859
+ - amountType
860
+ - amount
861
+ - currency
862
+ - transactionType
863
+ - initiator
864
+ - initiatorType
865
+ properties:
866
+ quoteId:
867
+ $ref: '#/components/schemas/quoteId'
868
+ transactionId:
869
+ $ref: '#/components/schemas/transactionId'
870
+ to:
871
+ $ref: '#/components/schemas/transferParty'
872
+ amountType:
873
+ $ref: '#/components/schemas/amountType'
874
+ amount:
875
+ $ref: '#/components/schemas/money'
876
+ currency:
877
+ $ref: '#/components/schemas/currency'
878
+ feesAmount:
879
+ $ref: '#/components/schemas/money'
880
+ feesCurrency:
881
+ $ref: '#/components/schemas/currency'
882
+ transactionType:
883
+ $ref: '#/components/schemas/transactionType'
884
+ initiator:
885
+ $ref: '#/components/schemas/initiator'
886
+ initiatorType:
887
+ $ref: '#/components/schemas/initiatorType'
888
+ note:
889
+ type: string
890
+ minLength: 1
891
+ maxLength: 128
892
+ description: An optional note associated with the quote
893
+
894
+ IndividualQuoteResult:
895
+ type: object
896
+ description: Data model for individual quote in a bulk quote response
897
+ properties:
898
+ quoteId:
899
+ $ref: '#/components/schemas/quoteId'
900
+ transferAmount:
901
+ $ref: '#/components/schemas/money'
902
+ transferAmountCurrency:
903
+ $ref: '#/components/schemas/currency'
904
+ payeeReceiveAmount:
905
+ $ref: '#/components/schemas/money'
906
+ payeeReceiveAmountCurrency:
907
+ $ref: '#/components/schemas/currency'
908
+ payeeFspFeeAmount:
909
+ $ref: '#/components/schemas/money'
910
+ payeeFspFeeAmountCurrency:
911
+ $ref: '#/components/schemas/currency'
912
+ payeeFspCommissionAmount:
913
+ $ref: '#/components/schemas/money'
914
+ payeeFspCommissionAmountCurrency:
915
+ $ref: '#/components/schemas/currency'
916
+
917
+ bulkQuoteId:
918
+ pattern: ^[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}$
919
+ type: string
920
+ description: A Mojaloop API bulk quote identifier (UUID/ULID)
921
+
922
+ bulkTransferRequest:
923
+ type: object
924
+ required:
925
+ - bulkTransferId
926
+ - individualTransfers
927
+ properties:
928
+ bulkTransferId:
929
+ $ref: '#/components/schemas/bulkTransferId'
930
+ bulkQuote:
931
+ $ref: '#/components/schemas/bulkQuoteResponse'
932
+ from:
933
+ $ref: '#/components/schemas/transferParty'
934
+ individualTransfers:
935
+ type: array
936
+ minItems: 1
937
+ maxItems: 1000
938
+ items:
939
+ $ref: '#/components/schemas/IndividualTransfer'
940
+
941
+ IndividualTransfer:
942
+ type: object
943
+ description: Data model for individual transfer in a bulk transfer request
944
+ required:
945
+ - transferId
946
+ - amount
947
+ - currency
948
+ properties:
949
+ transferId:
950
+ $ref: '#/components/schemas/transferId'
951
+ to:
952
+ $ref: '#/components/schemas/transferParty'
953
+ amountType:
954
+ $ref: '#/components/schemas/amountType'
955
+ amount:
956
+ $ref: '#/components/schemas/money'
957
+ currency:
958
+ $ref: '#/components/schemas/currency'
959
+ feesAmount:
960
+ $ref: '#/components/schemas/money'
961
+ feesCurrency:
962
+ $ref: '#/components/schemas/currency'
963
+ transactionType:
964
+ $ref: '#/components/schemas/transactionType'
965
+ initiator:
966
+ $ref: '#/components/schemas/initiator'
967
+ initiatorType:
968
+ $ref: '#/components/schemas/initiatorType'
969
+ note:
970
+ type: string
971
+ minLength: 1
972
+ maxLength: 128
973
+ description: An optional note associated with the quote
974
+
975
+ IndividualTransferResult:
976
+ type: object
977
+ description: Data model for individual transfer in a bulk transfer response
978
+ required:
979
+ - transferId
980
+ properties:
981
+ transferId:
982
+ $ref: '#/components/schemas/transferId'
983
+ extensionList:
984
+ $ref: '#/components/schemas/extensionList'
985
+
986
+ bulkTransferResponse:
987
+ type: object
988
+ required:
989
+ - homeTransactionId
990
+ properties:
991
+ bulkTransferId:
992
+ $ref: '#/components/schemas/bulkTransferId'
993
+ homeTransactionId:
994
+ type: string
995
+ description: Transaction ID from the DFSP backend, used to reconcile transactions between the switch and DFSP backend systems
996
+ individualTransferResults:
997
+ type: array
998
+ minItems: 1
999
+ maxItems: 1000
1000
+ items:
1001
+ $ref: '#/components/schemas/IndividualTransferResult'
1002
+
1003
+ bulkTransferId:
1004
+ pattern: ^[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}$
1005
+ type: string
1006
+ description: A Mojaloop API transfer identifier (UUID/ULID)
1007
+
1008
+ geoCode:
1009
+ type: object
1010
+ description: Indicates the geographic location from where the transaction was initiated.
1011
+ properties:
1012
+ latitude:
1013
+ $ref: '#/components/schemas/latitude'
1014
+ longitude:
1015
+ $ref: '#/components/schemas/longitude'
1016
+ required:
1017
+ - latitude
1018
+ - longitude
1019
+
1020
+ latitude:
1021
+ type: string
1022
+ pattern: ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
1023
+ description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
1024
+
1025
+ longitude:
1026
+ type: string
1027
+ pattern: ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
1028
+ description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
1029
+
1030
+ errorResponse:
1031
+ type: object
1032
+ properties:
1033
+ statusCode:
1034
+ type: string
1035
+ description: Error code as string
1036
+ message:
1037
+ type: string
1038
+ description: Error message text
1039
+
1040
+ extensionList:
1041
+ type: array
1042
+ items:
1043
+ $ref: '#/components/schemas/extensionItem'
1044
+ minItems: 0
1045
+ maxItems: 16
1046
+
1047
+ extensionItem:
1048
+ type: object
1049
+ properties:
1050
+ key:
1051
+ type: string
1052
+ minLength: 1
1053
+ maxLength: 32
1054
+ value:
1055
+ type: string
1056
+ minLength: 1
1057
+ maxLength: 128
1058
+
1059
+ transferState:
1060
+ type: string
1061
+ enum:
1062
+ - RECEIVED
1063
+ - RESERVED
1064
+ - COMMITTED
1065
+ - ABORTED
1066
+ description: >
1067
+ Below are the allowed values for the enumeration
1068
+ - RECEIVED DFSP has received the transfer.
1069
+ - RESERVED DFSP has reserved the transfer.
1070
+ - COMMITTED DFSP has successfully performed the transfer.
1071
+ - ABORTED DFSP has aborted the transfer due a rejection or failure to perform the transfer.
1072
+
1073
+ fulfilNotification:
1074
+ title: TransfersIDPatchResponse
1075
+ type: object
1076
+ description: PUT /transfers/{transferId} object
1077
+ properties:
1078
+ completedTimestamp:
1079
+ $ref: '#/components/schemas/timestamp'
1080
+ transferState:
1081
+ $ref: '#/components/schemas/transferState'
1082
+ extensionList:
1083
+ $ref: '#/components/schemas/extensionList'
1084
+ required:
1085
+ - completedTimestamp
1086
+ - transferState
1087
+