diff --git a/audit-resolve.json b/audit-resolve.json index 1a52b918..1e2dd8b0 100644 --- a/audit-resolve.json +++ b/audit-resolve.json @@ -1,24 +1,27 @@ { "decisions": { "1002401|eslint>strip-ansi>ansi-regex": { - "decision": "postpone", - "madeAt": 1634580035486 + "decision": "fix", + "madeAt": 1634795582393 }, "1002401|eslint>table>string-width>strip-ansi>ansi-regex": { - "decision": "postpone", - "madeAt": 1634580035486 + "decision": "fix", + "madeAt": 1634795582393 }, "1002401|npm-audit-resolver>yargs-unparser>yargs>string-width>strip-ansi>ansi-regex": { - "decision": "postpone", - "madeAt": 1634580036474 + "decision": "ignore", + "madeAt": 1634795592843, + "expiresAt": 1637387558487 }, "1002401|npm-audit-resolver>yargs-unparser>yargs>cliui>string-width>strip-ansi>ansi-regex": { - "decision": "postpone", - "madeAt": 1634580036474 + "decision": "ignore", + "madeAt": 1634795592843, + "expiresAt": 1637387558487 }, "1002401|npm-audit-resolver>yargs-unparser>yargs>cliui>wrap-ansi>string-width>strip-ansi>ansi-regex": { - "decision": "postpone", - "madeAt": 1634580036474 + "decision": "ignore", + "madeAt": 1634795592843, + "expiresAt": 1637387558487 }, "1002718|json-ref-lite>property-expr": { "decision": "postpone", diff --git a/package-lock.json b/package-lock.json index 42886465..9709f3b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -443,6 +443,49 @@ "secure-json-parse": "^2.4.0" } }, + "@eslint/eslintrc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", + "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.0.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@gar/promisify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", @@ -1148,6 +1191,23 @@ } } }, + "@humanwhocodes/config-array": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3295,12 +3355,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "charset": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", @@ -3374,15 +3428,6 @@ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, "cli-table": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", @@ -3410,12 +3455,6 @@ "string-width": "^4.2.0" } }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -4391,46 +4430,47 @@ } }, "eslint": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.6.0.tgz", - "integrity": "sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.0.1.tgz", + "integrity": "sha512-LsgcwZgQ72vZ+SMp4K6pAnk2yFDWL7Ti4pJaRvsZ0Hsw2h8ZjUIW38a9AFn2cZXdBMlScMFYYgsSp4ttFI/0bA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^1.0.3", + "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^6.0.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^11.7.0", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -4447,157 +4487,122 @@ "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "flat-cache": { + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "color-name": "~1.1.4" } }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "argparse": "^2.0.1" } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "glob": "^7.1.3" + "yallist": "^4.0.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "lru-cache": "^6.0.0" } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "shebang-regex": "^3.0.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "strip-json-comments": { "version": "3.1.1", @@ -4605,26 +4610,29 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "has-flag": "^4.0.0" } }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -4958,55 +4966,47 @@ } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", + "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } + "estraverse": "^5.2.0" } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", + "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", "dev": true }, "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", + "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } + "acorn": "^8.5.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.0.0" } }, "esprima": { @@ -5224,17 +5224,6 @@ "resolved": "https://registry.npmjs.org/extensible-error/-/extensible-error-1.0.2.tgz", "integrity": "sha512-kXU1FiTsGT8PyMKtFM074RK/VBpzwuQJicAHqBpsPDeTXBQiSALPjkjKXlyKdG/GP6lR7bBaEkq8qdoO2geu9g==" }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5319,15 +5308,6 @@ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -5750,12 +5730,12 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "global-dirs": { @@ -5776,10 +5756,13 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } }, "globby": { "version": "11.0.4", @@ -6366,78 +6349,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -8422,14 +8333,6 @@ "jju": "^1.1.0" } }, - "json-ref-lite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/json-ref-lite/-/json-ref-lite-1.1.0.tgz", - "integrity": "sha1-YEC511zny+wFYEXlCwVL8d48ztc=", - "requires": { - "property-expr": "^1.3.1" - } - }, "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", @@ -10447,12 +10350,6 @@ "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", "dev": true }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -11131,11 +11028,6 @@ } } }, - "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" - }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -11607,16 +11499,6 @@ "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", @@ -11642,12 +11524,6 @@ "glob": "^6.0.1" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11657,15 +11533,6 @@ "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -13057,12 +12924,6 @@ "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -13073,15 +12934,6 @@ "xtend": "~4.0.1" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -13202,12 +13054,6 @@ } } }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -13804,15 +13650,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", diff --git a/package.json b/package.json index d1e90a20..38fcf289 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,6 @@ "hapi-swagger": "^14.2.4", "ilp-packet": "^2.2.0", "js-yaml": "^3.13.1", - "json-ref-lite": "^1.1.0", "json-refs": "^3.0.13", "json-rules-engine": "5.0.3", "lodash": "^4.17.19", @@ -124,7 +123,7 @@ }, "devDependencies": { "@types/jest": "24.0.22", - "eslint": "6.6.0", + "eslint": "^8.0.1", "get-port": "5.0.0", "jest": "^27.3.0", "jest-junit": "^13.0.0", diff --git a/spec_files/api_definitions/thirdparty_sdk_outbound_0.1/api_spec.yaml b/spec_files/api_definitions/thirdparty_sdk_outbound_0.1/api_spec.yaml new file mode 100644 index 00000000..f33c75fd --- /dev/null +++ b/spec_files/api_definitions/thirdparty_sdk_outbound_0.1/api_spec.yaml @@ -0,0 +1,2139 @@ +openapi: 3.0.1 +info: + title: Mojaloop Thirdparty Outbound SDK + description: > + Specification for the Thirdparty Outbound SDK API. + + This API is a synchronous API which makes integrating with the Mojaloop 3rd + Party API easier. + + Please see other documentation on + https://github.com/mojaloop/thirdparty-sdk for more information. + license: + name: Apache 2.0 + version: 0.1.0 +servers: + - url: 'http://sandbox.mojaloop.io/switch-ttk-backend' + description: The mock 3p-scheme-adapter server running in the Mojaloop Sandbox + - url: 'http://localhost:15000' + description: A locally running TTK instance +paths: + /health: + get: + tags: + - health + responses: + '200': + $ref: '#/components/responses/200' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '405': + $ref: '#/components/responses/405' + '406': + $ref: '#/components/responses/406' + '501': + $ref: '#/components/responses/501' + '503': + $ref: '#/components/responses/503' + operationId: HealthGet + summary: Health check endpoint + description: >- + The HTTP request GET /health is used to return the current status of the + API. + /metrics: + get: + tags: + - health + responses: + '200': + $ref: '#/components/responses/200' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '405': + $ref: '#/components/responses/405' + '406': + $ref: '#/components/responses/406' + '501': + $ref: '#/components/responses/501' + '503': + $ref: '#/components/responses/503' + operationId: MetricsGet + summary: Prometheus metrics endpoint + description: The HTTP request GET /metrics is used to return metrics for the API. + /thirdpartyTransaction/partyLookup: + post: + operationId: ThirdpartyTransactionPartyLookup + summary: Thirdparty transaction party lookup. + description: > + The HTTP request `POST /thirdpartyTransaction/partyLookup` is used to + lookup information regarding the requested Party, defined by `Type`, + `ID` and optionally `SubId`. + tags: + - thirdpartyRequests + requestBody: + description: Thirdparty transaction party lookup body. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupRequest' + example: + transactionRequestId: b51ec534-ee48-4575-b6a9-ead2955b8069 + payee: + partyIdType: MSISDN + partyIdentifier: '16135551212' + responses: + '200': + $ref: '#/components/responses/ThirdpartyTransactionPartyLookupResponse' + default: + $ref: '#/components/responses/400' + '/thirdpartyTransaction/{ID}/initiate': + post: + operationId: ThirdpartyTransactionIDInitiate + summary: Initiates a third party transaction. + description: > + The HTTP request `POST /thirdpartyTransaction/{ID}/initiate` is sent to + the Switch to initiate a third party request transaction. + tags: + - thirdpartyRequests + parameters: + - $ref: '#/components/parameters/ID' + requestBody: + description: Thirdparty transaction initiate request body. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateRequest' + example: + payee: + name: Bob bobbington + partyIdInfo: + fspId: dfspb + partyIdType: MSISDN + partyIdentifier: '16135551212' + payer: + partyIdType: THIRD_PARTY_LINK + partyIdentifier: '16135551212' + fspId: dfspa + amountType: RECEIVE + amount: + currency: USD + amount: '123.47' + transactionType: + scenario: DEPOSIT + initiator: PAYER + initiatorType: CONSUMER + expiration: '2021-05-24T08:38:08.699-04:00' + responses: + '200': + $ref: '#/components/responses/ThirdpartyTransactionIDInitiateResponse' + default: + $ref: '#/components/responses/400' + '/thirdpartyTransaction/{ID}/approve': + post: + operationId: ThirdpartyTransactionIDApprove + summary: Approve a third party transaction. + description: > + The HTTP request `POST /thirdpartyTransaction/{ID}/approve` is used to + approve a third party transaction . + tags: + - thirdpartyRequests + parameters: + - $ref: '#/components/parameters/ID' + requestBody: + description: >- + Thirdparty transaction approve request body contains Authorization + details + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionIDApproveRequest' + example: + authorizationResponse: + authenticationInfo: + authentication: U2F + authenticationValue: + pinValue: xxxxxxxxxxx + counter: '1' + responseType: ENTERED + responses: + '200': + $ref: '#/components/responses/ThirdpartyTransactionIDApproveResponse' + default: + $ref: '#/components/responses/400' + /linking/providers: + get: + operationId: GetLinkingProviders + summary: GetLinkingProviders + description: > + The HTTP request `GET /linking/providers` is used to retrieve a list of + thirdparty enabled DFSP identifiers. + tags: + - linking + responses: + '200': + $ref: '#/components/responses/LinkingProvidersResponse' + default: + $ref: '#/components/responses/400' + '/linking/accounts/{fspId}/{userId}': + get: + operationId: GetLinkingAccountsByUserId + summary: GetLinkingAccountsByUserId + description: > + The HTTP request `GET /linking/accounts/{fspId}/{userId}` is used to + retrieve the list of potential accounts available for linking. + tags: + - linking + parameters: + - name: fspId + in: path + required: true + schema: + $ref: '#/components/schemas/FspId' + - name: userId + in: path + required: true + schema: + $ref: '#/components/schemas/AccountId' + responses: + '200': + $ref: '#/components/responses/AccountsByUserIdResponse' + default: + $ref: '#/components/responses/400' + /linking/request-consent: + post: + operationId: PostLinkingRequestConsent + summary: PostLinkingRequestConsent + description: > + The HTTP request `POST /linking/request-consent` is used to by a PISP to + ask + + a specific DFSP to start the process of establishing consent between + three parties. + + + - The PISP + + - The DFSP + + - A user presumed to be a customer of 'The DFSP' + tags: + - linking + requestBody: + description: Consent requests validate request details + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingRequestConsentPostRequest' + example: + consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1 + toParticipantId: dfspa + accounts: + - accountNickname: SpeXXXXXXXXnt + id: dfspa.username.5678 + currency: USD + actions: + - accounts.transfer + userId: username1234 + callbackUri: 'pisp-app://callback' + responses: + '200': + $ref: '#/components/responses/LinkingRequestConsentResponse' + default: + $ref: '#/components/responses/400' + '/linking/request-consent/{ID}/authenticate': + patch: + operationId: PatchLinkingRequestConsentIDAuthenticate + summary: 'Outbound PATCH /linking/request-consent/{ID}/authenticate endpoint' + description: > + Used in the authentication phase of account linking. + + Used by the PISP to pass an Auth token on behalf of the user to the DFSP + to establish a chain of trust. + tags: + - linking + parameters: + - name: ID + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + requestBody: + description: Linking request consent authenticate request details + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateRequest' + example: + authToken: '123456' + responses: + '200': + $ref: '#/components/responses/LinkingRequestConsentIDAuthenticateResponse' + default: + $ref: '#/components/responses/400' + '/linking/request-consent/{ID}/pass-credential': + post: + operationId: PostLinkingRequestConsentIDPassCredential + summary: 'Outbound POST /linking/request-consent/{ID}/pass-credential endpoint' + description: > + Used in the credential registration phase of account linking. + + Used by the PISP to pass an credential on behalf of the user to the + DFSP. + tags: + - linking + parameters: + - name: ID + in: path + required: true + schema: + $ref: '#/components/schemas/CorrelationId' + requestBody: + description: Linking request consent pass credential request details + required: true + content: + application/json: + schema: + $ref: >- + #/components/schemas/LinkingRequestConsentIDPassCredentialRequest + example: + credential: + credentialType: FIDO + status: PENDING + payload: + id: >- + HskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAtw + rawId: >- + HskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAtw== + response: + clientDataJSON: >- + eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiWXpSaFpHRmlZak16WlRrek1EWmlNRE00TURnNE1UTXlZV1ptWTJSbE5UVTJZelV3WkRneVpqWXdNMlkwTnpjeE1XRTVOVEV3WW1ZelltVmxaalprTmciLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjQyMTgxIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ== + attestationObject: >- + o2NmbXRmcGFja2VkZ2F0dFN0bXSjY2FsZyZjc2lnWEcwRQIhAN2JDPPTse/45EHSqSpEJiiok5sns+HqdJch3+gsL09VAiAh7W7ZhQC8gMIkgwcA+S4rQkaHoHnP9AkkohaKCuuA62N4NWOBWQLBMIICvTCCAaWgAwIBAgIECwXNUzANBgkqhkiG9w0BAQsFADAuMSwwKgYDVQQDEyNZdWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAwMDBaGA8yMDUwMDkwNDAwMDAwMFowbjELMAkGA1UEBhMCU0UxEjAQBgNVBAoMCVl1YmljbyBBQjEiMCAGA1UECwwZQXV0aGVudGljYXRvciBBdHRlc3RhdGlvbjEnMCUGA1UEAwweWXViaWNvIFUyRiBFRSBTZXJpYWwgMTg0OTI5NjE5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIRpvsbWJJcsKwRhffCrjqLSIEBR5sR7/9VXgfZdRvSsXaiUt7lns44WZIFuz6ii/j9f8fadcBUJyrkhY5ZH8WqNsMGowIgYJKwYBBAGCxAoCBBUxLjMuNi4xLjQuMS40MTQ4Mi4xLjEwEwYLKwYBBAGC5RwCAQEEBAMCBDAwIQYLKwYBBAGC5RwBAQQEEgQQFJogIY72QTOWuIH41bfx9TAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+/qPfPSrgclePfgTQ3VpLaNsBr+hjLhi04LhzQxiRGWwYS+vB1TOiPXeLsQQIwbmqQU51doVbCTaXGLNIr1zvbLAwhnLWH7i9m4ahCqaCzowtTvCQ7VBUGP5T1M4eYnoo83IDCVjQj/pZG8QYgOGOigztGoWAf5CWcUF6C0UyFbONwUcqJEl2QLToa/7E8VRjm4W46IAUljYkODVZASv8h3wLROx9p5TSBlSymtwdulxQe/DKbfNSvM3edA0up+EIJKLOOU+QTR2ZQV46fEW1/ih6m8vcaY6L3NW0eYpc7TXeijUJAgoUtya/vzmnRAecuY9bncoJt8PrvL2ir2kDaGF1dGhEYXRhWMRJlg3liA6MaHQ0Fw9kdmBbj+SuuaKGMseZXPO6gx2XY0EAAAAEFJogIY72QTOWuIH41bfx9QBAHskU2gw4np09IUtYNHnxMM696jJHqvccUdBmd0xP6XEWwH0xLei1PUzDJCM19SZ3A2Ex0fNLw0nc2hrIlFnAt6UBAgMmIAEhWCBYz+SV6fSy7ZjFzdj+SWxaMbfaw4ZT+wYgClN3v93kVSJYIGSzY41DNLrh1jXp4J53qCnq4+b9HYXud/0UEsZquDeV + type: public-key + responses: + '200': + $ref: '#/components/responses/LinkingRequestConsentIDPassCredentialResponse' + default: + $ref: '#/components/responses/400' +components: + responses: + '200': + description: OK + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '405': + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '406': + description: Not Acceptable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '501': + description: Not Implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + '503': + description: Service Unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInformationResponse' + headers: + Content-Length: + $ref: '#/components/headers/Content-Length' + Content-Type: + $ref: '#/components/headers/Content-Type' + ThirdpartyTransactionPartyLookupResponse: + description: ThirdpartyTransaction partyLookup response + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponse' + example: + currentState: partyLookupSuccess + party: + partyIdInfo: + partyIdType: MSISDN + partyIdentifier: '16135551212' + fspId: dfspb + name: Bob bobbington + ThirdpartyTransactionIDInitiateResponse: + description: ThirdpartyTransactionIDInitiate response + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponse' + example: + currentState: authorizationReceived + authorization: + authenticationType: U2F + retriesLeft: '1' + amount: + currency: USD + amount: '10.00' + transactionId: 1234-1234-1234-1234 + transactionRequestId: 1234-1234-1234-1234 + quote: + transferAmount: + currency: USD + amount: '10.00' + expiration: '2022-01-01T08:38:08.699-04:00' + ilpPacket: >- + AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA + condition: f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pH + ThirdpartyTransactionIDApproveResponse: + description: ThirdpartyTransactionIDApproveResponse + content: + application/json: + schema: + $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponse' + example: + transactionStatus: + transactionId: 8f6b2a9c-df32-4248-b115-799beada85ec + transactionRequestState: ACCEPTED + currentState: transactionStatusReceived + LinkingProvidersResponse: + description: | + Response body of GET /linking/providers + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingProvidersResponse' + example: + providers: + - dfspa + - dfspb + currentState: providersLookupSuccess + AccountsByUserIdResponse: + description: > + response body of GET /accounts/{ID} + + derived from UpdateAccountsByUserId by Inbound Service via Pub/Sub + channel + content: + application/json: + schema: + $ref: '#/components/schemas/AccountsIDPutResponse' + example: + - accountNickname: dfspa.user.nickname1 + id: dfspa.username.1234 + currency: ZAR + - accountNickname: dfspa.user.nickname2 + id: dfspa.username.5678 + currency: USD + LinkingRequestConsentResponse: + description: | + Response body of POST /linking/request-consent. + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingRequestConsentResponse' + example: + channelResponse: + consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1 + scopes: + - accountId: dfspa.username.1234 + actions: + - accounts.getBalance + - accounts.transfer + - accountId: dfspa.username.5678 + actions: + - accounts.getBalance + - accounts.transfer + authChannels: + - OTP + callbackUri: 'pisp-app://callback...' + currentState: OTPAuthenticationChannelResponseReceived + LinkingRequestConsentIDAuthenticateResponse: + description: Linking request consent authenticate response + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateResponse' + example: + consent: + consentId: 76059a0a-684f-4002-a880-b01159afe119 + consentRequestId: f6ab43b0-71cc-49f9-b763-2ac3f05ac8c1 + scopes: + - accountId: dfspa.username.5678 + actions: + - accounts.transfer + challenge: c4adabb33e9306b038088132affcde556c50d82f603f47711a9510bf3beef6d6 + currentState: consentReceivedAwaitingCredential + LinkingRequestConsentIDPassCredentialResponse: + description: Linking request consent pass credential response + content: + application/json: + schema: + $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialResponse' + example: + credential: + status: VERIFIED + currentState: accountsLinked + headers: + Content-Length: + required: false + schema: + type: integer + description: >- + The `Content-Length` header field indicates the anticipated size of the + payload body. Only sent if there is a body. + + + **Note:** The API supports a maximum size of 5242880 bytes (5 + Megabytes). + Content-Type: + schema: + type: string + required: true + description: >- + The `Content-Type` header indicates the specific version of the API used + to send the payload body. + schemas: + ErrorCode: + title: ErrorCode + type: string + pattern: '^[1-9]\d{3}$' + description: >- + The API data type ErrorCode is a JSON String of four characters, + consisting of digits only. Negative numbers are not allowed. A leading + zero is not allowed. Each error code in the API is a four-digit number, + for example, 1234, where the first number (1 in the example) represents + the high-level error category, the second number (2 in the example) + represents the low-level error category, and the last two numbers (34 in + the example) represent the specific error. + example: '5100' + ErrorDescription: + title: ErrorDescription + type: string + minLength: 1 + maxLength: 128 + description: Error description string. + ExtensionKey: + title: ExtensionKey + type: string + minLength: 1 + maxLength: 32 + description: Extension key. + ExtensionValue: + title: ExtensionValue + type: string + minLength: 1 + maxLength: 128 + description: Extension value. + Extension: + title: Extension + type: object + description: Data model for the complex type Extension. + properties: + key: + $ref: '#/components/schemas/ExtensionKey' + value: + $ref: '#/components/schemas/ExtensionValue' + required: + - key + - value + ExtensionList: + title: ExtensionList + type: object + description: >- + Data model for the complex type ExtensionList. An optional list of + extensions, specific to deployment. + properties: + extension: + type: array + items: + $ref: '#/components/schemas/Extension' + minItems: 1 + maxItems: 16 + description: Number of Extension elements. + required: + - extension + ErrorInformation: + title: ErrorInformation + type: object + description: Data model for the complex type ErrorInformation. + properties: + errorCode: + $ref: '#/components/schemas/ErrorCode' + errorDescription: + $ref: '#/components/schemas/ErrorDescription' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - errorCode + - errorDescription + ErrorInformationResponse: + title: ErrorInformationResponse + type: object + description: >- + Data model for the complex type object that contains an optional element + ErrorInformation used along with 4xx and 5xx responses. + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + PartyIdType: + title: PartyIdType + type: string + enum: + - MSISDN + - EMAIL + - PERSONAL_ID + - BUSINESS + - DEVICE + - ACCOUNT_ID + - IBAN + - ALIAS + - CONSENT + - THIRD_PARTY_LINK + description: > + This is a variant based on FSPIOP `PartyIdType` specification. + + Main difference being the CONSENT and THIRD_PARTY_LINK enums. + + + Below are the allowed values for the enumeration. + + - MSISDN - An MSISDN (Mobile Station International Subscriber Directory + + Number, that is, the phone number) is used as reference to a + participant. + + The MSISDN identifier should be in international format according to the + + [ITU-T E.164 standard](https://www.itu.int/rec/T-REC-E.164/en). + + Optionally, the MSISDN may be prefixed by a single plus sign, indicating + the + + international prefix. + + - EMAIL - An email is used as reference to a + + participant. The format of the email should be according to the + informational + + [RFC 3696](https://tools.ietf.org/html/rfc3696). + + - PERSONAL_ID - A personal identifier is used as reference to a + participant. + + Examples of personal identification are passport number, birth + certificate + + number, and national registration number. The identifier number is added + in + + the PartyIdentifier element. The personal identifier type is added in + the + + PartySubIdOrType element. + + - BUSINESS - A specific Business (for example, an organization or a + company) + + is used as reference to a participant. The BUSINESS identifier can be in + any + + format. To make a transaction connected to a specific username or bill + number + + in a Business, the PartySubIdOrType element should be used. + + - DEVICE - A specific device (for example, a POS or ATM) ID connected to + a + + specific business or organization is used as reference to a Party. + + For referencing a specific device under a specific business or + organization, + + use the PartySubIdOrType element. + + - ACCOUNT_ID - A bank account number or FSP account ID should be used as + + reference to a participant. The ACCOUNT_ID identifier can be in any + format, + + as formats can greatly differ depending on country and FSP. + + - IBAN - A bank account number or FSP account ID is used as reference to + a + + participant. The IBAN identifier can consist of up to 34 alphanumeric + + characters and should be entered without whitespace. + + - ALIAS An alias is used as reference to a participant. The alias should + be + + created in the FSP as an alternative reference to an account owner. + + Another example of an alias is a username in the FSP system. + + The ALIAS identifier can be in any format. It is also possible to use + the + + PartySubIdOrType element for identifying an account under an Alias + defined + + by the PartyIdentifier. + + - CONSENT - TBD + + - THIRD_PARTY_LINK - TBD + example: PERSONAL_ID + PartyIdentifier: + title: PartyIdentifier + type: string + minLength: 1 + maxLength: 128 + description: Identifier of the Party. + example: '16135551212' + PartySubIdOrType: + title: PartySubIdOrType + type: string + minLength: 1 + maxLength: 128 + description: >- + Either a sub-identifier of a PartyIdentifier, or a sub-type of the + PartyIdType, normally a PersonalIdentifierType. + FspId: + title: FspId + type: string + minLength: 1 + maxLength: 32 + description: FSP identifier. + PartyIdInfo: + title: PartyIdInfo + type: object + description: Data model for the complex type PartyIdInfo. + properties: + partyIdType: + $ref: '#/components/schemas/PartyIdType' + partyIdentifier: + $ref: '#/components/schemas/PartyIdentifier' + partySubIdOrType: + $ref: '#/components/schemas/PartySubIdOrType' + fspId: + $ref: '#/components/schemas/FspId' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - partyIdType + - partyIdentifier + CorrelationId: + title: CorrelationId + type: string + pattern: >- + ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ + description: >- + Identifier that correlates all messages of the same sequence. The API + data type UUID (Universally Unique Identifier) is a JSON String in + canonical format, conforming to [RFC + 4122](https://tools.ietf.org/html/rfc4122), that is restricted by a + regular expression for interoperability reasons. A UUID is always 36 + characters long, 32 hexadecimal symbols and 4 dashes (‘-‘). + example: b51ec534-ee48-4575-b6a9-ead2955b8069 + ThirdpartyTransactionPartyLookupRequest: + type: object + description: ThirdpartyTransaction partyLookup request + properties: + payee: + $ref: '#/components/schemas/PartyIdInfo' + transactionRequestId: + $ref: '#/components/schemas/CorrelationId' + required: + - payee + - transactionRequestId + ThirdpartyTransactionPartyLookupState: + title: ThirdpartyTransactionPartyLookupState + description: state of thirdparty transaction partyLookup phase + type: string + enum: + - start + - partyLookupSuccess + - partyLookupFailure + - errored + ThirdpartyTransactionPartyLookupResponseError: + title: ThirdpartyTransactionPartyLookupResponseError + type: object + properties: + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupState' + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + required: + - errorInformation + - currentState + MerchantClassificationCode: + title: MerchantClassificationCode + type: string + pattern: '^[\d]{1,4}$' + description: >- + A limited set of pre-defined numbers. This list would be a limited set + of numbers identifying a set of popular merchant types like School Fees, + Pubs and Restaurants, Groceries, etc. + PartyName: + title: PartyName + type: string + minLength: 1 + maxLength: 128 + description: Name of the Party. Could be a real name or a nickname. + FirstName: + title: FirstName + type: string + minLength: 1 + maxLength: 128 + pattern: >- + ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} + .,''-]{1,128}$ + description: First name of the Party (Name Type). + example: Henrik + MiddleName: + title: MiddleName + type: string + minLength: 1 + maxLength: 128 + pattern: >- + ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} + .,''-]{1,128}$ + description: Middle name of the Party (Name Type). + example: Johannes + LastName: + title: LastName + type: string + minLength: 1 + maxLength: 128 + pattern: >- + ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} + .,''-]{1,128}$ + description: Last name of the Party (Name Type). + example: Karlsson + PartyComplexName: + title: PartyComplexName + type: object + description: Data model for the complex type PartyComplexName. + properties: + firstName: + $ref: '#/components/schemas/FirstName' + middleName: + $ref: '#/components/schemas/MiddleName' + lastName: + $ref: '#/components/schemas/LastName' + DateOfBirth: + title: DateofBirth (type Date) + type: string + pattern: >- + ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$ + description: Date of Birth of the Party. + example: '1966-06-16' + PartyPersonalInfo: + title: PartyPersonalInfo + type: object + description: Data model for the complex type PartyPersonalInfo. + properties: + complexName: + $ref: '#/components/schemas/PartyComplexName' + dateOfBirth: + $ref: '#/components/schemas/DateOfBirth' + ThirdpartyTransactionPartyLookupResponseSuccess: + title: ThirdpartyTransactionPartyLookupResponseSuccess + type: object + properties: + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupState' + party: + type: object + properties: + partyIdInfo: + $ref: '#/components/schemas/PartyIdInfo' + merchantClassificationCode: + $ref: '#/components/schemas/MerchantClassificationCode' + name: + $ref: '#/components/schemas/PartyName' + personalInfo: + $ref: '#/components/schemas/PartyPersonalInfo' + required: + - party + - currentState + ThirdpartyTransactionPartyLookupResponse: + oneOf: + - $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponseError' + - $ref: '#/components/schemas/ThirdpartyTransactionPartyLookupResponseSuccess' + Party: + title: Party + type: object + description: Data model for the complex type Party. + properties: + partyIdInfo: + $ref: '#/components/schemas/PartyIdInfo' + merchantClassificationCode: + $ref: '#/components/schemas/MerchantClassificationCode' + name: + $ref: '#/components/schemas/PartyName' + personalInfo: + $ref: '#/components/schemas/PartyPersonalInfo' + required: + - partyIdInfo + PartyIdTypeTPLink: + title: PartyIdTypeTPLink + type: string + enum: + - THIRD_PARTY_LINK + description: > + This is a variant based on FSPIOP `PartyIdType` specification. + + This validation interface should be use by `POST + /thirdpartyRequests/transactions` + + - THIRD_PARTY_LINK - is the DFSP's internal reference which allows DFSP + to find out the corresponding consent + example: PERSONAL_ID + PartyIdInfoTPLink: + title: PartyIdInfo + type: object + description: Data model for the complex type PartyIdInfo. + properties: + partyIdType: + $ref: '#/components/schemas/PartyIdTypeTPLink' + partyIdentifier: + $ref: '#/components/schemas/PartyIdentifier' + partySubIdOrType: + $ref: '#/components/schemas/PartySubIdOrType' + fspId: + $ref: '#/components/schemas/FspId' + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - partyIdType + - partyIdentifier + AmountType: + title: AmountType + type: string + enum: + - SEND + - RECEIVE + description: >- + Below are the allowed values for the enumeration AmountType. + + - SEND - Amount the Payer would like to send, that is, the amount that + should be withdrawn from the Payer account including any fees. + + - RECEIVE - Amount the Payer would like the Payee to receive, that is, + the amount that should be sent to the receiver exclusive of any fees. + example: RECEIVE + Currency: + title: Currency + description: >- + The currency codes defined in [ISO + 4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter + alphabetic codes are used as the standard naming representation for + currencies. + type: string + minLength: 3 + maxLength: 3 + enum: + - AED + - AFN + - ALL + - AMD + - ANG + - AOA + - ARS + - AUD + - AWG + - AZN + - BAM + - BBD + - BDT + - BGN + - BHD + - BIF + - BMD + - BND + - BOB + - BRL + - BSD + - BTN + - BWP + - BYN + - BZD + - CAD + - CDF + - CHF + - CLP + - CNY + - COP + - CRC + - CUC + - CUP + - CVE + - CZK + - DJF + - DKK + - DOP + - DZD + - EGP + - ERN + - ETB + - EUR + - FJD + - FKP + - GBP + - GEL + - GGP + - GHS + - GIP + - GMD + - GNF + - GTQ + - GYD + - HKD + - HNL + - HRK + - HTG + - HUF + - IDR + - ILS + - IMP + - INR + - IQD + - IRR + - ISK + - JEP + - JMD + - JOD + - JPY + - KES + - KGS + - KHR + - KMF + - KPW + - KRW + - KWD + - KYD + - KZT + - LAK + - LBP + - LKR + - LRD + - LSL + - LYD + - MAD + - MDL + - MGA + - MKD + - MMK + - MNT + - MOP + - MRO + - MUR + - MVR + - MWK + - MXN + - MYR + - MZN + - NAD + - NGN + - NIO + - NOK + - NPR + - NZD + - OMR + - PAB + - PEN + - PGK + - PHP + - PKR + - PLN + - PYG + - QAR + - RON + - RSD + - RUB + - RWF + - SAR + - SBD + - SCR + - SDG + - SEK + - SGD + - SHP + - SLL + - SOS + - SPL + - SRD + - STD + - SVC + - SYP + - SZL + - THB + - TJS + - TMT + - TND + - TOP + - TRY + - TTD + - TVD + - TWD + - TZS + - UAH + - UGX + - USD + - UYU + - UZS + - VEF + - VND + - VUV + - WST + - XAF + - XCD + - XDR + - XOF + - XPF + - YER + - ZAR + - ZMW + - ZWD + Amount: + title: Amount + type: string + pattern: '^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$' + description: >- + The API data type Amount is a JSON String in a canonical format that is + restricted by a regular expression for interoperability reasons. This + pattern does not allow any trailing zeroes at all, but allows an amount + without a minor currency unit. It also only allows four digits in the + minor currency unit; a negative value is not allowed. Using more than 18 + digits in the major currency unit is not allowed. + example: '123.45' + Money: + title: Money + type: object + description: Data model for the complex type Money. + properties: + currency: + $ref: '#/components/schemas/Currency' + amount: + $ref: '#/components/schemas/Amount' + required: + - currency + - amount + TransactionScenario: + title: TransactionScenario + type: string + enum: + - DEPOSIT + - WITHDRAWAL + - TRANSFER + - PAYMENT + - REFUND + description: >- + Below are the allowed values for the enumeration. + + - DEPOSIT - Used for performing a Cash-In (deposit) transaction. In a + normal scenario, electronic funds are transferred from a Business + account to a Consumer account, and physical cash is given from the + Consumer to the Business User. + + - WITHDRAWAL - Used for performing a Cash-Out (withdrawal) transaction. + In a normal scenario, electronic funds are transferred from a Consumer’s + account to a Business account, and physical cash is given from the + Business User to the Consumer. + + - TRANSFER - Used for performing a P2P (Peer to Peer, or Consumer to + Consumer) transaction. + + - PAYMENT - Usually used for performing a transaction from a Consumer to + a Merchant or Organization, but could also be for a B2B (Business to + Business) payment. The transaction could be online for a purchase in an + Internet store, in a physical store where both the Consumer and Business + User are present, a bill payment, a donation, and so on. + + - REFUND - Used for performing a refund of transaction. + example: DEPOSIT + TransactionSubScenario: + title: TransactionSubScenario + type: string + pattern: '^[A-Z_]{1,32}$' + description: >- + Possible sub-scenario, defined locally within the scheme (UndefinedEnum + Type). + example: LOCALLY_DEFINED_SUBSCENARIO + TransactionInitiator: + title: TransactionInitiator + type: string + enum: + - PAYER + - PAYEE + description: >- + Below are the allowed values for the enumeration. + + - PAYER - Sender of funds is initiating the transaction. The account to + send from is either owned by the Payer or is connected to the Payer in + some way. + + - PAYEE - Recipient of the funds is initiating the transaction by + sending a transaction request. The Payer must approve the transaction, + either automatically by a pre-generated OTP or by pre-approval of the + Payee, or by manually approving in his or her own Device. + example: PAYEE + TransactionInitiatorType: + title: TransactionInitiatorType + type: string + enum: + - CONSUMER + - AGENT + - BUSINESS + - DEVICE + description: |- + Below are the allowed values for the enumeration. + - CONSUMER - Consumer is the initiator of the transaction. + - AGENT - Agent is the initiator of the transaction. + - BUSINESS - Business is the initiator of the transaction. + - DEVICE - Device is the initiator of the transaction. + example: CONSUMER + RefundReason: + title: RefundReason + type: string + minLength: 1 + maxLength: 128 + description: Reason for the refund. + example: Free text indicating reason for the refund. + Refund: + title: Refund + type: object + description: Data model for the complex type Refund. + properties: + originalTransactionId: + $ref: '#/components/schemas/CorrelationId' + refundReason: + $ref: '#/components/schemas/RefundReason' + required: + - originalTransactionId + BalanceOfPayments: + title: BalanceOfPayments + type: string + pattern: '^[1-9]\d{2}$' + description: >- + (BopCode) The API data type + [BopCode](https://www.imf.org/external/np/sta/bopcode/) is a JSON String + of 3 characters, consisting of digits only. Negative numbers are not + allowed. A leading zero is not allowed. + example: '123' + TransactionType: + title: TransactionType + type: object + description: Data model for the complex type TransactionType. + properties: + scenario: + $ref: '#/components/schemas/TransactionScenario' + subScenario: + $ref: '#/components/schemas/TransactionSubScenario' + initiator: + $ref: '#/components/schemas/TransactionInitiator' + initiatorType: + $ref: '#/components/schemas/TransactionInitiatorType' + refundInfo: + $ref: '#/components/schemas/Refund' + balanceOfPayments: + $ref: '#/components/schemas/BalanceOfPayments' + required: + - scenario + - initiator + - initiatorType + ThirdpartyTransactionIDInitiateRequest: + title: ThirdpartyTransactionIDInitiateRequest + type: object + description: >- + The object sent in the POST `/thirdpartyTransaction/{ID}/initiate` + request. + properties: + payee: + $ref: '#/components/schemas/Party' + payer: + $ref: '#/components/schemas/PartyIdInfoTPLink' + amountType: + $ref: '#/components/schemas/AmountType' + amount: + $ref: '#/components/schemas/Money' + transactionType: + $ref: '#/components/schemas/TransactionType' + expiration: + type: string + example: '2016-05-24T08:38:08.699-04:00' + required: + - payee + - payer + - amountType + - amount + - transactionType + - expiration + ThirdpartyTransactionIDInitiateState: + title: ThirdpartyTransactionIDInitiateState + description: state of thirdparty transaction for initiate phase + type: string + enum: + - partyLookupSuccess + - authorizationReceived + - errored + ThirdpartyTransactionIDInitiateResponseError: + title: ThirdpartyTransactionIDInitateResponseError + type: object + properties: + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateState' + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + required: + - currentState + - errorInformation + DateTime: + title: DateTime + type: string + pattern: >- + ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$ + description: >- + The API data type DateTime is a JSON String in a lexical format that is + restricted by a regular expression for interoperability reasons. The + format is according to [ISO + 8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed + in a combined date, time and time zone format. A more readable version + of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are + "2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z + indicates Zulu time zone, same as UTC). + example: '2016-05-24T08:38:08.699-04:00' + ThirdpartyRequestsAuthorizationsPostRequest: + title: ThirdpartyRequestsAuthorizationsPostRequest + description: POST /thirdpartyRequests/authorizations request object. + type: object + properties: + authorizationRequestId: + $ref: '#/components/schemas/CorrelationId' + transactionRequestId: + $ref: '#/components/schemas/CorrelationId' + challenge: + type: string + description: The challenge that the PISP's client is to sign + transferAmount: + allOf: + - $ref: '#/components/schemas/Money' + description: >- + The amount that will be debited from the sending customer’s account + as a consequence of the transaction. + payeeReceiveAmount: + allOf: + - $ref: '#/components/schemas/Money' + description: >- + The amount that will be credited to the receiving customer’s + account as a consequence of the transaction. + fees: + allOf: + - $ref: '#/components/schemas/Money' + description: >- + The amount of fees that the paying customer will be charged as part + of the transaction. + payer: + allOf: + - $ref: '#/components/schemas/PartyIdInfo' + description: >- + Information about the Payer type, id, sub-type/id, FSP Id in the + proposed financial transaction. + payee: + allOf: + - $ref: '#/components/schemas/Party' + description: Information about the Payee in the proposed financial transaction. + transactionType: + $ref: '#/components/schemas/TransactionType' + expiration: + allOf: + - $ref: '#/components/schemas/DateTime' + description: >- + The time by which the transfer must be completed, set by the payee + DFSP. + extensionList: + $ref: '#/components/schemas/ExtensionList' + required: + - authorizationRequestId + - transactionRequestId + - challenge + - transferAmount + - payeeReceiveAmount + - fees + - payer + - payee + - transactionType + - expiration + additionalProperties: false + ThirdpartyTransactionIDInitiateResponseSuccess: + title: ThirdpartyTransactionIDInitateResponseSuccess + type: object + properties: + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateState' + authorization: + $ref: '#/components/schemas/ThirdpartyRequestsAuthorizationsPostRequest' + required: + - currentState + - authorization + ThirdpartyTransactionIDInitiateResponse: + oneOf: + - $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponseError' + - $ref: '#/components/schemas/ThirdpartyTransactionIDInitiateResponseSuccess' + SignedPayloadTypeGeneric: + title: SignedPayloadTypeGeneric + type: string + enum: + - GENERIC + description: Describes a challenge that has been signed with a private key + BinaryString: + type: string + pattern: '^[A-Za-z0-9-_]+[=]{0,2}$' + description: >- + The API data type BinaryString is a JSON String. The string is a + base64url encoding of a string of raw bytes, where padding (character + ‘=’) is added at the end of the data if needed to ensure that the string + is a multiple of 4 characters. The length restriction indicates the + allowed number of characters. + ThirdpartyRequestsAuthorizationsIDPutResponseGeneric: + title: ThirdpartyRequestsAuthorizationsIDPutResponseGeneric + type: object + description: >- + The object sent in the PUT /thirdpartyRequests/authorizations/{ID} + callback. + properties: + signedPayloadType: + $ref: '#/components/schemas/SignedPayloadTypeGeneric' + signedPayload: + $ref: '#/components/schemas/BinaryString' + required: + - signedPayloadType + - authenticationValue + SignedPayloadTypeFIDO: + title: SignedPayloadTypeFIDO + type: string + enum: + - FIDO + description: Describes a challenge that has been signed with FIDO Attestation flows + FIDOPublicKeyCredentialAssertion: + title: FIDOPublicKeyCredentialAssertion + type: object + description: > + An object sent in a `PUT /thirdpartyRequests/authorization/{ID}` + request. + + based mostly on: https://webauthn.guide/#authentication + + AuthenticatorAssertionResponse + properties: + id: + type: string + description: | + credential id: identifier of pair of keys, base64 encoded + https://w3c.github.io/webauthn/#ref-for-dom-credential-id + minLength: 59 + maxLength: 118 + rawId: + type: string + description: | + raw credential id: identifier of pair of keys, base64 encoded. + minLength: 59 + maxLength: 118 + response: + type: object + description: | + AuthenticatorAssertionResponse + properties: + authenticatorData: + type: string + description: | + Authenticator data object. + minLength: 49 + maxLength: 256 + clientDataJSON: + type: string + description: | + JSON string with client data. + minLength: 121 + maxLength: 512 + signature: + type: string + description: > + The signature generated by the private key associated with this + credential. + minLength: 59 + maxLength: 256 + userHandle: + type: string + description: | + This field is optionally provided by the authenticator, and + represents the user.id that was supplied during registration. + minLength: 1 + maxLength: 88 + required: + - authenticatorData + - clientDataJSON + - signature + additionalProperties: false + type: + type: string + description: 'response type, we need only the type of public-key' + enum: + - public-key + required: + - id + - rawId + - response + - type + additionalProperties: false + ThirdpartyRequestsAuthorizationsIDPutResponseFIDO: + title: ThirdpartyRequestsAuthorizationsIDPutResponseFIDO + type: object + description: >- + The object sent in the PUT /thirdpartyRequests/authorizations/{ID} + callback. + properties: + signedPayloadType: + $ref: '#/components/schemas/SignedPayloadTypeFIDO' + signedPayload: + $ref: '#/components/schemas/FIDOPublicKeyCredentialAssertion' + required: + - signedPayloadType + - signedPayload + ThirdpartyTransactionIDApproveRequest: + title: ThirdpartyTransactionIDApproveRequest + type: object + properties: + authorizationResponse: + oneOf: + - $ref: >- + #/components/schemas/ThirdpartyRequestsAuthorizationsIDPutResponseGeneric + - $ref: >- + #/components/schemas/ThirdpartyRequestsAuthorizationsIDPutResponseFIDO + required: + - authorizationResponse + ThirdpartyTransactionIDApproveState: + title: ThirdpartyTransactionIDApproveState + description: state of thirdparty transaction + type: string + enum: + - authorizationReceived + - transactionStatusReceived + - errored + ThirdpartyTransactionIDApproveResponseError: + title: ThirdpartyTransactionIDApproveResponseError + type: object + properties: + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionIDApproveState' + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + required: + - currentState + - errorInformation + TransactionRequestState: + title: TransactionRequestState + type: string + enum: + - RECEIVED + - PENDING + - ACCEPTED + - REJECTED + description: |- + Below are the allowed values for the enumeration. + - RECEIVED - Payer FSP has received the transaction from the Payee FSP. + - PENDING - Payer FSP has sent the transaction request to the Payer. + - ACCEPTED - Payer has approved the transaction. + - REJECTED - Payer has rejected the transaction. + ThirdpartyTransactionIDApproveResponseSuccess: + title: ThirdpartyTransactionIDApproveResponseSuccess + type: object + properties: + transactionStatus: + type: object + properties: + transactionId: + $ref: '#/components/schemas/CorrelationId' + transactionRequestState: + $ref: '#/components/schemas/TransactionRequestState' + required: + - transactionId + - transactionRequestState + currentState: + $ref: '#/components/schemas/ThirdpartyTransactionIDApproveState' + required: + - currentState + - transactionStatus + ThirdpartyTransactionIDApproveResponse: + oneOf: + - $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponseError' + - $ref: '#/components/schemas/ThirdpartyTransactionIDApproveResponseSuccess' + LinkingProvidersState: + title: LinkingProvidersState + description: State of GET /linking/providers request + type: string + enum: + - start + - errored + - providersLookupSuccess + LinkingProvidersResponseError: + title: LinkingProvidersResponseError + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + currentState: + $ref: '#/components/schemas/LinkingProvidersState' + required: + - errorInformation + - currentState + LinkingProvidersResponseSuccess: + title: LinkingProvidersResponseSuccess + type: object + properties: + providers: + type: array + items: + $ref: '#/components/schemas/FspId' + currentState: + $ref: '#/components/schemas/LinkingProvidersState' + required: + - providers + - currentState + LinkingProvidersResponse: + oneOf: + - $ref: '#/components/schemas/LinkingProvidersResponseError' + - $ref: '#/components/schemas/LinkingProvidersResponseSuccess' + AccountId: + title: AccountId + type: string + description: > + A long-lived unique account identifier provided by the DFSP. This MUST + NOT + + be Bank Account Number or anything that may expose a User's private bank + + account information. + pattern: '^([0-9A-Za-z_~\-\.]+[0-9A-Za-z_~\-])$' + minLength: 1 + maxLength: 1023 + Name: + title: Name + type: string + pattern: '^(?!\s*$)[\w .,''-]{1,128}$' + description: >- + The API data type Name is a JSON String, restricted by a regular + expression to avoid characters which are generally not used in a name. + + + Regular Expression - The regular expression for restricting the Name + type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a + string consisting of whitespace only, all Unicode characters are + allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,) + and space characters ( ). + + + **Note:** In some programming languages, Unicode support must be + specifically enabled. For example, if Java is used, the flag + UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters. + Account: + title: Account + type: object + description: Data model for the complex type Account. + properties: + accountNickname: + $ref: '#/components/schemas/Name' + id: + $ref: '#/components/schemas/AccountId' + currency: + $ref: '#/components/schemas/Currency' + required: + - accountNickname + - id + - currency + AccountsIDPutResponse: + title: AccountsIDPutResponse + type: object + description: 'The object sent in a `PUT /accounts/{ID}` request.' + properties: + accounts: + type: array + items: + $ref: '#/components/schemas/Account' + required: + - accounts + ConsentScopeType: + title: ConsentScopeType + type: string + enum: + - accounts.getBalance + - accounts.transfer + description: | + The scopes requested for a ConsentRequest. + - "accounts.getBalance" - Get the balance of a given account. + - "accounts.transfer" - Initiate a transfer from an account. + LinkingRequestConsentPostRequest: + title: LinkingRequestConsentPostRequest + type: object + description: The object sent in a `POST /linking/request-consent` request. + properties: + toParticipantId: + type: string + consentRequestId: + $ref: '#/components/schemas/CorrelationId' + accounts: + type: array + items: + $ref: '#/components/schemas/Account' + actions: + type: array + items: + $ref: '#/components/schemas/ConsentScopeType' + userId: + type: string + description: ID used to associate request with GET /accounts request. + callbackUri: + type: string + description: >- + The callback uri that the user will be redirected to after + completing the WEB auth channel. + required: + - toParticipantId + - consentRequestId + - accounts + - userId + - callbackUri + - actions + LinkingRequestConsentState: + title: LinkingRequestConsentState + description: State of `POST /linking/request-consent` request + type: string + enum: + - start + - errored + - success + - OTPAuthenticationChannelResponseRecieved + - WebAuthenticationChannelResponseRecieved + LinkingRequestConsentResponseError: + title: LinkingRequestConsentResponseError + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + currentState: + $ref: '#/components/schemas/LinkingRequestConsentState' + required: + - errorInformation + - currentState + Scope: + title: Scope + type: object + description: Scope + Account Identifier mapping for a Consent. + example: | + { + accountId: "dfsp.username.5678", + actions: [ "accounts.transfer", "accounts.getBalance" ] + } + properties: + accountId: + $ref: '#/components/schemas/AccountId' + actions: + type: array + items: + $ref: '#/components/schemas/ConsentScopeType' + required: + - accountId + - actions + ConsentRequestChannelTypeWeb: + title: ConsentRequestChannelTypeWeb + type: string + enum: + - WEB + description: | + The web auth channel being used for PUT consentRequest/{ID} request. + ConsentRequestsIDPutResponseWeb: + title: ConsentRequestsIDPutResponseWeb + type: object + description: > + The object sent in a `PUT /consentRequests/{ID}` request. + + + Schema used in the request consent phase of the account linking web + flow, + + the result is the PISP being instructed on a specific URL where this + + supposed user should be redirected. This URL should be a place where + + the user can prove their identity (e.g., by logging in). + properties: + consentRequestId: + $ref: '#/components/schemas/CorrelationId' + scopes: + type: array + items: + $ref: '#/components/schemas/Scope' + authChannels: + type: array + items: + $ref: '#/components/schemas/ConsentRequestChannelTypeWeb' + callbackUri: + type: string + description: >- + The callback uri that the user will be redirected to after + completing the WEB auth channel. + authUri: + type: string + description: >- + The callback uri that the pisp app redirects to for user to complete + their login. + required: + - consentRequestId + - scopes + - authChannels + - callbackUri + - authUri + additionalProperties: false + ConsentRequestChannelTypeOTP: + title: ConsentRequestChannelTypeOTP + type: string + enum: + - OTP + description: | + The OTP auth channel being used for PUT consentRequest/{ID} request. + ConsentRequestsIDPutResponseOTP: + title: ConsentRequestsIDPutResponseOTP + type: object + description: > + The object sent in a `PUT /consentRequests/{ID}` request. + + + Schema used in the request consent phase of the account linking OTP/SMS + flow. + properties: + consentRequestId: + $ref: '#/components/schemas/CorrelationId' + scopes: + type: array + items: + $ref: '#/components/schemas/Scope' + authChannels: + type: array + items: + $ref: '#/components/schemas/ConsentRequestChannelTypeOTP' + callbackUri: + type: string + description: >- + The callback uri that the user will be redirected to after + completing the WEB auth channel. + required: + - consentRequestId + - scopes + - authChannels + - callbackUri + additionalProperties: false + LinkingRequestConsentResponseSuccess: + title: LinkingRequestConsentResponseSuccess + type: object + properties: + channelResponse: + oneOf: + - $ref: '#/components/schemas/ConsentRequestsIDPutResponseWeb' + - $ref: '#/components/schemas/ConsentRequestsIDPutResponseOTP' + currentState: + $ref: '#/components/schemas/LinkingRequestConsentState' + required: + - channelResponse + - currentState + LinkingRequestConsentResponse: + oneOf: + - $ref: '#/components/schemas/LinkingRequestConsentResponseError' + - $ref: '#/components/schemas/LinkingRequestConsentResponseSuccess' + LinkingRequestConsentIDAuthenticateRequest: + title: LinkingRequestConsentIDAuthenticateRequest + description: 'PATCH /linking/request-consent/{ID}/authenticate Request object' + type: object + properties: + authToken: + type: string + required: + - authToken + additionalProperties: false + LinkingRequestConsentIDAuthenticateState: + title: LinkingRequestConsentIDAuthenticateState + description: State of PATCH linking request consent Authenticate + type: string + enum: + - errored + - consentReceivedAwaitingCredential + LinkingRequestConsentIDAuthenticateResponseError: + title: LinkingRequestConsentIDAuthenticateResponseError + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + currentState: + $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateState' + required: + - errorInformation + - currentState + ConsentsPostRequestPISP: + title: ConsentPostRequestPISP + type: object + description: >- + The object sent in a `POST /consents` request to PISP by DFSP to ask for + delivering the credential object. + properties: + consentId: + allOf: + - $ref: '#/components/schemas/CorrelationId' + description: | + Common ID between the PISP and FSP for the Consent object + decided by the DFSP who creates the Consent + This field is REQUIRED for POST /consent. + consentRequestId: + allOf: + - $ref: '#/components/schemas/CorrelationId' + description: | + The id of the ConsentRequest that was used to initiate the + creation of this Consent. + scopes: + type: array + items: + $ref: '#/components/schemas/Scope' + required: + - consentId + - scopes + - consentRequestId + LinkingRequestConsentIDAuthenticateResponseSuccess: + title: LinkingRequestConsentIDAuthenticateResponse + type: object + properties: + consent: + $ref: '#/components/schemas/ConsentsPostRequestPISP' + challenge: + type: string + currentState: + $ref: '#/components/schemas/LinkingRequestConsentIDAuthenticateState' + required: + - consent + - challenge + - currentState + LinkingRequestConsentIDAuthenticateResponse: + oneOf: + - $ref: >- + #/components/schemas/LinkingRequestConsentIDAuthenticateResponseError + - $ref: >- + #/components/schemas/LinkingRequestConsentIDAuthenticateResponseSuccess + FIDOPublicKeyCredentialAttestation: + title: FIDOPublicKeyCredentialAttestation + type: object + description: > + An object sent in a `PUT /consents/{ID}` request. + + Based on https://w3c.github.io/webauthn/#iface-pkcredential + + and mostly on: https://webauthn.guide/#registration + + AuthenticatorAttestationResponse + + https://w3c.github.io/webauthn/#dom-authenticatorattestationresponse-attestationobject + properties: + id: + type: string + description: | + credential id: identifier of pair of keys, base64 encoded + https://w3c.github.io/webauthn/#ref-for-dom-credential-id + minLength: 59 + maxLength: 118 + rawId: + type: string + description: | + raw credential id: identifier of pair of keys, base64 encoded + minLength: 59 + maxLength: 118 + response: + type: object + description: | + AuthenticatorAttestationResponse + properties: + clientDataJSON: + type: string + description: | + JSON string with client data + minLength: 121 + maxLength: 512 + attestationObject: + type: string + description: | + CBOR.encoded attestation object + minLength: 306 + maxLength: 2048 + required: + - clientDataJSON + - attestationObject + additionalProperties: false + type: + type: string + description: 'response type, we need only the type of public-key' + enum: + - public-key + required: + - id + - rawId + - response + - type + additionalProperties: false + LinkingRequestConsentIDPassCredentialRequest: + title: LinkingRequestConsentIDPassCredentialRequest + description: 'POST /linking/request-consent/{ID}/pass-credential request object' + type: object + properties: + credential: + type: object + properties: + payload: + $ref: '#/components/schemas/FIDOPublicKeyCredentialAttestation' + required: + - payload + required: + - credential + additionalProperties: false + LinkingRequestConsentIDPassCredentialState: + title: LinkingRequestConsentIDPassCredentialState + description: State of post linking request consent pass credential + type: string + enum: + - errored + - accountsLinked + LinkingRequestConsentIDPassCredentialResponseError: + title: LinkingRequestConsentIDPassCredentialResponseError + type: object + properties: + errorInformation: + $ref: '#/components/schemas/ErrorInformation' + currentState: + $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialState' + required: + - errorInformation + - currentState + ConsentStatusTypeVerified: + title: ConsentStatusType + type: string + enum: + - VERIFIED + description: | + The status of the Consent. + - "VERIFIED" - The Consent is valid and verified. + LinkingRequestConsentIDPassCredentialResponseSuccess: + title: LinkingRequestConsentIDPassCredentialResponseSuccess + type: object + properties: + credential: + type: object + properties: + status: + $ref: '#/components/schemas/ConsentStatusTypeVerified' + required: + - status + currentState: + $ref: '#/components/schemas/LinkingRequestConsentIDPassCredentialState' + required: + - credential + - currentState + LinkingRequestConsentIDPassCredentialResponse: + oneOf: + - $ref: >- + #/components/schemas/LinkingRequestConsentIDPassCredentialResponseError + - $ref: >- + #/components/schemas/LinkingRequestConsentIDPassCredentialResponseSuccess + parameters: + ID: + name: ID + in: path + required: true + schema: + type: string + description: The identifier value. diff --git a/spec_files/system_config.json b/spec_files/system_config.json index 4f6fb46a..38738818 100644 --- a/spec_files/system_config.json +++ b/spec_files/system_config.json @@ -117,6 +117,11 @@ "version": "2.0", "folderPath": "fx-api_2.0", "asynchronous": true + }, + { + "type": "thirdparty_sdk_outbound", + "version": "0.1", + "folderPath": "thirdparty_sdk_outbound_0.1" } ] } \ No newline at end of file