ml-testing-toolkit 18.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/.dockerignore +10 -0
  2. package/.grype.yaml +16 -0
  3. package/.ncurc.yaml +9 -0
  4. package/.nvmrc +1 -0
  5. package/.versionrc.js +16 -0
  6. package/CHANGELOG.md +504 -0
  7. package/CODEOWNERS +30 -0
  8. package/Dockerfile +42 -0
  9. package/Dockerfile-newman +13 -0
  10. package/LICENSE.md +9 -0
  11. package/README.md +119 -0
  12. package/assets/diagrams/architectural/architectural-diagram.svg +3 -0
  13. package/assets/diagrams/flow/flow-diagram.svg +3 -0
  14. package/assets/images/Sample-Response-Failure.png +0 -0
  15. package/assets/images/Screenshot 2020-04-16 at 22.58.04.png +0 -0
  16. package/assets/images/TLS-Enabled-on-Environment.png +0 -0
  17. package/assets/images/adapter-mutual-tls-enabled.png +0 -0
  18. package/assets/images/add-additional-input-values.png +0 -0
  19. package/assets/images/add-condition-button.png +0 -0
  20. package/assets/images/add-new-assertion.png +0 -0
  21. package/assets/images/add-new-input-value.png +0 -0
  22. package/assets/images/add-new-input-variable.png +0 -0
  23. package/assets/images/additional-transfers.png +0 -0
  24. package/assets/images/api-provisioning-add-new-api-confirmation.png +0 -0
  25. package/assets/images/api-provisioning-file-input-window.png +0 -0
  26. package/assets/images/api-provisioning-list-apis-view.png +0 -0
  27. package/assets/images/api-provisioning-menu-item.png +0 -0
  28. package/assets/images/apply_and_restart.jpg +0 -0
  29. package/assets/images/assess-request-or-response.png +0 -0
  30. package/assets/images/assess-response-equation-save.png +0 -0
  31. package/assets/images/assess-response-equation.png +0 -0
  32. package/assets/images/assess-response-status.png +0 -0
  33. package/assets/images/building-new-rules-file.png +0 -0
  34. package/assets/images/callback-rules-screen.png +0 -0
  35. package/assets/images/configurable-parameter-assertion.png +0 -0
  36. package/assets/images/configurable-parameter-currency.png +0 -0
  37. package/assets/images/configurable-parameter.png +0 -0
  38. package/assets/images/connection-manager-ui-opening.png +0 -0
  39. package/assets/images/create-inbound-user-simulator.png +0 -0
  40. package/assets/images/creating-new-rule-file.png +0 -0
  41. package/assets/images/dfsp-client-cacert.png +0 -0
  42. package/assets/images/dfsp-client-submit.png +0 -0
  43. package/assets/images/dfsp-client.png +0 -0
  44. package/assets/images/dfsp-p2p-happy-path.png +0 -0
  45. package/assets/images/dfsp-server-cacert.png +0 -0
  46. package/assets/images/dfsp-server-cert.png +0 -0
  47. package/assets/images/download-report.png +0 -0
  48. package/assets/images/drive_have_not_been_shared.jpg +0 -0
  49. package/assets/images/event-response-options.png +0 -0
  50. package/assets/images/expand-monitoring-messages.png +0 -0
  51. package/assets/images/fixed-response-sample.png +0 -0
  52. package/assets/images/header-selection.png +0 -0
  53. package/assets/images/heap_error_windows.jpg +0 -0
  54. package/assets/images/hosted-mode-docker-compose-intro.png +0 -0
  55. package/assets/images/hub-client-cert.png +0 -0
  56. package/assets/images/import-template.png +0 -0
  57. package/assets/images/inbound-requests-environment.png +0 -0
  58. package/assets/images/inbound-requests-scripts.png +0 -0
  59. package/assets/images/jws-certificate-submit.png +0 -0
  60. package/assets/images/jws-certificate.png +0 -0
  61. package/assets/images/jws-certs-keys.png +0 -0
  62. package/assets/images/jws-hub-certs-keys.png +0 -0
  63. package/assets/images/local-enable-jws-publickey.png +0 -0
  64. package/assets/images/local-mutual-tls-enabled.png +0 -0
  65. package/assets/images/local_drives_to_be_available.jpg +0 -0
  66. package/assets/images/mcm-environment-opening.png +0 -0
  67. package/assets/images/menu-items.png +0 -0
  68. package/assets/images/mock-response-sample.png +0 -0
  69. package/assets/images/monitoring-initial-state.png +0 -0
  70. package/assets/images/monitoring-messages.png +0 -0
  71. package/assets/images/new-empty-assertion.png +0 -0
  72. package/assets/images/opened-imported-template.png +0 -0
  73. package/assets/images/opening-default-settings.png +0 -0
  74. package/assets/images/opening-sync-response-rules.png +0 -0
  75. package/assets/images/opening-view.png +0 -0
  76. package/assets/images/outbound-display-opening-hub.png +0 -0
  77. package/assets/images/outbound-display-opening.png +0 -0
  78. package/assets/images/override-with-environment-variable.png +0 -0
  79. package/assets/images/populate-with-sample-body.png +0 -0
  80. package/assets/images/resource-selection.png +0 -0
  81. package/assets/images/rule-builder-select-api.png +0 -0
  82. package/assets/images/sample-condition-add-configurable-params.png +0 -0
  83. package/assets/images/sample-condition.png +0 -0
  84. package/assets/images/sample-editor.png +0 -0
  85. package/assets/images/sample-request.png +0 -0
  86. package/assets/images/sample-test-assertion.png +0 -0
  87. package/assets/images/send-transfer.png +0 -0
  88. package/assets/images/sending-single-test-case-1.png +0 -0
  89. package/assets/images/sending-single-test-case-2.png +0 -0
  90. package/assets/images/sending-test-cases.png +0 -0
  91. package/assets/images/server-certificates-submitted.png +0 -0
  92. package/assets/images/simulator-response.png +0 -0
  93. package/assets/images/simulator-scheme-adapter-endpoint.png +0 -0
  94. package/assets/images/summarized-view-of-rule.png +0 -0
  95. package/assets/images/template-window.png +0 -0
  96. package/assets/images/test-case-editor-console-log.png +0 -0
  97. package/assets/images/test-case-editor-environment-state.png +0 -0
  98. package/assets/images/test-case-editor-scripts.png +0 -0
  99. package/assets/images/test-case-editor.png +0 -0
  100. package/assets/images/testcase-definition-download.png +0 -0
  101. package/assets/images/testcase-definition-edit-meta-info.png +0 -0
  102. package/assets/images/testing-toolkit-mojaloop-testing-toolkit-endpoint.png +0 -0
  103. package/assets/images/tls-hub-certs-keys.png +0 -0
  104. package/assets/images/tls-jws-enabled-on-environment.png +0 -0
  105. package/assets/images/updated-sample-body-data.png +0 -0
  106. package/assets/images/using-configurable-parameter.png +0 -0
  107. package/assets/images/validation-rules-screen.png +0 -0
  108. package/assets/images/view-response.png +0 -0
  109. package/audit-ci.jsonc +7 -0
  110. package/connection-manager/docker-compose.yml +55 -0
  111. package/database/docker-compose.yml +16 -0
  112. package/docker/hosted-mode/docker-compose.yaml +107 -0
  113. package/docker/hosted-mode/keycloak/keycloak-realm.json +2298 -0
  114. package/docker/hosted-mode/mongo-init.sh +1 -0
  115. package/docker/hosted-mode-tls/docker-compose.yaml +171 -0
  116. package/docker/hosted-mode-tls/keycloak/keycloak-realm.json +2298 -0
  117. package/docker/hosted-mode-tls/mongo-init.sh +1 -0
  118. package/docker-compose.yml +62 -0
  119. package/documents/Mojaloop-Testing-Toolkit.md +296 -0
  120. package/documents/RULES_ENGINE.md +403 -0
  121. package/documents/User-Guide-API-Provisioning.md +121 -0
  122. package/documents/User-Guide-CLI.md +218 -0
  123. package/documents/User-Guide-Connection-Manager.md +282 -0
  124. package/documents/User-Guide-Frequently-Asked-Questions.md +39 -0
  125. package/documents/User-Guide-Hosted-Mode-Docker-Compose.md +110 -0
  126. package/documents/User-Guide-Installation.md +163 -0
  127. package/documents/User-Guide-Mojaloop-Testing-Toolkit.md +642 -0
  128. package/documents/User-Guide-OAuth-Server-Deployment.md +283 -0
  129. package/documents/User-Guide-Onboarding-DFSP.md +197 -0
  130. package/documents/User-Guide-Onboarding-HUB.md +191 -0
  131. package/documents/User-Guide.md +53 -0
  132. package/examples/collections/dfsp/p2p_failed_tests.json +7161 -0
  133. package/examples/collections/dfsp/p2p_fx_happy_path.json +502 -0
  134. package/examples/collections/dfsp/p2p_happy_path.json +350 -0
  135. package/examples/collections/dfsp/p2p_happy_path_extended.json +6106 -0
  136. package/examples/collections/dfsp/p2p_happy_path_jws.json +511 -0
  137. package/examples/collections/dfsp/p2p_payee_assertions_websocket.json +441 -0
  138. package/examples/collections/dfsp/sample.json +5029 -0
  139. package/examples/collections/dfsp/transaction_request_service.json +240 -0
  140. package/examples/collections/fxp/FXP.json +264 -0
  141. package/examples/collections/fxp/SDK_backend.json +98 -0
  142. package/examples/collections/fxp/SDK_outbound.json +163 -0
  143. package/examples/collections/hub/hub_01_p2p_happy_path/hub_p2p_receive_quote.json +400 -0
  144. package/examples/collections/hub/hub_01_p2p_happy_path/hub_p2p_send_quote.json +395 -0
  145. package/examples/collections/hub/hub_02_block_transfer/hub_block_transfer.json +393 -0
  146. package/examples/collections/hub/hub_03_funds_in_out/hub_funds_in.json +224 -0
  147. package/examples/collections/hub/hub_03_funds_in_out/hub_funds_out.json +780 -0
  148. package/examples/collections/hub/hub_04_settlements/hub_settlements.json +3138 -0
  149. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_payee_abort.json +475 -0
  150. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_payee_invalid_fulfillment.json +370 -0
  151. package/examples/collections/hub/hub_05_transfer_negative_scenarios/hub_transfer_negative_transfer_timeout.json +262 -0
  152. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_authorizations.json +117 -0
  153. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_error_framework.json +591 -0
  154. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_received_state.json +379 -0
  155. package/examples/collections/hub/hub_06_transaction_requests_service/hub_trs_reject_state.json +361 -0
  156. package/examples/collections/hub/hub_07_quoting_service.json +525 -0
  157. package/examples/collections/hub/hub_08_participant_inactive_stop_transfers.json +706 -0
  158. package/examples/collections/hub/hub_09_duplicate_handling_transfers.json +1377 -0
  159. package/examples/collections/hub/hub_10_on_us_transfers.json +245 -0
  160. package/examples/collections/hub/hub_11_accented_and_spl_chars.json +629 -0
  161. package/examples/collections/hub/hub_12_fspiop_version_1.1.json +646 -0
  162. package/examples/collections/hub/hub_13_bulk_transfers.json +1857 -0
  163. package/examples/collections/iso20022/self_referencing_iso20022.json +926 -0
  164. package/examples/collections/provisioning/testingtoolkitdfsp.json +904 -0
  165. package/examples/environments/dfsp_local_environment.json +46 -0
  166. package/examples/environments/hub_local_environment.json +57 -0
  167. package/jest.config.js +17 -0
  168. package/package.json +199 -0
  169. package/sbom-v18.12.4.csv +1553 -0
  170. package/secrets/keygen.sh +5 -0
  171. package/secrets/privatekey.pem +27 -0
  172. package/secrets/publickey.cer +21 -0
  173. package/secrets/tls/01.pem +132 -0
  174. package/secrets/tls/createSecrets.sh +20 -0
  175. package/secrets/tls/hub_client.csr +32 -0
  176. package/secrets/tls/hub_client_cacert.pem +35 -0
  177. package/secrets/tls/hub_client_cakey.pem +52 -0
  178. package/secrets/tls/hub_client_key.key +52 -0
  179. package/secrets/tls/hub_server.csr +31 -0
  180. package/secrets/tls/hub_server_cacert.pem +35 -0
  181. package/secrets/tls/hub_server_cakey.pem +52 -0
  182. package/secrets/tls/hub_server_cert.pem +132 -0
  183. package/secrets/tls/hub_server_key.key +52 -0
  184. package/secrets/tls/index.txt +1 -0
  185. package/secrets/tls/index.txt.attr +1 -0
  186. package/secrets/tls/openssl-client.cnf +36 -0
  187. package/secrets/tls/openssl-clientca.cnf +71 -0
  188. package/secrets/tls/openssl-server.cnf +39 -0
  189. package/secrets/tls/openssl-serverca.cnf +71 -0
  190. package/secrets/tls/serial.txt +1 -0
  191. package/spec_files/api_definitions/als_admin_1.1/api_spec.yaml +804 -0
  192. package/spec_files/api_definitions/central_admin_1.0/api_spec.yaml +1850 -0
  193. package/spec_files/api_definitions/central_admin_1.0/response_map.json +96 -0
  194. package/spec_files/api_definitions/central_admin_old_9.3/api_spec.yaml +2467 -0
  195. package/spec_files/api_definitions/central_admin_old_9.3/response_map.json +96 -0
  196. package/spec_files/api_definitions/fspiop_1.0/api_spec.yaml +4187 -0
  197. package/spec_files/api_definitions/fspiop_1.0/callback_map.json +568 -0
  198. package/spec_files/api_definitions/fspiop_1.0/mockRef.json +79 -0
  199. package/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup.json +126 -0
  200. package/spec_files/api_definitions/fspiop_1.0/trigger_templates/transaction_request_followup_quotes_only.json +97 -0
  201. package/spec_files/api_definitions/fspiop_1.1/api_spec.yaml +3778 -0
  202. package/spec_files/api_definitions/fspiop_1.1/callback_map.json +568 -0
  203. package/spec_files/api_definitions/fspiop_1.1/mockRef.json +79 -0
  204. package/spec_files/api_definitions/fspiop_1.1/trigger_templates/transaction_request_followup.json +125 -0
  205. package/spec_files/api_definitions/fspiop_2.0/api_spec.yaml +4839 -0
  206. package/spec_files/api_definitions/fspiop_2.0/callback_map.json +716 -0
  207. package/spec_files/api_definitions/fspiop_2.0/mockRef.json +79 -0
  208. package/spec_files/api_definitions/fspiop_2.0/trigger_templates/transaction_request_followup.json +125 -0
  209. package/spec_files/api_definitions/fspiop_2.0_iso20022/api_spec.yaml +8331 -0
  210. package/spec_files/api_definitions/fspiop_2.0_iso20022/callback_map.json +508 -0
  211. package/spec_files/api_definitions/fspiop_2.0_iso20022/mockRef.json +66 -0
  212. package/spec_files/api_definitions/fx-api_2.0/api_spec.yaml +1768 -0
  213. package/spec_files/api_definitions/fx-api_2.0/callback_map.json +188 -0
  214. package/spec_files/api_definitions/fx-api_2.0/mockRef.json +83 -0
  215. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml +2612 -0
  216. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/mockRef.json +22 -0
  217. package/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json +35 -0
  218. package/spec_files/api_definitions/mojaloop_simulator_0.1/api_spec.yaml +225 -0
  219. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/api_spec.yaml +1087 -0
  220. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/mockRef.json +75 -0
  221. package/spec_files/api_definitions/mojaloop_simulator_sim_1.4/response_map.json +55 -0
  222. package/spec_files/api_definitions/payment_manager_1.4/api_spec.yaml +1389 -0
  223. package/spec_files/api_definitions/sdk-scheme-adapter-backend-v2_1_0-openapi3-snippets_2.1/api_spec.yaml +2834 -0
  224. package/spec_files/api_definitions/sdk-scheme-adapter-outbound-v2_1_0-openapi3-snippets_2.1/api_spec.yaml +3449 -0
  225. package/spec_files/api_definitions/settlements_1.0/api_spec.yaml +983 -0
  226. package/spec_files/api_definitions/settlements_1.0/mockRef.json +38 -0
  227. package/spec_files/api_definitions/settlements_1.0/response_map.json +34 -0
  228. package/spec_files/api_definitions/settlements_2.0/api_spec.yaml +1001 -0
  229. package/spec_files/api_definitions/settlements_2.0/mockRef.json +38 -0
  230. package/spec_files/api_definitions/settlements_2.0/response_map.json +34 -0
  231. package/spec_files/api_definitions/thirdparty_sdk_outbound_0.1/api_spec.yaml +2139 -0
  232. package/spec_files/reports/templates/newman/html_template.html +1202 -0
  233. package/spec_files/reports/templates/newman/pdf_template.html +790 -0
  234. package/spec_files/reports/templates/testcase_definition/table_view.html +1602 -0
  235. package/spec_files/rules_callback/config.json +3 -0
  236. package/spec_files/rules_callback/default.json +2698 -0
  237. package/spec_files/rules_callback/p2p-limit.json +129 -0
  238. package/spec_files/rules_forward/config.json +3 -0
  239. package/spec_files/rules_forward/default.json +482 -0
  240. package/spec_files/rules_response/config.json +3 -0
  241. package/spec_files/rules_response/default.json +295 -0
  242. package/spec_files/rules_validation/config.json +3 -0
  243. package/spec_files/rules_validation/default.json +1 -0
  244. package/spec_files/rules_validation/p2p-limit.json +55 -0
  245. package/spec_files/system_config.json +175 -0
  246. package/spec_files/user_config.json +109 -0
  247. package/src/index.js +67 -0
  248. package/src/lib/MyEventEmitter.js +54 -0
  249. package/src/lib/api-management.js +143 -0
  250. package/src/lib/api-routes/config.js +83 -0
  251. package/src/lib/api-routes/history.js +139 -0
  252. package/src/lib/api-routes/keycloak.js +54 -0
  253. package/src/lib/api-routes/longpolling.js +70 -0
  254. package/src/lib/api-routes/oauth2.js +149 -0
  255. package/src/lib/api-routes/objectstore.js +53 -0
  256. package/src/lib/api-routes/openapi.js +224 -0
  257. package/src/lib/api-routes/outbound.js +134 -0
  258. package/src/lib/api-routes/reports.js +72 -0
  259. package/src/lib/api-routes/rules.js +356 -0
  260. package/src/lib/api-routes/samples.js +92 -0
  261. package/src/lib/api-routes/server-logs.js +44 -0
  262. package/src/lib/api-routes/settings.js +71 -0
  263. package/src/lib/api-server.js +135 -0
  264. package/src/lib/arrayStore.js +101 -0
  265. package/src/lib/callbackHandler.js +201 -0
  266. package/src/lib/config.js +177 -0
  267. package/src/lib/configuration-providers/mb-connection-manager.js +625 -0
  268. package/src/lib/db/adapters/dbAdapter.js +184 -0
  269. package/src/lib/db/dfspMockUsers.js +64 -0
  270. package/src/lib/db/models/mongoDBWrapper.js +78 -0
  271. package/src/lib/eventListenerClient/inboundEventListener.js +176 -0
  272. package/src/lib/fileAdapter.js +57 -0
  273. package/src/lib/httpAgentStore.js +135 -0
  274. package/src/lib/importExport.js +186 -0
  275. package/src/lib/jws/JwsSigning.js +141 -0
  276. package/src/lib/loadSamples.js +128 -0
  277. package/src/lib/logger.js +20 -0
  278. package/src/lib/longpollingEmitter.js +56 -0
  279. package/src/lib/metrics.js +51 -0
  280. package/src/lib/mocking/custom-functions/generic.js +57 -0
  281. package/src/lib/mocking/middleware-functions/ilpModel.js +238 -0
  282. package/src/lib/mocking/middleware-functions/quotesAssociation.js +75 -0
  283. package/src/lib/mocking/middleware-functions/transactionRequestsService.js +78 -0
  284. package/src/lib/mocking/openApiDefinitionsModel.js +64 -0
  285. package/src/lib/mocking/openApiMockHandler.js +466 -0
  286. package/src/lib/mocking/openApiRulesEngine.js +492 -0
  287. package/src/lib/mocking/openApiVersionTools.js +136 -0
  288. package/src/lib/mocking/transformers/fspiopToISO20022.js +230 -0
  289. package/src/lib/mocking/transformers/index.js +41 -0
  290. package/src/lib/notificationEmitter.js +64 -0
  291. package/src/lib/oauth/KeycloakHelper.js +220 -0
  292. package/src/lib/oauth/LoginService.js +133 -0
  293. package/src/lib/oauth/OAuthHelper.js +181 -0
  294. package/src/lib/oauth/OAuthValidator.js +118 -0
  295. package/src/lib/oauth/Wso2Client.js +64 -0
  296. package/src/lib/objectStore/inMemoryImpl.js +50 -0
  297. package/src/lib/objectStore/objectStoreInterface.js +51 -0
  298. package/src/lib/objectStore.js +122 -0
  299. package/src/lib/report-generator/generator.js +126 -0
  300. package/src/lib/report-generator/helpers.js +154 -0
  301. package/src/lib/requestLogger.js +190 -0
  302. package/src/lib/resources/wso2carbon-publickey.cert +20 -0
  303. package/src/lib/rulesEngine.js +95 -0
  304. package/src/lib/rulesEngineModel.js +463 -0
  305. package/src/lib/scripting-engines/postman-sandbox.js +142 -0
  306. package/src/lib/scripting-engines/vm-javascript-sandbox.js +294 -0
  307. package/src/lib/server-logs/adapters/elastic-search.js +102 -0
  308. package/src/lib/server-logs/adapters/grafana.js +0 -0
  309. package/src/lib/server-logs/index.js +75 -0
  310. package/src/lib/socket-server.js +55 -0
  311. package/src/lib/storageAdapter.js +109 -0
  312. package/src/lib/test-outbound/TestCaseRunner.js +173 -0
  313. package/src/lib/test-outbound/getTracing.js +19 -0
  314. package/src/lib/test-outbound/outbound-initiator.js +1107 -0
  315. package/src/lib/uniqueIdGenerator.js +35 -0
  316. package/src/lib/utils.js +89 -0
  317. package/src/lib/utilsInternal.js +56 -0
  318. package/src/lib/webSocketClient/WebSocketClientManager.js +197 -0
  319. package/src/server.js +218 -0
