@mojaloop/sdk-scheme-adapter 12.0.1 → 12.0.2

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 (251) hide show
  1. package/.circleci/config.yml +619 -0
  2. package/CHANGELOG.md +7 -0
  3. package/CODEOWNERS +2 -0
  4. package/Dockerfile +35 -0
  5. package/LICENSE.md +10 -0
  6. package/PROXY.md +84 -0
  7. package/README.md +228 -0
  8. package/SECURITY.md +18 -0
  9. package/docker/ml-testing-toolkit/secrets/keygen.sh +5 -0
  10. package/docker/ml-testing-toolkit/secrets/privatekey.pem +27 -0
  11. package/docker/ml-testing-toolkit/secrets/publickey.cer +21 -0
  12. package/docker/ml-testing-toolkit/secrets/tls/createSecrets.sh +29 -0
  13. package/docker/ml-testing-toolkit/secrets/tls/hub_client.csr +28 -0
  14. package/docker/ml-testing-toolkit/secrets/tls/hub_client_cacert.pem +32 -0
  15. package/docker/ml-testing-toolkit/secrets/tls/hub_client_cakey.key +51 -0
  16. package/docker/ml-testing-toolkit/secrets/tls/hub_client_key.key +51 -0
  17. package/docker/ml-testing-toolkit/secrets/tls/hub_server.csr +28 -0
  18. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.pem +32 -0
  19. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cacert.srl +1 -0
  20. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cakey.key +51 -0
  21. package/docker/ml-testing-toolkit/secrets/tls/hub_server_cert.pem +33 -0
  22. package/docker/ml-testing-toolkit/secrets/tls/hub_server_key.key +51 -0
  23. package/docker/ml-testing-toolkit/secrets/tls/openssl.conf +17 -0
  24. package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/api_spec.yaml +2450 -0
  25. package/docker/ml-testing-toolkit/spec_files/api_definitions/central_admin_9.3/response_map.json +96 -0
  26. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/api_spec.yaml +4187 -0
  27. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/callback_map.json +542 -0
  28. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/mockRef.json +83 -0
  29. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup.json +125 -0
  30. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +3703 -0
  31. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/callback_map.json +568 -0
  32. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/mockRef.json +83 -0
  33. package/docker/ml-testing-toolkit/spec_files/api_definitions/fspiop_1.1/trigger_templates/transaction_request_followup.json +125 -0
  34. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/api_spec.yaml +983 -0
  35. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/mockRef.json +38 -0
  36. package/docker/ml-testing-toolkit/spec_files/api_definitions/settlements_1.0/response_map.json +34 -0
  37. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/html_template.html +1074 -0
  38. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/pdf_template.html +765 -0
  39. package/docker/ml-testing-toolkit/spec_files/reports/templates/newman/script.js +98 -0
  40. package/docker/ml-testing-toolkit/spec_files/rules_callback/config.json +3 -0
  41. package/docker/ml-testing-toolkit/spec_files/rules_callback/default.json +426 -0
  42. package/docker/ml-testing-toolkit/spec_files/rules_response/config.json +3 -0
  43. package/docker/ml-testing-toolkit/spec_files/rules_response/default.json +1623 -0
  44. package/docker/ml-testing-toolkit/spec_files/rules_response/default_pisp_rules.json +161 -0
  45. package/docker/ml-testing-toolkit/spec_files/rules_validation/config.json +3 -0
  46. package/docker/ml-testing-toolkit/spec_files/rules_validation/default.json +672 -0
  47. package/docker/ml-testing-toolkit/spec_files/system_config.json +62 -0
  48. package/docker/ml-testing-toolkit/spec_files/user_config.json +45 -0
  49. package/docker/wait4/setup_hosts_file.sh +25 -0
  50. package/docker/wait4/wait4.config.js +71 -0
  51. package/docker/wait4/wait4.js +204 -0
  52. package/docker-compose.yml +67 -0
  53. package/docs/Mojaloop - Modusbox Onboarding functionality.pdf +0 -0
  54. package/docs/dfspInboundApi.yaml +1091 -0
  55. package/jest.config.js +4 -1
  56. package/junit.xml +515 -0
  57. package/package.json +9 -8
  58. package/secrets/jwsSigningKey.key +27 -0
  59. package/secrets/jwsVerificationKeys/mojaloop-sdk.pem +9 -0
  60. package/secrets/jwsVerificationKeys/switch.pem +9 -0
  61. package/sequences.puml +99 -0
  62. package/{InboundServer → src/InboundServer}/api.yaml +0 -0
  63. package/src/InboundServer/api_template.yaml +69 -0
  64. package/{InboundServer → src/InboundServer}/handlers.js +0 -0
  65. package/{InboundServer → src/InboundServer}/index.js +0 -0
  66. package/{InboundServer → src/InboundServer}/middlewares.js +0 -0
  67. package/{OAuthTestServer → src/OAuthTestServer}/index.js +0 -0
  68. package/{OAuthTestServer → src/OAuthTestServer}/model.js +0 -0
  69. package/{OutboundServer → src/OutboundServer}/api.yaml +0 -0
  70. package/{OutboundServer → src/OutboundServer}/api_interfaces/index.d.ts +0 -0
  71. package/{OutboundServer → src/OutboundServer}/api_interfaces/openapi.d.ts +0 -0
  72. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkQuoteId.yaml +1 -1
  73. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/bulkTransferId.yaml +1 -1
  74. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/requestToPayTransactionId.yaml +1 -1
  75. package/{OutboundServer → src/OutboundServer}/api_template/components/parameters/transferId.yaml +1 -1
  76. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationCompleted.yaml +0 -0
  77. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationError.yaml +0 -0
  78. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/accountsCreationTimeout.yaml +0 -0
  79. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteBadRequest.yaml +0 -0
  80. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteServerError.yaml +0 -0
  81. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteSuccess.yaml +0 -0
  82. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkQuoteTimeout.yaml +0 -0
  83. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferBadRequest.yaml +0 -0
  84. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferServerError.yaml +0 -0
  85. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferSuccess.yaml +0 -0
  86. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/bulkTransferTimeout.yaml +0 -0
  87. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdError404.yaml +1 -1
  88. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/partiesByIdSuccess.yaml +0 -0
  89. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesPostSuccess.yaml +0 -0
  90. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/quotesServerError.yaml +0 -0
  91. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPaySuccess.yaml +0 -0
  92. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferBadRequest.yaml +0 -0
  93. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/requestToPayTransferSuccess.yaml +0 -0
  94. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersPostSuccess.yaml +0 -0
  95. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/simpleTransfersServerError.yaml +0 -0
  96. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferBadRequest.yaml +0 -0
  97. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferServerError.yaml +0 -0
  98. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferSuccess.yaml +0 -0
  99. package/{OutboundServer → src/OutboundServer}/api_template/components/responses/transferTimeout.yaml +0 -0
  100. package/src/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +18 -0
  101. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsCreationState.yaml +0 -0
  102. package/src/OutboundServer/api_template/components/schemas/accountsRequest.yaml +20 -0
  103. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/accountsResponse.yaml +1 -1
  104. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/async2SyncCurrentState.yaml +0 -0
  105. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteErrorResponse.yaml +0 -0
  106. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteRequest.yaml +2 -2
  107. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteResponse.yaml +1 -1
  108. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatus.yaml +0 -0
  109. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkQuoteStatusResponse.yaml +1 -1
  110. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferErrorResponse.yaml +0 -0
  111. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferRequest.yaml +2 -2
  112. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferResponse.yaml +1 -1
  113. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatus.yaml +0 -0
  114. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/bulkTransferStatusResponse.yaml +1 -1
  115. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorAccountsResponse.yaml +0 -0
  116. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorQuotesResponse.yaml +0 -0
  117. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorResponse.yaml +0 -0
  118. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorSimpleTransfersResponse.yaml +0 -0
  119. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/errorTransferResponse.yaml +0 -0
  120. package/src/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +6 -0
  121. package/src/OutboundServer/api_template/components/schemas/individualQuote.yaml +32 -0
  122. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualQuoteResult.yaml +5 -5
  123. package/src/OutboundServer/api_template/components/schemas/individualTransfer.yaml +32 -0
  124. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferFulfilment.yaml +2 -2
  125. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/individualTransferResult.yaml +6 -6
  126. package/src/OutboundServer/api_template/components/schemas/mojaloopError.yaml +5 -0
  127. package/src/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +2 -0
  128. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/partiesByIdResponse.yaml +1 -1
  129. package/src/OutboundServer/api_template/components/schemas/quote.yaml +3 -0
  130. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/quoteError.yaml +0 -0
  131. package/src/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +13 -0
  132. package/src/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +48 -0
  133. package/src/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +39 -0
  134. package/src/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +41 -0
  135. package/src/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +42 -0
  136. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/requestToPayTransferResponse.yaml +6 -6
  137. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransferServerError.yaml +0 -0
  138. package/src/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +12 -0
  139. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/simpleTransfersPostResponse.yaml +1 -1
  140. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transactionType.yaml +0 -0
  141. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptOTP.yaml +0 -0
  142. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptParty.yaml +0 -0
  143. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferContinuationAcceptQuote.yaml +0 -0
  144. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferError.yaml +0 -0
  145. package/src/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +3 -0
  146. package/src/OutboundServer/api_template/components/schemas/transferParty.yaml +40 -0
  147. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferRequest.yaml +4 -4
  148. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferResponse.yaml +6 -6
  149. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatus.yaml +0 -0
  150. package/{OutboundServer → src/OutboundServer}/api_template/components/schemas/transferStatusResponse.yaml +1 -1
  151. package/{OutboundServer → src/OutboundServer}/api_template/health.yaml +0 -0
  152. package/{OutboundServer → src/OutboundServer}/api_template/openapi.yaml +0 -0
  153. package/{OutboundServer → src/OutboundServer}/api_template/paths/accounts.yaml +0 -0
  154. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes.yaml +0 -0
  155. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkQuotes_bulkQuoteId.yaml +0 -0
  156. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers.yaml +0 -0
  157. package/{OutboundServer → src/OutboundServer}/api_template/paths/bulkTransfers_bulkTransferId.yaml +0 -0
  158. package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID.yaml +2 -2
  159. package/{OutboundServer → src/OutboundServer}/api_template/paths/parties_Type_ID_SubId.yaml +3 -3
  160. package/{OutboundServer → src/OutboundServer}/api_template/paths/quotes.yaml +0 -0
  161. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPay.yaml +0 -0
  162. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer.yaml +0 -0
  163. package/{OutboundServer → src/OutboundServer}/api_template/paths/requestToPayTransfer_requestToPayTransactionId.yaml +0 -0
  164. package/{OutboundServer → src/OutboundServer}/api_template/paths/simpleTransfers.yaml +0 -0
  165. package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers.yaml +0 -0
  166. package/{OutboundServer → src/OutboundServer}/api_template/paths/transfers_transferId.yaml +0 -0
  167. package/{OutboundServer → src/OutboundServer}/handlers.js +0 -0
  168. package/{OutboundServer → src/OutboundServer}/index.js +0 -0
  169. package/{OutboundServer → src/OutboundServer}/middlewares.js +0 -0
  170. package/{TestServer → src/TestServer}/api.yaml +0 -0
  171. package/{TestServer → src/TestServer}/handlers.js +0 -0
  172. package/{TestServer → src/TestServer}/index.js +0 -0
  173. package/{config.js → src/config.js} +0 -0
  174. package/{index.d.ts → src/index.d.ts} +0 -0
  175. package/{index.js → src/index.js} +0 -0
  176. package/{lib → src/lib}/api/index.js +0 -0
  177. package/{lib → src/lib}/cache.js +0 -0
  178. package/{lib → src/lib}/check.js +0 -0
  179. package/{lib → src/lib}/model/AccountsModel.js +0 -0
  180. package/{lib → src/lib}/model/Async2SyncModel.js +0 -0
  181. package/{lib → src/lib}/model/InboundTransfersModel.js +0 -0
  182. package/{lib → src/lib}/model/OutboundBulkQuotesModel.js +0 -0
  183. package/{lib → src/lib}/model/OutboundBulkTransfersModel.js +0 -0
  184. package/{lib → src/lib}/model/OutboundRequestToPayModel.js +0 -0
  185. package/{lib → src/lib}/model/OutboundRequestToPayTransferModel.js +0 -0
  186. package/{lib → src/lib}/model/OutboundTransfersModel.js +0 -0
  187. package/{lib → src/lib}/model/PartiesModel.js +0 -0
  188. package/{lib → src/lib}/model/ProxyModel/MatchRules/Expression.js +0 -0
  189. package/{lib → src/lib}/model/ProxyModel/MatchRules/Headers.js +0 -0
  190. package/{lib → src/lib}/model/ProxyModel/MatchRules/MatchRule.js +0 -0
  191. package/{lib → src/lib}/model/ProxyModel/MatchRules/Path.js +0 -0
  192. package/{lib → src/lib}/model/ProxyModel/MatchRules/Query.js +0 -0
  193. package/{lib → src/lib}/model/ProxyModel/MatchRules/index.js +0 -0
  194. package/{lib → src/lib}/model/ProxyModel/Route.js +0 -0
  195. package/{lib → src/lib}/model/ProxyModel/configSchema.json +0 -0
  196. package/{lib → src/lib}/model/ProxyModel/index.js +0 -0
  197. package/{lib → src/lib}/model/QuotesModel.js +0 -0
  198. package/{lib → src/lib}/model/TransfersModel.js +0 -0
  199. package/{lib → src/lib}/model/common/BackendError.js +0 -0
  200. package/{lib → src/lib}/model/common/PersistentStateMachine.js +0 -0
  201. package/{lib → src/lib}/model/common/index.js +0 -0
  202. package/{lib → src/lib}/model/index.js +0 -0
  203. package/{lib → src/lib}/model/lib/deferredJob.js +0 -0
  204. package/{lib → src/lib}/model/lib/index.js +0 -0
  205. package/{lib → src/lib}/model/lib/requests/backendRequests.js +0 -0
  206. package/{lib → src/lib}/model/lib/requests/common.js +0 -0
  207. package/{lib → src/lib}/model/lib/requests/index.js +0 -0
  208. package/{lib → src/lib}/model/lib/shared.js +0 -0
  209. package/{lib → src/lib}/randomphrase/index.js +0 -0
  210. package/{lib → src/lib}/randomphrase/words.json +0 -0
  211. package/{lib → src/lib}/router.js +0 -0
  212. package/{lib → src/lib}/validate.js +0 -0
  213. package/test/integration/lib/cache.test.js +3 -3
  214. package/test/unit/InboundServer.test.js +4 -4
  215. package/test/unit/TestServer.test.js +5 -5
  216. package/test/unit/api/utils.js +5 -5
  217. package/test/unit/config.test.js +9 -9
  218. package/test/unit/inboundApi/handlers.test.js +6 -6
  219. package/test/unit/index.test.js +1 -1
  220. package/test/unit/lib/cache.test.js +1 -1
  221. package/test/unit/lib/model/AccountsModel.test.js +2 -2
  222. package/test/unit/lib/model/InboundTransfersModel.test.js +5 -5
  223. package/test/unit/lib/model/OutboundBulkQuotesModel.test.js +2 -2
  224. package/test/unit/lib/model/OutboundBulkTransfersModel.test.js +2 -2
  225. package/test/unit/lib/model/OutboundRequestToPayModel.test.js +3 -3
  226. package/test/unit/lib/model/OutboundRequestToPayTransferModel.test.js +2 -2
  227. package/test/unit/lib/model/OutboundTransfersModel.test.js +3 -3
  228. package/test/unit/lib/model/PartiesModel.test.js +28 -28
  229. package/test/unit/lib/model/QuotesModel.test.js +31 -31
  230. package/test/unit/lib/model/TransfersModel.test.js +3 -3
  231. package/test/unit/lib/model/common/PersistentStateMachine.test.js +13 -13
  232. package/test/unit/lib/model/mockedLibRequests.js +1 -1
  233. package/test/unit/outboundApi/handlers.test.js +3 -3
  234. package/.eslintignore +0 -2
  235. package/InboundServer/api_template.yaml +0 -69
  236. package/OutboundServer/api_template/components/schemas/accountCreationStatus.yaml +0 -18
  237. package/OutboundServer/api_template/components/schemas/accountsRequest.yaml +0 -20
  238. package/OutboundServer/api_template/components/schemas/extensionListEmptiable.yaml +0 -6
  239. package/OutboundServer/api_template/components/schemas/individualQuote.yaml +0 -32
  240. package/OutboundServer/api_template/components/schemas/individualTransfer.yaml +0 -32
  241. package/OutboundServer/api_template/components/schemas/mojaloopError.yaml +0 -5
  242. package/OutboundServer/api_template/components/schemas/mojaloopTransactionRequestState.yaml +0 -2
  243. package/OutboundServer/api_template/components/schemas/quote.yaml +0 -3
  244. package/OutboundServer/api_template/components/schemas/quotesPostRequest.yaml +0 -13
  245. package/OutboundServer/api_template/components/schemas/quotesPostResponse.yaml +0 -48
  246. package/OutboundServer/api_template/components/schemas/requestToPayRequest.yaml +0 -39
  247. package/OutboundServer/api_template/components/schemas/requestToPayResponse.yaml +0 -41
  248. package/OutboundServer/api_template/components/schemas/requestToPayTransferRequest.yaml +0 -42
  249. package/OutboundServer/api_template/components/schemas/simpleTransfersPostRequest.yaml +0 -12
  250. package/OutboundServer/api_template/components/schemas/transferFulfilment.yaml +0 -3
  251. package/OutboundServer/api_template/components/schemas/transferParty.yaml +0 -40
