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
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ Mojaloop Testing Toolkit
2
+ =============================
3
+
4
+ The goal of the Self-testing Tool Kit is for the participants in a Mojaloop Hub, in particular DFSPs, but in future System Integrators and other entities, to have a standard way to test integration to a Mojaloop Hub.
5
+
6
+ It should be simple to use for both technical and non-technical users; although it is primarily directed at QA personnel. The goal is to ensure that the tool is easy to use for almost anyone involved with a Mojaloop related system be able to quickly configure the tool and use it.
7
+
8
+
9
+ ## Quick Start
10
+
11
+ For getting started with **Mojaloop Testing Toolkit** quickly please follow the below steps.
12
+
13
+ The following software should be installed on your system to run the toolkit.
14
+
15
+ * Git
16
+ * Docker
17
+
18
+ Please execute the following lines to build and run the tool.
19
+
20
+ ```bash
21
+ git clone https://github.com/mojaloop/ml-testing-toolkit
22
+ cd ml-testing-toolkit
23
+ docker-compose up
24
+ ```
25
+
26
+ You can get the web interface on http://localhost:6060/
27
+
28
+ The server will start and listen on port **4040**. You can send the mojaloop api requests to this port number.
29
+
30
+
31
+ ## Testing With Mojaloop Simulator
32
+
33
+ If you want to test the tool for the whole functionality like schema validation, additional validation and callback generation ..etc, you can initiate a transfer cycle from mojaloop simulator UI.
34
+
35
+ Please follow the below steps from the ml-testing-toolkit folder
36
+
37
+ ```bash
38
+ cd simulator
39
+ docker-compose up
40
+ ```
41
+
42
+ The above command will start the services scheme-adapter, mojaloop-simulator and mojaloop-simulator-ui.
43
+
44
+ Open the following URLs in your browser and send a transfer from simulator and observe the toolkit logs in web frontend.
45
+
46
+ * http://localhost:6060 (Front end for **Mojaloop Testing Toolkit**)
47
+ * http://localhost (Front end for **Mojaloop Simulator**)
48
+
49
+
50
+ ## Other Installation Guides
51
+
52
+ For exploring different ways of installation procedures, please follow this [Installation Guide](/documents/User-Guide-Installation.md)
53
+
54
+ ## Usage Guides
55
+
56
+ After installation you can interact with the testing toolkit from either web interface or with a command line tool.
57
+
58
+ For Web interface follow this [Usage Guide](/documents/User-Guide.md)
59
+
60
+ For Command line tool follow this [CLI User Guide](/documents/User-Guide-CLI.md)
61
+
62
+
63
+ **If you have your own DFSP implementation you can point the peer endpoint to *Mojaloop Testing Toolkit* on port 4040 and try to send requests from your implementation instead of using mojaloop-simulator.**
64
+
65
+ ## Web UI Screen Shots
66
+
67
+ ![Monitoring Page](/assets/images/expand-monitoring-messages.png)
68
+
69
+ ![Settings Page](/assets/images/opening-default-settings.png)
70
+
71
+ ![Rule Condition](/assets/images/sample-condition.png)
72
+
73
+ ![Rule Summary](/assets/images/summarized-view-of-rule.png)
74
+
75
+ ![Download Report](/assets/images/test-case-editor.png)
76
+
77
+ ![Download Report](/assets/images/download-report.png)
78
+
79
+ -------
80
+
81
+ ## Auditing Dependencies
82
+
83
+ We use `audit-ci` along with `npm audit` to check dependencies for node vulnerabilities, and keep track of resolved dependencies with an `audit-ci.jsonc` file.
84
+
85
+ To start a new resolution process, run:
86
+
87
+ ```bash
88
+ npm run audit:fix
89
+ ```
90
+
91
+ You can then check to see if the CI will pass based on the current dependencies with:
92
+
93
+ ```bash
94
+ npm run audit:check
95
+ ```
96
+
97
+ The [audit-ci.jsonc](./audit-ci.jsonc) contains any audit-exceptions that cannot be fixed to ensure that CircleCI will build correctly.
98
+
99
+ ## Container Scans
100
+
101
+ As part of our CI/CD process, we use anchore-cli to scan our built docker container for vulnerabilities upon release.
102
+
103
+ If you find your release builds are failing, refer to the [container scanning](https://github.com/mojaloop/ci-config#container-scanning) in our shared Mojaloop CI config repo. There is a good chance you simply need to update the `mojaloop-policy-generator.js` file and re-run the circleci workflow.
104
+
105
+ For more information on anchore and anchore-cli, refer to:
106
+ - [Anchore CLI](https://github.com/anchore/anchore-cli)
107
+ - [Circle Orb Registry](https://circleci.com/orbs/registry/orb/anchore/anchore-engine)
108
+
109
+ ## Automated Releases
110
+
111
+ As part of our CI/CD process, we use a combination of CircleCI, standard-version
112
+ npm package and github-release CircleCI orb to automatically trigger our releases
113
+ and image builds. This process essentially mimics a manual tag and release.
114
+
115
+ On a merge to main, CircleCI is configured to use the mojaloopci github account
116
+ to push the latest generated CHANGELOG and package version number.
117
+
118
+ Once those changes are pushed, CircleCI will pull the updated main, tag and
119
+ push a release triggering another subsequent build that also publishes a docker image.
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="821px" height="551px" viewBox="-0.5 -0.5 821 551" content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2020-02-13T07:01:54.856Z&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36&quot; etag=&quot;Yf9Xfdr388n96DcOBm3s&quot; version=&quot;12.6.8&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;SkuA5n1snQKMJyzdszey&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="30" y="0" width="170" height="250" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><rect x="0" y="10" width="230" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 20px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">DFSP Implementation</div></div></div></foreignObject><text x="115" y="24" fill="#000000" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">DFSP Implementation</text></switch></g><rect x="55" y="140" width="120" height="30" rx="4.5" ry="4.5" fill="#d0cee2" stroke="#56517e" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 155px; margin-left: 56px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Inbound</div></div></div></foreignObject><text x="115" y="159" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Inbound</text></switch></g><rect x="55" y="70" width="120" height="30" rx="4.5" ry="4.5" fill="#d0cee2" stroke="#56517e" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 85px; margin-left: 56px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Outbound</div></div></div></foreignObject><text x="115" y="89" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Outbound</text></switch></g><rect x="270" y="0" width="550" height="550" fill="#edf3fc" stroke="#6c8ebf" pointer-events="all"/><rect x="440" y="10" width="230" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 20px; margin-left: 441px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Mojaloop Self Testing Toolkit</div></div></div></foreignObject><text x="555" y="24" fill="#000000" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">Mojaloop Self Testing Toolkit</text></switch></g><rect x="300" y="65" width="100" height="40" rx="6" ry="6" fill="#ffcccc" stroke="#36393d" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 85px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Inbound HTTP adapter</div></div></div></foreignObject><text x="350" y="88" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Inbound HTTP adapter</text></switch></g><rect x="300" y="140" width="470" height="90" fill="#fad7ac" stroke="#b46504" pointer-events="all"/><rect x="320" y="160" width="120" height="40" rx="6" ry="6" fill="#6d8764" stroke="#3a5431" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Version Negotiation</div></div></div></foreignObject><text x="380" y="183" fill="#ffffff" font-family="Helvetica" font-size="10px" text-anchor="middle">Version Negotiation</text></switch></g><rect x="475" y="160" width="120" height="40" rx="6" ry="6" fill="#6d8764" stroke="#3a5431" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 476px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Schema validation</div></div></div></foreignObject><text x="535" y="183" fill="#ffffff" font-family="Helvetica" font-size="10px" text-anchor="middle">Schema validation</text></switch></g><rect x="630" y="160" width="120" height="40" rx="6" ry="6" fill="#6d8764" stroke="#3a5431" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 631px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Additional Validations</div></div></div></foreignObject><text x="690" y="183" fill="#ffffff" font-family="Helvetica" font-size="10px" text-anchor="middle">Additional Validations</text></switch></g><rect x="642" y="270" width="140" height="180" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 277px; margin-left: 643px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Input</div></div></div></foreignObject><text x="712" y="287" fill="#333333" font-family="Helvetica" font-size="10px" text-anchor="middle" font-weight="bold">Input</text></switch></g><path d="M 657 300 L 757 300 L 767 310 L 767 340 L 657 340 L 657 300 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 757 300 L 757 310 L 767 310 Z" fill-opacity="0.05" fill="#000000" stroke="none" pointer-events="all"/><path d="M 757 300 L 757 310 L 767 310" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 320px; margin-left: 658px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">FSPIOP openapi spec versions</span></div></div></div></foreignObject><text x="712" y="323" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">FSPIOP openapi spec ve...</text></switch></g><path d="M 657 350 L 757 350 L 767 360 L 767 390 L 657 390 L 657 350 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 757 350 L 757 360 L 767 360 Z" fill-opacity="0.05" fill="#000000" stroke="none" pointer-events="all"/><path d="M 757 350 L 757 360 L 767 360" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 370px; margin-left: 658px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Additional Validation Rules</div></div></div></foreignObject><text x="712" y="373" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Additional Validation...</text></switch></g><path d="M 657 400 L 757 400 L 767 410 L 767 440 L 657 440 L 657 400 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 757 400 L 757 410 L 767 410 Z" fill-opacity="0.05" fill="#000000" stroke="none" pointer-events="all"/><path d="M 757 400 L 757 410 L 767 410" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 420px; margin-left: 658px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Callback generation Rules</div></div></div></foreignObject><text x="712" y="423" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Callback generation Ru...</text></switch></g><rect x="485" y="400" width="120" height="40" rx="6" ry="6" fill="#ffcccc" stroke="#36393d" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 420px; margin-left: 486px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Callback Generator</div></div></div></foreignObject><text x="545" y="423" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Callback Generator</text></switch></g><path d="M 750 180 L 790 180 Q 800 180 800 190 L 800 365 Q 800 375 790 375 L 773.37 375" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 2" pointer-events="stroke"/><path d="M 768.12 375 L 775.12 371.5 L 773.37 375 L 775.12 378.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 175 85 L 293.63 85" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 298.88 85 L 291.88 88.5 L 293.63 85 L 291.88 81.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 71px; margin-left: 235px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">POST /transfers</div></div></div></foreignObject><text x="235" y="74" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">POST /transfers</text></switch></g><path d="M 280 340 L 125 340 Q 115 340 115 330 L 115 176.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 115 171.12 L 118.5 178.12 L 115 176.37 L 111.5 178.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 431px; margin-left: 401px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">PUT /transfers/ID</div></div></div></foreignObject><text x="401" y="434" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">PUT /transfers/ID</text></switch></g><rect x="280" y="320" width="120" height="40" rx="6" ry="6" fill="#ffcccc" stroke="#36393d" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 340px; margin-left: 281px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Outbound HTTP adapter</div></div></div></foreignObject><text x="340" y="343" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Outbound HTTP adapter</text></switch></g><path d="M 350 105 L 350 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 350 158.88 L 346.5 151.88 L 350 153.63 L 353.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 180 L 468.63 180" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 473.88 180 L 466.88 183.5 L 468.63 180 L 466.88 176.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 595 180 L 623.63 180" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 628.88 180 L 621.88 183.5 L 623.63 180 L 621.88 176.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 565 200 L 565 210 Q 565 220 565 230 L 565 310 Q 565 320 575 320 L 600 320 Q 610 320 620 320 L 650.63 320" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 2" pointer-events="stroke"/><path d="M 655.88 320 L 648.88 323.5 L 650.63 320 L 648.88 316.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 605 420 L 607.5 420 Q 610 420 620 420 L 650.63 420" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 2" pointer-events="stroke"/><path d="M 655.88 420 L 648.88 423.5 L 650.63 420 L 648.88 416.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 690 200 L 690 250 Q 690 260 680 260 L 555 260 Q 545 260 545 270 L 545 393.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 545 398.88 L 541.5 391.88 L 545 393.63 L 548.5 391.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 485 420 L 350 420 Q 340 420 340 410 L 340 366.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 340 361.12 L 343.5 368.12 L 340 366.37 L 336.5 368.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 370 320 L 370 300 Q 370 290 380 290 L 495 290 Q 505 290 505 280 L 505 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="1 2" pointer-events="stroke"/><path d="M 505 201.12 L 508.5 208.12 L 505 206.37 L 501.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 535 200 L 535 210 Q 535 220 525 220 L 270 220 Q 260 220 260 210 L 260 103 Q 260 93 250 92.94 L 181.37 92.54" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 176.12 92.51 L 183.14 89.05 L 181.37 92.54 L 183.1 96.05 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 230px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Success / <br />Error <br />response<br />2XX / 4XX</div></div></div></foreignObject><text x="230" y="153" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">Success /...</text></switch></g><path d="M 660 200 L 660 230 Q 660 240 650 240 L 530 240 Q 520 240 520 250 L 520 330 Q 520 340 510 340 L 406.37 340" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 401.12 340 L 408.12 336.5 L 406.37 340 L 408.12 343.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 351px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">PUT /transfers/ID/error</div></div></div></foreignObject><text x="461" y="354" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="middle">PUT /transfers/ID/error</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="837px" height="897px" viewBox="-0.5 -0.5 837 897" content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2020-02-13T07:00:32.023Z&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36&quot; etag=&quot;sUiiqT_ty3SpptwDGas2&quot; version=&quot;12.6.8&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;zb0J1lTHZboETh79LLQe&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="0" y="0" width="836" height="896" fill="#fffdf7" stroke="#d6b656" pointer-events="all"/><rect x="377" y="259.5" width="260" height="90" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 305px; margin-left: 378px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Construct body and headers using OpenAPI specification and <b><i>Mock data generation rules</i></b> for <br />PUT /transfers/&lt;ID&gt;<br />callback</div></div></div></foreignObject><text x="507" y="308" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Construct body and headers using OpenAPI sp...</text></switch></g><path d="M 221.5 206.25 L 255.85 181.8 Q 264 176 272.15 181.8 L 340.85 230.7 Q 349 236.5 340.85 242.3 L 272.15 291.2 Q 264 297 255.85 291.2 L 187.15 242.3 Q 179 236.5 187.15 230.7 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 237px; margin-left: 180px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">Schema, Header<br />validation <br />against <b><i>OpenAPI<br />Specification</i></b><br /></span></div></div></div></foreignObject><text x="264" y="240" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Schema, Header...</text></switch></g><path d="M 179 236.5 L 116 236.93 Q 106 237 106 247 L 106 268.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 106 273.88 L 102.5 266.88 L 106 268.63 L 109.5 266.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 457 417.5 L 498.73 389.12 Q 507 383.5 515.27 389.12 L 598.73 445.88 Q 607 451.5 598.73 457.12 L 515.27 513.88 Q 507 519.5 498.73 513.88 L 415.27 457.12 Q 407 451.5 415.27 445.88 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 452px; margin-left: 408px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">Validate the generated <br />callback message<br />against <br /><b>OpenAPI specification</b><br /></span></div></div></div></foreignObject><text x="507" y="455" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Validate the generated...</text></switch></g><path d="M 407 451.5 L 274 451.97 Q 264 452 264 460.07 L 264 468.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 473.38 L 260.5 466.38 L 264 468.13 L 267.5 466.38 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 436px; margin-left: 389px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Fail</div></div></div></foreignObject><text x="389" y="439" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Fail</text></switch></g><path d="M 507 349.5 L 507 377.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507 382.38 L 503.5 375.38 L 507 377.13 L 510.5 375.38 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 507 519.5 L 507.36 536.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507.48 541.38 L 503.82 534.46 L 507.36 536.13 L 510.82 534.31 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 519px; margin-left: 531px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Pass</div></div></div></foreignObject><text x="531" y="523" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Pass</text></switch></g><path d="M 146.5 208 L 146.5 207.9 L 154.5 207.84 L 162.5 208.18 L 170.5 208.02 L 178.5 208.14 L 186.5 208 L 186.38 208 L 186.33 212 L 186.45 216 L 186.38 220 L 186.62 224 L 186.5 228 L 186.5 227.8 L 178.5 228.08 L 170.5 227.9 L 162.5 227.93 L 154.5 227.97 L 146.5 228 L 146.63 228 L 146.61 224 L 146.44 220 L 146.6 216 L 146.33 212 L 146.5 208 L 146.5 208 Z Z" fill="none" stroke="none" transform="translate(2,3)" opacity="0.25"/><path d="M 146.5 208 L 146.5 207.9 L 154.5 207.84 L 162.5 208.18 L 170.5 208.02 L 178.5 208.14 L 186.5 208 L 186.38 208 L 186.33 212 L 186.45 216 L 186.38 220 L 186.62 224 L 186.5 228 L 186.5 227.8 L 178.5 228.08 L 170.5 227.9 L 162.5 227.93 L 154.5 227.97 L 146.5 228 L 146.63 228 L 146.61 224 L 146.44 220 L 146.6 216 L 146.33 212 L 146.5 208 L 146.5 208 Z Z" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 218px; margin-left: 148px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Fail</div></div></div></foreignObject><text x="167" y="222" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Fail</text></switch></g><path d="M 458.75 124.75 L 499 99.77 Q 507.5 94.5 516 99.77 L 596.5 149.73 Q 605 155 596.5 160.27 L 516 210.23 Q 507.5 215.5 499 210.23 L 418.5 160.27 Q 410 155 418.5 149.73 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 193px; height: 1px; padding-top: 155px; margin-left: 411px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">Validate fields against<br /><b><i>Additional Rules</i></b><br /></span></div></div></div></foreignObject><text x="508" y="159" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Validate fields against...</text></switch></g><path d="M 507.5 215.5 L 507.07 253.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507.01 258.38 L 503.59 251.34 L 507.07 253.13 L 510.59 251.42 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 221px; margin-left: 529px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Pass</div></div></div></foreignObject><text x="529" y="225" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Pass</text></switch></g><path d="M 605 155 L 682 155 Q 692 155 691.81 164.57 L 691.62 174.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 691.52 179.38 L 688.16 172.31 L 691.62 174.13 L 695.16 172.45 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 146px; margin-left: 624px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Fail</div></div></div></foreignObject><text x="624" y="149" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Fail</text></switch></g><ellipse cx="264" cy="50" rx="60" ry="25" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 50px; margin-left: 205px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Start</div></div></div></foreignObject><text x="264" y="54" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Start</text></switch></g><path d="M 194 156.5 L 222 96.5 L 334 96.5 L 306 156.5 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 127px; margin-left: 195px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Incoming POST /transfers request</div></div></div></foreignObject><text x="264" y="130" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Incoming POST /transfer...</text></switch></g><path d="M 264 75 L 264 90.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 95.38 L 260.5 88.38 L 264 90.13 L 267.5 88.38 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 264 156.5 L 264 169.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 174.88 L 260.5 167.88 L 264 169.63 L 267.5 167.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 264 297 L 264 318.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 323.88 L 260.5 316.88 L 264 318.63 L 267.5 316.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 298px; margin-left: 285px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Pass</div></div></div></foreignObject><text x="285" y="301" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Pass</text></switch></g><path d="M 467.75 641 L 498.94 622.17 Q 507.5 617 516.06 622.17 L 578.44 659.83 Q 587 665 578.44 670.17 L 516.06 707.83 Q 507.5 713 498.94 707.83 L 436.56 670.17 Q 428 665 436.56 659.83 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 157px; height: 1px; padding-top: 665px; margin-left: 429px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">Check if<br /><b>ENABLE_CALLBACKS</b><br />set in config<br /></span></div></div></div></foreignObject><text x="508" y="669" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Check if...</text></switch></g><ellipse cx="264" cy="845" rx="60" ry="25" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 845px; margin-left: 205px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">End</div></div></div></foreignObject><text x="264" y="849" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">End</text></switch></g><path d="M 507.5 713 L 507.5 735.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507.5 740.88 L 504 733.88 L 507.5 735.63 L 511 733.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 714px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Set</div></div></div></foreignObject><text x="491" y="718" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Set</text></switch></g><path d="M 264 385 L 264 395 Q 264 405 274 405 L 346 405 Q 356 405 356 395 L 356 85 Q 356 75 366 75 L 498 75 Q 508 75 507.83 81.57 L 507.66 88.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507.53 93.38 L 504.21 86.29 L 507.66 88.13 L 511.21 86.47 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 194 385 L 222 325 L 334 325 L 306 385 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 355px; margin-left: 195px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Send 202<br />success response</div></div></div></foreignObject><text x="264" y="359" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Send 202...</text></switch></g><path d="M 6 356 L 46 275 L 206 275 L 166 356 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 316px; margin-left: 7px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(0 , 0 , 0)">Send 4XX</span><br style="color: rgb(0 , 0 , 0)" /><span style="color: rgb(0 , 0 , 0)"> error response</span><br style="color: rgb(0 , 0 , 0)" /><span style="color: rgb(0 , 0 , 0)">(</span><span style="color: rgb(0 , 0 , 0) ; white-space: nowrap ; background-color: rgb(255 , 255 , 255)">Schema validation error)</span></div></div></div></foreignObject><text x="106" y="319" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Send 4XX...</text></switch></g><path d="M 607 602.5 L 625.67 542.5 L 777 542.5 L 758.33 602.5 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 573px; margin-left: 608px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font color="#000000">Send<br />Error Callback<br /></font>PUT /transfers/&lt;ID&gt;/error</div></div></div></foreignObject><text x="692" y="576" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Send...</text></switch></g><path d="M 430 802 L 461 742 L 585 742 L 554 802 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 153px; height: 1px; padding-top: 772px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Send <br />Success Callback<br />PUT /transfers/&lt;ID&gt;</div></div></div></foreignObject><text x="508" y="776" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Send...</text></switch></g><rect x="194" y="474.5" width="140" height="45" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 497px; margin-left: 195px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Log error in the server</div></div></div></foreignObject><text x="264" y="501" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Log error in the server</text></switch></g><path d="M 106 356 L 98.16 834 Q 98 844 108 844.09 L 197.63 844.94" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 202.88 844.99 L 195.85 848.42 L 197.63 844.94 L 195.92 841.42 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 264 519.5 L 264 813.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 818.88 L 260.5 811.88 L 264 813.63 L 267.5 811.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 507.5 802 L 507.88 835 Q 508 845 498 845 L 330.37 845" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 325.12 845 L 332.12 841.5 L 330.37 845 L 332.12 848.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 651.75 379.5 L 682.94 360.67 Q 691.5 355.5 700.06 360.67 L 762.44 398.33 Q 771 403.5 762.44 408.67 L 700.06 446.33 Q 691.5 451.5 682.94 446.33 L 620.56 408.67 Q 612 403.5 620.56 398.33 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 157px; height: 1px; padding-top: 404px; margin-left: 613px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="white-space: normal">Check if<br /><b>ENABLE_CALLBACKS</b><br />set in config<br /></span></div></div></div></foreignObject><text x="692" y="407" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Check if...</text></switch></g><path d="M 692 602.5 L 692 835 Q 692 845 682 845 L 330.37 845" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 325.12 845 L 332.12 841.5 L 330.37 845 L 332.12 848.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="631.5" y="180.5" width="120" height="55" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 208px; margin-left: 633px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Log callback in the server</div></div></div></foreignObject><text x="692" y="212" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Log callback in the...</text></switch></g><path d="M 691.5 235.5 L 691.5 349.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 691.5 354.38 L 688 347.38 L 691.5 349.13 L 695 347.38 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 691.5 451.5 L 691.97 536.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 691.99 541.38 L 688.46 534.4 L 691.97 536.13 L 695.46 534.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 455px; margin-left: 677px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Set</div></div></div></foreignObject><text x="677" y="459" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Set</text></switch></g><rect x="437.5" y="542.5" width="140" height="55" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 570px; margin-left: 439px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Log Success Callback in server</div></div></div></foreignObject><text x="508" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Log Success Callback in...</text></switch></g><path d="M 507.5 597.5 L 507.5 610.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 507.5 615.88 L 504 608.88 L 507.5 610.63 L 511 608.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 428 665 L 274 665 Q 264 665 264 675 L 264 813.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 264 818.88 L 260.5 811.88 L 264 813.63 L 267.5 811.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 647px; margin-left: 426px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Not set</div></div></div></foreignObject><text x="426" y="651" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Not set</text></switch></g><path d="M 771 403.5 L 796 403.86 Q 806 404 806 414 L 806 835 Q 806 845 796 845 L 330.37 845" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 325.12 845 L 332.12 841.5 L 330.37 845 L 332.12 848.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 396px; margin-left: 787px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Not set</div></div></div></foreignObject><text x="787" y="399" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Not set</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/audit-ci.jsonc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://github.com/IBM/audit-ci/raw/main/docs/schema.json",
3
+ // audit-ci supports reading JSON, JSONC, and JSON5 config files.
4
+ // Only use one of ["low": true, "moderate": true, "high": true, "critical": true]
5
+ "moderate": true,
6
+ "allowlist": []
7
+ }