diff --git a/onboarding.md b/onboarding.md index e6e52f7f..cc298f58 100644 --- a/onboarding.md +++ b/onboarding.md @@ -13,6 +13,7 @@ In this document we'll walk through the setup a local Mojaloop Quoting Service a - [Software List](#software-list) - [Setting up a local quote environment](#setting-up-a-local-quote-environment) - [Initialising the database and starting the service](#initialising-the-database-and-starting-the-service) +- [Health Check](#health-check) - [Run Tests](#run-tests) ## Software List @@ -51,6 +52,17 @@ Run the below from the root quoting-service in your terminal session to start th npm start ``` +## Health check + +To verify the database is connected once the server started, run this from your browser; +``` +http://localserver:3002/health +``` + +If all is well, the following responce will be received' + +**Quoting service Database connection is healthy!!!** + ## Run Tests Please refer to Central-Ledger repository to setup Postman. diff --git a/package-lock.json b/package-lock.json index 3f8dd1da..ab4b0093 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "quoting-service", - "version": "6.2.0", + "version": "6.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -24,28 +24,26 @@ "js-tokens": "^4.0.0" } }, + "@babel/polyfill": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + } + }, + "@types/bluebird": { + "version": "3.5.26", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.26.tgz", + "integrity": "sha512-aj2mrBLn5ky0GmAg6IPXrQjnN0iB/ulozuJ+oZdrHRAzRbXjGmu4UXsNCjFvPbSaaPZmniocdOzsM392qLOlmQ==" + }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", "dev": true }, - "accept": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "acorn": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", @@ -70,12 +68,6 @@ "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", - "dev": true - }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -83,21 +75,6 @@ "dev": true, "optional": true }, - "ammo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ammo/-/ammo-3.0.3.tgz", - "integrity": "sha512-vo76VJ44MkUBZL/BzpGXaKzMfroF4ZR6+haRuw9p+eSWfoNaH2AxVc8xmiEPC08jhzJSeM6w7/iMUGet8b4oBQ==", - "requires": { - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -114,6 +91,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -161,6 +139,12 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "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 + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -181,30 +165,6 @@ "is-buffer": "^1.1.5" } }, - "b64": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/b64/-/b64-4.1.2.tgz", - "integrity": "sha512-+GUspBxlH3CJaxMUGUE1EBoWM6RKgWiYwUDal0qdf8m3ArnXNN1KzKVo5HOnE/FSq4HHyWf3TlHLsZI8PKQgrQ==", - "requires": { - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -261,11 +221,6 @@ } } }, - "big-time": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/big-time/-/big-time-2.0.1.tgz", - "integrity": "sha1-aMffjcMPl+lT8lpnp2rJcTwWyd4=" - }, "bignumber.js": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", @@ -277,34 +232,13 @@ "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" }, "boom": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-7.1.1.tgz", - "integrity": "sha512-qwEARHTliqgEQiVkzKkkbLt3q0vRPIW60VRZ8zRnbjsm7INkPe9NxfAYDDYLZOdhxyUHa1gIe639Cx7t6RH/4A==", - "requires": { - "hoek": "5.x.x" - } - }, - "bounce": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bounce/-/bounce-1.2.3.tgz", - "integrity": "sha512-3G7B8CyBnip5EahCZJjnvQ1HLyArC6P5e+xcolo13BVI9ogFaDOsNMAE7FIWliHtIkYI8/nTRCvCY9tZa3Mu4g==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", "requires": { - "boom": "7.x.x", "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } } }, - "bourne": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.2.tgz", - "integrity": "sha512-b2dgVkTZhkQirNMohgC00rWfpVqEi9y5tKM1k3JvoNx05ODtfQoPPd4js9CYFQoY0IM8LAmnJulEuWv74zjUOg==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -363,95 +297,22 @@ "unset-value": "^1.0.0" } }, - "call": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/call/-/call-5.0.3.tgz", - "integrity": "sha512-eX16KHiAYXugbFu6VifstSdwH6aMuWWb4s0qvpq1nR1b+Sf+u68jjttg8ixDBEldPqBi30bDU35OJQWKeTLKxg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "caller": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caller/-/caller-1.0.1.tgz", - "integrity": "sha1-uFGGD3Dhlds9J3OVqhp+I+ow7PU=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "catbox": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/catbox/-/catbox-10.0.6.tgz", - "integrity": "sha512-gQWCnF/jbHcfwGbQ4FQxyRiAwLRipqWTTXjpq7rTqqdcsnZosFa0L3LsCZcPTF33QIeMMkS7QmFBHt6QdzGPvg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x", - "joi": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, - "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - } - } - }, - "catbox-memory": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-3.1.4.tgz", - "integrity": "sha512-1tDnll066au0HXBSDHS/YQ34MQ2omBsmnA9g/jseyq/M3m7UPrajVtPDZK/rXgikSC1dfjo9Pa+kQ1qcyG2d3g==", - "requires": { - "big-time": "2.x.x", - "boom": "7.x.x", - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -470,12 +331,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -517,11 +372,6 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -535,6 +385,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -542,7 +393,13 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.0.7.tgz", + "integrity": "sha512-KeK4klsvAgdODAjFPm6QLzvStizJqlxMBtVo4KQMCgk5tt/tf9rAzxmxLHNRynJg3tJjkKGKbHx3j4HLox27Lw==" }, "commander": { "version": "2.20.0", @@ -560,23 +417,15 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "content": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/content/-/content-4.0.6.tgz", - "integrity": "sha512-lR9ND3dXiMdmsE84K6l02rMdgiBVmtYWu1Vr/gfSGHcIcznBj2QxmSdUgDuNFOA+G9yrb1IIWkZ7aKtB6hDGyA==", - "requires": { - "boom": "7.x.x" - } - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.8.tgz", + "integrity": "sha512-RWlREFU74TEkdXzyl1bka66O3kYp8jeTXrvJZDzVVMH8AiHUSOFpL1yfhQJ+wHocAm1m+4971W1PPzfLuCv1vg==" }, "core-util-is": { "version": "1.0.2", @@ -596,13 +445,10 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.3.tgz", - "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==", - "requires": { - "boom": "7.x.x" - } + "curriable": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/curriable/-/curriable-1.2.5.tgz", + "integrity": "sha512-hQwrkCn8DNiCw5CG8OS0td2wfpCDtxo1dmrVYxCDWUBHQPkpAvN9RqBVbmC64oSQaBqPQD2SOCXcTWH1zXe2mA==" }, "curry2": { "version": "1.0.3", @@ -700,9 +546,9 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -721,6 +567,12 @@ "resolved": "https://registry.npmjs.org/dotsplit.js/-/dotsplit.js-1.1.0.tgz", "integrity": "sha1-JaI56r6SKpH/pdKhctbJ+4JFHgI=" }, + "drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "dev": true + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -732,6 +584,12 @@ "stream-shift": "^1.0.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -741,19 +599,20 @@ } }, "enjoi": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/enjoi/-/enjoi-3.2.5.tgz", - "integrity": "sha512-Y9KxgEzohrgbAftn2mX0dmoVBhlt9O716q/bU1X2a99gjibOl+4raKnEaiXTMWIP/I8fkmhC755PjxqF5SOD2w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enjoi/-/enjoi-4.1.1.tgz", + "integrity": "sha512-JTM4zGxiH0SqOZeRm4HcrdGgJN/4vJVNfJWchRbecFbH69S2uka2na5FfnTnwoad3BDRFwEVS5PJO+GtoWMG0A==", "requires": { - "hoek": "^5.0.3", - "joi": "^13.3.0" + "hoek": "^5.0.4" + }, + "dependencies": { + "hoek": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", + "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==" + } } }, - "entries": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/entries/-/entries-1.0.1.tgz", - "integrity": "sha1-kpcIhlJR/5Jr1Du9nJrYNkj0FB8=" - }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -788,7 +647,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.8.1", @@ -828,48 +688,46 @@ } }, "eslint": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.1.tgz", - "integrity": "sha512-hgrDtGWz368b7Wqf+v1Z69O3ZebNR0+GA7PtDdbmuz4rInFVUV9uw7whjZEiWyLzCjVb5Rs5WRN1TAS6eo7AYA==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", + "ajv": "^6.9.1", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", + "espree": "^5.0.1", "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.12.0", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", + "regexpp": "^2.0.1", "semver": "^5.5.1", "strip-ansi": "^4.0.0", "strip-json-comments": "^2.0.1", - "table": "^4.0.3", + "table": "^5.2.3", "text-table": "^0.2.0" }, "dependencies": { @@ -907,12 +765,12 @@ "dev": true }, "espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "dev": true, "requires": { - "acorn": "^6.0.2", + "acorn": "^6.0.7", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" } @@ -952,6 +810,11 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1127,6 +990,11 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" }, + "fast-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-stringify/-/fast-stringify-1.1.1.tgz", + "integrity": "sha512-2oYQip2IKpGNOvVNhv5w6r3pI9BRSgoKZNsBnKCDXlc7envYhT2kYSejz11UZHVstGVCrUb6TWeENa4H1W5hwg==" + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -1137,47 +1005,12 @@ } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "fileset": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", - "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", + "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==", "dev": true, "requires": { - "glob": "5.x", - "minimatch": "2.x" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - } - } + "flat-cache": "^2.0.1" } }, "fill-range": { @@ -1202,12 +1035,12 @@ } }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "requires": { "detect-file": "^1.0.0", - "is-glob": "^3.1.0", + "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" } @@ -1230,17 +1063,22 @@ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" } }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, "follow-redirects": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", @@ -1307,6 +1145,11 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "getopts": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.3.tgz", + "integrity": "sha512-viEcb8TpgeG05+Nqo5EzZ8QR0hxdyrYDp6ZSTZqe2M/h53Bk036NmqG38Vhf5RGirC/Of9Xql+v66B2gp256SQ==" + }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -1350,50 +1193,25 @@ "dev": true }, "good": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/good/-/good-8.1.1.tgz", - "integrity": "sha512-iq6cmWjULCgiCSlSdt263G8vdQxaymi7R6kmS/lEf5nNsKv3StPGtZcTzHn2qzkk0b4hZt/y9sFFZrmF2sSm7w==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/good/-/good-8.1.2.tgz", + "integrity": "sha512-yQ/OE+b8pY+Uc79zrv7PpzWSORI+scyeItIgkOx6PhYKkdnwhtXPGCOhZVv5rbcuVrLeh73HcjkwcOQbYMTJkw==", "requires": { - "hoek": "5.x.x", - "joi": "13.x.x", + "hoek": "6.x.x", + "joi": "14.x.x", "oppsy": "2.x.x", "pumpify": "1.3.x" } }, "good-console": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/good-console/-/good-console-7.1.0.tgz", - "integrity": "sha1-68+UjXrbiJgUW9x28vfN1kZBtKA=", - "requires": { - "hoek": "4.x.x", - "joi": "12.x.x", - "json-stringify-safe": "5.0.x", - "moment": "2.20.x" - }, - "dependencies": { - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, - "joi": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-12.0.0.tgz", - "integrity": "sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ==", - "requires": { - "hoek": "4.x.x", - "isemail": "3.x.x", - "topo": "2.x.x" - } - }, - "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "requires": { - "hoek": "4.x.x" - } - } + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/good-console/-/good-console-8.0.0.tgz", + "integrity": "sha512-+TIZjkwZhzaeqVQqLLVyMjbuwlBHQ9N4o1cp5VwVo9X68ilvqV0fVIv/ftRiTER5fPieWyyXymL4ZXWH8APtbg==", + "requires": { + "hoek": "6.x.x", + "joi": "14.x.x", + "json-stringify-safe": "5.x.x", + "moment": "2.x.x" } }, "good-squeeze": { @@ -1412,12 +1230,6 @@ } } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, "handlebars": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", @@ -1439,9 +1251,9 @@ } }, "hapi": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/hapi/-/hapi-17.0.0.tgz", - "integrity": "sha512-W6aE58tfck8pi7NBBBdr7nZP/t4RMhSqXDOHh9KoRDpqwok9VqCm/YL6GKKRxGKZtmsJDSWO40jacyLHmqG6kQ==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/hapi/-/hapi-18.1.0.tgz", + "integrity": "sha512-nSU1VLyTAgp7P5gy47QzJIP2JAb+wOFvJIV3gnL0lFj/mD+HuTXhyUsDYXjF/dhADMVXVEz31z6SUHBJhtsvGA==", "requires": { "accept": "3.x.x", "ammo": "3.x.x", @@ -1449,32 +1261,297 @@ "bounce": "1.x.x", "call": "5.x.x", "catbox": "10.x.x", - "catbox-memory": "3.x.x", + "catbox-memory": "4.x.x", "heavy": "6.x.x", - "hoek": "5.x.x", - "joi": "13.x.x", + "hoek": "6.x.x", + "joi": "14.x.x", "mimos": "4.x.x", "podium": "3.x.x", "shot": "4.x.x", + "somever": "2.x.x", "statehood": "6.x.x", "subtext": "6.x.x", "teamwork": "3.x.x", "topo": "3.x.x" + }, + "dependencies": { + "accept": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "ammo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ammo/-/ammo-3.0.3.tgz", + "integrity": "sha512-vo76VJ44MkUBZL/BzpGXaKzMfroF4ZR6+haRuw9p+eSWfoNaH2AxVc8xmiEPC08jhzJSeM6w7/iMUGet8b4oBQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "b64": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/b64/-/b64-4.1.2.tgz", + "integrity": "sha512-+GUspBxlH3CJaxMUGUE1EBoWM6RKgWiYwUDal0qdf8m3ArnXNN1KzKVo5HOnE/FSq4HHyWf3TlHLsZI8PKQgrQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "boom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", + "requires": { + "hoek": "6.x.x" + } + }, + "bounce": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bounce/-/bounce-1.2.3.tgz", + "integrity": "sha512-3G7B8CyBnip5EahCZJjnvQ1HLyArC6P5e+xcolo13BVI9ogFaDOsNMAE7FIWliHtIkYI8/nTRCvCY9tZa3Mu4g==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "bourne": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bourne/-/bourne-1.1.1.tgz", + "integrity": "sha512-Ou0l3W8+n1FuTOoIfIrCk9oF9WVWc+9fKoAl67XQr9Ws0z7LgILRZ7qtc9xdT4BveSKtnYXfKPgn8pFAqeQRew==" + }, + "call": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/call/-/call-5.0.3.tgz", + "integrity": "sha512-eX16KHiAYXugbFu6VifstSdwH6aMuWWb4s0qvpq1nR1b+Sf+u68jjttg8ixDBEldPqBi30bDU35OJQWKeTLKxg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "catbox": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/catbox/-/catbox-10.0.6.tgz", + "integrity": "sha512-gQWCnF/jbHcfwGbQ4FQxyRiAwLRipqWTTXjpq7rTqqdcsnZosFa0L3LsCZcPTF33QIeMMkS7QmFBHt6QdzGPvg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x", + "joi": "14.x.x" + } + }, + "catbox-memory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-4.0.1.tgz", + "integrity": "sha512-ZmqNiLsYCIu9qvBJ/MQbznDV2bFH5gFiH67TgIJgSSffJFtTXArT+MM3AvJQlby9NSkLHOX4eH/uuUqnch/Ldw==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + }, + "content": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/content/-/content-4.0.6.tgz", + "integrity": "sha512-lR9ND3dXiMdmsE84K6l02rMdgiBVmtYWu1Vr/gfSGHcIcznBj2QxmSdUgDuNFOA+G9yrb1IIWkZ7aKtB6hDGyA==", + "requires": { + "boom": "7.x.x" + } + }, + "cryptiles": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.3.tgz", + "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==", + "requires": { + "boom": "7.x.x" + } + }, + "heavy": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/heavy/-/heavy-6.1.2.tgz", + "integrity": "sha512-cJp884bqhiebNcEHydW0g6V1MUGYOXRPw9c7MFiHQnuGxtbWuSZpsbojwb2kxb3AA1/Rfs8CNiV9MMOF8pFRDg==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x", + "joi": "14.x.x" + } + }, + "hoek": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.2.tgz", + "integrity": "sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==" + }, + "iron": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/iron/-/iron-5.0.6.tgz", + "integrity": "sha512-zYUMOSkEXGBdwlV/AXF9zJC0aLuTJUKHkGeYS5I2g225M5i6SrxQyGJGhPgOR8BK1omL6N5i6TcwfsXbP8/Exw==", + "requires": { + "b64": "4.x.x", + "boom": "7.x.x", + "cryptiles": "4.x.x", + "hoek": "6.x.x" + } + }, + "joi": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", + "requires": { + "hoek": "6.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + } + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mimos": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/mimos/-/mimos-4.0.2.tgz", + "integrity": "sha512-5XBsDqBqzSN88XPPH/TFpOalWOjHJM5Z2d3AMx/30iq+qXvYKd/8MPhqBwZDOLtoaIWInR3nLzMQcxfGK9djXA==", + "requires": { + "hoek": "6.x.x", + "mime-db": "1.x.x" + } + }, + "nigel": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nigel/-/nigel-3.0.4.tgz", + "integrity": "sha512-3SZCCS/duVDGxFpTROHEieC+itDo4UqL9JNUyQJv3rljudQbK6aqus5B4470OxhESPJLN93Qqxg16rH7DUjbfQ==", + "requires": { + "hoek": "6.x.x", + "vise": "3.x.x" + } + }, + "pez": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pez/-/pez-4.0.5.tgz", + "integrity": "sha512-HvL8uiFIlkXbx/qw4B8jKDCWzo7Pnnd65Uvanf9OOCtb20MRcb9gtTVBf9NCnhETif1/nzbDHIjAWC/sUp7LIQ==", + "requires": { + "b64": "4.x.x", + "boom": "7.x.x", + "content": "4.x.x", + "hoek": "6.x.x", + "nigel": "3.x.x" + } + }, + "podium": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/podium/-/podium-3.2.0.tgz", + "integrity": "sha512-rbwvxwVkI6gRRlxZQ1zUeafrpGxZ7QPHIheinehAvGATvGIPfWRkaTeWedc5P4YjXJXEV8ZbBxPtglNylF9hjw==", + "requires": { + "hoek": "6.x.x", + "joi": "14.x.x" + } + }, + "shot": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/shot/-/shot-4.0.7.tgz", + "integrity": "sha512-RKaKAGKxJ11EjJl0cf2fYVSsd4KB5Cncb9J0v7w+0iIaXpxNqFWTYNDNhBX7f0XSyDrjOH9a4OWZ9Gp/ZML+ew==", + "requires": { + "hoek": "6.x.x", + "joi": "14.x.x" + } + }, + "somever": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/somever/-/somever-2.0.0.tgz", + "integrity": "sha512-9JaIPP+HxwYGqCDqqK3tRaTqdtQHoK6Qy3IrXhIt2q5x8fs8RcfU7BMWlFTCOgFazK8p88zIv1tHQXvAwtXMyw==", + "requires": { + "bounce": "1.x.x", + "hoek": "6.x.x" + } + }, + "statehood": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/statehood/-/statehood-6.0.9.tgz", + "integrity": "sha512-jbFg1+MYEqfC7ABAoWZoeF4cQUtp3LUvMDUGExL76cMmleBHG7I6xlZFsE8hRi7nEySIvutHmVlLmBe9+2R5LQ==", + "requires": { + "boom": "7.x.x", + "bounce": "1.x.x", + "bourne": "1.x.x", + "cryptiles": "4.x.x", + "hoek": "6.x.x", + "iron": "5.x.x", + "joi": "14.x.x" + } + }, + "subtext": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/subtext/-/subtext-6.0.12.tgz", + "integrity": "sha512-yT1wCDWVgqvL9BIkWzWqgj5spUSYo/Enu09iUV8t2ZvHcr2tKGTGg2kc9tUpVEsdhp1ihsZeTAiDqh0TQciTPQ==", + "requires": { + "boom": "7.x.x", + "bourne": "1.x.x", + "content": "4.x.x", + "hoek": "6.x.x", + "pez": "4.x.x", + "wreck": "14.x.x" + } + }, + "teamwork": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/teamwork/-/teamwork-3.0.3.tgz", + "integrity": "sha512-OCB56z+G70iA1A1OFoT+51TPzfcgN0ks75uN3yhxA+EU66WTz2BevNDK4YzMqfaL5tuAvxy4iFUn35/u8pxMaQ==" + }, + "topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "vise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vise/-/vise-3.0.2.tgz", + "integrity": "sha512-X52VtdRQbSBXdjcazRiY3eRgV3vTQ0B+7Wh8uC9cVv7lKfML5m9+9NHlbcgCY0R9EAqD1v/v7o9mhGh2A3ANFg==", + "requires": { + "hoek": "6.x.x" + } + }, + "wreck": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-14.1.3.tgz", + "integrity": "sha512-hb/BUtjX3ObbwO3slCOLCenQ4EP8e+n8j6FmTne3VhEFp5XV1faSJojiyxVSvw34vgdeTG5baLTl4NmjwokLlw==", + "requires": { + "boom": "7.x.x", + "hoek": "6.x.x" + } + } } }, "hapi-openapi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hapi-openapi/-/hapi-openapi-1.0.0.tgz", - "integrity": "sha512-TyT1de1y1cQce7i+V9WIQma5Q6RhkHfHYcxdrrh2qfcMLQF8d7eAyLtGg+XpUhtXJSdzHvG7iXZzowoXhqyx5g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/hapi-openapi/-/hapi-openapi-1.2.2.tgz", + "integrity": "sha512-OALzlVHU3lPhuA/+ttCsgxi3oGvZSUfD97tW/bK9mooJ1J9QsUTk2OrfhOTbv2jlUEO6mOe/vlMQKFvVMUbmaw==", "requires": { "dot-prop": "^4.2.0", - "enjoi": "^3.1.0", - "entries": "^1.0.1", - "hoek": "^5.0.2", - "joi": "^13.0.2", - "js-yaml": "^3.10.0", - "merge-object-files": "^1.0.3", - "swagger-parser": "^4.0.0" + "enjoi": "^4.0.0", + "hoek": "^5.0.3", + "joi": "^13.6.0", + "js-yaml": "^3.11.0", + "merge-object-files": "^2.0.0", + "swagger-parser": "^4.1.0" + }, + "dependencies": { + "hoek": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", + "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==" + }, + "joi": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", + "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", + "requires": { + "hoek": "5.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + } + } } }, "has": { @@ -1489,7 +1566,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.0", @@ -1512,51 +1590,34 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "heavy": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/heavy/-/heavy-6.1.2.tgz", - "integrity": "sha512-cJp884bqhiebNcEHydW0g6V1MUGYOXRPw9c7MFiHQnuGxtbWuSZpsbojwb2kxb3AA1/Rfs8CNiV9MMOF8pFRDg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x", - "joi": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, - "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" + "is-buffer": "^1.1.5" } } } }, + "hash-it": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/hash-it/-/hash-it-4.0.4.tgz", + "integrity": "sha512-LC8xgrdjR3iW2hs7Vb18FFDIyv+hZHFAwJM11SKLwwI4LdoniT+ZmrHk7b6vYjoo7KPFPcGZ/8u2XybBWzWtsw==", + "requires": { + "curriable": "^1.1.0", + "fast-stringify": "^1.1.1", + "json-prune": "^1.1.0" + } + }, "hoek": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", - "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==" + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" }, "homedir-polyfill": { "version": "1.0.3", @@ -1581,6 +1642,16 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1634,17 +1705,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1661,24 +1721,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" }, - "iron": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/iron/-/iron-5.0.6.tgz", - "integrity": "sha512-zYUMOSkEXGBdwlV/AXF9zJC0aLuTJUKHkGeYS5I2g225M5i6SrxQyGJGhPgOR8BK1omL6N5i6TcwfsXbP8/Exw==", - "requires": { - "b64": "4.x.x", - "boom": "7.x.x", - "cryptiles": "4.x.x", - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -1775,11 +1817,11 @@ "dev": true }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-number": { @@ -1836,12 +1878,6 @@ "is-unc-path": "^1.0.0" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-symbol": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", @@ -1888,16 +1924,16 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "istanbul": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.3.tgz", - "integrity": "sha1-W3FO4K5JOsXvIEuZ84crzu9z1To=", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { "abbrev": "1.0.x", "async": "1.x", "escodegen": "1.8.x", "esprima": "2.7.x", - "fileset": "0.2.x", + "glob": "^5.0.15", "handlebars": "^4.0.1", "js-yaml": "3.x", "mkdirp": "0.5.x", @@ -1915,6 +1951,19 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -1939,11 +1988,11 @@ } }, "joi": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", - "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", "requires": { - "hoek": "5.x.x", + "hoek": "6.x.x", "isemail": "3.x.x", "topo": "3.x.x" } @@ -1963,15 +2012,20 @@ "esprima": "^4.0.0" } }, + "json-prune": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/json-prune/-/json-prune-1.1.0.tgz", + "integrity": "sha1-I+L60QiTKyVQUOPxpwUAwrSqMMc=" + }, "json-rules-engine": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/json-rules-engine/-/json-rules-engine-2.3.0.tgz", - "integrity": "sha512-pX3sutCVTqzCfmj91rqg6CYwU3BPts5QR59pl9yuoBmUDN1jq82dHFL9QUjS0fT97uCTx1+U6V33lYqK8O8uUw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-rules-engine/-/json-rules-engine-3.0.1.tgz", + "integrity": "sha512-6Sfxonwl3UjMUWkX+WbXJGmS6utzBYlwvfQl+JcTRdHVCr2oog1SiIxKY3tHu9o6/DmNx/kJXyd7BdTLeY17hw==", "requires": { - "clone": "^2.1.1", - "debug": "^3.1.0", + "clone": "^2.1.2", + "events": "^3.0.0", + "hash-it": "^4.0.4", "lodash.isobjectlike": "^4.0.0", - "object-hash": "^1.2.0", "selectn": "^1.1.2" } }, @@ -2009,40 +2063,36 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "knex": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.15.2.tgz", - "integrity": "sha1-YFm4dIlgX0zIdZmm0qnSZXCek0A=", - "requires": { - "babel-runtime": "^6.26.0", - "bluebird": "^3.5.1", - "chalk": "2.3.2", - "commander": "^2.16.0", - "debug": "3.1.0", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.16.5.tgz", + "integrity": "sha512-1RVxMU8zGOBqgmXlAvs8vohg9MD14iiRZZPe0IeQXd554n4xxPmoMkbH4hlFeqfM6eOdFE3AVqVSncL3YuocqA==", + "requires": { + "@babel/polyfill": "^7.4.3", + "@types/bluebird": "^3.5.26", + "bluebird": "^3.5.4", + "colorette": "1.0.7", + "commander": "^2.20.0", + "debug": "4.1.1", + "getopts": "2.2.3", "inherits": "~2.0.3", - "interpret": "^1.1.0", - "liftoff": "2.5.0", - "lodash": "^4.17.10", - "minimist": "1.2.0", + "interpret": "^1.2.0", + "liftoff": "3.1.0", + "lodash": "^4.17.11", "mkdirp": "^0.5.1", "pg-connection-string": "2.0.0", - "tarn": "^1.1.4", + "tarn": "^1.1.5", "tildify": "1.2.0", "uuid": "^3.3.2", - "v8flags": "^3.1.1" + "v8flags": "^3.1.2" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -2057,12 +2107,12 @@ } }, "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", "requires": { "extend": "^3.0.0", - "findup-sync": "^2.0.0", + "findup-sync": "^3.0.0", "fined": "^1.0.1", "flagged-respawn": "^1.0.0", "is-plain-object": "^2.0.4", @@ -2118,14 +2168,9 @@ "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" }, "merge-object-files": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-object-files/-/merge-object-files-1.0.3.tgz", - "integrity": "sha1-kwix+s/woGb+lyKTzBUyhQCogmw=", - "requires": { - "caller": "^1.0.1", - "co": "^4.6.0", - "entries": "^1.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-object-files/-/merge-object-files-2.0.0.tgz", + "integrity": "sha512-3PqpQPQ9x8ONbUB30TnQw6+giAynlr7zPuGX0RCTHp/oxG0R0A6+WIFH7soFLoZnIKomA7thQrZ+oYFRNzzTww==" }, "micromatch": { "version": "3.1.10", @@ -2147,33 +2192,12 @@ "to-regex": "^3.0.2" } }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, - "mimos": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/mimos/-/mimos-4.0.2.tgz", - "integrity": "sha512-5XBsDqBqzSN88XPPH/TFpOalWOjHJM5Z2d3AMx/30iq+qXvYKd/8MPhqBwZDOLtoaIWInR3nLzMQcxfGK9djXA==", - "requires": { - "hoek": "6.x.x", - "mime-db": "1.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2223,9 +2247,9 @@ } }, "moment": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", - "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "ms": { "version": "2.1.1", @@ -2285,26 +2309,10 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "nigel": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nigel/-/nigel-3.0.4.tgz", - "integrity": "sha512-3SZCCS/duVDGxFpTROHEieC+itDo4UqL9JNUyQJv3rljudQbK6aqus5B4470OxhESPJLN93Qqxg16rH7DUjbfQ==", - "requires": { - "hoek": "6.x.x", - "vise": "3.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "node-fetch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz", - "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "nopt": { "version": "3.0.6", @@ -2315,12 +2323,6 @@ "abbrev": "1" } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -2349,11 +2351,6 @@ } } }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" - }, "object-inspect": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", @@ -2433,13 +2430,6 @@ "integrity": "sha512-6cIrRlZiQE4q+PadDP08N6RLQgQr2KmAbDvRFET3aL5A4bZnecNmSxa9ENe+TAE29XRX+KgaxaqC+B2+Lc51Yw==", "requires": { "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } } }, "optimist": { @@ -2491,6 +2481,15 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -2547,62 +2546,11 @@ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" }, - "pez": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pez/-/pez-4.0.5.tgz", - "integrity": "sha512-HvL8uiFIlkXbx/qw4B8jKDCWzo7Pnnd65Uvanf9OOCtb20MRcb9gtTVBf9NCnhETif1/nzbDHIjAWC/sUp7LIQ==", - "requires": { - "b64": "4.x.x", - "boom": "7.x.x", - "content": "4.x.x", - "hoek": "6.x.x", - "nigel": "3.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "pg-connection-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.0.0.tgz", "integrity": "sha1-Pu/lmX4G2Ugh5NUC5CtqHHP434I=" }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, - "podium": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/podium/-/podium-3.2.0.tgz", - "integrity": "sha512-rbwvxwVkI6gRRlxZQ1zUeafrpGxZ7QPHIheinehAvGATvGIPfWRkaTeWedc5P4YjXJXEV8ZbBxPtglNylF9hjw==", - "requires": { - "hoek": "6.x.x", - "joi": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, - "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - } - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -2649,6 +2597,24 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "randexp": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.9.tgz", + "integrity": "sha512-maAX1cnBkzIZ89O4tSQUOF098xjGMC8N+9vuY/WfHwg87THw6odD2Br35donlj5e6KnB1SB0QBHhTQhhDHuTPQ==", + "dev": true, + "requires": { + "drange": "^1.0.0", + "ret": "^0.2.0" + }, + "dependencies": { + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "dev": true + } + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2683,9 +2649,9 @@ } }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" }, "regex-not": { "version": "1.0.2", @@ -2712,16 +2678,6 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, "resolve": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", @@ -2740,9 +2696,9 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -2888,32 +2844,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shot": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/shot/-/shot-4.0.7.tgz", - "integrity": "sha512-RKaKAGKxJ11EjJl0cf2fYVSsd4KB5Cncb9J0v7w+0iIaXpxNqFWTYNDNhBX7f0XSyDrjOH9a4OWZ9Gp/ZML+ew==", - "requires": { - "hoek": "6.x.x", - "joi": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, - "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - } - } - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -2921,11 +2851,13 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" } }, @@ -3079,37 +3011,6 @@ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" }, - "statehood": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/statehood/-/statehood-6.0.9.tgz", - "integrity": "sha512-jbFg1+MYEqfC7ABAoWZoeF4cQUtp3LUvMDUGExL76cMmleBHG7I6xlZFsE8hRi7nEySIvutHmVlLmBe9+2R5LQ==", - "requires": { - "boom": "7.x.x", - "bounce": "1.x.x", - "bourne": "1.x.x", - "cryptiles": "4.x.x", - "hoek": "6.x.x", - "iron": "5.x.x", - "joi": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, - "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - } - } - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -3177,30 +3078,11 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, - "subtext": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/subtext/-/subtext-6.0.12.tgz", - "integrity": "sha512-yT1wCDWVgqvL9BIkWzWqgj5spUSYo/Enu09iUV8t2ZvHcr2tKGTGg2kc9tUpVEsdhp1ihsZeTAiDqh0TQciTPQ==", - "requires": { - "boom": "7.x.x", - "bourne": "1.x.x", - "content": "4.x.x", - "hoek": "6.x.x", - "pez": "4.x.x", - "wreck": "14.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -3230,13 +3112,15 @@ "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" }, "swagmock": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/swagmock/-/swagmock-0.0.2.tgz", - "integrity": "sha1-gX+3KUC8a1Gb8F78G0WJix1tUmQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/swagmock/-/swagmock-1.0.0.tgz", + "integrity": "sha1-NMybzhqtei/QNeynVoZbMT5GrsA=", "dev": true, "requires": { + "call-me-maybe": "^1.0.1", "chance": "^1.0.3", "moment": "^2.13.0", + "randexp": "^0.4.2", "swagger-parser": "^3.4.1" }, "dependencies": { @@ -3301,17 +3185,43 @@ } }, "table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", + "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", "dev": true, "requires": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "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 + }, + "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==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.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" + } + } } }, "tape": { @@ -3340,11 +3250,6 @@ "resolved": "https://registry.npmjs.org/tarn/-/tarn-1.1.5.tgz", "integrity": "sha512-PMtJ3HCLAZeedWjJPgGnCvcphbCOMbtZpjKgLq3qM5Qq9aQud+XHrL0WlrlgnTyS8U+jrjGbEXprFcQrxPy52g==" }, - "teamwork": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/teamwork/-/teamwork-3.2.0.tgz", - "integrity": "sha512-xAmJ8PIVjRZMXAHgUuOP8ITsv0SedyWAit2UWiNImXgg/F+BxrsG46ZegElNBM0Dwp+iMfbigg/Ll/M2oDRYww==" - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3418,13 +3323,6 @@ "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", "requires": { "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } } }, "tslib": { @@ -3443,9 +3341,9 @@ } }, "uglify-js": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.12.tgz", - "integrity": "sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.15.tgz", + "integrity": "sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg==", "dev": true, "optional": true, "requires": { @@ -3577,21 +3475,6 @@ "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" }, - "vise": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vise/-/vise-3.0.2.tgz", - "integrity": "sha512-X52VtdRQbSBXdjcazRiY3eRgV3vTQ0B+7Wh8uC9cVv7lKfML5m9+9NHlbcgCY0R9EAqD1v/v7o9mhGh2A3ANFg==", - "requires": { - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -3611,27 +3494,10 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "wreck": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/wreck/-/wreck-14.2.0.tgz", - "integrity": "sha512-NFFft3SMgqrJbXEVfYifh+QDWFxni+98/I7ut7rLbz3F0XOypluHsdo3mdEYssGSirMobM3fGlqhyikbWKDn2Q==", - "requires": { - "boom": "7.x.x", - "bourne": "1.x.x", - "hoek": "6.x.x" - }, - "dependencies": { - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - } - } - }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "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" diff --git a/package.json b/package.json index db63a69c..fe0b8c85 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "quoting-service", "description": "Quoting Service hosted by a scheme", "license": "Apache-2.0", - "version": "6.2.0", + "version": "6.2.1", "author": "Modusbox", "contributors": [ "James Bush ", @@ -20,24 +20,24 @@ }, "dependencies": { "axios": "0.18.0", - "boom": "7.1.1", - "good": "8.1.1", - "good-console": "7.1.0", + "boom": "7.3.0", + "good": "8.1.2", + "good-console": "8.0.0", "good-squeeze": "5.1.0", - "hapi": "17.0.0", - "hapi-openapi": "1.0.0", - "json-rules-engine": "2.3.0", - "knex": "0.15.2", + "hapi": "18.1.0", + "hapi-openapi": "1.2.2", + "json-rules-engine": "3.0.1", + "knex": "0.16.5", "memory-cache": "0.2.0", "mysql": "2.17.1", - "node-fetch": "2.2.0", + "node-fetch": "2.6.0", "rc": "1.2.8" }, "devDependencies": { - "eslint": "5.6.1", - "istanbul": "0.4.3", - "swagmock": "0.0.2", - "tape": "4" + "eslint": "5.16.0", + "istanbul": "0.4.5", + "swagmock": "1.0.0", + "tape": "4.10.1" }, "scripts": { "start": "node src/server.js", diff --git a/src/data/database.js b/src/data/database.js index 6e1f2623..ea9c8c85 100644 --- a/src/data/database.js +++ b/src/data/database.js @@ -50,7 +50,7 @@ class Database { */ async connect () { this.queryBuilder = Knex(this.config) - this.writeLog(`Connected to database with config: ${util.inspect(this.config)}`) + return this } @@ -908,7 +908,7 @@ class Database { */ writeLog (message) { // eslint-disable-next-line no-console - console.log(`${new Date().toISOString()}, [quotesdatabase]: ${message}`) + // console.log(`${new Date().toISOString()}, [quotesdatabase]: ${message}`) } } diff --git a/src/handlers/health.js b/src/handlers/health.js new file mode 100644 index 00000000..fdaeb83b --- /dev/null +++ b/src/handlers/health.js @@ -0,0 +1,41 @@ +/***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Henk Kodde + -------------- + ******/ + +'use strict' +/** + * Operations on /health + */ +module.exports = { + /** + * summary: Get Quoting Service Health + * description: The HTTP request GET /health is used to return the current status of the API . + * parameters: + * produces: application/json + * responses: 200, 400, 401, 403, 404, 405, 406, 501, 503 + */ + get: function HealthGet(request, h) { + return h.response({ status: 'OK' }).code(200) + } +} diff --git a/src/interface/swagger.json b/src/interface/swagger.json index 7ad5a6de..93661954 100644 --- a/src/interface/swagger.json +++ b/src/interface/swagger.json @@ -1,2780 +1,2839 @@ { - "swagger": "2.0", - "info": { - "version": "1.0", - "title": "Quoting related parts of Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version)", - "description": "Based on API Definition.docx updated on 2018-03-13 Version 1.0. Note - The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header.", - "license": { - "name": "Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version)" - } - }, - "basePath": "/", - "schemes": [ - "http" - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/quotes/{ID}/error": { - "put": { - "description": "If the server is unable to find or create a quote, or some other processing error occurs, the error callback PUT /quotes//error is used. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/.", - "summary": "QuotesByIDAndError", - "tags": [ - "quotes" - ], - "operationId": "QuotesByIDAndError", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "#/parameters/ID" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/ErrorInformationObject" - } - }, - { - "$ref": "#/parameters/Content-Length" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "x-examples": { - "application/json": { - "“errorInformation”": { - "“errorCode”": "“5100”", - "“errorDescription”": "“This is an error description”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - } - }, - "responses": { - "200": { - "$ref": "#/responses/Response200" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - } - }, - "/quotes/{ID}": { - "parameters": [ - { - "$ref": "#/parameters/ID" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "get": { - "description": "The HTTP request GET /quotes/ is used to get information regarding an earlier created or requested quote. The in the URI should contain the quoteId that was used for the creation of the quote.", - "summary": "QuotesByID", - "tags": [ - "quotes" - ], - "operationId": "QuotesByID", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "#/parameters/Accept" - } - ], - "responses": { - "202": { - "$ref": "#/responses/Response202" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - }, - "put": { - "description": "The callback PUT /quotes/ is used to inform the client of a requested or created quote. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/GET /quotes/.", - "summary": "QuotesByID", - "tags": [ - "quotes" - ], - "operationId": "QuotesByID1", - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/QuotesIDPutResponse" - } - }, - { - "$ref": "#/parameters/Content-Length" - } - ], - "x-examples": { - "application/json": { - "“transferAmount”": { - "“currency”": "“USD”", - "“amount”": "“124.45”" - }, - "“payeeReceiveAmount”": { - "“currency”": "“USD”", - "“amount”": "“123.45”" - }, - "payeeFspFee": { - "“currency”": "“USD”", - "“amount”": "“1.45”" - }, - "payeeFspCommission": { - "“currency”": "“USD”", - "“amount”": "0" - }, - "“expiration”": "“2016-05-24T08:38:08.699-04:00”", - "“geoCode”": { - "“latitude”": "“+45.4215”", - "“longitude”": "“+75.6972”" - }, - "“ilpPacket”": "“AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA”", - "condition": "f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - }, - "responses": { - "200": { - "$ref": "#/responses/Response200" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - } - }, - "/quotes": { - "post": { - "description": "The HTTP request POST /quotes is used to request the creation of a quote for the provided financial transaction in the server.", - "summary": "Quotes", - "tags": [ - "quotes" - ], - "operationId": "Quotes", - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/QuotesPostRequest" - } - }, - { - "$ref": "#/parameters/Accept" - }, - { - "$ref": "#/parameters/Content-Length" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "x-examples": { - "application/json": { - "“quoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“transactionId”": "“a8323bc6-c228-4df2-ae82-e5a997baf899”", - "“transactionRequestId”": "“a8323bc6-c228-4df2-ae82-e5a997baf890”", - "“payee”": { - "partyIdInfo": { - "“partyIdType”": "“PERSONAL_ID”", - "“partyIdentifier”": "“16135551212”", - "“partySubIdOrType”": "“DRIVING_LICENSE”", - "“fspId”": "“1234”" - }, - "merchantClassificationCode": "4321", - "“name”": "“Justin Trudeau”", - "“personalInfo”": { - "“complexName”": { - "“firstName”": "“Justin”", - "“middleName”": "“Pierre”", - "“lastName”": "“Trudeau”" - }, - "“dateOfBirth”": "“1971-12-25”" - } - }, - "“payer”": { - "partyIdInfo": { - "“partyIdType”": "“PERSONAL_ID”", - "“partyIdentifier”": "“16135551212”", - "“partySubIdOrType”": "“PASSPORT”", - "“fspId”": "“1234”" - }, - "merchantClassificationCode": "1234", - "“name”": "“Donald Trump”", - "“personalInfo”": { - "“complexName”": { - "“firstName”": "“Donald”", - "“middleName”": "“John”", - "“lastName”": "“Trump”" - }, - "“dateOfBirth”": "“1946-06-14”" - } - }, - "“amountType”": "SEND", - "“amount”": { - "“currency”": "“USD”", - "“amount”": "“123.45”" - }, - "“fees”": { - "“currency”": "“USD”", - "“amount”": "“1.25”" - }, - "“transactionType”": { - "“scenario”": "“DEPOSIT”", - "“subScenario”": "“locally defined sub-scenario”", - "“initiator”": "“PAYEE”", - "“initiatorType”": "“CONSUMER”", - "“refundInfo”": { - "“originalTransactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“refundReason”": "“free text indicating reason for the refund”" - }, - "“balanceOfPayments”": "“123”" - }, - "“geoCode”": { - "“latitude”": "“+45.4215”", - "“longitude”": "“+75.6972”" - }, - "“note”": "“Free-text memo”", - "“expiration”": "“2016-05-24T08:38:08.699-04:00”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - }, - "responses": { - "202": { - "$ref": "#/responses/Response202" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - } - }, - "/bulkQuotes/{ID}/error": { - "put": { - "description": "If the server is unable to find or create a bulk quote, or another processing error occurs, the error callback PUT /bulkQuotes//error is used. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.", - "summary": "BulkQuotesErrorByID", - "tags": [ - "bulkQuotes" - ], - "operationId": "BulkQuotesErrorByID", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "#/parameters/ID" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/ErrorInformationObject" - } - }, - { - "$ref": "#/parameters/Content-Length" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "x-examples": { - "application/json": { - "“errorInformation”": { - "“errorCode”": "“5100”", - "“errorDescription”": "“This is an error description”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - } - }, - "responses": { - "200": { - "$ref": "#/responses/Response200" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - } - }, - "/bulkQuotes/{ID}": { - "parameters": [ - { - "$ref": "#/parameters/ID" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "get": { - "description": "The HTTP request GET /bulkQuotes/ is used to get information regarding an earlier created or requested bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote.", - "summary": "BulkQuotesByID", - "tags": [ - "bulkQuotes" - ], - "operationId": "BulkQuotesByID", - "produces": [ - "application/json" - ], - "parameters": [ - { - "$ref": "#/parameters/Accept" - } - ], - "responses": { - "202": { - "$ref": "#/responses/Response202" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } - }, - "put": { - "description": "The callback PUT /bulkQuotes/ is used to inform the client of a requested or created bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.", - "summary": "BulkQuotesByID", - "tags": [ - "bulkQuotes" - ], - "operationId": "BulkQuotesByID1", - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/BulkQuotesIDPutResponse" - } - }, - { - "$ref": "#/parameters/Content-Length" - } - ], - "x-examples": { - "application/json": { - "“individualQuoteResults”": [ - { - "quoteId": "b51ec534-ee48-4575-b6a9-ead2955b8069", - "receiveAmount": { - "currency": "USD", - "amount": "123.45" - }, - "payeeFspFee": { - "currency": "USD", - "amount": "1.45" - }, - "payeeFspCommission": { - "currency": "USD", - "amount": "1.45" - }, - "ilpPacket": "AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA", - "condition": "f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA", - "errorInformation": { - "errorCode": "5100", - "errorDescription": "This is an error description", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - }, - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - ], - "“expiration”": "“2016-05-24T08:38:08.699-04:00”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - }, - "responses": { - "200": { - "$ref": "#/responses/Response200" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } + "swagger": "2.0", + "info": { + "version": "1.0", + "title": "Quoting related parts of Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version)", + "description": "Based on API Definition.docx updated on 2018-03-13 Version 1.0. Note - The API supports a maximum size of 65536 bytes (64 Kilobytes) in the HTTP header.", + "license": { + "name": "Open API for FSP Interoperability (FSPIOP) (Implementation Friendly Version)" + } + }, + "basePath": "/", + "schemes": [ + "http" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/quotes/{ID}/error": { + "put": { + "description": "If the server is unable to find or create a quote, or some other processing error occurs, the error callback PUT /quotes//error is used. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/.", + "summary": "QuotesByIDAndError", + "tags": [ + "quotes" + ], + "operationId": "QuotesByIDAndError", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/ID" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ErrorInformationObject" } - }, - "/bulkQuotes": { - "post": { - "description": "The HTTP request POST /bulkQuotes is used to request the creation of a bulk quote for the provided financial transactions in the server.", - "summary": "BulkQuotes", - "tags": [ - "bulkQuotes" - ], - "operationId": "BulkQuotes", - "produces": [ - "application/json" - ], - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/BulkQuotesPostRequest" - } - }, - { - "$ref": "#/parameters/Accept" - }, - { - "$ref": "#/parameters/Content-Length" - }, - { - "$ref": "#/parameters/Content-Type" - }, - { - "$ref": "#/parameters/Date" - }, - { - "$ref": "#/parameters/X-Forwarded-For" - }, - { - "$ref": "#/parameters/FSPIOP-Source" - }, - { - "$ref": "#/parameters/FSPIOP-Destination" - }, - { - "$ref": "#/parameters/FSPIOP-Encryption" - }, - { - "$ref": "#/parameters/FSPIOP-Signature" - }, - { - "$ref": "#/parameters/FSPIOP-URI" - }, - { - "$ref": "#/parameters/FSPIOP-HTTP-Method" - } - ], - "x-examples": { - "application/json": { - "“bulkQuoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“payer”": { - "partyIdInfo": { - "“partyIdType”": "“PERSONAL_ID”", - "“partyIdentifier”": "“16135551212”", - "“partySubIdOrType”": "“PASSPORT”", - "“fspId”": "“1234”" - }, - "merchantClassificationCode": "1234", - "“name”": "“Justin Trudeau”", - "“personalInfo”": { - "“complexName”": { - "“firstName”": "“Justin”", - "“middleName”": "“Pierre”", - "“lastName”": "“Trudeau”" - }, - "“dateOfBirth”": "“1971-12-25”" - } - }, - "“geoCode”": { - "“latitude”": "“+45.4215”", - "“longitude”": "“+75.6972”" - }, - "“individualQuotes”": [ - { - "“quoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“transactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“payee”": { - "partyIdInfo": { - "“partyIdType”": "“PERSONAL_ID”", - "“partyIdentifier”": "“16135551212”", - "“partySubIdOrType”": "“PASSPORT”", - "“fspId”": "“1234”" - }, - "merchantClassificationCode": "1234", - "“name”": "“Justin Trudeau”", - "“personalInfo”": { - "“complexName”": { - "“firstName”": "“Justin”", - "“middleName”": "“Pierre”", - "“lastName”": "“Trudeau”" - }, - "“dateOfBirth”": "“1971-12-25”" - } - }, - "“amountType”": "RECEIVE", - "“amount”": { - "“currency”": "“USD”", - "“amount”": "“123.45”" - }, - "“fees”": { - "“currency”": "“USD”", - "“amount”": "“1.45”" - }, - "“transactionType”": { - "“scenario”": "“DEPOSIT”", - "“subScenario”": "“locally defined sub-scenario”", - "“initiator”": "“PAYEE”", - "“initiatorType”": "“CONSUMER”", - "“refundInfo”": { - "“originalTransactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", - "“refundReason”": "“free text indicating reason for the refund”" - }, - "“balanceOfPayments”": "“123”" - }, - "“note”": "“Note sent to Payee”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - ], - "“expiration”": "“2016-05-24T08:38:08.699-04:00”", - "extensionList": { - "extension": [ - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - }, - { - "“key”": "“errorDescription”", - "“value”": "“This is a more detailed error description”" - } - ] - } - } - }, - "responses": { - "202": { - "$ref": "#/responses/Response202" - }, - "400": { - "$ref": "#/responses/ErrorResponse400" - }, - "401": { - "$ref": "#/responses/ErrorResponse401" - }, - "403": { - "$ref": "#/responses/ErrorResponse403" - }, - "404": { - "$ref": "#/responses/ErrorResponse404" - }, - "405": { - "$ref": "#/responses/ErrorResponse405" - }, - "406": { - "$ref": "#/responses/ErrorResponse406" - }, - "501": { - "$ref": "#/responses/ErrorResponse501" - }, - "503": { - "$ref": "#/responses/ErrorResponse503" - } - } + }, + { + "$ref": "#/parameters/Content-Length" + }, + { + "$ref": "#/parameters/Content-Type" + }, + { + "$ref": "#/parameters/Date" + }, + { + "$ref": "#/parameters/X-Forwarded-For" + }, + { + "$ref": "#/parameters/FSPIOP-Source" + }, + { + "$ref": "#/parameters/FSPIOP-Destination" + }, + { + "$ref": "#/parameters/FSPIOP-Encryption" + }, + { + "$ref": "#/parameters/FSPIOP-Signature" + }, + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "x-examples": { + "application/json": { + "“errorInformation”": { + "“errorCode”": "“5100”", + "“errorDescription”": "“This is an error description”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + }, + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + } + ] + } } + } + }, + "responses": { + "200": { + "$ref": "#/responses/Response200" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } } + } }, - "definitions": { - "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." - }, - "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 fees." - }, - "AuthenticationType": { - "title": "AuthenticationTypeEnum", - "type": "string", - "enum": [ - "OTP", - "QRCODE" - ], - "description": "Below are the allowed values for the enumeration AuthenticationType. - OTP One-time password generated by the Payer FSP. - QRCODE QR code used as One Time Password." - }, - "AuthenticationValue": { - "title": "AuthenticationValue", - "type": "string", - "pattern": "^\\d{3,10}$|^\\S{1,64}$", - "description": "Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type." - }, - "AuthorizationResponse": { - "title": "AuthorizationResponse", - "type": "string", - "enum": [ - "ENTERED", - "REJECTED", - "RESEND" - ], - "description": "Below are the allowed values for the enumeration - ENTERED Consumer entered the authentication value. - REJECTED Consumer rejected the transaction. - RESEND Consumer requested to resend the authentication value." - }, - "BalanceOfPayments": { - "title": "BalanceOfPayments", - "type": "string", - "pattern": "^[1-9]\\d{2}$", - "description": "(BopCode) The API data type BopCode is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. https://www.imf.org/external/np/sta/bopcode/" - }, - "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." - }, - "BinaryString32": { - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "description": "The API data type BinaryString32 is a fixed size version of the API data type BinaryString, where the raw underlying data is always of 32 bytes. The data type BinaryString32 should not use a padding character as the size of the underlying data is fixed." - }, - "BulkTransferState": { - "title": "BulkTransactionStateEnum", - "type": "string", - "enum": [ - "RECEIVED", - "PENDING", - "ACCEPTED", - "PROCESSING", - "COMPLETED", - "REJECTED" - ], - "description": "Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the bulk transfer from the Payer FSP. - PENDING Payee FSP has validated the bulk transfer. - ACCEPTED Payee FSP has accepted to process the bulk transfer. - PROCESSING Payee FSP has started to transfer fund to the Payees. - COMPLETED Payee FSP has completed transfer of funds to the Payees. - REJECTED Payee FSP has rejected to process the bulk transfer." - }, - "Code": { - "title": "Code", - "type": "string", - "pattern": "^[0-9a-zA-Z]{4,32}$", - "description": "Any code/token returned by the Payee FSP (TokenCode Type)." - }, - "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, that is restricted by a regular expression for interoperability reasons. An UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘)." - }, - "Currency": { - "title": "CurrencyEnum", - "description": "The currency codes defined in ISO 4217 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" - ] - }, - "Date": { - "title": "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": "The API data type Date is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. This format, as specified in ISO 8601, contains a date only. A more readable version of the format is yyyy-MM-dd. Examples - \"1982-05-23\", \"1987-08-05”" - }, - "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." - }, - "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, 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 - \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC)." - }, - "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) represents the specific error." - }, - "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." - }, - "FirstName": { - "title": "FirstName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "First name of the Party (Name Type)." - }, - "FspId": { - "title": "FspId", - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "FSP identifier." - }, - "IlpCondition": { - "title": "IlpCondition", - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "maxLength": 48, - "description": "Condition that must be attached to the transfer by the Payer." - }, - "IlpFulfilment": { - "title": "IlpFulfilment", - "type": "string", - "pattern": "^[A-Za-z0-9-_]{43}$", - "maxLength": 48, - "description": "Fulfilment that must be attached to the transfer by the Payee." - }, - "IlpPacket": { - "title": "IlpPacket", - "type": "string", - "pattern": "^[A-Za-z0-9-_]+[=]{0,2}$", - "minLength": 1, - "maxLength": 32768, - "description": "Information for recipient (transport layer information)." - }, - "Integer": { - "title": "Integer", - "type": "string", - "pattern": "^[1-9]\\d*$", - "description": "The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is always limited to a specific number of digits." - }, - "LastName": { - "title": "LastName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "Last name of the Party (Name Type)." - }, - "Latitude": { - "title": "Latitude", - "type": "string", - "pattern": "^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$", - "description": "The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons." - }, - "Longitude": { - "title": "Longitude", - "type": "string", - "pattern": "^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$", - "description": "The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons." - }, - "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." - }, - "MiddleName": { - "title": "MiddleName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", - "description": "Middle name of the Party (Name Type)." - }, - "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." - }, - "Note": { - "title": "Note", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Memo assigned to transaction" - }, - "OtpValue": { - "title": "OtpValue", - "type": "string", - "pattern": "^\\d{3,10}$", - "description": "The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed." - }, - "PartyIdentifier": { - "title": "PartyIdentifier", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Identifier of the Party." - }, - "PartyIdType": { - "title": "PartyIdTypeEnum", - "type": "string", - "enum": [ - "MSISDN", - "EMAIL", - "PERSONAL_ID", - "BUSINESS", - "DEVICE", - "ACCOUNT_ID", - "IBAN", - "ALIAS" - ], - "description": "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. 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. - 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." - }, - "PartyName": { - "title": "PartyName", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Name of the Party. Could be a real name or a nickname." - }, - "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." - }, - "PersonalIdentifierType": { - "title": "PersonalIdentifierType", - "type": "string", - "enum": [ - "PASSPORT", - "NATIONAL_REGISTRATION", - "DRIVING_LICENSE", - "ALIEN_REGISTRATION", - "NATIONAL_ID_CARD", - "EMPLOYER_ID", - "TAX_ID_NUMBER", - "SENIOR_CITIZENS_CARD", - "MARRIAGE_CERTIFICATE", - "HEALTH_CARD", - "VOTERS_ID", - "UNITED_NATIONS", - "OTHER_ID" - ], - "description": "Below are the allowed values for the enumeration - PASSPORT A passport number is used as reference to a Party. - NATIONAL_REGISTRATION A national registration number is used as reference to a Party. - DRIVING_LICENSE A driving license is used as reference to a Party. - ALIEN_REGISTRATION An alien registration number is used as reference to a Party. - NATIONAL_ID_CARD A national ID card number is used as reference to a Party. - EMPLOYER_ID A tax identification number is used as reference to a Party. - TAX_ID_NUMBER A tax identification number is used as reference to a Party. - SENIOR_CITIZENS_CARD A senior citizens card number is used as reference to a Party. - MARRIAGE_CERTIFICATE A marriage certificate number is used as reference to a Party. - HEALTH_CARD A health card number is used as reference to a Party. - VOTERS_ID A voter’s identification number is used as reference to a Party. - UNITED_NATIONS An UN (United Nations) number is used as reference to a Party. - OTHER_ID Any other type of identification type number is used as reference to a Party." - }, - "QRCODE": { - "title": "QRCODE", - "type": "string", - "minLength": 1, - "maxLength": 64, - "description": "QR code used as One Time Password." - }, - "RefundReason": { - "title": "RefundReason", - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "Reason for the refund." - }, - "TokenCode": { - "title": "TokenCode", - "type": "string", - "pattern": "^[0-9a-zA-Z]{4,32}$", - "description": "The API data type TokenCode is a JSON String between 4 and 32 characters, consisting of digits or upper or lowercase characters from a to z." - }, - "TransactionInitiator": { - "title": "TransactionInitiatorEnum", - "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." - }, - "TransactionInitiatorType": { - "title": "TransactionInitiatorTypeEnum", - "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." - }, - "TransactionRequestState": { - "title": "TransactionRequestStateEnum", - "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." - }, - "TransactionScenario": { - "title": "TransactionScenarioEnum", - "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." - }, - "TransactionState": { - "title": "TransactionStateEnum", - "type": "string", - "enum": [ - "RECEIVED", - "PENDING", - "COMPLETED", - "REJECTED" - ], - "description": "Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the transaction from the Payer FSP. - PENDING Payee FSP has validated the transaction. - COMPLETED Payee FSP has successfully performed the transaction. - REJECTED Payee FSP has failed to perform the transaction." - }, - "TransactionSubScenario": { - "title": "TransactionSubScenario", - "type": "string", - "pattern": "^[A-Z_]{1,32}$", - "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type)." - }, - "TransferState": { - "title": "TransferStateEnum", - "type": "string", - "enum": [ - "RECEIVED", - "RESERVED", - "COMMITTED", - "ABORTED" - ], - "description": "Below are the allowed values for the enumeration - RECEIVED Next ledger has received the transfer. - RESERVED Next ledger has reserved the transfer. - COMMITTED Next ledger has successfully performed the transfer. - ABORTED Next ledger has aborted the transfer due a rejection or failure to perform the transfer." - }, - "UndefinedEnum": { - "title": "UndefinedEnum", - "type": "string", - "pattern": "^[A-Z_]{1,32}$", - "description": "The API data type UndefinedEnum is a JSON String consisting of 1 to 32 uppercase characters including an underscore character (_)." - }, - "AuthenticationInfo": { - "title": "AuthenticationInfo", - "type": "object", - "description": "Data model for the complex type AuthenticationInfo", - "properties": { - "authentication": { - "type": "string" - }, - "authenticationValue": { - "type": "string" - } - }, - "required": [ - "authentication", - "authenticationValue" - ] - }, - "AuthorizationsIDPutResponse": { - "title": "AuthorizationsIDPutResponse", - "type": "object", - "description": "PUT /authorizations/{ID} object", - "properties": { - "authenticationInfo": { - "type": "string", - "description": "OTP or QR Code if entered, otherwise empty." - }, - "responseType": { - "type": "string", - "description": "Enum containing response information; if the customer entered the authentication value, rejected the transaction, or requested a resend of the authentication value." - } - }, - "required": [ - "responseType" - ] - }, - "BulkQuotesPostRequest": { - "title": "BulkQuotesPostRequest", - "type": "object", - "description": "POST /bulkQuotes object", - "properties": { - "bulkQuoteId": { - "type": "string", - "description": "Common ID between the FSPs for the bulk quote object, decided by the Payer FSP. The ID should be reused for resends of the same bulk quote. A new ID should be generated for each new bulk quote." - }, - "payer": { - "$ref": "#/definitions/Party", - "description": "Information about the Payer in the proposed financial transaction." - }, - "geoCode": { - "$ref": "#/definitions/GeoCode", - "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." - }, - "expiration": { - "type": "string", - "description": "Expiration is optional to let the Payee FSP know when a quote no longer needs to be returned." - }, - "individualQuotes": { - "type": "array", - "minItems": 1, - "maxItems": 1000, - "items": { - "$ref": "#/definitions/IndividualQuote" - }, - "description": "List of quotes elements." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "bulkQuoteId", - "payer", - "individualQuotes" - ] - }, - "BulkQuotesIDPutResponse": { - "title": "BulkQuotesIDPutResponse", - "type": "object", - "description": "PUT /bulkQuotes/{ID} object", - "properties": { - "individualQuoteResults": { - "type": "array", - "maxItems": 1000, - "items": { - "$ref": "#/definitions/IndividualQuoteResult" - }, - "description": "Fees for each individual transaction, if any of them are charged per transaction." - }, - "expiration": { - "type": "string", - "description": "Date and time until when the quotation is valid and can be honored when used in the subsequent transaction request." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "expiration" - ] - }, - "BulkTransfersPostRequest": { - "title": "BulkTransfersPostRequest", - "type": "object", - "description": "POST /bulkTransfers object", - "properties": { - "bulkTransferId": { - "type": "string", - "description": "Common ID between the FSPs and the optional Switch for the bulk transfer object, decided by the Payer FSP. The ID should be reused for resends of the same bulk transfer. A new ID should be generated for each new bulk transfer." - }, - "bulkQuoteId": { - "type": "string", - "description": "ID of the related bulk quote." - }, - "payerFsp": { - "type": "string", - "description": "Payer FSP identifier." - }, - "payeeFsp": { - "type": "string", - "description": "Payee FSP identifier." - }, - "individualTransfers": { - "type": "array", - "minItems": 1, - "maxItems": 1000, - "items": { - "$ref": "#/definitions/IndividualTransfer" - }, - "description": "List of IndividualTransfer elements." - }, - "expiration": { - "type": "string", - "description": "Expiration time of the transfers." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "bulkTransferId", - "bulkQuoteId", - "payerFsp", - "payeeFsp", - "individualTransfers", - "expiration" - ] - }, - "BulkTransfersIDPutResponse": { - "title": "BulkTransfersIDPutResponse", - "type": "object", - "description": "PUT /bulkTransfers/{ID} object", - "properties": { - "completedTimestamp": { - "type": "string", - "description": "Time and date when the bulk transaction was completed." - }, - "individualTransferResults": { - "type": "array", - "maxItems": 1000, - "items": { - "$ref": "#/definitions/IndividualTransferResult" - }, - "description": "List of IndividualTransferResult elements." - }, - "bulkTransferState": { - "type": "string", - "description": "The state of the bulk transfer." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "bulkTransferState" - ] - }, - "ErrorInformation": { - "title": "ErrorInformation", - "type": "object", - "description": "Data model for the complex type ErrorInformation.", - "properties": { - "errorCode": { - "type": "string", - "description": "Specific error number." - }, - "errorDescription": { - "type": "string", - "description": "Error description string." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional list of extensions, specific to deployment." - } - }, - "required": [ - "errorCode", - "errorDescription" - ] - }, - "ErrorInformationObject": { - "title": "ErrorInformationObject", - "type": "object", - "description": "Data model for the complex type object that contains ErrorInformation.", - "properties": { - "errorInformation": { - "$ref": "#/definitions/ErrorInformation" - } - }, - "required": [ - "errorInformation" - ] - }, - "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": "#/definitions/ErrorInformation" - } - } + "/quotes/{ID}": { + "parameters": [ + { + "$ref": "#/parameters/ID" }, - "Extension": { - "title": "Extension", - "type": "object", - "description": "Data model for the complex type Extension", - "properties": { - "key": { - "type": "string", - "description": "Extension key." - }, - "value": { - "type": "string", - "description": "Extension value." - } - }, - "required": [ - "key", - "value" - ] - }, - "ExtensionList": { - "title": "ExtensionList", - "type": "object", - "description": "Data model for the complex type ExtensionList", - "properties": { - "extension": { - "type": "array", - "items": { - "$ref": "#/definitions/Extension" - }, - "minItems": 1, - "maxItems": 16, - "description": "Number of Extension elements" - } - }, - "required": [ - "extension" - ] - }, - "GeoCode": { - "title": "GeoCode", - "type": "object", - "description": "Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.", - "properties": { - "latitude": { - "type": "string", - "description": "Latitude of the Party." - }, - "longitude": { - "type": "string", - "description": "Longitude of the Party." - } - }, - "required": [ - "latitude", - "longitude" - ] - }, - "IndividualQuote": { - "title": "IndividualQuote", - "type": "object", - "description": "Data model for the complex type IndividualQuote.", - "properties": { - "quoteId": { - "type": "string", - "description": "Identifies quote message." - }, - "transactionId": { - "type": "string", - "description": "Identifies transaction message." - }, - "payee": { - "$ref": "#/definitions/Party", - "description": "Information about the Payee in the proposed financial transaction." - }, - "amountType": { - "type": "string", - "description": "SEND for sendAmount, RECEIVE for receiveAmount." - }, - "amount": { - "$ref": "#/definitions/Money", - "description": "Depending on amountType - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities." - }, - "fees": { - "$ref": "#/definitions/Money", - "description": "The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed." - }, - "transactionType": { - "$ref": "#/definitions/TransactionType", - "description": "Type of transaction that the quote is requested for." - }, - "note": { - "type": "string", - "description": "Memo that will be attached to the transaction." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "quoteId", - "transactionId", - "payee", - "amountType", - "amount", - "transactionType" - ] - }, - "IndividualQuoteResult": { - "title": "IndividualQuoteResult", - "type": "object", - "description": "Data model for the complex type IndividualQuoteResult.", - "properties": { - "quoteId": { - "type": "string", - "description": "Identifies quote message." - }, - "payee": { - "$ref": "#/definitions/Party", - "description": "Information about the Payee in the proposed financial transaction." - }, - "transferAmount": { - "$ref": "#/definitions/Money", - "description": "Amount that the Payee FSP should receive." - }, - "payeeReceiveAmount": { - "$ref": "#/definitions/Money", - "description": "Amount that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees." - }, - "payeeFspFee": { - "$ref": "#/definitions/Money", - "description": "Payee FSP’s part of the transaction fee." - }, - "payeeFspCommission": { - "$ref": "#/definitions/Money", - "description": "Transaction commission from the Payee FSP" - }, - "ilpPacket": { - "type": "string", - "description": "The ILP Packet that must be attached to the transfer by the Payer." - }, - "condition": { - "type": "string", - "description": "The condition that must be attached to the transfer by the Payer." - }, - "errorInformation": { - "$ref": "#/definitions/ErrorInformation", - "description": "Error code, category description. Note - receiveAmount, payeeFspFee, payeeFspCommission, expiration, ilpPacket, condition should not be set if errorInformation is set." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "quoteId" - ] - }, - "IndividualTransfer": { - "title": "IndividualTransfer", - "type": "object", - "description": "Data model for the complex type IndividualTransfer.", - "properties": { - "transferId": { - "type": "string", - "description": "Identifies messages related to the same /transfers sequence." - }, - "transferAmount": { - "$ref": "#/definitions/Money", - "description": "Transaction amount to be sent." - }, - "ilpPacket": { - "type": "string", - "description": "ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data." - }, - "condition": { - "type": "string", - "description": "Condition that must be fulfilled to commit the transfer." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transferId", - "transferAmount", - "ilpPacket", - "condition" - ] - }, - "IndividualTransferResult": { - "title": "IndividualTransferResult", - "type": "object", - "description": "Data model for the complex type IndividualTransferResult.", - "properties": { - "transferId": { - "type": "string", - "description": "Identifies messages related to the same /transfers sequence." - }, - "fulfilment": { - "type": "string", - "description": "Fulfilment of the condition specified with the transaction. Note - Either fulfilment or errorInformation should be set, not both." - }, - "errorInformation": { - "$ref": "#/definitions/ErrorInformation", - "description": "If transfer is REJECTED, error information may be provided. Note - Either fulfilment or errorInformation should be set, not both." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transferId" - ] - }, - "Money": { - "title": "Money", - "type": "object", - "description": "Data model for the complex type Money.", - "properties": { - "currency": { - "type": "string", - "description": "Currency of the amount." - }, - "amount": { - "type": "string", - "description": "Amount of Money." - } - }, - "required": [ - "currency", - "amount" - ] - }, - "ParticipantsTypeIDSubIDPostRequest": { - "title": "ParticipantsTypeIDSubIDPostRequest", - "type": "object", - "description": "POST /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object", - "properties": { - "fspId": { - "type": "string", - "description": "FSP Identifier that the Party belongs to." - }, - "currency": { - "type": "string", - "description": "Indicate that the provided Currency is supported by the Party." - } - }, - "required": [ - "fspId" - ] - }, - "ParticipantsTypeIDPutResponse": { - "title": "ParticipantsTypeIDPutResponse", - "type": "object", - "description": "PUT /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object", - "properties": { - "fspId": { - "type": "string", - "description": "FSP Identifier that the Party belongs to." - } - } + { + "$ref": "#/parameters/Content-Type" }, - "ParticipantsIDPutResponse": { - "title": "ParticipantsIDPutResponse", - "type": "object", - "description": "PUT /participants/{ID} object", - "properties": { - "partyList": { - "type": "array", - "items": { - "$ref": "#/definitions/PartyResult" - }, - "minItems": 1, - "maxItems": 10000, - "description": "List of PartyResult elements that were either created or failed to be created." - }, - "currency": { - "type": "string", - "description": "Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo." - } - }, - "required": [ - "partyList" - ] - }, - "ParticipantsPostRequest": { - "title": "ParticipantsPostRequest", - "type": "object", - "description": "POST /participants object", - "properties": { - "requestId": { - "type": "string", - "description": "The ID of the request, decided by the client. Used for identification of the callback from the server." - }, - "partyList": { - "type": "array", - "items": { - "$ref": "#/definitions/PartyIdInfo" - }, - "minItems": 1, - "maxItems": 10000, - "description": "List of PartyIdInfo elements that the client would like to update or create FSP information about." - }, - "currency": { - "type": "string", - "description": "Indicate that the provided Currency is supported by each PartyIdInfo in the list." - } - }, - "required": [ - "requestId", - "partyList" - ] - }, - "Party": { - "title": "Party", - "type": "object", - "description": "Data model for the complex type Party.", - "properties": { - "partyIdInfo": { - "$ref": "#/definitions/PartyIdInfo", - "description": "Party Id type, id, sub ID or type, and FSP Id." - }, - "merchantClassificationCode": { - "type": "string", - "description": "Used in the context of Payee Information, where the Payee happens to be a merchant accepting merchant payments." - }, - "name": { - "type": "string", - "description": "Display name of the Party, could be a real name or a nick name." - }, - "personalInfo": { - "$ref": "#/definitions/PartyPersonalInfo", - "description": "Personal information used to verify identity of Party such as first, middle, last name and date of birth." - } - }, - "required": [ - "partyIdInfo" - ] - }, - "PartyComplexName": { - "title": "PartyComplexName", - "type": "object", - "description": "Data model for the complex type PartyComplexName.", - "properties": { - "firstName": { - "type": "string", - "description": "Party’s first name." - }, - "middleName": { - "type": "string", - "description": "Party’s middle name." - }, - "lastName": { - "type": "string", - "description": "Party’s last name." - } - } + { + "$ref": "#/parameters/Date" }, - "PartyIdInfo": { - "title": "PartyIdInfo", - "type": "object", - "description": "Data model for the complex type PartyIdInfo.", - "properties": { - "partyIdType": { - "type": "string", - "description": "Type of the identifier." - }, - "partyIdentifier": { - "type": "string", - "description": "An identifier for the Party." - }, - "partySubIdOrType": { - "type": "string", - "description": "A sub-identifier or sub-type for the Party." - }, - "fspId": { - "type": "string", - "description": "FSP ID (if known)" - } - }, - "required": [ - "partyIdType", - "partyIdentifier" - ] - }, - "PartiesTypeIDPutResponse": { - "title": "PartiesTypeIDPutResponse", - "type": "object", - "description": "PUT /parties/{Type}/{ID} object", - "properties": { - "party": { - "$ref": "#/definitions/Party", - "description": "Information regarding the requested Party." - } - }, - "required": [ - "party" - ] - }, - "PartyPersonalInfo": { - "title": "PartyPersonalInfo", - "type": "object", - "description": "Data model for the complex type PartyPersonalInfo.", - "properties": { - "complexName": { - "$ref": "#/definitions/PartyComplexName", - "description": "First, middle and last name for the Party." - }, - "dateOfBirth": { - "type": "string", - "description": "Date of birth for the Party." - } - } + { + "$ref": "#/parameters/X-Forwarded-For" }, - "PartyResult": { - "title": "PartyResult", - "type": "object", - "description": "Data model for the complex type PartyResult.", - "properties": { - "partyId": { - "$ref": "#/definitions/PartyIdInfo", - "description": "Party Id type, id, sub ID or type, and FSP Id." - }, - "errorInformation": { - "$ref": "#/definitions/ErrorInformation", - "description": "If the Party failed to be added, error information should be provided. Otherwise, this parameter should be empty to indicate success." - } - }, - "required": [ - "partyId" - ] - }, - "QuotesPostRequest": { - "title": "QuotesPostRequest", - "type": "object", - "description": "POST /quotes object", - "properties": { - "quoteId": { - "type": "string", - "description": "Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction." - }, - "transactionId": { - "type": "string", - "description": "Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction." - }, - "transactionRequestId": { - "type": "string", - "description": "Identifies an optional previously-sent transaction request." - }, - "payee": { - "$ref": "#/definitions/Party", - "description": "Information about the Payee in the proposed financial transaction." - }, - "payer": { - "$ref": "#/definitions/Party", - "description": "Information about the Payer in the proposed financial transaction." - }, - "amountType": { - "type": "string", - "description": "SEND for send amount, RECEIVE for receive amount." - }, - "amount": { - "$ref": "#/definitions/Money", - "description": "Depending on amountType. If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities." - }, - "fees": { - "$ref": "#/definitions/Money", - "description": "The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed." - }, - "transactionType": { - "$ref": "#/definitions/TransactionType", - "description": "Type of transaction for which the quote is requested." - }, - "geoCode": { - "$ref": "#/definitions/GeoCode", - "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." - }, - "note": { - "type": "string", - "description": "A memo that will be attached to the transaction." - }, - "expiration": { - "type": "string", - "description": "Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "quoteId", - "transactionId", - "payee", - "payer", - "amountType", - "amount", - "transactionType" - ] - }, - "QuotesIDPutResponse": { - "title": "QuotesIDPutResponse", - "type": "object", - "description": "PUT /quotes/{ID} object", - "properties": { - "transferAmount": { - "$ref": "#/definitions/Money", - "description": "The amount of money that the Payee FSP should receive." - }, - "payeeReceiveAmount": { - "$ref": "#/definitions/Money", - "description": "The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees." - }, - "payeeFspFee": { - "$ref": "#/definitions/Money", - "description": "Payee FSP’s part of the transaction fee." - }, - "payeeFspCommission": { - "$ref": "#/definitions/Money", - "description": "Transaction commission from the Payee FSP." - }, - "expiration": { - "type": "string", - "description": "Date and time until when the quotation is valid and can be honored when used in the subsequent transaction." - }, - "geoCode": { - "$ref": "#/definitions/GeoCode", - "description": "Longitude and Latitude of the Payee. Can be used to detect fraud." - }, - "ilpPacket": { - "type": "string", - "description": "The ILP Packet that must be attached to the transfer by the Payer." - }, - "condition": { - "type": "string", - "description": "The condition that must be attached to the transfer by the Payer." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transferAmount", - "expiration", - "ilpPacket", - "condition" - ] - }, - "Refund": { - "title": "Refund", - "type": "object", - "description": "Data model for the complex type Refund.", - "properties": { - "originalTransactionId": { - "type": "string", - "description": "Reference to the original transaction ID that is requested to be refunded." - }, - "refundReason": { - "type": "string", - "description": "Free text indicating the reason for the refund." - } - }, - "required": [ - "originalTransactionId" - ] - }, - "Transaction": { - "title": "Transaction", - "type": "object", - "description": "Data model for the complex type Transaction. The Transaction type is used to carry end-to-end data between the Payer FSP and the Payee FSP in the ILP Packet. Both the transactionId and the quoteId in the data model are decided by the Payer FSP in the POST /quotes.", - "properties": { - "transactionId": { - "type": "string", - "description": "ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote." - }, - "quoteId": { - "type": "string", - "description": "ID of the quote, the ID is decided by the Payer FSP during the creation of the quote." - }, - "payee": { - "$ref": "#/definitions/Party", - "description": "Information about the Payee in the proposed financial transaction." - }, - "payer": { - "$ref": "#/definitions/Party", - "description": "Information about the Payer in the proposed financial transaction." - }, - "amount": { - "$ref": "#/definitions/Money", - "description": "Transaction amount to be sent." - }, - "transactionType": { - "$ref": "#/definitions/TransactionType", - "description": "Type of the transaction." - }, - "note": { - "type": "string", - "description": "Memo associated to the transaction, intended to the Payee." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transactionId", - "quoteId", - "payee", - "payer", - "amount", - "transactionType" - ] - }, - "TransactionRequestsIDPutResponse": { - "title": "TransactionRequestsIDPutResponse", - "type": "object", - "description": "PUT /transactionRequests/{ID} object", - "properties": { - "transactionId": { - "type": "string", - "description": "Identifies a related transaction (if a transaction has been created)." - }, - "transactionRequestState": { - "type": "string", - "description": "State of the transaction request." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transactionRequestState" - ] - }, - "TransactionsIDPutResponse": { - "title": "TransactionsIDPutResponse", - "type": "object", - "description": "PUT /transactions/{ID} object", - "properties": { - "completedTimestamp": { - "type": "string", - "description": "Time and date when the transaction was completed." - }, - "transactionState": { - "type": "string", - "description": "State of the transaction." - }, - "code": { - "type": "string", - "description": "Optional redemption information provided to Payer after transaction has been completed." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transactionState" - ] - }, - "TransactionType": { - "title": "TransactionType", - "type": "object", - "description": "Data model for the complex type TransactionType.", - "properties": { - "scenario": { - "type": "string", - "description": "Deposit, withdrawal, refund, …" - }, - "subScenario": { - "type": "string", - "description": "Possible sub-scenario, defined locally within the scheme." - }, - "initiator": { - "type": "string", - "description": "Who is initiating the transaction - Payer or Payee" - }, - "initiatorType": { - "type": "string", - "description": "Consumer, agent, business, …" - }, - "refundInfo": { - "$ref": "#/definitions/Refund", - "description": "Extra information specific to a refund scenario. Should only be populated if scenario is REFUND" - }, - "balanceOfPayments": { - "type": "string", - "description": "Balance of Payments code." - } - }, - "required": [ - "scenario", - "initiator", - "initiatorType" - ] - }, - "TransfersPostRequest": { - "title": "TransfersPostRequest", - "type": "object", - "description": "POST /transfers Request object", - "properties": { - "transferId": { - "type": "string", - "description": "The common ID between the FSPs and the optional Switch for the transfer object, decided by the Payer FSP. The ID should be reused for resends of the same transfer. A new ID should be generated for each new transfer." - }, - "payeeFsp": { - "type": "string", - "description": "Payee FSP in the proposed financial transaction." - }, - "payerFsp": { - "type": "string", - "description": "Payer FSP in the proposed financial transaction." - }, - "amount": { - "$ref": "#/definitions/Money", - "description": "The transfer amount to be sent." - }, - "ilpPacket": { - "type": "string", - "description": "The ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data." - }, - "condition": { - "type": "string", - "description": "The condition that must be fulfilled to commit the transfer." - }, - "expiration": { - "type": "string", - "description": "Expiration can be set to get a quick failure expiration of the transfer. The transfer should be rolled back if no fulfilment is delivered before this time." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transferId", - "payeeFsp", - "payerFsp", - "amount", - "ilpPacket", - "condition", - "expiration" - ] - }, - "TransactionRequestsPostRequest": { - "title": "TransactionRequestsPostRequest", - "type": "object", - "description": "POST /transactionRequests object", - "properties": { - "transactionRequestId": { - "type": "string", - "description": "Common ID between the FSPs for the transaction request object, decided by the Payee FSP. The ID should be reused for resends of the same transaction request. A new ID should be generated for each new transaction request." - }, - "payee": { - "$ref": "#/definitions/Party", - "description": "Information about the Payee in the proposed financial transaction." - }, - "payer": { - "$ref": "#/definitions/PartyIdInfo", - "description": "Information about the Payer type, id, sub-type/id, FSP Id in the proposed financial transaction." - }, - "amount": { - "$ref": "#/definitions/Money", - "description": "Requested amount to be transferred from the Payer to Payee." - }, - "transactionType": { - "$ref": "#/definitions/TransactionType", - "description": "Type of transaction." - }, - "note": { - "type": "string", - "description": "Reason for the transaction request, intended to the Payer." - }, - "geoCode": { - "$ref": "#/definitions/GeoCode", - "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." - }, - "authenticationType": { - "type": "string", - "description": "OTP or QR Code, otherwise empty." - }, - "expiration": { - "type": "string", - "description": "Can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, Merchant to know that their request has a time limit." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transactionRequestId", - "payee", - "payer", - "amount", - "transactionType" - ] - }, - "TransfersIDPutResponse": { - "title": "TransfersIDPutResponse", - "type": "object", - "description": "PUT /transfers/{ID} object", - "properties": { - "fulfilment": { - "type": "string", - "description": "Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully." - }, - "completedTimestamp": { - "type": "string", - "description": "Time and date when the transaction was completed." - }, - "transferState": { - "type": "string", - "description": "State of the transfer." - }, - "extensionList": { - "$ref": "#/definitions/ExtensionList", - "description": "Optional extension, specific to deployment." - } - }, - "required": [ - "transferState" - ] - } - }, - "responses": { - "Response200": { - "description": "OK" + { + "$ref": "#/parameters/FSPIOP-Source" }, - "Response202": { - "description": "Accepted" + { + "$ref": "#/parameters/FSPIOP-Destination" }, - "ErrorResponse400": { - "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.", - "schema": { - "$ref": "#/definitions/ErrorInformationResponse" - }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" - }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" - } - } + { + "$ref": "#/parameters/FSPIOP-Encryption" }, - "ErrorResponse401": { - "description": "Unauthorized - The request requires authentication in order to be processed.", - "schema": { - "$ref": "#/definitions/ErrorInformationResponse" - }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" - }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" - } - } + { + "$ref": "#/parameters/FSPIOP-Signature" }, - "ErrorResponse403": { - "description": "Forbidden - The request was denied and will be denied in the future.", + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "get": { + "description": "The HTTP request GET /quotes/ is used to get information regarding an earlier created or requested quote. The in the URI should contain the quoteId that was used for the creation of the quote.", + "summary": "QuotesByID", + "tags": [ + "quotes" + ], + "operationId": "QuotesByID", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/Accept" + } + ], + "responses": { + "202": { + "$ref": "#/responses/Response202" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + }, + "put": { + "description": "The callback PUT /quotes/ is used to inform the client of a requested or created quote. The in the URI should contain the quoteId that was used for the creation of the quote, or the that was used in the GET /quotes/GET /quotes/.", + "summary": "QuotesByID", + "tags": [ + "quotes" + ], + "operationId": "QuotesByID1", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/ErrorInformationResponse" + "$ref": "#/definitions/QuotesIDPutResponse" + } + }, + { + "$ref": "#/parameters/Content-Length" + } + ], + "x-examples": { + "application/json": { + "“transferAmount”": { + "“currency”": "“USD”", + "“amount”": "“124.45”" + }, + "“payeeReceiveAmount”": { + "“currency”": "“USD”", + "“amount”": "“123.45”" + }, + "payeeFspFee": { + "“currency”": "“USD”", + "“amount”": "“1.45”" }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" + "payeeFspCommission": { + "“currency”": "“USD”", + "“amount”": "0" + }, + "“expiration”": "“2016-05-24T08:38:08.699-04:00”", + "“geoCode”": { + "“latitude”": "“+45.4215”", + "“longitude”": "“+75.6972”" + }, + "“ilpPacket”": "“AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA”", + "condition": "f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" } + ] } - }, - "ErrorResponse404": { - "description": "Not Found - The resource specified in the URI was not found.", + } + }, + "responses": { + "200": { + "$ref": "#/responses/Response200" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + } + }, + "/quotes": { + "post": { + "description": "The HTTP request POST /quotes is used to request the creation of a quote for the provided financial transaction in the server.", + "summary": "Quotes", + "tags": [ + "quotes" + ], + "operationId": "Quotes", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/ErrorInformationResponse" + "$ref": "#/definitions/QuotesPostRequest" + } + }, + { + "$ref": "#/parameters/Accept" + }, + { + "$ref": "#/parameters/Content-Length" + }, + { + "$ref": "#/parameters/Content-Type" + }, + { + "$ref": "#/parameters/Date" + }, + { + "$ref": "#/parameters/X-Forwarded-For" + }, + { + "$ref": "#/parameters/FSPIOP-Source" + }, + { + "$ref": "#/parameters/FSPIOP-Destination" + }, + { + "$ref": "#/parameters/FSPIOP-Encryption" + }, + { + "$ref": "#/parameters/FSPIOP-Signature" + }, + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "x-examples": { + "application/json": { + "“quoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“transactionId”": "“a8323bc6-c228-4df2-ae82-e5a997baf899”", + "“transactionRequestId”": "“a8323bc6-c228-4df2-ae82-e5a997baf890”", + "“payee”": { + "partyIdInfo": { + "“partyIdType”": "“PERSONAL_ID”", + "“partyIdentifier”": "“16135551212”", + "“partySubIdOrType”": "“DRIVING_LICENSE”", + "“fspId”": "“1234”" + }, + "merchantClassificationCode": "4321", + "“name”": "“Justin Trudeau”", + "“personalInfo”": { + "“complexName”": { + "“firstName”": "“Justin”", + "“middleName”": "“Pierre”", + "“lastName”": "“Trudeau”" + }, + "“dateOfBirth”": "“1971-12-25”" + } + }, + "“payer”": { + "partyIdInfo": { + "“partyIdType”": "“PERSONAL_ID”", + "“partyIdentifier”": "“16135551212”", + "“partySubIdOrType”": "“PASSPORT”", + "“fspId”": "“1234”" + }, + "merchantClassificationCode": "1234", + "“name”": "“Donald Trump”", + "“personalInfo”": { + "“complexName”": { + "“firstName”": "“Donald”", + "“middleName”": "“John”", + "“lastName”": "“Trump”" + }, + "“dateOfBirth”": "“1946-06-14”" + } + }, + "“amountType”": "SEND", + "“amount”": { + "“currency”": "“USD”", + "“amount”": "“123.45”" + }, + "“fees”": { + "“currency”": "“USD”", + "“amount”": "“1.25”" }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" + "“transactionType”": { + "“scenario”": "“DEPOSIT”", + "“subScenario”": "“locally defined sub-scenario”", + "“initiator”": "“PAYEE”", + "“initiatorType”": "“CONSUMER”", + "“refundInfo”": { + "“originalTransactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“refundReason”": "“free text indicating reason for the refund”" + }, + "“balanceOfPayments”": "“123”" + }, + "“geoCode”": { + "“latitude”": "“+45.4215”", + "“longitude”": "“+75.6972”" + }, + "“note”": "“Free-text memo”", + "“expiration”": "“2016-05-24T08:38:08.699-04:00”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" } + ] } - }, - "ErrorResponse405": { - "description": "Method Not Allowed - An unsupported HTTP method for the request was used.", + } + }, + "responses": { + "202": { + "$ref": "#/responses/Response202" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + } + }, + "/bulkQuotes/{ID}/error": { + "put": { + "description": "If the server is unable to find or create a bulk quote, or another processing error occurs, the error callback PUT /bulkQuotes//error is used. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.", + "summary": "BulkQuotesErrorByID", + "tags": [ + "bulkQuotes" + ], + "operationId": "BulkQuotesErrorByID", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/ID" + }, + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/ErrorInformationResponse" - }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" - }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" - } + "$ref": "#/definitions/ErrorInformationObject" + } + }, + { + "$ref": "#/parameters/Content-Length" + }, + { + "$ref": "#/parameters/Content-Type" + }, + { + "$ref": "#/parameters/Date" + }, + { + "$ref": "#/parameters/X-Forwarded-For" + }, + { + "$ref": "#/parameters/FSPIOP-Source" + }, + { + "$ref": "#/parameters/FSPIOP-Destination" + }, + { + "$ref": "#/parameters/FSPIOP-Encryption" + }, + { + "$ref": "#/parameters/FSPIOP-Signature" + }, + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "x-examples": { + "application/json": { + "“errorInformation”": { + "“errorCode”": "“5100”", + "“errorDescription”": "“This is an error description”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + }, + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + } + ] + } } + } + }, + "responses": { + "200": { + "$ref": "#/responses/Response200" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + } + }, + "/bulkQuotes/{ID}": { + "parameters": [ + { + "$ref": "#/parameters/ID" + }, + { + "$ref": "#/parameters/Content-Type" + }, + { + "$ref": "#/parameters/Date" }, - "ErrorResponse406": { - "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.", + { + "$ref": "#/parameters/X-Forwarded-For" + }, + { + "$ref": "#/parameters/FSPIOP-Source" + }, + { + "$ref": "#/parameters/FSPIOP-Destination" + }, + { + "$ref": "#/parameters/FSPIOP-Encryption" + }, + { + "$ref": "#/parameters/FSPIOP-Signature" + }, + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "get": { + "description": "The HTTP request GET /bulkQuotes/ is used to get information regarding an earlier created or requested bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote.", + "summary": "BulkQuotesByID", + "tags": [ + "bulkQuotes" + ], + "operationId": "BulkQuotesByID", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "#/parameters/Accept" + } + ], + "responses": { + "202": { + "$ref": "#/responses/Response202" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + }, + "put": { + "description": "The callback PUT /bulkQuotes/ is used to inform the client of a requested or created bulk quote. The in the URI should contain the bulkQuoteId that was used for the creation of the bulk quote, or the that was used in the GET /bulkQuotes/.", + "summary": "BulkQuotesByID", + "tags": [ + "bulkQuotes" + ], + "operationId": "BulkQuotesByID1", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/ErrorInformationResponse" - }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" + "$ref": "#/definitions/BulkQuotesIDPutResponse" + } + }, + { + "$ref": "#/parameters/Content-Length" + } + ], + "x-examples": { + "application/json": { + "“individualQuoteResults”": [ + { + "quoteId": "b51ec534-ee48-4575-b6a9-ead2955b8069", + "receiveAmount": { + "currency": "USD", + "amount": "123.45" + }, + "payeeFspFee": { + "currency": "USD", + "amount": "1.45" + }, + "payeeFspCommission": { + "currency": "USD", + "amount": "1.45" + }, + "ilpPacket": "AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA", + "condition": "f5sqb7tBTWPd5Y8BDFdMm9BJR_MNI4isf8p8n4D5pHA", + "errorInformation": { + "errorCode": "5100", + "errorDescription": "This is an error description", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + }, + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + } + ] + } }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + }, + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + } + ] } - } - }, - "ErrorResponse501": { - "description": "Not Implemented - The server does not support the requested service. The client should not retry.", - "schema": { - "$ref": "#/definitions/ErrorInformationResponse" - }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" + } + ], + "“expiration”": "“2016-05-24T08:38:08.699-04:00”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" } + ] } - }, - "ErrorResponse503": { - "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.", + } + }, + "responses": { + "200": { + "$ref": "#/responses/Response200" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + } + }, + "/bulkQuotes": { + "post": { + "description": "The HTTP request POST /bulkQuotes is used to request the creation of a bulk quote for the provided financial transactions in the server.", + "summary": "BulkQuotes", + "tags": [ + "bulkQuotes" + ], + "operationId": "BulkQuotes", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, "schema": { - "$ref": "#/definitions/ErrorInformationResponse" + "$ref": "#/definitions/BulkQuotesPostRequest" + } + }, + { + "$ref": "#/parameters/Accept" + }, + { + "$ref": "#/parameters/Content-Length" + }, + { + "$ref": "#/parameters/Content-Type" + }, + { + "$ref": "#/parameters/Date" + }, + { + "$ref": "#/parameters/X-Forwarded-For" + }, + { + "$ref": "#/parameters/FSPIOP-Source" + }, + { + "$ref": "#/parameters/FSPIOP-Destination" + }, + { + "$ref": "#/parameters/FSPIOP-Encryption" + }, + { + "$ref": "#/parameters/FSPIOP-Signature" + }, + { + "$ref": "#/parameters/FSPIOP-URI" + }, + { + "$ref": "#/parameters/FSPIOP-HTTP-Method" + } + ], + "x-examples": { + "application/json": { + "“bulkQuoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“payer”": { + "partyIdInfo": { + "“partyIdType”": "“PERSONAL_ID”", + "“partyIdentifier”": "“16135551212”", + "“partySubIdOrType”": "“PASSPORT”", + "“fspId”": "“1234”" + }, + "merchantClassificationCode": "1234", + "“name”": "“Justin Trudeau”", + "“personalInfo”": { + "“complexName”": { + "“firstName”": "“Justin”", + "“middleName”": "“Pierre”", + "“lastName”": "“Trudeau”" + }, + "“dateOfBirth”": "“1971-12-25”" + } }, - "headers": { - "Content-Length": { - "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", - "type": "integer" + "“geoCode”": { + "“latitude”": "“+45.4215”", + "“longitude”": "“+75.6972”" + }, + "“individualQuotes”": [ + { + "“quoteId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“transactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“payee”": { + "partyIdInfo": { + "“partyIdType”": "“PERSONAL_ID”", + "“partyIdentifier”": "“16135551212”", + "“partySubIdOrType”": "“PASSPORT”", + "“fspId”": "“1234”" + }, + "merchantClassificationCode": "1234", + "“name”": "“Justin Trudeau”", + "“personalInfo”": { + "“complexName”": { + "“firstName”": "“Justin”", + "“middleName”": "“Pierre”", + "“lastName”": "“Trudeau”" + }, + "“dateOfBirth”": "“1971-12-25”" + } + }, + "“amountType”": "RECEIVE", + "“amount”": { + "“currency”": "“USD”", + "“amount”": "“123.45”" + }, + "“fees”": { + "“currency”": "“USD”", + "“amount”": "“1.45”" + }, + "“transactionType”": { + "“scenario”": "“DEPOSIT”", + "“subScenario”": "“locally defined sub-scenario”", + "“initiator”": "“PAYEE”", + "“initiatorType”": "“CONSUMER”", + "“refundInfo”": { + "“originalTransactionId”": "“b51ec534-ee48-4575-b6a9-ead2955b8069”", + "“refundReason”": "“free text indicating reason for the refund”" + }, + "“balanceOfPayments”": "“123”" + }, + "“note”": "“Note sent to Payee”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" + } + ] + } + } + ], + "“expiration”": "“2016-05-24T08:38:08.699-04:00”", + "extensionList": { + "extension": [ + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" }, - "Content-Type": { - "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", - "type": "string" + { + "“key”": "“errorDescription”", + "“value”": "“This is a more detailed error description”" } + ] } + } + }, + "responses": { + "202": { + "$ref": "#/responses/Response202" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } } + } }, - "parameters": { - "Accept": { - "name": "accept", - "in": "header", - "required": true, - "type": "string", - "description": "The Accept header field indicates the version of the API the client would like the server to use." + "/health": { + "get": { + "description": "The HTTP request GET /health is used to return the current status of the API.", + "summary": "Get Server", + "tags": [ + "health" + ], + "operationId": "HealthGet", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "$ref": "#/responses/ResponseHealth200" + }, + "400": { + "$ref": "#/responses/ErrorResponse400" + }, + "401": { + "$ref": "#/responses/ErrorResponse401" + }, + "403": { + "$ref": "#/responses/ErrorResponse403" + }, + "404": { + "$ref": "#/responses/ErrorResponse404" + }, + "405": { + "$ref": "#/responses/ErrorResponse405" + }, + "406": { + "$ref": "#/responses/ErrorResponse406" + }, + "501": { + "$ref": "#/responses/ErrorResponse501" + }, + "503": { + "$ref": "#/responses/ErrorResponse503" + } + } + } + } + }, + "definitions": { + "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." + }, + "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 fees." + }, + "AuthenticationType": { + "title": "AuthenticationTypeEnum", + "type": "string", + "enum": [ + "OTP", + "QRCODE" + ], + "description": "Below are the allowed values for the enumeration AuthenticationType. - OTP One-time password generated by the Payer FSP. - QRCODE QR code used as One Time Password." + }, + "AuthenticationValue": { + "title": "AuthenticationValue", + "type": "string", + "pattern": "^\\d{3,10}$|^\\S{1,64}$", + "description": "Contains the authentication value. The format depends on the authentication type used in the AuthenticationInfo complex type." + }, + "AuthorizationResponse": { + "title": "AuthorizationResponse", + "type": "string", + "enum": [ + "ENTERED", + "REJECTED", + "RESEND" + ], + "description": "Below are the allowed values for the enumeration - ENTERED Consumer entered the authentication value. - REJECTED Consumer rejected the transaction. - RESEND Consumer requested to resend the authentication value." + }, + "BalanceOfPayments": { + "title": "BalanceOfPayments", + "type": "string", + "pattern": "^[1-9]\\d{2}$", + "description": "(BopCode) The API data type BopCode is a JSON String of 3 characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. https://www.imf.org/external/np/sta/bopcode/" + }, + "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." + }, + "BinaryString32": { + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "description": "The API data type BinaryString32 is a fixed size version of the API data type BinaryString, where the raw underlying data is always of 32 bytes. The data type BinaryString32 should not use a padding character as the size of the underlying data is fixed." + }, + "BulkTransferState": { + "title": "BulkTransactionStateEnum", + "type": "string", + "enum": [ + "RECEIVED", + "PENDING", + "ACCEPTED", + "PROCESSING", + "COMPLETED", + "REJECTED" + ], + "description": "Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the bulk transfer from the Payer FSP. - PENDING Payee FSP has validated the bulk transfer. - ACCEPTED Payee FSP has accepted to process the bulk transfer. - PROCESSING Payee FSP has started to transfer fund to the Payees. - COMPLETED Payee FSP has completed transfer of funds to the Payees. - REJECTED Payee FSP has rejected to process the bulk transfer." + }, + "Code": { + "title": "Code", + "type": "string", + "pattern": "^[0-9a-zA-Z]{4,32}$", + "description": "Any code/token returned by the Payee FSP (TokenCode Type)." + }, + "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, that is restricted by a regular expression for interoperability reasons. An UUID is always 36 characters long, 32 hexadecimal symbols and 4 dashes (‘-‘)." + }, + "Currency": { + "title": "CurrencyEnum", + "description": "The currency codes defined in ISO 4217 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" + ] + }, + "Date": { + "title": "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": "The API data type Date is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons. This format, as specified in ISO 8601, contains a date only. A more readable version of the format is yyyy-MM-dd. Examples - \"1982-05-23\", \"1987-08-05”" + }, + "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." + }, + "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, 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 - \"2016-05-24T08:38:08.699-04:00\", \"2016-05-24T08:38:08.699Z\" (where Z indicates Zulu time zone, same as UTC)." + }, + "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) represents the specific error." + }, + "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." + }, + "FirstName": { + "title": "FirstName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "First name of the Party (Name Type)." + }, + "FspId": { + "title": "FspId", + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "FSP identifier." + }, + "IlpCondition": { + "title": "IlpCondition", + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "maxLength": 48, + "description": "Condition that must be attached to the transfer by the Payer." + }, + "IlpFulfilment": { + "title": "IlpFulfilment", + "type": "string", + "pattern": "^[A-Za-z0-9-_]{43}$", + "maxLength": 48, + "description": "Fulfilment that must be attached to the transfer by the Payee." + }, + "IlpPacket": { + "title": "IlpPacket", + "type": "string", + "pattern": "^[A-Za-z0-9-_]+[=]{0,2}$", + "minLength": 1, + "maxLength": 32768, + "description": "Information for recipient (transport layer information)." + }, + "Integer": { + "title": "Integer", + "type": "string", + "pattern": "^[1-9]\\d*$", + "description": "The API data type Integer is a JSON String consisting of digits only. Negative numbers and leading zeroes are not allowed. The data type is always limited to a specific number of digits." + }, + "LastName": { + "title": "LastName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "Last name of the Party (Name Type)." + }, + "Latitude": { + "title": "Latitude", + "type": "string", + "pattern": "^(\\+|-)?(?:90(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,6})?))$", + "description": "The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons." + }, + "Longitude": { + "title": "Longitude", + "type": "string", + "pattern": "^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,6})?))$", + "description": "The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons." + }, + "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." + }, + "MiddleName": { + "title": "MiddleName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^(?!\\s*$)[\\w .,'-]{1,128}$", + "description": "Middle name of the Party (Name Type)." + }, + "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." + }, + "Note": { + "title": "Note", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Memo assigned to transaction" + }, + "OtpValue": { + "title": "OtpValue", + "type": "string", + "pattern": "^\\d{3,10}$", + "description": "The API data type OtpValue is a JSON String of 3 to 10 characters, consisting of digits only. Negative numbers are not allowed. One or more leading zeros are allowed." + }, + "PartyIdentifier": { + "title": "PartyIdentifier", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Identifier of the Party." + }, + "PartyIdType": { + "title": "PartyIdTypeEnum", + "type": "string", + "enum": [ + "MSISDN", + "EMAIL", + "PERSONAL_ID", + "BUSINESS", + "DEVICE", + "ACCOUNT_ID", + "IBAN", + "ALIAS" + ], + "description": "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. 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. - 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." + }, + "PartyName": { + "title": "PartyName", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Name of the Party. Could be a real name or a nickname." + }, + "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." + }, + "PersonalIdentifierType": { + "title": "PersonalIdentifierType", + "type": "string", + "enum": [ + "PASSPORT", + "NATIONAL_REGISTRATION", + "DRIVING_LICENSE", + "ALIEN_REGISTRATION", + "NATIONAL_ID_CARD", + "EMPLOYER_ID", + "TAX_ID_NUMBER", + "SENIOR_CITIZENS_CARD", + "MARRIAGE_CERTIFICATE", + "HEALTH_CARD", + "VOTERS_ID", + "UNITED_NATIONS", + "OTHER_ID" + ], + "description": "Below are the allowed values for the enumeration - PASSPORT A passport number is used as reference to a Party. - NATIONAL_REGISTRATION A national registration number is used as reference to a Party. - DRIVING_LICENSE A driving license is used as reference to a Party. - ALIEN_REGISTRATION An alien registration number is used as reference to a Party. - NATIONAL_ID_CARD A national ID card number is used as reference to a Party. - EMPLOYER_ID A tax identification number is used as reference to a Party. - TAX_ID_NUMBER A tax identification number is used as reference to a Party. - SENIOR_CITIZENS_CARD A senior citizens card number is used as reference to a Party. - MARRIAGE_CERTIFICATE A marriage certificate number is used as reference to a Party. - HEALTH_CARD A health card number is used as reference to a Party. - VOTERS_ID A voter’s identification number is used as reference to a Party. - UNITED_NATIONS An UN (United Nations) number is used as reference to a Party. - OTHER_ID Any other type of identification type number is used as reference to a Party." + }, + "QRCODE": { + "title": "QRCODE", + "type": "string", + "minLength": 1, + "maxLength": 64, + "description": "QR code used as One Time Password." + }, + "RefundReason": { + "title": "RefundReason", + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "Reason for the refund." + }, + "TokenCode": { + "title": "TokenCode", + "type": "string", + "pattern": "^[0-9a-zA-Z]{4,32}$", + "description": "The API data type TokenCode is a JSON String between 4 and 32 characters, consisting of digits or upper or lowercase characters from a to z." + }, + "TransactionInitiator": { + "title": "TransactionInitiatorEnum", + "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." + }, + "TransactionInitiatorType": { + "title": "TransactionInitiatorTypeEnum", + "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." + }, + "TransactionRequestState": { + "title": "TransactionRequestStateEnum", + "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." + }, + "TransactionScenario": { + "title": "TransactionScenarioEnum", + "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." + }, + "TransactionState": { + "title": "TransactionStateEnum", + "type": "string", + "enum": [ + "RECEIVED", + "PENDING", + "COMPLETED", + "REJECTED" + ], + "description": "Below are the allowed values for the enumeration - RECEIVED Payee FSP has received the transaction from the Payer FSP. - PENDING Payee FSP has validated the transaction. - COMPLETED Payee FSP has successfully performed the transaction. - REJECTED Payee FSP has failed to perform the transaction." + }, + "TransactionSubScenario": { + "title": "TransactionSubScenario", + "type": "string", + "pattern": "^[A-Z_]{1,32}$", + "description": "Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type)." + }, + "TransferState": { + "title": "TransferStateEnum", + "type": "string", + "enum": [ + "RECEIVED", + "RESERVED", + "COMMITTED", + "ABORTED" + ], + "description": "Below are the allowed values for the enumeration - RECEIVED Next ledger has received the transfer. - RESERVED Next ledger has reserved the transfer. - COMMITTED Next ledger has successfully performed the transfer. - ABORTED Next ledger has aborted the transfer due a rejection or failure to perform the transfer." + }, + "UndefinedEnum": { + "title": "UndefinedEnum", + "type": "string", + "pattern": "^[A-Z_]{1,32}$", + "description": "The API data type UndefinedEnum is a JSON String consisting of 1 to 32 uppercase characters including an underscore character (_)." + }, + "AuthenticationInfo": { + "title": "AuthenticationInfo", + "type": "object", + "description": "Data model for the complex type AuthenticationInfo", + "properties": { + "authentication": { + "type": "string" + }, + "authenticationValue": { + "type": "string" + } + }, + "required": [ + "authentication", + "authenticationValue" + ] + }, + "AuthorizationsIDPutResponse": { + "title": "AuthorizationsIDPutResponse", + "type": "object", + "description": "PUT /authorizations/{ID} object", + "properties": { + "authenticationInfo": { + "type": "string", + "description": "OTP or QR Code if entered, otherwise empty." + }, + "responseType": { + "type": "string", + "description": "Enum containing response information; if the customer entered the authentication value, rejected the transaction, or requested a resend of the authentication value." + } + }, + "required": [ + "responseType" + ] + }, + "BulkQuotesPostRequest": { + "title": "BulkQuotesPostRequest", + "type": "object", + "description": "POST /bulkQuotes object", + "properties": { + "bulkQuoteId": { + "type": "string", + "description": "Common ID between the FSPs for the bulk quote object, decided by the Payer FSP. The ID should be reused for resends of the same bulk quote. A new ID should be generated for each new bulk quote." + }, + "payer": { + "$ref": "#/definitions/Party", + "description": "Information about the Payer in the proposed financial transaction." + }, + "geoCode": { + "$ref": "#/definitions/GeoCode", + "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." + }, + "expiration": { + "type": "string", + "description": "Expiration is optional to let the Payee FSP know when a quote no longer needs to be returned." + }, + "individualQuotes": { + "type": "array", + "minItems": 1, + "maxItems": 1000, + "items": { + "$ref": "#/definitions/IndividualQuote" + }, + "description": "List of quotes elements." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "bulkQuoteId", + "payer", + "individualQuotes" + ] + }, + "BulkQuotesIDPutResponse": { + "title": "BulkQuotesIDPutResponse", + "type": "object", + "description": "PUT /bulkQuotes/{ID} object", + "properties": { + "individualQuoteResults": { + "type": "array", + "maxItems": 1000, + "items": { + "$ref": "#/definitions/IndividualQuoteResult" + }, + "description": "Fees for each individual transaction, if any of them are charged per transaction." + }, + "expiration": { + "type": "string", + "description": "Date and time until when the quotation is valid and can be honored when used in the subsequent transaction request." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "expiration" + ] + }, + "BulkTransfersPostRequest": { + "title": "BulkTransfersPostRequest", + "type": "object", + "description": "POST /bulkTransfers object", + "properties": { + "bulkTransferId": { + "type": "string", + "description": "Common ID between the FSPs and the optional Switch for the bulk transfer object, decided by the Payer FSP. The ID should be reused for resends of the same bulk transfer. A new ID should be generated for each new bulk transfer." + }, + "bulkQuoteId": { + "type": "string", + "description": "ID of the related bulk quote." + }, + "payerFsp": { + "type": "string", + "description": "Payer FSP identifier." + }, + "payeeFsp": { + "type": "string", + "description": "Payee FSP identifier." + }, + "individualTransfers": { + "type": "array", + "minItems": 1, + "maxItems": 1000, + "items": { + "$ref": "#/definitions/IndividualTransfer" + }, + "description": "List of IndividualTransfer elements." + }, + "expiration": { + "type": "string", + "description": "Expiration time of the transfers." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "bulkTransferId", + "bulkQuoteId", + "payerFsp", + "payeeFsp", + "individualTransfers", + "expiration" + ] + }, + "BulkTransfersIDPutResponse": { + "title": "BulkTransfersIDPutResponse", + "type": "object", + "description": "PUT /bulkTransfers/{ID} object", + "properties": { + "completedTimestamp": { + "type": "string", + "description": "Time and date when the bulk transaction was completed." + }, + "individualTransferResults": { + "type": "array", + "maxItems": 1000, + "items": { + "$ref": "#/definitions/IndividualTransferResult" + }, + "description": "List of IndividualTransferResult elements." + }, + "bulkTransferState": { + "type": "string", + "description": "The state of the bulk transfer." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "bulkTransferState" + ] + }, + "ErrorInformation": { + "title": "ErrorInformation", + "type": "object", + "description": "Data model for the complex type ErrorInformation.", + "properties": { + "errorCode": { + "type": "string", + "description": "Specific error number." + }, + "errorDescription": { + "type": "string", + "description": "Error description string." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional list of extensions, specific to deployment." + } + }, + "required": [ + "errorCode", + "errorDescription" + ] + }, + "ErrorInformationObject": { + "title": "ErrorInformationObject", + "type": "object", + "description": "Data model for the complex type object that contains ErrorInformation.", + "properties": { + "errorInformation": { + "$ref": "#/definitions/ErrorInformation" + } + }, + "required": [ + "errorInformation" + ] + }, + "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": "#/definitions/ErrorInformation" + } + } + }, + "Extension": { + "title": "Extension", + "type": "object", + "description": "Data model for the complex type Extension", + "properties": { + "key": { + "type": "string", + "description": "Extension key." + }, + "value": { + "type": "string", + "description": "Extension value." + } + }, + "required": [ + "key", + "value" + ] + }, + "ExtensionList": { + "title": "ExtensionList", + "type": "object", + "description": "Data model for the complex type ExtensionList", + "properties": { + "extension": { + "type": "array", + "items": { + "$ref": "#/definitions/Extension" + }, + "minItems": 1, + "maxItems": 16, + "description": "Number of Extension elements" + } + }, + "required": [ + "extension" + ] + }, + "GeoCode": { + "title": "GeoCode", + "type": "object", + "description": "Data model for the complex type GeoCode. Indicates the geographic location from where the transaction was initiated.", + "properties": { + "latitude": { + "type": "string", + "description": "Latitude of the Party." + }, + "longitude": { + "type": "string", + "description": "Longitude of the Party." + } + }, + "required": [ + "latitude", + "longitude" + ] + }, + "IndividualQuote": { + "title": "IndividualQuote", + "type": "object", + "description": "Data model for the complex type IndividualQuote.", + "properties": { + "quoteId": { + "type": "string", + "description": "Identifies quote message." + }, + "transactionId": { + "type": "string", + "description": "Identifies transaction message." + }, + "payee": { + "$ref": "#/definitions/Party", + "description": "Information about the Payee in the proposed financial transaction." + }, + "amountType": { + "type": "string", + "description": "SEND for sendAmount, RECEIVE for receiveAmount." + }, + "amount": { + "$ref": "#/definitions/Money", + "description": "Depending on amountType - If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities." + }, + "fees": { + "$ref": "#/definitions/Money", + "description": "The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed." + }, + "transactionType": { + "$ref": "#/definitions/TransactionType", + "description": "Type of transaction that the quote is requested for." + }, + "note": { + "type": "string", + "description": "Memo that will be attached to the transaction." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "quoteId", + "transactionId", + "payee", + "amountType", + "amount", + "transactionType" + ] + }, + "IndividualQuoteResult": { + "title": "IndividualQuoteResult", + "type": "object", + "description": "Data model for the complex type IndividualQuoteResult.", + "properties": { + "quoteId": { + "type": "string", + "description": "Identifies quote message." + }, + "payee": { + "$ref": "#/definitions/Party", + "description": "Information about the Payee in the proposed financial transaction." + }, + "transferAmount": { + "$ref": "#/definitions/Money", + "description": "Amount that the Payee FSP should receive." + }, + "payeeReceiveAmount": { + "$ref": "#/definitions/Money", + "description": "Amount that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees." + }, + "payeeFspFee": { + "$ref": "#/definitions/Money", + "description": "Payee FSP’s part of the transaction fee." + }, + "payeeFspCommission": { + "$ref": "#/definitions/Money", + "description": "Transaction commission from the Payee FSP" + }, + "ilpPacket": { + "type": "string", + "description": "The ILP Packet that must be attached to the transfer by the Payer." + }, + "condition": { + "type": "string", + "description": "The condition that must be attached to the transfer by the Payer." + }, + "errorInformation": { + "$ref": "#/definitions/ErrorInformation", + "description": "Error code, category description. Note - receiveAmount, payeeFspFee, payeeFspCommission, expiration, ilpPacket, condition should not be set if errorInformation is set." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "quoteId" + ] + }, + "IndividualTransfer": { + "title": "IndividualTransfer", + "type": "object", + "description": "Data model for the complex type IndividualTransfer.", + "properties": { + "transferId": { + "type": "string", + "description": "Identifies messages related to the same /transfers sequence." + }, + "transferAmount": { + "$ref": "#/definitions/Money", + "description": "Transaction amount to be sent." + }, + "ilpPacket": { + "type": "string", + "description": "ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data." + }, + "condition": { + "type": "string", + "description": "Condition that must be fulfilled to commit the transfer." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transferId", + "transferAmount", + "ilpPacket", + "condition" + ] + }, + "IndividualTransferResult": { + "title": "IndividualTransferResult", + "type": "object", + "description": "Data model for the complex type IndividualTransferResult.", + "properties": { + "transferId": { + "type": "string", + "description": "Identifies messages related to the same /transfers sequence." + }, + "fulfilment": { + "type": "string", + "description": "Fulfilment of the condition specified with the transaction. Note - Either fulfilment or errorInformation should be set, not both." + }, + "errorInformation": { + "$ref": "#/definitions/ErrorInformation", + "description": "If transfer is REJECTED, error information may be provided. Note - Either fulfilment or errorInformation should be set, not both." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transferId" + ] + }, + "Money": { + "title": "Money", + "type": "object", + "description": "Data model for the complex type Money.", + "properties": { + "currency": { + "type": "string", + "description": "Currency of the amount." + }, + "amount": { + "type": "string", + "description": "Amount of Money." + } + }, + "required": [ + "currency", + "amount" + ] + }, + "ParticipantsTypeIDSubIDPostRequest": { + "title": "ParticipantsTypeIDSubIDPostRequest", + "type": "object", + "description": "POST /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object", + "properties": { + "fspId": { + "type": "string", + "description": "FSP Identifier that the Party belongs to." + }, + "currency": { + "type": "string", + "description": "Indicate that the provided Currency is supported by the Party." + } + }, + "required": [ + "fspId" + ] + }, + "ParticipantsTypeIDPutResponse": { + "title": "ParticipantsTypeIDPutResponse", + "type": "object", + "description": "PUT /participants/{Type}/{ID}/{SubId}, /participants/{Type}/{ID} object", + "properties": { + "fspId": { + "type": "string", + "description": "FSP Identifier that the Party belongs to." + } + } + }, + "ParticipantsIDPutResponse": { + "title": "ParticipantsIDPutResponse", + "type": "object", + "description": "PUT /participants/{ID} object", + "properties": { + "partyList": { + "type": "array", + "items": { + "$ref": "#/definitions/PartyResult" + }, + "minItems": 1, + "maxItems": 10000, + "description": "List of PartyResult elements that were either created or failed to be created." + }, + "currency": { + "type": "string", + "description": "Indicate that the provided Currency was set to be supported by each successfully added PartyIdInfo." + } + }, + "required": [ + "partyList" + ] + }, + "ParticipantsPostRequest": { + "title": "ParticipantsPostRequest", + "type": "object", + "description": "POST /participants object", + "properties": { + "requestId": { + "type": "string", + "description": "The ID of the request, decided by the client. Used for identification of the callback from the server." + }, + "partyList": { + "type": "array", + "items": { + "$ref": "#/definitions/PartyIdInfo" + }, + "minItems": 1, + "maxItems": 10000, + "description": "List of PartyIdInfo elements that the client would like to update or create FSP information about." + }, + "currency": { + "type": "string", + "description": "Indicate that the provided Currency is supported by each PartyIdInfo in the list." + } + }, + "required": [ + "requestId", + "partyList" + ] + }, + "Party": { + "title": "Party", + "type": "object", + "description": "Data model for the complex type Party.", + "properties": { + "partyIdInfo": { + "$ref": "#/definitions/PartyIdInfo", + "description": "Party Id type, id, sub ID or type, and FSP Id." + }, + "merchantClassificationCode": { + "type": "string", + "description": "Used in the context of Payee Information, where the Payee happens to be a merchant accepting merchant payments." + }, + "name": { + "type": "string", + "description": "Display name of the Party, could be a real name or a nick name." + }, + "personalInfo": { + "$ref": "#/definitions/PartyPersonalInfo", + "description": "Personal information used to verify identity of Party such as first, middle, last name and date of birth." + } + }, + "required": [ + "partyIdInfo" + ] + }, + "PartyComplexName": { + "title": "PartyComplexName", + "type": "object", + "description": "Data model for the complex type PartyComplexName.", + "properties": { + "firstName": { + "type": "string", + "description": "Party’s first name." + }, + "middleName": { + "type": "string", + "description": "Party’s middle name." + }, + "lastName": { + "type": "string", + "description": "Party’s last name." + } + } + }, + "PartyIdInfo": { + "title": "PartyIdInfo", + "type": "object", + "description": "Data model for the complex type PartyIdInfo.", + "properties": { + "partyIdType": { + "type": "string", + "description": "Type of the identifier." + }, + "partyIdentifier": { + "type": "string", + "description": "An identifier for the Party." + }, + "partySubIdOrType": { + "type": "string", + "description": "A sub-identifier or sub-type for the Party." + }, + "fspId": { + "type": "string", + "description": "FSP ID (if known)" + } + }, + "required": [ + "partyIdType", + "partyIdentifier" + ] + }, + "PartiesTypeIDPutResponse": { + "title": "PartiesTypeIDPutResponse", + "type": "object", + "description": "PUT /parties/{Type}/{ID} object", + "properties": { + "party": { + "$ref": "#/definitions/Party", + "description": "Information regarding the requested Party." + } + }, + "required": [ + "party" + ] + }, + "PartyPersonalInfo": { + "title": "PartyPersonalInfo", + "type": "object", + "description": "Data model for the complex type PartyPersonalInfo.", + "properties": { + "complexName": { + "$ref": "#/definitions/PartyComplexName", + "description": "First, middle and last name for the Party." + }, + "dateOfBirth": { + "type": "string", + "description": "Date of birth for the Party." + } + } + }, + "PartyResult": { + "title": "PartyResult", + "type": "object", + "description": "Data model for the complex type PartyResult.", + "properties": { + "partyId": { + "$ref": "#/definitions/PartyIdInfo", + "description": "Party Id type, id, sub ID or type, and FSP Id." + }, + "errorInformation": { + "$ref": "#/definitions/ErrorInformation", + "description": "If the Party failed to be added, error information should be provided. Otherwise, this parameter should be empty to indicate success." + } + }, + "required": [ + "partyId" + ] + }, + "QuotesPostRequest": { + "title": "QuotesPostRequest", + "type": "object", + "description": "POST /quotes object", + "properties": { + "quoteId": { + "type": "string", + "description": "Common ID between the FSPs for the quote object, decided by the Payer FSP. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction." + }, + "transactionId": { + "type": "string", + "description": "Common ID (decided by the Payer FSP) between the FSPs for the future transaction object. The actual transaction will be created as part of a successful transfer process. The ID should be reused for resends of the same quote for a transaction. A new ID should be generated for each new quote for a transaction." + }, + "transactionRequestId": { + "type": "string", + "description": "Identifies an optional previously-sent transaction request." + }, + "payee": { + "$ref": "#/definitions/Party", + "description": "Information about the Payee in the proposed financial transaction." + }, + "payer": { + "$ref": "#/definitions/Party", + "description": "Information about the Payer in the proposed financial transaction." + }, + "amountType": { + "type": "string", + "description": "SEND for send amount, RECEIVE for receive amount." + }, + "amount": { + "$ref": "#/definitions/Money", + "description": "Depending on amountType. If SEND - The amount the Payer would like to send, that is, the amount that should be withdrawn from the Payer account including any fees. The amount is updated by each participating entity in the transaction. If RECEIVE - The amount the Payee should receive, that is, the amount that should be sent to the receiver exclusive any fees. The amount is not updated by any of the participating entities." + }, + "fees": { + "$ref": "#/definitions/Money", + "description": "The fees in the transaction. The fees element should be empty if fees should be non-disclosed. The fees element should be non-empty if fees should be disclosed." + }, + "transactionType": { + "$ref": "#/definitions/TransactionType", + "description": "Type of transaction for which the quote is requested." + }, + "geoCode": { + "$ref": "#/definitions/GeoCode", + "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." + }, + "note": { + "type": "string", + "description": "A memo that will be attached to the transaction." + }, + "expiration": { + "type": "string", + "description": "Expiration is optional. It can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, and Merchant to know that their request has a time limit." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "quoteId", + "transactionId", + "payee", + "payer", + "amountType", + "amount", + "transactionType" + ] + }, + "QuotesIDPutResponse": { + "title": "QuotesIDPutResponse", + "type": "object", + "description": "PUT /quotes/{ID} object", + "properties": { + "transferAmount": { + "$ref": "#/definitions/Money", + "description": "The amount of money that the Payee FSP should receive." + }, + "payeeReceiveAmount": { + "$ref": "#/definitions/Money", + "description": "The amount of Money that the Payee should receive in the end-to-end transaction. Optional as the Payee FSP might not want to disclose any optional Payee fees." + }, + "payeeFspFee": { + "$ref": "#/definitions/Money", + "description": "Payee FSP’s part of the transaction fee." + }, + "payeeFspCommission": { + "$ref": "#/definitions/Money", + "description": "Transaction commission from the Payee FSP." + }, + "expiration": { + "type": "string", + "description": "Date and time until when the quotation is valid and can be honored when used in the subsequent transaction." + }, + "geoCode": { + "$ref": "#/definitions/GeoCode", + "description": "Longitude and Latitude of the Payee. Can be used to detect fraud." + }, + "ilpPacket": { + "type": "string", + "description": "The ILP Packet that must be attached to the transfer by the Payer." + }, + "condition": { + "type": "string", + "description": "The condition that must be attached to the transfer by the Payer." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transferAmount", + "expiration", + "ilpPacket", + "condition" + ] + }, + "Refund": { + "title": "Refund", + "type": "object", + "description": "Data model for the complex type Refund.", + "properties": { + "originalTransactionId": { + "type": "string", + "description": "Reference to the original transaction ID that is requested to be refunded." + }, + "refundReason": { + "type": "string", + "description": "Free text indicating the reason for the refund." + } + }, + "required": [ + "originalTransactionId" + ] + }, + "Status": { + "title": "Status", + "type": "object", + "description": "Data model for the api status.", + "properties": { + "status": { + "type": "string", + "description": "The return status, usually \"OK\"" + } + } + }, + "Transaction": { + "title": "Transaction", + "type": "object", + "description": "Data model for the complex type Transaction. The Transaction type is used to carry end-to-end data between the Payer FSP and the Payee FSP in the ILP Packet. Both the transactionId and the quoteId in the data model are decided by the Payer FSP in the POST /quotes.", + "properties": { + "transactionId": { + "type": "string", + "description": "ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote." + }, + "quoteId": { + "type": "string", + "description": "ID of the quote, the ID is decided by the Payer FSP during the creation of the quote." + }, + "payee": { + "$ref": "#/definitions/Party", + "description": "Information about the Payee in the proposed financial transaction." + }, + "payer": { + "$ref": "#/definitions/Party", + "description": "Information about the Payer in the proposed financial transaction." + }, + "amount": { + "$ref": "#/definitions/Money", + "description": "Transaction amount to be sent." + }, + "transactionType": { + "$ref": "#/definitions/TransactionType", + "description": "Type of the transaction." + }, + "note": { + "type": "string", + "description": "Memo associated to the transaction, intended to the Payee." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transactionId", + "quoteId", + "payee", + "payer", + "amount", + "transactionType" + ] + }, + "TransactionRequestsIDPutResponse": { + "title": "TransactionRequestsIDPutResponse", + "type": "object", + "description": "PUT /transactionRequests/{ID} object", + "properties": { + "transactionId": { + "type": "string", + "description": "Identifies a related transaction (if a transaction has been created)." + }, + "transactionRequestState": { + "type": "string", + "description": "State of the transaction request." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transactionRequestState" + ] + }, + "TransactionsIDPutResponse": { + "title": "TransactionsIDPutResponse", + "type": "object", + "description": "PUT /transactions/{ID} object", + "properties": { + "completedTimestamp": { + "type": "string", + "description": "Time and date when the transaction was completed." + }, + "transactionState": { + "type": "string", + "description": "State of the transaction." + }, + "code": { + "type": "string", + "description": "Optional redemption information provided to Payer after transaction has been completed." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transactionState" + ] + }, + "TransactionType": { + "title": "TransactionType", + "type": "object", + "description": "Data model for the complex type TransactionType.", + "properties": { + "scenario": { + "type": "string", + "description": "Deposit, withdrawal, refund, …" + }, + "subScenario": { + "type": "string", + "description": "Possible sub-scenario, defined locally within the scheme." + }, + "initiator": { + "type": "string", + "description": "Who is initiating the transaction - Payer or Payee" + }, + "initiatorType": { + "type": "string", + "description": "Consumer, agent, business, …" + }, + "refundInfo": { + "$ref": "#/definitions/Refund", + "description": "Extra information specific to a refund scenario. Should only be populated if scenario is REFUND" + }, + "balanceOfPayments": { + "type": "string", + "description": "Balance of Payments code." + } + }, + "required": [ + "scenario", + "initiator", + "initiatorType" + ] + }, + "TransfersPostRequest": { + "title": "TransfersPostRequest", + "type": "object", + "description": "POST /transfers Request object", + "properties": { + "transferId": { + "type": "string", + "description": "The common ID between the FSPs and the optional Switch for the transfer object, decided by the Payer FSP. The ID should be reused for resends of the same transfer. A new ID should be generated for each new transfer." + }, + "payeeFsp": { + "type": "string", + "description": "Payee FSP in the proposed financial transaction." + }, + "payerFsp": { + "type": "string", + "description": "Payer FSP in the proposed financial transaction." + }, + "amount": { + "$ref": "#/definitions/Money", + "description": "The transfer amount to be sent." + }, + "ilpPacket": { + "type": "string", + "description": "The ILP Packet containing the amount delivered to the Payee and the ILP Address of the Payee and any other end-to-end data." + }, + "condition": { + "type": "string", + "description": "The condition that must be fulfilled to commit the transfer." + }, + "expiration": { + "type": "string", + "description": "Expiration can be set to get a quick failure expiration of the transfer. The transfer should be rolled back if no fulfilment is delivered before this time." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transferId", + "payeeFsp", + "payerFsp", + "amount", + "ilpPacket", + "condition", + "expiration" + ] + }, + "TransactionRequestsPostRequest": { + "title": "TransactionRequestsPostRequest", + "type": "object", + "description": "POST /transactionRequests object", + "properties": { + "transactionRequestId": { + "type": "string", + "description": "Common ID between the FSPs for the transaction request object, decided by the Payee FSP. The ID should be reused for resends of the same transaction request. A new ID should be generated for each new transaction request." + }, + "payee": { + "$ref": "#/definitions/Party", + "description": "Information about the Payee in the proposed financial transaction." + }, + "payer": { + "$ref": "#/definitions/PartyIdInfo", + "description": "Information about the Payer type, id, sub-type/id, FSP Id in the proposed financial transaction." + }, + "amount": { + "$ref": "#/definitions/Money", + "description": "Requested amount to be transferred from the Payer to Payee." + }, + "transactionType": { + "$ref": "#/definitions/TransactionType", + "description": "Type of transaction." + }, + "note": { + "type": "string", + "description": "Reason for the transaction request, intended to the Payer." + }, + "geoCode": { + "$ref": "#/definitions/GeoCode", + "description": "Longitude and Latitude of the initiating Party. Can be used to detect fraud." + }, + "authenticationType": { + "type": "string", + "description": "OTP or QR Code, otherwise empty." + }, + "expiration": { + "type": "string", + "description": "Can be set to get a quick failure in case the peer FSP takes too long to respond. Also, it may be beneficial for Consumer, Agent, Merchant to know that their request has a time limit." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transactionRequestId", + "payee", + "payer", + "amount", + "transactionType" + ] + }, + "TransfersIDPutResponse": { + "title": "TransfersIDPutResponse", + "type": "object", + "description": "PUT /transfers/{ID} object", + "properties": { + "fulfilment": { + "type": "string", + "description": "Fulfilment of the condition specified with the transaction. Mandatory if transfer has completed successfully." + }, + "completedTimestamp": { + "type": "string", + "description": "Time and date when the transaction was completed." + }, + "transferState": { + "type": "string", + "description": "State of the transfer." + }, + "extensionList": { + "$ref": "#/definitions/ExtensionList", + "description": "Optional extension, specific to deployment." + } + }, + "required": [ + "transferState" + ] + } + }, + "responses": { + "ResponseHealth200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/Status" + } + }, + "Response200": { + "description": "OK" + }, + "Response202": { + "description": "Accepted" + }, + "ErrorResponse400": { + "description": "Bad Request - The application cannot process the request; for example, due to malformed syntax or the payload exceeded size restrictions.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" }, + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse401": { + "description": "Unauthorized - The request requires authentication in order to be processed.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { "Content-Length": { - "name": "content-length", - "in": "header", - "required": false, - "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)" + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" }, "Content-Type": { - "name": "content-type", - "in": "header", - "type": "string", - "required": true, - "description": "The Content-Type header indicates the specific version of the API used to send the payload body." + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse403": { + "description": "Forbidden - The request was denied and will be denied in the future.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" }, - "Date": { - "name": "date", - "in": "header", - "type": "string", - "required": true, - "description": "The Date header field indicates the date when the request was sent." - }, - "X-Forwarded-For": { - "name": "x-forwarded-for", - "in": "header", - "type": "string", - "required": false, - "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For." - }, - "FSPIOP-Source": { - "name": "fspiop-source", - "in": "header", - "type": "string", - "required": true, - "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)." - }, - "FSPIOP-Destination": { - "name": "fspiop-destination", - "in": "header", - "type": "string", - "required": false, - "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes." - }, - "FSPIOP-Encryption": { - "name": "fspiop-encryption", - "in": "header", - "type": "string", - "required": false, - "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request." - }, - "FSPIOP-Signature": { - "name": "fspiop-signature", - "in": "header", - "type": "string", - "required": false, - "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature." - }, - "FSPIOP-URI": { - "name": "fspiop-uri", - "in": "header", - "type": "string", - "required": false, - "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document." - }, - "FSPIOP-HTTP-Method": { - "name": "fspiop-http-method", - "in": "header", - "type": "string", - "required": false, - "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document." - }, - "ID": { - "name": "ID", - "in": "path", - "required": true, - "type": "string" + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse404": { + "description": "Not Found - The resource specified in the URI was not found.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" }, - "Type": { - "name": "Type", - "in": "path", - "required": true, - "type": "string" + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse405": { + "description": "Method Not Allowed - An unsupported HTTP method for the request was used.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" }, - "SubId": { - "name": "SubId", - "in": "path", - "required": true, - "type": "string" + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse406": { + "description": "Not acceptable - The server is not capable of generating content according to the Accept headers sent in the request. Used in the API to indicate that the server does not support the version that the client is requesting.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" + }, + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse501": { + "description": "Not Implemented - The server does not support the requested service. The client should not retry.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" + }, + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" + } + } + }, + "ErrorResponse503": { + "description": "Service Unavailable - The server is currently unavailable to accept any new service requests. This should be a temporary state, and the client should retry within a reasonable time frame.", + "schema": { + "$ref": "#/definitions/ErrorInformationResponse" + }, + "headers": { + "Content-Length": { + "description": "The Content-Length header field indicates the anticipated size of the payload body. Only sent if there is a body.", + "type": "integer" + }, + "Content-Type": { + "description": "The Content-Type header indicates the specific version of the API used to send the payload body.", + "type": "string" } + } + } + }, + "parameters": { + "Accept": { + "name": "accept", + "in": "header", + "required": true, + "type": "string", + "description": "The Accept header field indicates the version of the API the client would like the server to use." + }, + "Content-Length": { + "name": "content-length", + "in": "header", + "required": false, + "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": { + "name": "content-type", + "in": "header", + "type": "string", + "required": true, + "description": "The Content-Type header indicates the specific version of the API used to send the payload body." + }, + "Date": { + "name": "date", + "in": "header", + "type": "string", + "required": true, + "description": "The Date header field indicates the date when the request was sent." + }, + "X-Forwarded-For": { + "name": "x-forwarded-for", + "in": "header", + "type": "string", + "required": false, + "description": "The X-Forwarded-For header field is an unofficially accepted standard used for informational purposes of the originating client IP address, as a request might pass multiple proxies, firewalls, and so on. Multiple X-Forwarded-For values as in the example shown here should be expected and supported by implementers of the API. Note - An alternative to X-Forwarded-For is defined in RFC 7239. However, to this point RFC 7239 is less-used and supported than X-Forwarded-For." + }, + "FSPIOP-Source": { + "name": "fspiop-source", + "in": "header", + "type": "string", + "required": true, + "description": "The FSPIOP-Source header field is a non-HTTP standard field used by the API for identifying the sender of the HTTP request. The field should be set by the original sender of the request. Required for routing and signature verification (see header field FSPIOP-Signature)." + }, + "FSPIOP-Destination": { + "name": "fspiop-destination", + "in": "header", + "type": "string", + "required": false, + "description": "The FSPIOP-Destination header field is a non-HTTP standard field used by the API for HTTP header based routing of requests and responses to the destination. The field should be set by the original sender of the request (if known), so that any entities between the client and the server do not need to parse the payload for routing purposes." + }, + "FSPIOP-Encryption": { + "name": "fspiop-encryption", + "in": "header", + "type": "string", + "required": false, + "description": "The FSPIOP-Encryption header field is a non-HTTP standard field used by the API for applying end-to-end encryption of the request." + }, + "FSPIOP-Signature": { + "name": "fspiop-signature", + "in": "header", + "type": "string", + "required": false, + "description": "The FSPIOP-Signature header field is a non-HTTP standard field used by the API for applying an end-to-end request signature." + }, + "FSPIOP-URI": { + "name": "fspiop-uri", + "in": "header", + "type": "string", + "required": false, + "description": "The FSPIOP-URI header field is a non-HTTP standard field used by the API for signature verification, should contain the service URI. Required if signature verification is used, for more information see API Signature document." + }, + "FSPIOP-HTTP-Method": { + "name": "fspiop-http-method", + "in": "header", + "type": "string", + "required": false, + "description": "The FSPIOP-HTTP-Method header field is a non-HTTP standard field used by the API for signature verification, should contain the service HTTP method. Required if signature verification is used, for more information see API Signature document." + }, + "ID": { + "name": "ID", + "in": "path", + "required": true, + "type": "string" + }, + "Type": { + "name": "Type", + "in": "path", + "required": true, + "type": "string" + }, + "SubId": { + "name": "SubId", + "in": "path", + "required": true, + "type": "string" } + } } diff --git a/src/lib/config.js b/src/lib/config.js index 42665ed5..9801e4a4 100644 --- a/src/lib/config.js +++ b/src/lib/config.js @@ -57,7 +57,7 @@ class Config { } } // eslint-disable-next-line no-console - console.log('Config loaded: %s', util.inspect(this)) + // console.log('Initializes database connection to :', RC.DATABASE.SCHEMA, 'database.') } } diff --git a/src/model/quotes.js b/src/model/quotes.js index 50d8561e..bd594f51 100644 --- a/src/model/quotes.js +++ b/src/model/quotes.js @@ -891,7 +891,7 @@ class QuotesModel { */ writeLog (message) { // eslint-disable-next-line no-console - console.log(`${new Date().toISOString()}, (${this.requestId}) [quotesmodel]: ${message}`) + // console.log(`${new Date().toISOString()}, (${this.requestId}) [quotesmodel]: ${message}`) } } diff --git a/src/server.js b/src/server.js index 19188998..61bfdb72 100644 --- a/src/server.js +++ b/src/server.js @@ -35,7 +35,7 @@ const initServer = async function (db, config) { validate: { failAction: async (request, h, err) => { // eslint-disable-next-line no-console - console.log(`validation failure: ${err.stack || util.inspect(err)}`) + // console.log(`validation failure: ${err.stack || util.inspect(err)}`) throw err } } @@ -71,25 +71,10 @@ const initServer = async function (db, config) { } }]) - // add a health endpoint on / - server.route({ - method: 'GET', - path: '/', - handler: async (request, h) => { - if (!(await db.isConnected())) { - return h.response({ - statusCode: 500, - error: 'Internal Server Error', - message: 'Database not connected' }).code(500) - } - return h.response().code(200) - } - }) - // deal with the api spec content-type not being "application/json" which it actually is. seriously!? server.ext('onRequest', function (request, reply) { if (request.headers['content-type'] && - request.headers['content-type'].startsWith('application/vnd.interoperability')) { + request.headers['content-type'].startsWith('application/vnd.interoperability')) { request.headers['x-content-type'] = request.headers['content-type'] request.headers['content-type'] = 'application/json' } @@ -113,14 +98,14 @@ initDb(config.database).then(db => { server.log(['info'], 'Received SIGTERM, closing server...') server.stop({ timeout: 10000 }).then(err => { // eslint-disable-next-line no-console - console.log(`server stopped. ${err ? (err.stack || util.inspect(err)) : ''}`) + // console.log(`server stopped. ${err ? (err.stack || util.inspect(err)) : ''}`) process.exit((err) ? 1 : 0) }) }) server.plugins.openapi.setHost(server.info.host + ':' + server.info.port) - server.log(['info'], `Server running on ${server.info.host}:${server.info.port}`) + server.log(['info'], `Server running on ${server.info.uri}`) }).catch(err => { // eslint-disable-next-line no-console - console.log(`Error initializing server: ${err.stack || util.inspect(err)}`) + //console.log(`Error initializing server: ${err.stack || util.inspect(err)}`) })