@@ -0,0 +1,2139 @@
1
+ openapi: 3.0.1
2
+ info:
3
+ title: Mojaloop Thirdparty Outbound SDK
4
+ description: >
5
+ Specification for the Thirdparty Outbound SDK API.
6
+
7
+ This API is a synchronous API which makes integrating with the Mojaloop 3rd
8
+ Party API easier.
9
+
10
+ Please see other documentation on
11
+ https://github.com/mojaloop/thirdparty-sdk for more information.
12
+ license:
13
+ name: Apache 2.0
14
+ version: 0.1.0
15
+ servers:
16
+ - url: 'http://sandbox.mojaloop.io/switch-ttk-backend'
17
+ description: The mock 3p-scheme-adapter server running in the Mojaloop Sandbox
18
+ - url: 'http://localhost:15000'
19
+ description: A locally running TTK instance
20
+ paths:
21
+ /health:
22
+ get:
23
+ tags:
24
+ - health
25
+ responses:
26
+ '200':
27
+ $ref: '#/components/responses/200'
28
+ '400':
29
+ $ref: '#/components/responses/400'
30
+ '401':
31
+ $ref: '#/components/responses/401'
32
+ '403':
33
+ $ref: '#/components/responses/403'
34
+ '404':
35
+ $ref: '#/components/responses/404'
36
+ '405':
37
+ $ref: '#/components/responses/405'
38
+ '406':
39
+ $ref: '#/components/responses/406'
40
+ '501':
41
+ $ref: '#/components/responses/501'
42
+ '503':
43
+ $ref: '#/components/responses/503'
44
+ operationId: HealthGet
45
+ summary: Health check endpoint
46
+ description: >-
47
+ The HTTP request GET /health is used to return the current status of the
48
+ API.
49
+ /metrics:
50
+ get:
51
+ tags:
52
+ - health
53
+ responses:
54
+ '200':
55
+ $ref: '#/components/responses/200'
56
+ '400':
57
+ $ref: '#/components/responses/400'
58
+ '401':
59
+ $ref: '#/components/responses/401'
60
+ '403':
61
+ $ref: '#/components/responses/403'
62
+ '404':
63
+ $ref: '#/components/responses/404'
64
+ '405':
65
+ $ref: '#/components/responses/405'
66
+ '406':
67
+ $ref: '#/components/responses/406'
68
+ '501':
69
+ $ref: '#/components/responses/501'
70
+ '503':
71
+ $ref: '#/components/responses/503'
72
+ operationId: MetricsGet
73
+ summary: Prometheus metrics endpoint
74
+ description: The HTTP request GET /metrics is used to return metrics for the API.
75
+ /thirdpartyTransaction/partyLookup:
76
+ post:
77
+ operationId: ThirdpartyTransactionPartyLookup
78
+ summary: Thirdparty transaction party lookup.
79
+ description: >
80
+ The HTTP request `POST /thirdpartyTransaction/partyLookup` is used to
81
+ lookup information regarding the requested Party, defined by `Type`,
82
+ `ID` and optionally `SubId`.
83
+ tags:
84
+ - thirdpartyRequests
85
+ requestBody:
86
+ description: Thirdparty transaction party lookup body.
87
+ required: true
88
+ content:
89
+ application/json:
90
+ schema:
91
+ $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupRequest'
92
+ example:
93
+ transactionRequestId: b51ec534-ee48-4575-b6a9-ead2955b8069
94
+ payee:
95
+ partyIdType: MSISDN
96
+ partyIdentifier: '16135551212'
97
+ responses:
98
+ '200':
99
+ $ref: '#/components/responses/ThirdpartyTransactionPartyLookupResponse'
100
+ default:
101
+ $ref: '#/components/responses/400'
102
+ '/thirdpartyTransaction/{ID}/initiate':
103
+ post:
104
+ operationId: ThirdpartyTransactionIDInitiate
105
+ summary: Initiates a third party transaction.
106
+ description: >
107
+ The HTTP request `POST /thirdpartyTransaction/{ID}/initiate` is sent to
108
+ the Switch to initiate a third party request transaction.
109
+ tags:
110
+ - thirdpartyRequests
111
+ parameters:
112
+ - $ref: '#/components/parameters/ID'
113
+ requestBody:
114
+ description: Thirdparty transaction initiate request body.
115
+ required: true
116
+ content:
117
+ application/json:
118
+ schema:
119
+ $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateRequest'
120
+ example:
121
+ payee:
122
+ name: Bob bobbington
123
+ partyIdInfo:
124
+ fspId: dfspb
125
+ partyIdType: MSISDN
126
+ partyIdentifier: '16135551212'
127
+ payer:
128
+ partyIdType: THIRD_PARTY_LINK
129
+ partyIdentifier: '16135551212'
130
+ fspId: dfspa
131
+ amountType: RECEIVE
132
+ amount:
133
+ currency: USD
134
+ amount: '123.47'
135
+ transactionType:
136
+ scenario: DEPOSIT
137
+ initiator: PAYER
138
+ initiatorType: CONSUMER
139
+ expiration: '2021-05-24T08:38:08.699-04:00'
140
+ responses:
141
+ '200':
142
+ $ref: '#/components/responses/ThirdpartyTransactionIDInitiateResponse'
143
+ default:
144
+ $ref: '#/components/responses/400'
145
+ '/thirdpartyTransaction/{ID}/approve':
146
+ post:
147
+ operationId: ThirdpartyTransactionIDApprove
148
+ summary: Approve a third party transaction.
149
+ description: >
150
+ The HTTP request `POST /thirdpartyTransaction/{ID}/approve` is used to
151
+ approve a third party transaction .
152
+ tags:
153
+ - thirdpartyRequests
154
+ parameters:
155
+ - $ref: '#/components/parameters/ID'
156
+ requestBody:
157
+ description: >-
158
+ Thirdparty transaction approve request body contains Authorization
159
+ details
160
+ required: true
161
+ content:
162
+ application/json:
163
+ schema:
164
+ $ref: '#/components/schemas/ThirdpartyTransactionIDApproveRequest'
165
+ example:
166
+ authorizationResponse:
167
+ authenticationInfo:
168
+ authentication: U2F
169
+ authenticationValue:
170
+ pinValue: xxxxxxxxxxx
171
+ counter: '1'
172
+ responseType: ENTERED
173
+ responses:
174
+ '200':
175
+ $ref: '#/components/responses/ThirdpartyTransactionIDApproveResponse'
176
+ default:
177
+ $ref: '#/components/responses/400'
178
+ /linking/providers:
179
+ get:
180
+ operationId: GetLinkingProviders
181
+ summary: GetLinkingProviders
182
+ description: >
183
+ The HTTP request `GET /linking/providers` is used to retrieve a list of
184
+ thirdparty enabled DFSP identifiers.
185
+ tags:
186
+ - linking
187
+ responses:
188
+ '200':
189
+ $ref: '#/components/responses/LinkingProvidersResponse'
190
+ default:
191
+ $ref: '#/components/responses/400'
192
+ '/linking/accounts/{fspId}/{userId}':
193
+ get:
194
+ operationId: GetLinkingAccountsByUserId
195
+ summary: GetLinkingAccountsByUserId
196
+ description: >
197
+ The HTTP request `GET /linking/accounts/{fspId}/{userId}` is used to
198
+ retrieve the list of potential accounts available for linking.
199
+ tags:
200
+ - linking
201
+ parameters:
202
+ - name: fspId
203
+ in: path
204
+ required: true
205
+ schema:
206
+ $ref: '#/components/schemas/FspId'
207
+ - name: userId
208
+ in: path
209
+ required: true
210
+ schema:
211
+ $ref: '#/components/schemas/AccountId'
212
+ responses:
213
+ '200':
214
+ $ref: '#/components/responses/AccountsByUserIdResponse'
215
+ default:
216
+ $ref: '#/components/responses/400'
217
+ /linking/request-consent:
218
+ post:
219
+ operationId: PostLinkingRequestConsent
220
+ summary: PostLinkingRequestConsent
221
+ description: >
222
+ The HTTP request `POST /linking/request-consent` is used to by a PISP to
223
+ ask
224
+
225
+ a specific DFSP to start the process of establishing consent between
226
+ three parties.
227
+
228
+
229
+ - The PISP
230
+
231
+ - The DFSP
232
+
233
+ - A user presumed to be a customer of 'The DFSP'
234
+ tags:
235
+ - linking
236
+ requestBody:
237
+ description: Consent requests validate request details
238
+ required: true
239
+ content:
240
+ application/json:
241
+ schema:
242
+ $ref: '#/components/schemas/LinkingRequestConsentPostRequest'
243
+ example:
244
+ consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1
245
+ toParticipantId: dfspa
246
+ accounts:
247
+ - accountNickname: SpeXXXXXXXXnt
248
+ id: dfspa.username.5678
249
+ currency: USD
250
+ actions:
251
+ - accounts.transfer
252
+ userId: username1234
253
+ callbackUri: 'pisp-app://callback'
254
+ responses:
255
+ '200':
256
+ $ref: '#/components/responses/LinkingRequestConsentResponse'
257
+ default:
258
+ $ref: '#/components/responses/400'
259
+ '/linking/request-consent/{ID}/authenticate':
260
+ patch:
261
+ operationId: PatchLinkingRequestConsentIDAuthenticate
262
+ summary: 'Outbound PATCH /linking/request-consent/{ID}/authenticate endpoint'
263
+ description: >
264
+ Used in the authentication phase of account linking.
265
+
266
+ Used by the PISP to pass an Auth token on behalf of the user to the DFSP
267
+ to establish a chain of trust.
268
+ tags:
269
+ - linking
270
+ parameters:
271
+ - name: ID
272
+ in: path
273
+ required: true
274
+ schema:
275
+ $ref: '#/components/schemas/CorrelationId'
276
+ requestBody:
277
+ description: Linking request consent authenticate request details
278
+ required: true
279
+ content:
280
+ application/json:
281
+ schema:
282
+ $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateRequest'
283
+ example:
284
+ authToken: '123456'
285
+ responses:
286
+ '200':
287
+ $ref: '#/components/responses/LinkingRequestConsentIDAuthenticateResponse'
288
+ default:
289
+ $ref: '#/components/responses/400'
290
+ '/linking/request-consent/{ID}/pass-credential':
291
+ post:
292
+ operationId: PostLinkingRequestConsentIDPassCredential
293
+ summary: 'Outbound POST /linking/request-consent/{ID}/pass-credential endpoint'
294
+ description: >
295
+ Used in the credential registration phase of account linking.
296
+
297
+ Used by the PISP to pass an credential on behalf of the user to the
298
+ DFSP.
299
+ tags:
300
+ - linking
301
+ parameters:
302
+ - name: ID
303
+ in: path
304
+ required: true
305
+ schema:
306
+ $ref: '#/components/schemas/CorrelationId'
307
+ requestBody:
308
+ description: Linking request consent pass credential request details
309
+ required: true
310
+ content:
311
+ application/json:
312
+ schema:
313
+ $ref: >-
314
+ #/components/schemas/LinkingRequestConsentIDPassCredentialRequest
315
+ example:
316
+ credential:
317
+ credentialType: FIDO
318
+ status: PENDING
319
+ payload:
320
+ id: >-
321
+ HskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAtw
322
+ rawId: >-
323
+ HskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAtw==
324
+ response:
325
+ clientDataJSON: >-
326
+ eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiWXpSaFpHRmlZak16WlRrek1EWmlNRE00TURnNE1UTXlZV1ptWTJSbE5UVTJZelV3WkRneVpqWXdNMlkwTnpjeE1XRTVOVEV3WW1ZelltVmxaalprTmciLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjQyMTgxIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ==
327
+ attestationObject: >-
328
+ o2NmbXRmcGFja2VkZ2F0dFN0bXSjY2FsZyZjc2lnWEcwRQIhAN2JDPPTse/45EHSqSpEJiiok5sns+HqdJch3+gsL09VAiAh7W7ZhQC8gMIkgwcA+S4rQkaHoHnP9AkkohaKCuuA62N4NWOBWQLBMIICvTCCAaWgAwIBAgIECwXNUzANBgkqhkiG9w0BAQsFADAuMSwwKgYDVQQDEyNZdWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAwMDBaGA8yMDUwMDkwNDAwMDAwMFowbjELMAkGA1UEBhMCU0UxEjAQBgNVBAoMCVl1YmljbyBBQjEiMCAGA1UECwwZQXV0aGVudGljYXRvciBBdHRlc3RhdGlvbjEnMCUGA1UEAwweWXViaWNvIFUyRiBFRSBTZXJpYWwgMTg0OTI5NjE5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIRpvsbWJJcsKwRhffCrjqLSIEBR5sR7/9VXgfZdRvSsXaiUt7lns44WZIFuz6ii/j9f8fadcBUJyrkhY5ZH8WqNsMGowIgYJKwYBBAGCxAoCBBUxLjMuNi4xLjQuMS40MTQ4Mi4xLjEwEwYLKwYBBAGC5RwCAQEEBAMCBDAwIQYLKwYBBAGC5RwBAQQEEgQQFJogIY72QTOWuIH41bfx9TAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+/qPfPSrgclePfgTQ3VpLaNsBr+hjLhi04LhzQxiRGWwYS+vB1TOiPXeLsQQIwbmqQU51doVbCTaXGLNIr1zvbLAwhnLWH7i9m4ahCqaCzowtTvCQ7VBUGP5T1M4eYnoo83IDCVjQj/pZG8QYgOGOigztGoWAf5CWcUF6C0UyFbONwUcqJEl2QLToa/7E8VRjm4W46IAUljYkODVZASv8h3wLROx9p5TSBlSymtwdulxQe/DKbfNSvM3edA0up+EIJKLOOU+QTR2ZQV46fEW1/ih6m8vcaY6L3NW0eYpc7TXeijUJAgoUtya/vzmnRAecuY9bncoJt8PrvL2ir2kDaGF1dGhEYXRhWMRJlg3liA6MaHQ0Fw9kdmBbj+SuuaKGMseZXPO6gx2XY0EAAAAEFJogIY72QTOWuIH41bfx9QBAHskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAt6UBAgMmIAEhWCBYz+SV6fSy7ZjFzdj+SWxaMbfaw4ZT+wYgClN3v93kVSJYIGSzY41DNLrh1jXp4J53qCnq4+b9HYXud/0UEsZquDeV
329
+ type: public-key
330
+ responses:
331
+ '200':
332
+ $ref: '#/components/responses/LinkingRequestConsentIDPassCredentialResponse'
333
+ default:
334
+ $ref: '#/components/responses/400'
335
+ components:
336
+ responses:
337
+ '200':
338
+ description: OK
339
+ '400':
340
+ description: Bad Request
341
+ content:
342
+ application/json:
343
+ schema:
344
+ $ref: '#/components/schemas/ErrorInformationResponse'
345
+ headers:
346
+ Content-Length:
347
+ $ref: '#/components/headers/Content-Length'
348
+ Content-Type:
349
+ $ref: '#/components/headers/Content-Type'
350
+ '401':
351
+ description: Unauthorized
352
+ content:
353
+ application/json:
354
+ schema:
355
+ $ref: '#/components/schemas/ErrorInformationResponse'
356
+ headers:
357
+ Content-Length:
358
+ $ref: '#/components/headers/Content-Length'
359
+ Content-Type:
360
+ $ref: '#/components/headers/Content-Type'
361
+ '403':
362
+ description: Forbidden
363
+ content:
364
+ application/json:
365
+ schema:
366
+ $ref: '#/components/schemas/ErrorInformationResponse'
367
+ headers:
368
+ Content-Length:
369
+ $ref: '#/components/headers/Content-Length'
370
+ Content-Type:
371
+ $ref: '#/components/headers/Content-Type'
372
+ '404':
373
+ description: Not Found
374
+ content:
375
+ application/json:
376
+ schema:
377
+ $ref: '#/components/schemas/ErrorInformationResponse'
378
+ headers:
379
+ Content-Length:
380
+ $ref: '#/components/headers/Content-Length'
381
+ Content-Type:
382
+ $ref: '#/components/headers/Content-Type'
383
+ '405':
384
+ description: Method Not Allowed
385
+ content:
386
+ application/json:
387
+ schema:
388
+ $ref: '#/components/schemas/ErrorInformationResponse'
389
+ headers:
390
+ Content-Length:
391
+ $ref: '#/components/headers/Content-Length'
392
+ Content-Type:
393
+ $ref: '#/components/headers/Content-Type'
394
+ '406':
395
+ description: Not Acceptable
396
+ content:
397
+ application/json:
398
+ schema:
399
+ $ref: '#/components/schemas/ErrorInformationResponse'
400
+ headers:
401
+ Content-Length:
402
+ $ref: '#/components/headers/Content-Length'
403
+ Content-Type:
404
+ $ref: '#/components/headers/Content-Type'
405
+ '501':
406
+ description: Not Implemented
407
+ content:
408
+ application/json:
409
+ schema:
410
+ $ref: '#/components/schemas/ErrorInformationResponse'
411
+ headers:
412
+ Content-Length:
413
+ $ref: '#/components/headers/Content-Length'
414
+ Content-Type:
415
+ $ref: '#/components/headers/Content-Type'
416
+ '503':
417
+ description: Service Unavailable
418
+ content:
419
+ application/json:
420
+ schema:
421
+ $ref: '#/components/schemas/ErrorInformationResponse'
422
+ headers:
423
+ Content-Length:
424
+ $ref: '#/components/headers/Content-Length'
425
+ Content-Type:
426
+ $ref: '#/components/headers/Content-Type'
427
+ ThirdpartyTransactionPartyLookupResponse:
428
+ description: ThirdpartyTransaction partyLookup response
429
+ content:
430
+ application/json:
431
+ schema:
432
+ $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponse'
433
+ example:
434
+ currentState: partyLookupSuccess
435
+ party:
436
+ partyIdInfo:
437
+ partyIdType: MSISDN
438
+ partyIdentifier: '16135551212'
439
+ fspId: dfspb
440
+ name: Bob bobbington
441
+ ThirdpartyTransactionIDInitiateResponse:
442
+ description: ThirdpartyTransactionIDInitiate response
443
+ content:
444
+ application/json:
445
+ schema:
446
+ $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponse'
447
+ example:
448
+ currentState: authorizationReceived
449
+ authorization:
450
+ authenticationType: U2F
451
+ retriesLeft: '1'
452
+ amount:
453
+ currency: USD
454
+ amount: '10.00'
455
+ transactionId: 1234-1234-1234-1234
456
+ transactionRequestId: 1234-1234-1234-1234
457
+ quote:
458
+ transferAmount:
459
+ currency: USD
460
+ amount: '10.00'
461
+ expiration: '2022-01-01T08:38:08.699-04:00'
462
+ ilpPacket: >-
463
+ AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA
464
+ condition: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pH
465
+ ThirdpartyTransactionIDApproveResponse:
466
+ description: ThirdpartyTransactionIDApproveResponse
467
+ content:
468
+ application/json:
469
+ schema:
470
+ $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponse'
471
+ example:
472
+ transactionStatus:
473
+ transactionId: 8f6b2a9c-df32-4248-b115-799beada85ec
474
+ transactionRequestState: ACCEPTED
475
+ currentState: transactionStatusReceived
476
+ LinkingProvidersResponse:
477
+ description: |
478
+ Response body of GET /linking/providers
479
+ content:
480
+ application/json:
481
+ schema:
482
+ $ref: '#/components/schemas/LinkingProvidersResponse'
483
+ example:
484
+ providers:
485
+ - dfspa
486
+ - dfspb
487
+ currentState: providersLookupSuccess
488
+ AccountsByUserIdResponse:
489
+ description: >
490
+ response body of GET /accounts/{ID}
491
+
492
+ derived from UpdateAccountsByUserId by Inbound Service via Pub/Sub
493
+ channel
494
+ content:
495
+ application/json:
496
+ schema:
497
+ $ref: '#/components/schemas/AccountsIDPutResponse'
498
+ example:
499
+ - accountNickname: dfspa.user.nickname1
500
+ id: dfspa.username.1234
501
+ currency: ZAR
502
+ - accountNickname: dfspa.user.nickname2
503
+ id: dfspa.username.5678
504
+ currency: USD
505
+ LinkingRequestConsentResponse:
506
+ description: |
507
+ Response body of POST /linking/request-consent.
508
+ content:
509
+ application/json:
510
+ schema:
511
+ $ref: '#/components/schemas/LinkingRequestConsentResponse'
512
+ example:
513
+ channelResponse:
514
+ consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1
515
+ scopes:
516
+ - accountId: dfspa.username.1234
517
+ actions:
518
+ - accounts.getBalance
519
+ - accounts.transfer
520
+ - accountId: dfspa.username.5678
521
+ actions:
522
+ - accounts.getBalance
523
+ - accounts.transfer
524
+ authChannels:
525
+ - OTP
526
+ callbackUri: 'pisp-app://callback...'
527
+ currentState: OTPAuthenticationChannelResponseReceived
528
+ LinkingRequestConsentIDAuthenticateResponse:
529
+ description: Linking request consent authenticate response
530
+ content:
531
+ application/json:
532
+ schema:
533
+ $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateResponse'
534
+ example:
535
+ consent:
536
+ consentId: 76059a0a-684f-4002-a880-b01159afe119
537
+ consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1
538
+ scopes:
539
+ - accountId: dfspa.username.5678
540
+ actions:
541
+ - accounts.transfer
542
+ challenge: c4adabb33e9306b038088132affcde556c50d82f603f47711a9510bf3beef6d6
543
+ currentState: consentReceivedAwaitingCredential
544
+ LinkingRequestConsentIDPassCredentialResponse:
545
+ description: Linking request consent pass credential response
546
+ content:
547
+ application/json:
548
+ schema:
549
+ $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialResponse'
550
+ example:
551
+ credential:
552
+ status: VERIFIED
553
+ currentState: accountsLinked
554
+ headers:
555
+ Content-Length:
556
+ required: false
557
+ schema:
558
+ type: integer
559
+ description: >-
560
+ The `Content-Length` header field indicates the anticipated size of the
561
+ payload body. Only sent if there is a body.
562
+
563
+
564
+ **Note:** The API supports a maximum size of 5242880 bytes (5
565
+ Megabytes).
566
+ Content-Type:
567
+ schema:
568
+ type: string
569
+ required: true
570
+ description: >-
571
+ The `Content-Type` header indicates the specific version of the API used
572
+ to send the payload body.
573
+ schemas:
574
+ ErrorCode:
575
+ title: ErrorCode
576
+ type: string
577
+ pattern: '^[1-9]\d{3}$'
578
+ description: >-
579
+ The API data type ErrorCode is a JSON String of four characters,
580
+ consisting of digits only. Negative numbers are not allowed. A leading
581
+ zero is not allowed. Each error code in the API is a four-digit number,
582
+ for example, 1234, where the first number (1 in the example) represents
583
+ the high-level error category, the second number (2 in the example)
584
+ represents the low-level error category, and the last two numbers (34 in
585
+ the example) represent the specific error.
586
+ example: '5100'
587
+ ErrorDescription:
588
+ title: ErrorDescription
589
+ type: string
590
+ minLength: 1
591
+ maxLength: 128
592
+ description: Error description string.
593
+ ExtensionKey:
594
+ title: ExtensionKey
595
+ type: string
596
+ minLength: 1
597
+ maxLength: 32
598
+ description: Extension key.
599
+ ExtensionValue:
600
+ title: ExtensionValue
601
+ type: string
602
+ minLength: 1
603
+ maxLength: 128
604
+ description: Extension value.
605
+ Extension:
606
+ title: Extension
607
+ type: object
608
+ description: Data model for the complex type Extension.
609
+ properties:
610
+ key:
611
+ $ref: '#/components/schemas/ExtensionKey'
612
+ value:
613
+ $ref: '#/components/schemas/ExtensionValue'
614
+ required:
615
+ - key
616
+ - value
617
+ ExtensionList:
618
+ title: ExtensionList
619
+ type: object
620
+ description: >-
621
+ Data model for the complex type ExtensionList. An optional list of
622
+ extensions, specific to deployment.
623
+ properties:
624
+ extension:
625
+ type: array
626
+ items:
627
+ $ref: '#/components/schemas/Extension'
628
+ minItems: 1
629
+ maxItems: 16
630
+ description: Number of Extension elements.
631
+ required:
632
+ - extension
633
+ ErrorInformation:
634
+ title: ErrorInformation
635
+ type: object
636
+ description: Data model for the complex type ErrorInformation.
637
+ properties:
638
+ errorCode:
639
+ $ref: '#/components/schemas/ErrorCode'
640
+ errorDescription:
641
+ $ref: '#/components/schemas/ErrorDescription'
642
+ extensionList:
643
+ $ref: '#/components/schemas/ExtensionList'
644
+ required:
645
+ - errorCode
646
+ - errorDescription
647
+ ErrorInformationResponse:
648
+ title: ErrorInformationResponse
649
+ type: object
650
+ description: >-
651
+ Data model for the complex type object that contains an optional element
652
+ ErrorInformation used along with 4xx and 5xx responses.
653
+ properties:
654
+ errorInformation:
655
+ $ref: '#/components/schemas/ErrorInformation'
656
+ PartyIdType:
657
+ title: PartyIdType
658
+ type: string
659
+ enum:
660
+ - MSISDN
661
+ - EMAIL
662
+ - PERSONAL_ID
663
+ - BUSINESS
664
+ - DEVICE
665
+ - ACCOUNT_ID
666
+ - IBAN
667
+ - ALIAS
668
+ - CONSENT
669
+ - THIRD_PARTY_LINK
670
+ description: >
671
+ This is a variant based on FSPIOP `PartyIdType` specification.
672
+
673
+ Main difference being the CONSENT and THIRD_PARTY_LINK enums.
674
+
675
+
676
+ Below are the allowed values for the enumeration.
677
+
678
+ - MSISDN - An MSISDN (Mobile Station International Subscriber Directory
679
+
680
+ Number, that is, the phone number) is used as reference to a
681
+ participant.
682
+
683
+ The MSISDN identifier should be in international format according to the
684
+
685
+ [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en).
686
+
687
+ Optionally, the MSISDN may be prefixed by a single plus sign, indicating
688
+ the
689
+
690
+ international prefix.
691
+
692
+ - EMAIL - An email is used as reference to a
693
+
694
+ participant. The format of the email should be according to the
695
+ informational
696
+
697
+ [RFC 3696](https://tools.ietf.org/html/rfc3696).
698
+
699
+ - PERSONAL_ID - A personal identifier is used as reference to a
700
+ participant.
701
+
702
+ Examples of personal identification are passport number, birth
703
+ certificate
704
+
705
+ number, and national registration number. The identifier number is added
706
+ in
707
+
708
+ the PartyIdentifier element. The personal identifier type is added in
709
+ the
710
+
711
+ PartySubIdOrType element.
712
+
713
+ - BUSINESS - A specific Business (for example, an organization or a
714
+ company)
715
+
716
+ is used as reference to a participant. The BUSINESS identifier can be in
717
+ any
718
+
719
+ format. To make a transaction connected to a specific username or bill
720
+ number
721
+
722
+ in a Business, the PartySubIdOrType element should be used.
723
+
724
+ - DEVICE - A specific device (for example, a POS or ATM) ID connected to
725
+ a
726
+
727
+ specific business or organization is used as reference to a Party.
728
+
729
+ For referencing a specific device under a specific business or
730
+ organization,
731
+
732
+ use the PartySubIdOrType element.
733
+
734
+ - ACCOUNT_ID - A bank account number or FSP account ID should be used as
735
+
736
+ reference to a participant. The ACCOUNT_ID identifier can be in any
737
+ format,
738
+
739
+ as formats can greatly differ depending on country and FSP.
740
+
741
+ - IBAN - A bank account number or FSP account ID is used as reference to
742
+ a
743
+
744
+ participant. The IBAN identifier can consist of up to 34 alphanumeric
745
+
746
+ characters and should be entered without whitespace.
747
+
748
+ - ALIAS An alias is used as reference to a participant. The alias should
749
+ be
750
+
751
+ created in the FSP as an alternative reference to an account owner.
752
+
753
+ Another example of an alias is a username in the FSP system.
754
+
755
+ The ALIAS identifier can be in any format. It is also possible to use
756
+ the
757
+
758
+ PartySubIdOrType element for identifying an account under an Alias
759
+ defined
760
+
761
+ by the PartyIdentifier.
762
+
763
+ - CONSENT - TBD
764
+
765
+ - THIRD_PARTY_LINK - TBD
766
+ example: PERSONAL_ID
767
+ PartyIdentifier:
768
+ title: PartyIdentifier
769
+ type: string
770
+ minLength: 1
771
+ maxLength: 128
772
+ description: Identifier of the Party.
773
+ example: '16135551212'
774
+ PartySubIdOrType:
775
+ title: PartySubIdOrType
776
+ type: string
777
+ minLength: 1
778
+ maxLength: 128
779
+ description: >-
780
+ Either a sub-identifier of a PartyIdentifier, or a sub-type of the
781
+ PartyIdType, normally a PersonalIdentifierType.
782
+ FspId:
783
+ title: FspId
784
+ type: string
785
+ minLength: 1
786
+ maxLength: 32
787
+ description: FSP identifier.
788
+ PartyIdInfo:
789
+ title: PartyIdInfo
790
+ type: object
791
+ description: Data model for the complex type PartyIdInfo.
792
+ properties:
793
+ partyIdType:
794
+ $ref: '#/components/schemas/PartyIdType'
795
+ partyIdentifier:
796
+ $ref: '#/components/schemas/PartyIdentifier'
797
+ partySubIdOrType:
798
+ $ref: '#/components/schemas/PartySubIdOrType'
799
+ fspId:
800
+ $ref: '#/components/schemas/FspId'
801
+ extensionList:
802
+ $ref: '#/components/schemas/ExtensionList'
803
+ required:
804
+ - partyIdType
805
+ - partyIdentifier
806
+ CorrelationId:
807
+ title: CorrelationId
808
+ type: string
809
+ pattern: >-
810
+ ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
811
+ description: >-
812
+ Identifier that correlates all messages of the same sequence.
813
+ The supported identifiers formats are for
814
+ lowercase [UUID](https://datatracker.ietf.org/doc/html/rfc9562) and
815
+ uppercase [ULID](https://github.com/ulid/spec)
816
+ example: b51ec534-ee48-4575-b6a9-ead2955b8069
817
+ ThirdpartyTransactionPartyLookupRequest:
818
+ type: object
819
+ description: ThirdpartyTransaction partyLookup request
820
+ properties:
821
+ payee:
822
+ $ref: '#/components/schemas/PartyIdInfo'
823
+ transactionRequestId:
824
+ $ref: '#/components/schemas/CorrelationId'
825
+ required:
826
+ - payee
827
+ - transactionRequestId
828
+ ThirdpartyTransactionPartyLookupState:
829
+ title: ThirdpartyTransactionPartyLookupState
830
+ description: state of thirdparty transaction partyLookup phase
831
+ type: string
832
+ enum:
833
+ - start
834
+ - partyLookupSuccess
835
+ - partyLookupFailure
836
+ - errored
837
+ ThirdpartyTransactionPartyLookupResponseError:
838
+ title: ThirdpartyTransactionPartyLookupResponseError
839
+ type: object
840
+ properties:
841
+ currentState:
842
+ $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupState'
843
+ errorInformation:
844
+ $ref: '#/components/schemas/ErrorInformation'
845
+ required:
846
+ - errorInformation
847
+ - currentState
848
+ MerchantClassificationCode:
849
+ title: MerchantClassificationCode
850
+ type: string
851
+ pattern: '^[\d]{1,4}$'
852
+ description: >-
853
+ A limited set of pre-defined numbers. This list would be a limited set
854
+ of numbers identifying a set of popular merchant types like School Fees,
855
+ Pubs and Restaurants, Groceries, etc.
856
+ PartyName:
857
+ title: PartyName
858
+ type: string
859
+ minLength: 1
860
+ maxLength: 128
861
+ description: Name of the Party. Could be a real name or a nickname.
862
+ FirstName:
863
+ title: FirstName
864
+ type: string
865
+ minLength: 1
866
+ maxLength: 128
867
+ pattern: >-
868
+ ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control}
869
+ .,''-]{1,128}$
870
+ description: First name of the Party (Name Type).
871
+ example: Henrik
872
+ MiddleName:
873
+ title: MiddleName
874
+ type: string
875
+ minLength: 1
876
+ maxLength: 128
877
+ pattern: >-
878
+ ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control}
879
+ .,''-]{1,128}$
880
+ description: Middle name of the Party (Name Type).
881
+ example: Johannes
882
+ LastName:
883
+ title: LastName
884
+ type: string
885
+ minLength: 1
886
+ maxLength: 128
887
+ pattern: >-
888
+ ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control}
889
+ .,''-]{1,128}$
890
+ description: Last name of the Party (Name Type).
891
+ example: Karlsson
892
+ PartyComplexName:
893
+ title: PartyComplexName
894
+ type: object
895
+ description: Data model for the complex type PartyComplexName.
896
+ properties:
897
+ firstName:
898
+ $ref: '#/components/schemas/FirstName'
899
+ middleName:
900
+ $ref: '#/components/schemas/MiddleName'
901
+ lastName:
902
+ $ref: '#/components/schemas/LastName'
903
+ DateOfBirth:
904
+ title: DateofBirth (type Date)
905
+ type: string
906
+ pattern: >-
907
+ ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
908
+ description: Date of Birth of the Party.
909
+ example: '1966-06-16'
910
+ PartyPersonalInfo:
911
+ title: PartyPersonalInfo
912
+ type: object
913
+ description: Data model for the complex type PartyPersonalInfo.
914
+ properties:
915
+ complexName:
916
+ $ref: '#/components/schemas/PartyComplexName'
917
+ dateOfBirth:
918
+ $ref: '#/components/schemas/DateOfBirth'
919
+ ThirdpartyTransactionPartyLookupResponseSuccess:
920
+ title: ThirdpartyTransactionPartyLookupResponseSuccess
921
+ type: object
922
+ properties:
923
+ currentState:
924
+ $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupState'
925
+ party:
926
+ type: object
927
+ properties:
928
+ partyIdInfo:
929
+ $ref: '#/components/schemas/PartyIdInfo'
930
+ merchantClassificationCode:
931
+ $ref: '#/components/schemas/MerchantClassificationCode'
932
+ name:
933
+ $ref: '#/components/schemas/PartyName'
934
+ personalInfo:
935
+ $ref: '#/components/schemas/PartyPersonalInfo'
936
+ required:
937
+ - party
938
+ - currentState
939
+ ThirdpartyTransactionPartyLookupResponse:
940
+ oneOf:
941
+ - $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponseError'
942
+ - $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponseSuccess'
943
+ Party:
944
+ title: Party
945
+ type: object
946
+ description: Data model for the complex type Party.
947
+ properties:
948
+ partyIdInfo:
949
+ $ref: '#/components/schemas/PartyIdInfo'
950
+ merchantClassificationCode:
951
+ $ref: '#/components/schemas/MerchantClassificationCode'
952
+ name:
953
+ $ref: '#/components/schemas/PartyName'
954
+ personalInfo:
955
+ $ref: '#/components/schemas/PartyPersonalInfo'
956
+ required:
957
+ - partyIdInfo
958
+ PartyIdTypeTPLink:
959
+ title: PartyIdTypeTPLink
960
+ type: string
961
+ enum:
962
+ - THIRD_PARTY_LINK
963
+ description: >
964
+ This is a variant based on FSPIOP `PartyIdType` specification.
965
+
966
+ This validation interface should be use by `POST
967
+ /thirdpartyRequests/transactions`
968
+
969
+ - THIRD_PARTY_LINK - is the DFSP's internal reference which allows DFSP
970
+ to find out the corresponding consent
971
+ example: PERSONAL_ID
972
+ PartyIdInfoTPLink:
973
+ title: PartyIdInfo
974
+ type: object
975
+ description: Data model for the complex type PartyIdInfo.
976
+ properties:
977
+ partyIdType:
978
+ $ref: '#/components/schemas/PartyIdTypeTPLink'
979
+ partyIdentifier:
980
+ $ref: '#/components/schemas/PartyIdentifier'
981
+ partySubIdOrType:
982
+ $ref: '#/components/schemas/PartySubIdOrType'
983
+ fspId:
984
+ $ref: '#/components/schemas/FspId'
985
+ extensionList:
986
+ $ref: '#/components/schemas/ExtensionList'
987
+ required:
988
+ - partyIdType
989
+ - partyIdentifier
990
+ AmountType:
991
+ title: AmountType
992
+ type: string
993
+ enum:
994
+ - SEND
995
+ - RECEIVE
996
+ description: >-
997
+ Below are the allowed values for the enumeration AmountType.
998
+
999
+ - SEND - Amount the Payer would like to send, that is, the amount that
1000
+ should be withdrawn from the Payer account including any fees.
1001
+
1002
+ - RECEIVE - Amount the Payer would like the Payee to receive, that is,
1003
+ the amount that should be sent to the receiver exclusive of any fees.
1004
+ example: RECEIVE
1005
+ Currency:
1006
+ title: Currency
1007
+ description: >-
1008
+ The currency codes defined in [ISO
1009
+ 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter
1010
+ alphabetic codes are used as the standard naming representation for
1011
+ currencies.
1012
+ type: string
1013
+ minLength: 3
1014
+ maxLength: 3
1015
+ enum:
1016
+ - AED
1017
+ - AFN
1018
+ - ALL
1019
+ - AMD
1020
+ - ANG
1021
+ - AOA
1022
+ - ARS
1023
+ - AUD
1024
+ - AWG
1025
+ - AZN
1026
+ - BAM
1027
+ - BBD
1028
+ - BDT
1029
+ - BGN
1030
+ - BHD
1031
+ - BIF
1032
+ - BMD
1033
+ - BND
1034
+ - BOB
1035
+ - BRL
1036
+ - BSD
1037
+ - BTN
1038
+ - BWP
1039
+ - BYN
1040
+ - BZD
1041
+ - CAD
1042
+ - CDF
1043
+ - CHF
1044
+ - CLP
1045
+ - CNY
1046
+ - COP
1047
+ - CRC
1048
+ - CUC
1049
+ - CUP
1050
+ - CVE
1051
+ - CZK
1052
+ - DJF
1053
+ - DKK
1054
+ - DOP
1055
+ - DZD
1056
+ - EGP
1057
+ - ERN
1058
+ - ETB
1059
+ - EUR
1060
+ - FJD
1061
+ - FKP
1062
+ - GBP
1063
+ - GEL
1064
+ - GGP
1065
+ - GHS
1066
+ - GIP
1067
+ - GMD
1068
+ - GNF
1069
+ - GTQ
1070
+ - GYD
1071
+ - HKD
1072
+ - HNL
1073
+ - HRK
1074
+ - HTG
1075
+ - HUF
1076
+ - IDR
1077
+ - ILS
1078
+ - IMP
1079
+ - INR
1080
+ - IQD
1081
+ - IRR
1082
+ - ISK
1083
+ - JEP
1084
+ - JMD
1085
+ - JOD
1086
+ - JPY
1087
+ - KES
1088
+ - KGS
1089
+ - KHR
1090
+ - KMF
1091
+ - KPW
1092
+ - KRW
1093
+ - KWD
1094
+ - KYD
1095
+ - KZT
1096
+ - LAK
1097
+ - LBP
1098
+ - LKR
1099
+ - LRD
1100
+ - LSL
1101
+ - LYD
1102
+ - MAD
1103
+ - MDL
1104
+ - MGA
1105
+ - MKD
1106
+ - MMK
1107
+ - MNT
1108
+ - MOP
1109
+ - MRO
1110
+ - MUR
1111
+ - MVR
1112
+ - MWK
1113
+ - MXN
1114
+ - MYR
1115
+ - MZN
1116
+ - NAD
1117
+ - NGN
1118
+ - NIO
1119
+ - NOK
1120
+ - NPR
1121
+ - NZD
1122
+ - OMR
1123
+ - PAB
1124
+ - PEN
1125
+ - PGK
1126
+ - PHP
1127
+ - PKR
1128
+ - PLN
1129
+ - PYG
1130
+ - QAR
1131
+ - RON
1132
+ - RSD
1133
+ - RUB
1134
+ - RWF
1135
+ - SAR
1136
+ - SBD
1137
+ - SCR
1138
+ - SDG
1139
+ - SEK
1140
+ - SGD
1141
+ - SHP
1142
+ - SLL
1143
+ - SOS
1144
+ - SPL
1145
+ - SRD
1146
+ - STD
1147
+ - SVC
1148
+ - SYP
1149
+ - SZL
1150
+ - THB
1151
+ - TJS
1152
+ - TMT
1153
+ - TND
1154
+ - TOP
1155
+ - TRY
1156
+ - TTD
1157
+ - TVD
1158
+ - TWD
1159
+ - TZS
1160
+ - UAH
1161
+ - UGX
1162
+ - USD
1163
+ - UYU
1164
+ - UZS
1165
+ - VEF
1166
+ - VND
1167
+ - VUV
1168
+ - WST
1169
+ - XAF
1170
+ - XCD
1171
+ - XDR
1172
+ - XOF
1173
+ - XPF
1174
+ - XTS
1175
+ - XXX
1176
+ - YER
1177
+ - ZAR
1178
+ - ZMW
1179
+ - ZWD
1180
+ Amount:
1181
+ title: Amount
1182
+ type: string
1183
+ pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$'
1184
+ description: >-
1185
+ The API data type Amount is a JSON String in a canonical format that is
1186
+ restricted by a regular expression for interoperability reasons. This
1187
+ pattern does not allow any trailing zeroes at all, but allows an amount
1188
+ without a minor currency unit. It also only allows four digits in the
1189
+ minor currency unit; a negative value is not allowed. Using more than 18
1190
+ digits in the major currency unit is not allowed.
1191
+ example: '123.45'
1192
+ Money:
1193
+ title: Money
1194
+ type: object
1195
+ description: Data model for the complex type Money.
1196
+ properties:
1197
+ currency:
1198
+ $ref: '#/components/schemas/Currency'
1199
+ amount:
1200
+ $ref: '#/components/schemas/Amount'
1201
+ required:
1202
+ - currency
1203
+ - amount
1204
+ TransactionScenario:
1205
+ title: TransactionScenario
1206
+ type: string
1207
+ enum:
1208
+ - DEPOSIT
1209
+ - WITHDRAWAL
1210
+ - TRANSFER
1211
+ - PAYMENT
1212
+ - REFUND
1213
+ description: >-
1214
+ Below are the allowed values for the enumeration.
1215
+
1216
+ - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a
1217
+ normal scenario, electronic funds are transferred from a Business
1218
+ account to a Consumer account, and physical cash is given from the
1219
+ Consumer to the Business User.
1220
+
1221
+ - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction.
1222
+ In a normal scenario, electronic funds are transferred from a Consumer’s
1223
+ account to a Business account, and physical cash is given from the
1224
+ Business User to the Consumer.
1225
+
1226
+ - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to
1227
+ Consumer) transaction.
1228
+
1229
+ - PAYMENT - Usually used for performing a transaction from a Consumer to
1230
+ a Merchant or Organization, but could also be for a B2B (Business to
1231
+ Business) payment. The transaction could be online for a purchase in an
1232
+ Internet store, in a physical store where both the Consumer and Business
1233
+ User are present, a bill payment, a donation, and so on.
1234
+
1235
+ - REFUND - Used for performing a refund of transaction.
1236
+ example: DEPOSIT
1237
+ TransactionSubScenario:
1238
+ title: TransactionSubScenario
1239
+ type: string
1240
+ pattern: '^[A-Z_]{1,32}$'
1241
+ description: >-
1242
+ Possible sub-scenario, defined locally within the scheme (UndefinedEnum
1243
+ Type).
1244
+ example: LOCALLY_DEFINED_SUBSCENARIO
1245
+ TransactionInitiator:
1246
+ title: TransactionInitiator
1247
+ type: string
1248
+ enum:
1249
+ - PAYER
1250
+ - PAYEE
1251
+ description: >-
1252
+ Below are the allowed values for the enumeration.
1253
+
1254
+ - PAYER - Sender of funds is initiating the transaction. The account to
1255
+ send from is either owned by the Payer or is connected to the Payer in
1256
+ some way.
1257
+
1258
+ - PAYEE - Recipient of the funds is initiating the transaction by
1259
+ sending a transaction request. The Payer must approve the transaction,
1260
+ either automatically by a pre-generated OTP or by pre-approval of the
1261
+ Payee, or by manually approving in his or her own Device.
1262
+ example: PAYEE
1263
+ TransactionInitiatorType:
1264
+ title: TransactionInitiatorType
1265
+ type: string
1266
+ enum:
1267
+ - CONSUMER
1268
+ - AGENT
1269
+ - BUSINESS
1270
+ - DEVICE
1271
+ description: |-
1272
+ Below are the allowed values for the enumeration.
1273
+ - CONSUMER - Consumer is the initiator of the transaction.
1274
+ - AGENT - Agent is the initiator of the transaction.
1275
+ - BUSINESS - Business is the initiator of the transaction.
1276
+ - DEVICE - Device is the initiator of the transaction.
1277
+ example: CONSUMER
1278
+ RefundReason:
1279
+ title: RefundReason
1280
+ type: string
1281
+ minLength: 1
1282
+ maxLength: 128
1283
+ description: Reason for the refund.
1284
+ example: Free text indicating reason for the refund.
1285
+ Refund:
1286
+ title: Refund
1287
+ type: object
1288
+ description: Data model for the complex type Refund.
1289
+ properties:
1290
+ originalTransactionId:
1291
+ $ref: '#/components/schemas/CorrelationId'
1292
+ refundReason:
1293
+ $ref: '#/components/schemas/RefundReason'
1294
+ required:
1295
+ - originalTransactionId
1296
+ BalanceOfPayments:
1297
+ title: BalanceOfPayments
1298
+ type: string
1299
+ pattern: '^[1-9]\d{2}$'
1300
+ description: >-
1301
+ (BopCode) The API data type
1302
+ [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String
1303
+ of 3 characters, consisting of digits only. Negative numbers are not
1304
+ allowed. A leading zero is not allowed.
1305
+ example: '123'
1306
+ TransactionType:
1307
+ title: TransactionType
1308
+ type: object
1309
+ description: Data model for the complex type TransactionType.
1310
+ properties:
1311
+ scenario:
1312
+ $ref: '#/components/schemas/TransactionScenario'
1313
+ subScenario:
1314
+ $ref: '#/components/schemas/TransactionSubScenario'
1315
+ initiator:
1316
+ $ref: '#/components/schemas/TransactionInitiator'
1317
+ initiatorType:
1318
+ $ref: '#/components/schemas/TransactionInitiatorType'
1319
+ refundInfo:
1320
+ $ref: '#/components/schemas/Refund'
1321
+ balanceOfPayments:
1322
+ $ref: '#/components/schemas/BalanceOfPayments'
1323
+ required:
1324
+ - scenario
1325
+ - initiator
1326
+ - initiatorType
1327
+ ThirdpartyTransactionIDInitiateRequest:
1328
+ title: ThirdpartyTransactionIDInitiateRequest
1329
+ type: object
1330
+ description: >-
1331
+ The object sent in the POST `/thirdpartyTransaction/{ID}/initiate`
1332
+ request.
1333
+ properties:
1334
+ payee:
1335
+ $ref: '#/components/schemas/Party'
1336
+ payer:
1337
+ $ref: '#/components/schemas/PartyIdInfoTPLink'
1338
+ amountType:
1339
+ $ref: '#/components/schemas/AmountType'
1340
+ amount:
1341
+ $ref: '#/components/schemas/Money'
1342
+ transactionType:
1343
+ $ref: '#/components/schemas/TransactionType'
1344
+ expiration:
1345
+ type: string
1346
+ example: '2016-05-24T08:38:08.699-04:00'
1347
+ required:
1348
+ - payee
1349
+ - payer
1350
+ - amountType
1351
+ - amount
1352
+ - transactionType
1353
+ - expiration
1354
+ ThirdpartyTransactionIDInitiateState:
1355
+ title: ThirdpartyTransactionIDInitiateState
1356
+ description: state of thirdparty transaction for initiate phase
1357
+ type: string
1358
+ enum:
1359
+ - partyLookupSuccess
1360
+ - authorizationReceived
1361
+ - errored
1362
+ ThirdpartyTransactionIDInitiateResponseError:
1363
+ title: ThirdpartyTransactionIDInitateResponseError
1364
+ type: object
1365
+ properties:
1366
+ currentState:
1367
+ $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateState'
1368
+ errorInformation:
1369
+ $ref: '#/components/schemas/ErrorInformation'
1370
+ required:
1371
+ - currentState
1372
+ - errorInformation
1373
+ DateTime:
1374
+ title: DateTime
1375
+ type: string
1376
+ pattern: >-
1377
+ ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
1378
+ description: >-
1379
+ The API data type DateTime is a JSON String in a lexical format that is
1380
+ restricted by a regular expression for interoperability reasons. The
1381
+ format is according to [ISO
1382
+ 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed
1383
+ in a combined date, time and time zone format. A more readable version
1384
+ of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are
1385
+ "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z
1386
+ indicates Zulu time zone, same as UTC).
1387
+ example: '2016-05-24T08:38:08.699-04:00'
1388
+ ThirdpartyRequestsAuthorizationsPostRequest:
1389
+ title: ThirdpartyRequestsAuthorizationsPostRequest
1390
+ description: POST /thirdpartyRequests/authorizations request object.
1391
+ type: object
1392
+ properties:
1393
+ authorizationRequestId:
1394
+ $ref: '#/components/schemas/CorrelationId'
1395
+ transactionRequestId:
1396
+ $ref: '#/components/schemas/CorrelationId'
1397
+ challenge:
1398
+ type: string
1399
+ description: The challenge that the PISP's client is to sign
1400
+ transferAmount:
1401
+ allOf:
1402
+ - $ref: '#/components/schemas/Money'
1403
+ description: >-
1404
+ The amount that will be debited from the sending customer’s account
1405
+ as a consequence of the transaction.
1406
+ payeeReceiveAmount:
1407
+ allOf:
1408
+ - $ref: '#/components/schemas/Money'
1409
+ description: >-
1410
+ The amount that will be credited to the receiving customer’s
1411
+ account as a consequence of the transaction.
1412
+ fees:
1413
+ allOf:
1414
+ - $ref: '#/components/schemas/Money'
1415
+ description: >-
1416
+ The amount of fees that the paying customer will be charged as part
1417
+ of the transaction.
1418
+ payer:
1419
+ allOf:
1420
+ - $ref: '#/components/schemas/PartyIdInfo'
1421
+ description: >-
1422
+ Information about the Payer type, id, sub-type/id, FSP Id in the
1423
+ proposed financial transaction.
1424
+ payee:
1425
+ allOf:
1426
+ - $ref: '#/components/schemas/Party'
1427
+ description: Information about the Payee in the proposed financial transaction.
1428
+ transactionType:
1429
+ $ref: '#/components/schemas/TransactionType'
1430
+ expiration:
1431
+ allOf:
1432
+ - $ref: '#/components/schemas/DateTime'
1433
+ description: >-
1434
+ The time by which the transfer must be completed, set by the payee
1435
+ DFSP.
1436
+ extensionList:
1437
+ $ref: '#/components/schemas/ExtensionList'
1438
+ required:
1439
+ - authorizationRequestId
1440
+ - transactionRequestId
1441
+ - challenge
1442
+ - transferAmount
1443
+ - payeeReceiveAmount
1444
+ - fees
1445
+ - payer
1446
+ - payee
1447
+ - transactionType
1448
+ - expiration
1449
+ additionalProperties: false
1450
+ ThirdpartyTransactionIDInitiateResponseSuccess:
1451
+ title: ThirdpartyTransactionIDInitateResponseSuccess
1452
+ type: object
1453
+ properties:
1454
+ currentState:
1455
+ $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateState'
1456
+ authorization:
1457
+ $ref: '#/components/schemas/ThirdpartyRequestsAuthorizationsPostRequest'
1458
+ required:
1459
+ - currentState
1460
+ - authorization
1461
+ ThirdpartyTransactionIDInitiateResponse:
1462
+ oneOf:
1463
+ - $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponseError'
1464
+ - $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponseSuccess'
1465
+ SignedPayloadTypeGeneric:
1466
+ title: SignedPayloadTypeGeneric
1467
+ type: string
1468
+ enum:
1469
+ - GENERIC
1470
+ description: Describes a challenge that has been signed with a private key
1471
+ BinaryString:
1472
+ type: string
1473
+ pattern: '^[A-Za-z0-9-_]+[=]{0,2}$'
1474
+ description: >-
1475
+ The API data type BinaryString is a JSON String. The string is a
1476
+ base64url encoding of a string of raw bytes, where padding (character
1477
+ ‘=’) is added at the end of the data if needed to ensure that the string
1478
+ is a multiple of 4 characters. The length restriction indicates the
1479
+ allowed number of characters.
1480
+ ThirdpartyRequestsAuthorizationsIDPutResponseGeneric:
1481
+ title: ThirdpartyRequestsAuthorizationsIDPutResponseGeneric
1482
+ type: object
1483
+ description: >-
1484
+ The object sent in the PUT /thirdpartyRequests/authorizations/{ID}
1485
+ callback.
1486
+ properties:
1487
+ signedPayloadType:
1488
+ $ref: '#/components/schemas/SignedPayloadTypeGeneric'
1489
+ signedPayload:
1490
+ $ref: '#/components/schemas/BinaryString'
1491
+ required:
1492
+ - signedPayloadType
1493
+ - authenticationValue
1494
+ SignedPayloadTypeFIDO:
1495
+ title: SignedPayloadTypeFIDO
1496
+ type: string
1497
+ enum:
1498
+ - FIDO
1499
+ description: Describes a challenge that has been signed with FIDO Attestation flows
1500
+ FIDOPublicKeyCredentialAssertion:
1501
+ title: FIDOPublicKeyCredentialAssertion
1502
+ type: object
1503
+ description: >
1504
+ An object sent in a `PUT /thirdpartyRequests/authorization/{ID}`
1505
+ request.
1506
+
1507
+ based mostly on: https://webauthn.guide/#authentication
1508
+
1509
+ AuthenticatorAssertionResponse
1510
+ properties:
1511
+ id:
1512
+ type: string
1513
+ description: |
1514
+ credential id: identifier of pair of keys, base64 encoded
1515
+ https://w3c.github.io/webauthn/#ref-for-dom-credential-id
1516
+ minLength: 59
1517
+ maxLength: 118
1518
+ rawId:
1519
+ type: string
1520
+ description: |
1521
+ raw credential id: identifier of pair of keys, base64 encoded.
1522
+ minLength: 59
1523
+ maxLength: 118
1524
+ response:
1525
+ type: object
1526
+ description: |
1527
+ AuthenticatorAssertionResponse
1528
+ properties:
1529
+ authenticatorData:
1530
+ type: string
1531
+ description: |
1532
+ Authenticator data object.
1533
+ minLength: 49
1534
+ maxLength: 256
1535
+ clientDataJSON:
1536
+ type: string
1537
+ description: |
1538
+ JSON string with client data.
1539
+ minLength: 121
1540
+ maxLength: 512
1541
+ signature:
1542
+ type: string
1543
+ description: >
1544
+ The signature generated by the private key associated with this
1545
+ credential.
1546
+ minLength: 59
1547
+ maxLength: 256
1548
+ userHandle:
1549
+ type: string
1550
+ description: |
1551
+ This field is optionally provided by the authenticator, and
1552
+ represents the user.id that was supplied during registration.
1553
+ minLength: 1
1554
+ maxLength: 88
1555
+ required:
1556
+ - authenticatorData
1557
+ - clientDataJSON
1558
+ - signature
1559
+ additionalProperties: false
1560
+ type:
1561
+ type: string
1562
+ description: 'response type, we need only the type of public-key'
1563
+ enum:
1564
+ - public-key
1565
+ required:
1566
+ - id
1567
+ - rawId
1568
+ - response
1569
+ - type
1570
+ additionalProperties: false
1571
+ ThirdpartyRequestsAuthorizationsIDPutResponseFIDO:
1572
+ title: ThirdpartyRequestsAuthorizationsIDPutResponseFIDO
1573
+ type: object
1574
+ description: >-
1575
+ The object sent in the PUT /thirdpartyRequests/authorizations/{ID}
1576
+ callback.
1577
+ properties:
1578
+ signedPayloadType:
1579
+ $ref: '#/components/schemas/SignedPayloadTypeFIDO'
1580
+ signedPayload:
1581
+ $ref: '#/components/schemas/FIDOPublicKeyCredentialAssertion'
1582
+ required:
1583
+ - signedPayloadType
1584
+ - signedPayload
1585
+ ThirdpartyTransactionIDApproveRequest:
1586
+ title: ThirdpartyTransactionIDApproveRequest
1587
+ type: object
1588
+ properties:
1589
+ authorizationResponse:
1590
+ oneOf:
1591
+ - $ref: >-
1592
+ #/components/schemas/ThirdpartyRequestsAuthorizationsIDPutResponseGeneric
1593
+ - $ref: >-
1594
+ #/components/schemas/ThirdpartyRequestsAuthorizationsIDPutResponseFIDO
1595
+ required:
1596
+ - authorizationResponse
1597
+ ThirdpartyTransactionIDApproveState:
1598
+ title: ThirdpartyTransactionIDApproveState
1599
+ description: state of thirdparty transaction
1600
+ type: string
1601
+ enum:
1602
+ - authorizationReceived
1603
+ - transactionStatusReceived
1604
+ - errored
1605
+ ThirdpartyTransactionIDApproveResponseError:
1606
+ title: ThirdpartyTransactionIDApproveResponseError
1607
+ type: object
1608
+ properties:
1609
+ currentState:
1610
+ $ref: '#/components/schemas/ThirdpartyTransactionIDApproveState'
1611
+ errorInformation:
1612
+ $ref: '#/components/schemas/ErrorInformation'
1613
+ required:
1614
+ - currentState
1615
+ - errorInformation
1616
+ TransactionRequestState:
1617
+ title: TransactionRequestState
1618
+ type: string
1619
+ enum:
1620
+ - RECEIVED
1621
+ - PENDING
1622
+ - ACCEPTED
1623
+ - REJECTED
1624
+ description: |-
1625
+ Below are the allowed values for the enumeration.
1626
+ - RECEIVED - Payer FSP has received the transaction from the Payee FSP.
1627
+ - PENDING - Payer FSP has sent the transaction request to the Payer.
1628
+ - ACCEPTED - Payer has approved the transaction.
1629
+ - REJECTED - Payer has rejected the transaction.
1630
+ ThirdpartyTransactionIDApproveResponseSuccess:
1631
+ title: ThirdpartyTransactionIDApproveResponseSuccess
1632
+ type: object
1633
+ properties:
1634
+ transactionStatus:
1635
+ type: object
1636
+ properties:
1637
+ transactionId:
1638
+ $ref: '#/components/schemas/CorrelationId'
1639
+ transactionRequestState:
1640
+ $ref: '#/components/schemas/TransactionRequestState'
1641
+ required:
1642
+ - transactionId
1643
+ - transactionRequestState
1644
+ currentState:
1645
+ $ref: '#/components/schemas/ThirdpartyTransactionIDApproveState'
1646
+ required:
1647
+ - currentState
1648
+ - transactionStatus
1649
+ ThirdpartyTransactionIDApproveResponse:
1650
+ oneOf:
1651
+ - $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponseError'
1652
+ - $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponseSuccess'
1653
+ LinkingProvidersState:
1654
+ title: LinkingProvidersState
1655
+ description: State of GET /linking/providers request
1656
+ type: string
1657
+ enum:
1658
+ - start
1659
+ - errored
1660
+ - providersLookupSuccess
1661
+ LinkingProvidersResponseError:
1662
+ title: LinkingProvidersResponseError
1663
+ type: object
1664
+ properties:
1665
+ errorInformation:
1666
+ $ref: '#/components/schemas/ErrorInformation'
1667
+ currentState:
1668
+ $ref: '#/components/schemas/LinkingProvidersState'
1669
+ required:
1670
+ - errorInformation
1671
+ - currentState
1672
+ LinkingProvidersResponseSuccess:
1673
+ title: LinkingProvidersResponseSuccess
1674
+ type: object
1675
+ properties:
1676
+ providers:
1677
+ type: array
1678
+ items:
1679
+ $ref: '#/components/schemas/FspId'
1680
+ currentState:
1681
+ $ref: '#/components/schemas/LinkingProvidersState'
1682
+ required:
1683
+ - providers
1684
+ - currentState
1685
+ LinkingProvidersResponse:
1686
+ oneOf:
1687
+ - $ref: '#/components/schemas/LinkingProvidersResponseError'
1688
+ - $ref: '#/components/schemas/LinkingProvidersResponseSuccess'
1689
+ AccountId:
1690
+ title: AccountId
1691
+ type: string
1692
+ description: >
1693
+ A long-lived unique account identifier provided by the DFSP. This MUST
1694
+ NOT
1695
+
1696
+ be Bank Account Number or anything that may expose a User's private bank
1697
+
1698
+ account information.
1699
+ pattern: '^([0-9A-Za-z_~\-\.]+[0-9A-Za-z_~\-])$'
1700
+ minLength: 1
1701
+ maxLength: 1023
1702
+ Name:
1703
+ title: Name
1704
+ type: string
1705
+ pattern: '^(?!\s*$)[\w .,''-]{1,128}$'
1706
+ description: >-
1707
+ The API data type Name is a JSON String, restricted by a regular
1708
+ expression to avoid characters which are generally not used in a name.
1709
+
1710
+
1711
+ Regular Expression - The regular expression for restricting the Name
1712
+ type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a
1713
+ string consisting of whitespace only, all Unicode characters are
1714
+ allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,)
1715
+ and space characters ( ).
1716
+
1717
+
1718
+ **Note:** In some programming languages, Unicode support must be
1719
+ specifically enabled. For example, if Java is used, the flag
1720
+ UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters.
1721
+ Account:
1722
+ title: Account
1723
+ type: object
1724
+ description: Data model for the complex type Account.
1725
+ properties:
1726
+ accountNickname:
1727
+ $ref: '#/components/schemas/Name'
1728
+ id:
1729
+ $ref: '#/components/schemas/AccountId'
1730
+ currency:
1731
+ $ref: '#/components/schemas/Currency'
1732
+ required:
1733
+ - accountNickname
1734
+ - id
1735
+ - currency
1736
+ AccountsIDPutResponse:
1737
+ title: AccountsIDPutResponse
1738
+ type: object
1739
+ description: 'The object sent in a `PUT /accounts/{ID}` request.'
1740
+ properties:
1741
+ accounts:
1742
+ type: array
1743
+ items:
1744
+ $ref: '#/components/schemas/Account'
1745
+ required:
1746
+ - accounts
1747
+ ConsentScopeType:
1748
+ title: ConsentScopeType
1749
+ type: string
1750
+ enum:
1751
+ - accounts.getBalance
1752
+ - accounts.transfer
1753
+ description: |
1754
+ The scopes requested for a ConsentRequest.
1755
+ - "accounts.getBalance" - Get the balance of a given account.
1756
+ - "accounts.transfer" - Initiate a transfer from an account.
1757
+ LinkingRequestConsentPostRequest:
1758
+ title: LinkingRequestConsentPostRequest
1759
+ type: object
1760
+ description: The object sent in a `POST /linking/request-consent` request.
1761
+ properties:
1762
+ toParticipantId:
1763
+ type: string
1764
+ consentRequestId:
1765
+ $ref: '#/components/schemas/CorrelationId'
1766
+ accounts:
1767
+ type: array
1768
+ items:
1769
+ $ref: '#/components/schemas/Account'
1770
+ actions:
1771
+ type: array
1772
+ items:
1773
+ $ref: '#/components/schemas/ConsentScopeType'
1774
+ userId:
1775
+ type: string
1776
+ description: ID used to associate request with GET /accounts request.
1777
+ callbackUri:
1778
+ type: string
1779
+ description: >-
1780
+ The callback uri that the user will be redirected to after
1781
+ completing the WEB auth channel.
1782
+ required:
1783
+ - toParticipantId
1784
+ - consentRequestId
1785
+ - accounts
1786
+ - userId
1787
+ - callbackUri
1788
+ - actions
1789
+ LinkingRequestConsentState:
1790
+ title: LinkingRequestConsentState
1791
+ description: State of `POST /linking/request-consent` request
1792
+ type: string
1793
+ enum:
1794
+ - start
1795
+ - errored
1796
+ - success
1797
+ - OTPAuthenticationChannelResponseRecieved
1798
+ - WebAuthenticationChannelResponseRecieved
1799
+ LinkingRequestConsentResponseError:
1800
+ title: LinkingRequestConsentResponseError
1801
+ type: object
1802
+ properties:
1803
+ errorInformation:
1804
+ $ref: '#/components/schemas/ErrorInformation'
1805
+ currentState:
1806
+ $ref: '#/components/schemas/LinkingRequestConsentState'
1807
+ required:
1808
+ - errorInformation
1809
+ - currentState
1810
+ Scope:
1811
+ title: Scope
1812
+ type: object
1813
+ description: Scope + Account Identifier mapping for a Consent.
1814
+ example: |
1815
+ {
1816
+ accountId: "dfsp.username.5678",
1817
+ actions: [ "accounts.transfer", "accounts.getBalance" ]
1818
+ }
1819
+ properties:
1820
+ accountId:
1821
+ $ref: '#/components/schemas/AccountId'
1822
+ actions:
1823
+ type: array
1824
+ items:
1825
+ $ref: '#/components/schemas/ConsentScopeType'
1826
+ required:
1827
+ - accountId
1828
+ - actions
1829
+ ConsentRequestChannelTypeWeb:
1830
+ title: ConsentRequestChannelTypeWeb
1831
+ type: string
1832
+ enum:
1833
+ - WEB
1834
+ description: |
1835
+ The web auth channel being used for PUT consentRequest/{ID} request.
1836
+ ConsentRequestsIDPutResponseWeb:
1837
+ title: ConsentRequestsIDPutResponseWeb
1838
+ type: object
1839
+ description: >
1840
+ The object sent in a `PUT /consentRequests/{ID}` request.
1841
+
1842
+
1843
+ Schema used in the request consent phase of the account linking web
1844
+ flow,
1845
+
1846
+ the result is the PISP being instructed on a specific URL where this
1847
+
1848
+ supposed user should be redirected. This URL should be a place where
1849
+
1850
+ the user can prove their identity (e.g., by logging in).
1851
+ properties:
1852
+ consentRequestId:
1853
+ $ref: '#/components/schemas/CorrelationId'
1854
+ scopes:
1855
+ type: array
1856
+ items:
1857
+ $ref: '#/components/schemas/Scope'
1858
+ authChannels:
1859
+ type: array
1860
+ items:
1861
+ $ref: '#/components/schemas/ConsentRequestChannelTypeWeb'
1862
+ callbackUri:
1863
+ type: string
1864
+ description: >-
1865
+ The callback uri that the user will be redirected to after
1866
+ completing the WEB auth channel.
1867
+ authUri:
1868
+ type: string
1869
+ description: >-
1870
+ The callback uri that the pisp app redirects to for user to complete
1871
+ their login.
1872
+ required:
1873
+ - consentRequestId
1874
+ - scopes
1875
+ - authChannels
1876
+ - callbackUri
1877
+ - authUri
1878
+ additionalProperties: false
1879
+ ConsentRequestChannelTypeOTP:
1880
+ title: ConsentRequestChannelTypeOTP
1881
+ type: string
1882
+ enum:
1883
+ - OTP
1884
+ description: |
1885
+ The OTP auth channel being used for PUT consentRequest/{ID} request.
1886
+ ConsentRequestsIDPutResponseOTP:
1887
+ title: ConsentRequestsIDPutResponseOTP
1888
+ type: object
1889
+ description: >
1890
+ The object sent in a `PUT /consentRequests/{ID}` request.
1891
+
1892
+
1893
+ Schema used in the request consent phase of the account linking OTP/SMS
1894
+ flow.
1895
+ properties:
1896
+ consentRequestId:
1897
+ $ref: '#/components/schemas/CorrelationId'
1898
+ scopes:
1899
+ type: array
1900
+ items:
1901
+ $ref: '#/components/schemas/Scope'
1902
+ authChannels:
1903
+ type: array
1904
+ items:
1905
+ $ref: '#/components/schemas/ConsentRequestChannelTypeOTP'
1906
+ callbackUri:
1907
+ type: string
1908
+ description: >-
1909
+ The callback uri that the user will be redirected to after
1910
+ completing the WEB auth channel.
1911
+ required:
1912
+ - consentRequestId
1913
+ - scopes
1914
+ - authChannels
1915
+ - callbackUri
1916
+ additionalProperties: false
1917
+ LinkingRequestConsentResponseSuccess:
1918
+ title: LinkingRequestConsentResponseSuccess
1919
+ type: object
1920
+ properties:
1921
+ channelResponse:
1922
+ oneOf:
1923
+ - $ref: '#/components/schemas/ConsentRequestsIDPutResponseWeb'
1924
+ - $ref: '#/components/schemas/ConsentRequestsIDPutResponseOTP'
1925
+ currentState:
1926
+ $ref: '#/components/schemas/LinkingRequestConsentState'
1927
+ required:
1928
+ - channelResponse
1929
+ - currentState
1930
+ LinkingRequestConsentResponse:
1931
+ oneOf:
1932
+ - $ref: '#/components/schemas/LinkingRequestConsentResponseError'
1933
+ - $ref: '#/components/schemas/LinkingRequestConsentResponseSuccess'
1934
+ LinkingRequestConsentIDAuthenticateRequest:
1935
+ title: LinkingRequestConsentIDAuthenticateRequest
1936
+ description: 'PATCH /linking/request-consent/{ID}/authenticate Request object'
1937
+ type: object
1938
+ properties:
1939
+ authToken:
1940
+ type: string
1941
+ required:
1942
+ - authToken
1943
+ additionalProperties: false
1944
+ LinkingRequestConsentIDAuthenticateState:
1945
+ title: LinkingRequestConsentIDAuthenticateState
1946
+ description: State of PATCH linking request consent Authenticate
1947
+ type: string
1948
+ enum:
1949
+ - errored
1950
+ - consentReceivedAwaitingCredential
1951
+ LinkingRequestConsentIDAuthenticateResponseError:
1952
+ title: LinkingRequestConsentIDAuthenticateResponseError
1953
+ type: object
1954
+ properties:
1955
+ errorInformation:
1956
+ $ref: '#/components/schemas/ErrorInformation'
1957
+ currentState:
1958
+ $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateState'
1959
+ required:
1960
+ - errorInformation
1961
+ - currentState
1962
+ ConsentsPostRequestPISP:
1963
+ title: ConsentPostRequestPISP
1964
+ type: object
1965
+ description: >-
1966
+ The object sent in a `POST /consents` request to PISP by DFSP to ask for
1967
+ delivering the credential object.
1968
+ properties:
1969
+ consentId:
1970
+ allOf:
1971
+ - $ref: '#/components/schemas/CorrelationId'
1972
+ description: |
1973
+ Common ID between the PISP and FSP for the Consent object
1974
+ decided by the DFSP who creates the Consent
1975
+ This field is REQUIRED for POST /consent.
1976
+ consentRequestId:
1977
+ allOf:
1978
+ - $ref: '#/components/schemas/CorrelationId'
1979
+ description: |
1980
+ The id of the ConsentRequest that was used to initiate the
1981
+ creation of this Consent.
1982
+ scopes:
1983
+ type: array
1984
+ items:
1985
+ $ref: '#/components/schemas/Scope'
1986
+ required:
1987
+ - consentId
1988
+ - scopes
1989
+ - consentRequestId
1990
+ LinkingRequestConsentIDAuthenticateResponseSuccess:
1991
+ title: LinkingRequestConsentIDAuthenticateResponse
1992
+ type: object
1993
+ properties:
1994
+ consent:
1995
+ $ref: '#/components/schemas/ConsentsPostRequestPISP'
1996
+ challenge:
1997
+ type: string
1998
+ currentState:
1999
+ $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateState'
2000
+ required:
2001
+ - consent
2002
+ - challenge
2003
+ - currentState
2004
+ LinkingRequestConsentIDAuthenticateResponse:
2005
+ oneOf:
2006
+ - $ref: >-
2007
+ #/components/schemas/LinkingRequestConsentIDAuthenticateResponseError
2008
+ - $ref: >-
2009
+ #/components/schemas/LinkingRequestConsentIDAuthenticateResponseSuccess
2010
+ FIDOPublicKeyCredentialAttestation:
2011
+ title: FIDOPublicKeyCredentialAttestation
2012
+ type: object
2013
+ description: >
2014
+ An object sent in a `PUT /consents/{ID}` request.
2015
+
2016
+ Based on https://w3c.github.io/webauthn/#iface-pkcredential
2017
+
2018
+ and mostly on: https://webauthn.guide/#registration
2019
+
2020
+ AuthenticatorAttestationResponse
2021
+
2022
+ https://w3c.github.io/webauthn/#dom-authenticatorattestationresponse-attestationobject
2023
+ properties:
2024
+ id:
2025
+ type: string
2026
+ description: |
2027
+ credential id: identifier of pair of keys, base64 encoded
2028
+ https://w3c.github.io/webauthn/#ref-for-dom-credential-id
2029
+ minLength: 59
2030
+ maxLength: 118
2031
+ rawId:
2032
+ type: string
2033
+ description: |
2034
+ raw credential id: identifier of pair of keys, base64 encoded
2035
+ minLength: 59
2036
+ maxLength: 118
2037
+ response:
2038
+ type: object
2039
+ description: |
2040
+ AuthenticatorAttestationResponse
2041
+ properties:
2042
+ clientDataJSON:
2043
+ type: string
2044
+ description: |
2045
+ JSON string with client data
2046
+ minLength: 121
2047
+ maxLength: 512
2048
+ attestationObject:
2049
+ type: string
2050
+ description: |
2051
+ CBOR.encoded attestation object
2052
+ minLength: 306
2053
+ maxLength: 2048
2054
+ required:
2055
+ - clientDataJSON
2056
+ - attestationObject
2057
+ additionalProperties: false
2058
+ type:
2059
+ type: string
2060
+ description: 'response type, we need only the type of public-key'
2061
+ enum:
2062
+ - public-key
2063
+ required:
2064
+ - id
2065
+ - rawId
2066
+ - response
2067
+ - type
2068
+ additionalProperties: false
2069
+ LinkingRequestConsentIDPassCredentialRequest:
2070
+ title: LinkingRequestConsentIDPassCredentialRequest
2071
+ description: 'POST /linking/request-consent/{ID}/pass-credential request object'
2072
+ type: object
2073
+ properties:
2074
+ credential:
2075
+ type: object
2076
+ properties:
2077
+ payload:
2078
+ $ref: '#/components/schemas/FIDOPublicKeyCredentialAttestation'
2079
+ required:
2080
+ - payload
2081
+ required:
2082
+ - credential
2083
+ additionalProperties: false
2084
+ LinkingRequestConsentIDPassCredentialState:
2085
+ title: LinkingRequestConsentIDPassCredentialState
2086
+ description: State of post linking request consent pass credential
2087
+ type: string
2088
+ enum:
2089
+ - errored
2090
+ - accountsLinked
2091
+ LinkingRequestConsentIDPassCredentialResponseError:
2092
+ title: LinkingRequestConsentIDPassCredentialResponseError
2093
+ type: object
2094
+ properties:
2095
+ errorInformation:
2096
+ $ref: '#/components/schemas/ErrorInformation'
2097
+ currentState:
2098
+ $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialState'
2099
+ required:
2100
+ - errorInformation
2101
+ - currentState
2102
+ ConsentStatusTypeVerified:
2103
+ title: ConsentStatusType
2104
+ type: string
2105
+ enum:
2106
+ - VERIFIED
2107
+ description: |
2108
+ The status of the Consent.
2109
+ - "VERIFIED" - The Consent is valid and verified.
2110
+ LinkingRequestConsentIDPassCredentialResponseSuccess:
2111
+ title: LinkingRequestConsentIDPassCredentialResponseSuccess
2112
+ type: object
2113
+ properties:
2114
+ credential:
2115
+ type: object
2116
+ properties:
2117
+ status:
2118
+ $ref: '#/components/schemas/ConsentStatusTypeVerified'
2119
+ required:
2120
+ - status
2121
+ currentState:
2122
+ $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialState'
2123
+ required:
2124
+ - credential
2125
+ - currentState
2126
+ LinkingRequestConsentIDPassCredentialResponse:
2127
+ oneOf:
2128
+ - $ref: >-
2129
+ #/components/schemas/LinkingRequestConsentIDPassCredentialResponseError
2130
+ - $ref: >-
2131
+ #/components/schemas/LinkingRequestConsentIDPassCredentialResponseSuccess
2132
+ parameters:
2133
+ ID:
2134
+ name: ID
2135
+ in: path
2136
+ required: true
2137
+ schema:
2138
+ type: string
2139
+ description: The identifier value.