@@ -0,0 +1,619 @@
1
+ # CircleCI v2.1 Config
2
+ version: 2.1
3
+
4
+ ##
5
+ # orbs
6
+ #
7
+ # Orbs used in this pipeline
8
+ ###
9
+ orbs:
10
+ anchore: anchore/anchore-engine@1.6.0
11
+ slack: circleci/slack@3.4.2
12
+ pr-tools: mojaloop/pr-tools@0.1.10
13
+ github-release: h-matsuo/github-release@0.1.3
14
+
15
+
16
+ ##
17
+ # defaults
18
+ #
19
+ # YAML defaults templates, in alphabetical order
20
+ ##
21
+ defaults_Dependencies: &defaults_Dependencies |
22
+ apk --no-cache add git
23
+ apk --no-cache add ca-certificates
24
+ apk --no-cache add curl
25
+ apk --no-cache add openssh-client
26
+ apk --no-cache add bash
27
+ apk add --no-cache -t build-dependencies make gcc g++ python3 libtool autoconf automake
28
+ npm config set unsafe-perm true
29
+ npm install -g node-gyp
30
+
31
+ defaults_awsCliDependencies: &defaults_awsCliDependencies |
32
+ apk upgrade --no-cache
33
+ apk --no-cache add \
34
+ python3 \
35
+ py3-pip \
36
+ groff \
37
+ less \
38
+ mailcap
39
+ pip3 install --upgrade pip awscli==1.14.5 s3cmd==2.0.1 python-magic
40
+
41
+ defaults_license_scanner: &defaults_license_scanner
42
+ name: Install and set up license-scanner
43
+ command: |
44
+ git clone https://github.com/mojaloop/license-scanner /tmp/license-scanner
45
+ cd /tmp/license-scanner && make build default-files set-up
46
+
47
+ defaults_npm_auth: &defaults_npm_auth
48
+ name: Update NPM registry auth token
49
+ command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
50
+
51
+ defaults_npm_publish_release: &defaults_npm_publish_release
52
+ name: Publish NPM $RELEASE_TAG artifact
53
+ command: |
54
+ source $BASH_ENV
55
+ echo "Publishing tag $RELEASE_TAG"
56
+ npm publish --tag $RELEASE_TAG --access public
57
+
58
+ ##
59
+ # Executors
60
+ #
61
+ # CircleCI Executors
62
+ ##
63
+ executors:
64
+ default-docker:
65
+ working_directory: /home/circleci/project
66
+ docker:
67
+ - image: node:16-alpine
68
+
69
+ default-machine:
70
+ machine:
71
+ image: ubuntu-2004:202010-01
72
+
73
+ ##
74
+ # Jobs
75
+ #
76
+ # A map of CircleCI jobs
77
+ ##
78
+ jobs:
79
+ setup:
80
+ executor: default-docker
81
+ steps:
82
+ - run:
83
+ name: Install general dependencies
84
+ command: *defaults_Dependencies
85
+ - checkout
86
+ - run:
87
+ name: Access npm folder as root
88
+ command: cd $(npm root -g)/npm
89
+ - run:
90
+ name: Update NPM install (using `npm ci`)
91
+ command: npm ci
92
+ - run:
93
+ name: Delete build dependencies
94
+ command: apk del build-dependencies
95
+ - save_cache:
96
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
97
+ paths:
98
+ - node_modules
99
+
100
+ test-unit:
101
+ executor: default-docker
102
+ steps:
103
+ - run:
104
+ name: Install general dependencies
105
+ command: *defaults_Dependencies
106
+ - checkout
107
+ - restore_cache:
108
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
109
+ - run:
110
+ name: Execute unit tests
111
+ command: npm run test
112
+ - store_test_results:
113
+ path: /home/circleci/project/
114
+ - store_artifacts:
115
+ path: /home/circleci/project/junit.xml
116
+
117
+ test-integration:
118
+ executor: default-machine
119
+ steps:
120
+ - checkout
121
+ - run:
122
+ name: Install Docker Compose
123
+ command: |
124
+ curl -L https://github.com/docker/compose/releases/download/1.28.2/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
125
+ chmod +x ~/docker-compose
126
+ sudo mv ~/docker-compose /usr/local/bin/docker-compose
127
+ - restore_cache:
128
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
129
+ - run:
130
+ name: Set up NVM
131
+ command: |
132
+ echo ${NVM_DIR}
133
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
134
+ nvm install v16.14
135
+ nvm alias default v16.14
136
+ - run:
137
+ name: Start docker-compose
138
+ command: |
139
+ docker-compose pull
140
+ docker-compose build
141
+ docker-compose up -d
142
+ - run:
143
+ name: Execute Wait4 script
144
+ command: |
145
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
146
+ chmod +x ./docker/wait4/wait4.js
147
+ # chmod +x ./docker/wait4/setup_hosts_file.sh
148
+ # sh -c "./docker/wait4/setup_hosts_file.sh"
149
+ sh -c "./docker/wait4/wait4.js cicd-integration-tests"
150
+ - run:
151
+ name: Execute integration tests
152
+ command: |
153
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
154
+ npm ci
155
+ npm run test:int
156
+ - run:
157
+ name: prepare test/results
158
+ command: |
159
+ mkdir -p test/results
160
+ mv junit.xml test/results
161
+ - store_artifacts:
162
+ path: ./test/results
163
+ - store_test_results:
164
+ path: ./test/results
165
+
166
+ validate-openapi:
167
+ executor: default-docker
168
+ steps:
169
+ - run:
170
+ name: Install general dependencies
171
+ command: *defaults_Dependencies
172
+ - checkout
173
+ - restore_cache:
174
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
175
+ - run:
176
+ name: Execute unit tests
177
+ command: npm run build:openapi && npm run validate:api
178
+
179
+ lint:
180
+ executor: default-docker
181
+ steps:
182
+ - run:
183
+ name: Install general dependencies
184
+ command: *defaults_Dependencies
185
+ - checkout
186
+ - restore_cache:
187
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
188
+ - run:
189
+ name: Create dir for lint results
190
+ command: mkdir -p /lintresults
191
+ - run:
192
+ name: Execute linting
193
+ command: (npm run lint > /lintresults/results.txt)
194
+ - store_artifacts:
195
+ path: /lintresults
196
+
197
+ vulnerability-check:
198
+ executor: default-docker
199
+ steps:
200
+ - run:
201
+ name: Install general dependencies
202
+ command: *defaults_Dependencies
203
+ - checkout
204
+ - restore_cache:
205
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
206
+ - run:
207
+ name: Create dir for test results
208
+ command: mkdir -p ./audit/results
209
+ - run:
210
+ name: Check for new npm vulnerabilities
211
+ command: npm run audit:check --silent -- --json > ./audit/results/auditResults.json
212
+ - store_artifacts:
213
+ path: ./audit/results
214
+
215
+ audit-licenses:
216
+ executor: default-docker
217
+ steps:
218
+ - run:
219
+ name: Install general dependencies
220
+ command: *defaults_Dependencies
221
+ - checkout
222
+ - run:
223
+ <<: *defaults_license_scanner
224
+ - restore_cache:
225
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
226
+ - run:
227
+ name: Prune non-production packages before running license-scanner
228
+ command: npm prune --production
229
+ - run:
230
+ name: Run the license-scanner
231
+ command: cd /tmp/license-scanner && pathToRepo=$CIRCLE_WORKING_DIRECTORY make run
232
+ - store_artifacts:
233
+ path: /tmp/license-scanner/results
234
+
235
+ build-local:
236
+ executor: default-machine
237
+ steps:
238
+ - checkout
239
+ - run:
240
+ name: Build Docker local image for testing
241
+ command: |
242
+ echo "Building Docker image: local"
243
+ docker build -t mojaloop/$CIRCLE_PROJECT_REPONAME:local .
244
+ - run:
245
+ name: Save docker image to workspace
246
+ command: docker save -o /tmp/docker-image.tar mojaloop/$CIRCLE_PROJECT_REPONAME:local
247
+ - persist_to_workspace:
248
+ root: /tmp
249
+ paths:
250
+ - ./docker-image.tar
251
+
252
+ license-scan:
253
+ executor: default-machine
254
+ steps:
255
+ - checkout
256
+ - attach_workspace:
257
+ at: /tmp
258
+ - run:
259
+ name: Load the pre-built docker image from workspace
260
+ command: docker load -i /tmp/docker-image.tar
261
+ - run:
262
+ <<: *defaults_license_scanner
263
+ - run:
264
+ name: Run the license-scanner
265
+ command: cd /tmp/license-scanner && mode=docker dockerImages=mojaloop/$CIRCLE_PROJECT_REPONAME:local make run
266
+ - store_artifacts:
267
+ path: /tmp/license-scanner/results
268
+
269
+ image-scan:
270
+ executor: anchore/anchore_engine
271
+ steps:
272
+ - setup_remote_docker
273
+ - checkout
274
+ - run:
275
+ name: Install AWS CLI dependencies
276
+ command: *defaults_awsCliDependencies
277
+ - attach_workspace:
278
+ at: /tmp
279
+ - run:
280
+ name: Load the pre-built docker image from workspace
281
+ command: docker load -i /tmp/docker-image.tar
282
+ - anchore/analyze_local_image:
283
+ dockerfile_path: ./Dockerfile
284
+ image_name: mojaloop/${CIRCLE_PROJECT_REPONAME}:local
285
+ # Anchore bug: if policy_failure is `true`, reports don't get written - we manually check for failures below
286
+ policy_failure: false
287
+ timeout: '500'
288
+ - run:
289
+ name: Evaluate Failures.
290
+ command: |
291
+ if [[ ! $(which jq) ]]; then
292
+ (set +o pipefail; apk add jq || apt-get install -y jq || yum install -y jq)
293
+ fi
294
+ if [[ $(ls anchore-reports/*content-os*.json 2> /dev/null) ]]; then
295
+ printf "\n%s\n" "The following OS packages are installed:"
296
+ jq '[.content | sort_by(.package) | .[] | {package: .package, version: .version}]' anchore-reports/*content-os*.json
297
+ fi
298
+ if [[ $(ls anchore-reports/*vuln*.json 2> /dev/null) ]]; then
299
+ printf "\n%s\n" "The following vulnerabilities were found:"
300
+ jq '[.vulnerabilities | group_by(.package) | .[] | {package: .[0].package, vuln: [.[].vuln]}]' anchore-reports/*vuln*.json
301
+ fi
302
+ # - run:
303
+ # name: Upload Anchore reports to s3
304
+ # command: |
305
+ # aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/${CIRCLE_PROJECT_REPONAME}/ --recursive
306
+ # aws s3 rm ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive --exclude "*" --include "${CIRCLE_PROJECT_REPONAME}*"
307
+ # aws s3 cp anchore-reports ${AWS_S3_DIR_ANCHORE_REPORTS}/latest/ --recursive
308
+
309
+ # TODO: Enable this when we want to increase the strictness of our security policies
310
+ # failCount=$(cat anchore-reports/*policy*.json | grep 'fail' | wc -l)
311
+ # echo "FailCount is: ${failCount}"
312
+ # if [ $failCount -gt 0 ]; then
313
+ # printf "Failed with a policy failure count of: ${failCount}"
314
+ # exit 1
315
+ # fi
316
+ - store_artifacts:
317
+ path: anchore-reports
318
+
319
+ release:
320
+ executor: default-docker
321
+ steps:
322
+ - run:
323
+ name: Install general dependencies
324
+ command: *defaults_Dependencies
325
+ - checkout
326
+ - restore_cache:
327
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
328
+ - run:
329
+ name: Configure git
330
+ command: |
331
+ git config user.email ${GIT_CI_EMAIL}
332
+ git config user.name ${GIT_CI_USER}
333
+ git checkout ${CIRCLE_BRANCH}
334
+ - run:
335
+ name: Configure ssh
336
+ command: |
337
+ mkdir -p ~/.ssh
338
+ ssh-keyscan -p 443 ssh.github.com >> ~/.ssh/known_hosts
339
+ ssh-keyscan github.com >> ~/.ssh/known_hosts
340
+ - run:
341
+ name: Generate changelog and bump package version
342
+ command: npm run release
343
+ - run:
344
+ name: Push the release
345
+ command: git push --follow-tags origin ${CIRCLE_BRANCH}
346
+
347
+ github-release:
348
+ executor: default-machine
349
+ steps:
350
+ - run:
351
+ name: Install git
352
+ command: |
353
+ sudo apt-get update && sudo apt-get install -y git
354
+ - checkout
355
+ - run:
356
+ name: Fetch updated release branch
357
+ command: |
358
+ git config user.email ${GIT_CI_EMAIL}
359
+ git config user.name ${GIT_CI_USER}
360
+ git fetch origin
361
+ git checkout origin/${CIRCLE_BRANCH}
362
+ - run:
363
+ # Note: this is rather imperfect, but will do for now
364
+ name: Format the changelog into the github release body and get release tag
365
+ command: |
366
+ git diff --no-indent-heuristic master~1 HEAD CHANGELOG.md | sed -n '/^+[^+]/ s/^+//p' > /tmp/changes
367
+ echo 'export RELEASE_CHANGES=`cat /tmp/changes`' >> $BASH_ENV
368
+ echo 'export RELEASE_TAG=`cat package-lock.json | jq -r .version`' >> $BASH_ENV
369
+ - run:
370
+ name: check the release changes
371
+ command: |
372
+ echo "Changes are: ${RELEASE_CHANGES}"
373
+ - github-release/create:
374
+ github-token-variable: ${GITHUB_TOKEN}
375
+ tag: v${RELEASE_TAG}
376
+ title: v${RELEASE_TAG} Release
377
+ description: ${RELEASE_CHANGES}
378
+ file-path: CHANGELOG.md
379
+ - slack/status:
380
+ webhook: "$SLACK_WEBHOOK_ANNOUNCEMENT"
381
+ success_message: '*"${CIRCLE_PROJECT_REPONAME}"* - Release \`"v${RELEASE_TAG}"\` \nhttps://github.com/mojaloop/"${CIRCLE_PROJECT_REPONAME}"/releases/tag/"v${RELEASE_TAG}"'
382
+
383
+ publish-docker:
384
+ executor: default-machine
385
+ steps:
386
+ - checkout
387
+ - attach_workspace:
388
+ at: /tmp
389
+ - run:
390
+ name: Load the pre-built docker image from workspace
391
+ command: docker load -i /tmp/docker-image.tar
392
+ - run:
393
+ name: Login to Docker Hub
394
+ command: docker login -u $DOCKER_USER -p $DOCKER_PASS
395
+ - run:
396
+ name: Re-tag pre built image
397
+ command: |
398
+ docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest
399
+ docker tag $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:local $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG
400
+ - run:
401
+ name: Publish Docker image $CIRCLE_TAG & Latest tag to Docker Hub
402
+ command: |
403
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG"
404
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:$CIRCLE_TAG
405
+ echo "Publishing $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest"
406
+ docker push $DOCKER_ORG/$CIRCLE_PROJECT_REPONAME:latest
407
+
408
+ publish-npm:
409
+ executor: default-docker
410
+ steps:
411
+ - checkout
412
+ - run:
413
+ name: Install general dependencies
414
+ command: *defaults_Dependencies
415
+ - restore_cache:
416
+ key: dependency-cache-v3-{{ checksum "package-lock.json" }}
417
+ - run:
418
+ name: setup environment vars for LATEST release
419
+ command: |
420
+ echo 'export RELEASE_TAG=$RELEASE_TAG_PROD' >> $BASH_ENV
421
+ - run:
422
+ <<: *defaults_npm_auth
423
+ - run:
424
+ <<: *defaults_npm_publish_release
425
+ ##
426
+ # Workflows
427
+ #
428
+ # CircleCI Workflow config
429
+ ##
430
+ workflows:
431
+ version: 2
432
+ build_and_test:
433
+ jobs:
434
+ - pr-tools/pr-title-check:
435
+ context: org-global
436
+ - setup:
437
+ context: org-global
438
+ filters:
439
+ tags:
440
+ only: /.*/
441
+ branches:
442
+ ignore:
443
+ - /feature*/
444
+ - /bugfix*/
445
+
446
+ - test-unit:
447
+ context: org-global
448
+ requires:
449
+ - setup
450
+ filters:
451
+ tags:
452
+ only: /.*/
453
+ branches:
454
+ ignore:
455
+ - /feature*/
456
+ - /bugfix*/
457
+
458
+ - validate-openapi:
459
+ context: org-global
460
+ requires:
461
+ - setup
462
+ filters:
463
+ tags:
464
+ only: /.*/
465
+ branches:
466
+ ignore:
467
+ - /feature*/
468
+ - /bugfix*/
469
+
470
+ - lint:
471
+ context: org-global
472
+ requires:
473
+ - setup
474
+ filters:
475
+ tags:
476
+ only: /.*/
477
+ branches:
478
+ ignore:
479
+ - /feature*/
480
+ - /bugfix*/
481
+
482
+ - test-integration:
483
+ context: org-global
484
+ requires:
485
+ - setup
486
+ filters:
487
+ tags:
488
+ only: /.*/
489
+ branches:
490
+ ignore:
491
+ - /feature*/
492
+ - /bugfix*/
493
+
494
+ - vulnerability-check:
495
+ context: org-global
496
+ requires:
497
+ - setup
498
+ filters:
499
+ tags:
500
+ only: /.*/
501
+ branches:
502
+ ignore:
503
+ - /feature*/
504
+ - /bugfix*/
505
+ - audit-licenses:
506
+ context: org-global
507
+ requires:
508
+ - setup
509
+ filters:
510
+ tags:
511
+ only: /.*/
512
+ branches:
513
+ ignore:
514
+ - /feature*/
515
+ - /bugfix*/
516
+
517
+ - build-local:
518
+ context: org-global
519
+ requires:
520
+ - test-integration
521
+ - validate-openapi
522
+ - test-unit
523
+ filters:
524
+ tags:
525
+ only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/
526
+ branches:
527
+ ignore:
528
+ - /feature*/
529
+ - /bugfix*/
530
+
531
+ - image-scan:
532
+ context: org-global
533
+ requires:
534
+ - build-local
535
+ filters:
536
+ tags:
537
+ only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/
538
+ branches:
539
+ ignore:
540
+ - /feature*/
541
+ - /bugfix*/
542
+
543
+ - license-scan:
544
+ context: org-global
545
+ requires:
546
+ - build-local
547
+ filters:
548
+ tags:
549
+ only: /v[0-9]+(\.[0-9]+)*(\-snapshot)?/
550
+ branches:
551
+ ignore:
552
+ - /feature*/
553
+ - /bugfix*/
554
+
555
+ # New commits to master release automatically
556
+ - release:
557
+ context: org-global
558
+ requires:
559
+ - build-local
560
+ - pr-tools/pr-title-check
561
+ - validate-openapi
562
+ - test-unit
563
+ - vulnerability-check
564
+ - audit-licenses
565
+ - test-integration
566
+ - license-scan
567
+ - image-scan
568
+ filters:
569
+ branches:
570
+ only:
571
+ - master
572
+ - /release\/v.*/
573
+
574
+ - github-release:
575
+ context: org-global
576
+ requires:
577
+ - release
578
+ filters:
579
+ branches:
580
+ only:
581
+ - master
582
+ - /release\/v.*/
583
+
584
+ - publish-docker:
585
+ context: org-global
586
+ requires:
587
+ - build-local
588
+ - pr-tools/pr-title-check
589
+ - validate-openapi
590
+ - test-unit
591
+ - vulnerability-check
592
+ - audit-licenses
593
+ - test-integration
594
+ - license-scan
595
+ - image-scan
596
+ filters:
597
+ tags:
598
+ only: /.*/
599
+ branches:
600
+ ignore:
601
+ - /.*/
602
+
603
+ - publish-npm:
604
+ context: org-global
605
+ requires:
606
+ - pr-tools/pr-title-check
607
+ - validate-openapi
608
+ - test-unit
609
+ - vulnerability-check
610
+ - audit-licenses
611
+ - test-integration
612
+ - license-scan
613
+ - image-scan
614
+ filters:
615
+ tags:
616
+ only: /.*/
617
+ branches:
618
+ ignore:
619
+ - /.*/
package/CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
1
  # Changelog: [mojaloop/thirdparty-api-svc](https://github.com/mojaloop/thirdparty-api-svc)
2
+ ### [12.0.2](https://github.com/mojaloop/sdk-scheme-adapter/compare/v12.0.1...v12.0.2) (2022-04-19)
3
+
4
+
5
+ ### Chore
6
+
7
+ * move files out of src/ ([#300](https://github.com/mojaloop/sdk-scheme-adapter/issues/300)) ([b80f943](https://github.com/mojaloop/sdk-scheme-adapter/commit/b80f943760a2bfc09415c64fd31faf84782a523e))
8
+
2
9
  ### [12.0.1](https://github.com/mojaloop/sdk-scheme-adapter/compare/v12.0.0...v12.0.1) (2022-04-19)
3
10
 
4
11
 
package/CODEOWNERS ADDED
@@ -0,0 +1,2 @@
1
+ * james.bush@modusbox.com
2
+ * yevhen.kyriukha@modusbox.com
package/Dockerfile ADDED
@@ -0,0 +1,35 @@
1
+ FROM node:16-alpine as builder
2
+
3
+ RUN apk add --no-cache git python3 build-base
4
+
5
+ EXPOSE 3000
6
+
7
+ WORKDIR /src
8
+
9
+ # This is super-ugly, but it means we don't have to re-run npm install every time any of the source
10
+ # files change- only when any dependencies change- which is a superior developer experience when
11
+ # relying on docker-compose.
12
+ COPY ./package.json .
13
+ COPY ./package-lock.json .
14
+ RUN npm ci --only=production
15
+ FROM node:16-alpine
16
+
17
+ ARG BUILD_DATE
18
+ ARG VCS_URL
19
+ ARG VCS_REF
20
+ ARG VERSION
21
+
22
+ # See http://label-schema.org/rc1/ for label schema info
23
+ LABEL org.label-schema.schema-version="1.0"
24
+ LABEL org.label-schema.name="sdk-scheme-adapter"
25
+ LABEL org.label-schema.build-date=$BUILD_DATE
26
+ LABEL org.label-schema.vcs-url=$VCS_URL
27
+ LABEL org.label-schema.vcs-ref=$VCS_REF
28
+ LABEL org.label-schema.url="https://mojaloop.io/"
29
+ LABEL org.label-schema.version=$VERSION
30
+
31
+ COPY --from=builder /src/ /src
32
+ COPY ./src ./src
33
+ COPY ./secrets /
34
+
35
+ CMD ["node", "src/index.js"]
package/LICENSE.md ADDED
@@ -0,0 +1,10 @@
1
+ # LICENSE
2
+
3
+ Copyright © 2017 Bill & Melinda Gates Foundation
4
+
5
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0
6
+ (the "License") and you may not use these files except in compliance with the [License](http://www.apache.org/licenses/LICENSE-2.0). You may obtain a copy of the License at
7
+
8
+ [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
9
+
10
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the [License](http://www.apache.org/licenses/LICENSE-2.0).