From 0678705352292f508ffb90380f93aedbe4d5f310 Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:05:28 +0000 Subject: [PATCH 1/7] docs(eslint/gitignore): eslint/gitignore excepetions --- .eslintrc.json | 2 ++ .gitignore | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 613ad8b..e17c530 100755 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -26,6 +26,8 @@ 4 ], "@typescript-eslint/no-explicit-any": ["off"], // allow any + "@typescript-eslint/no-unused-vars": ["warn"], // warn + "@typescript-eslint/no-disabled-tests ": ["off"], // warn "no-console": 1 // warn } } diff --git a/.gitignore b/.gitignore index 58951bb..0b48c06 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ dist .env .src/test .reminder -./reminder/ \ No newline at end of file +./reminder/ +test \ No newline at end of file From 68e038f1d0cbbc0a64ee4e2f0ca1a3837ae79a12 Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:06:56 +0000 Subject: [PATCH 2/7] chore(pkg): pkg updates --- package-lock.json | 4069 +++++++++++++++++++++++++++------------------ package.json | 28 +- 2 files changed, 2432 insertions(+), 1665 deletions(-) diff --git a/package-lock.json b/package-lock.json index f147128..e377150 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,39 +9,43 @@ "version": "6.0.1", "license": "MIT", "dependencies": { - "axios": "^1.3.4", + "axios": "^1.3.5", "oauth-1.0a": "^2.2.6", - "typescript": "^5.0.2", + "typescript": "^5.0.3", "url-parse": "^1.5.10" }, "devDependencies": { "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^8.0.7", "@types/jest": "^29.5.0", + "@types/luxon": "^3.3.0", + "@types/randomstring": "^1.1.8", "@types/url-parse": "^1.4.8", - "@typescript-eslint/eslint-plugin": "^5.55.0", - "@typescript-eslint/parser": "^5.55.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", "commitizen": "^4.3.0", "cz-conventional-changelog": "^3.3.0", "del-cli": "^5.0.0", - "eslint": "^8.36.0", - "eslint-config-prettier": "^8.7.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-n": "^15.6.1", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", "jest": "^29.5.0", "lint-staged": "13.2.0", + "luxon": "^3.3.0", "nock": "13.3.0", - "npm-check-updates": "^16.7.12", - "prettier": "2.8.4", - "semantic-release": "^20.1.3", - "ts-jest": "^29.0.5", + "npm-check-updates": "^16.10.7", + "prettier": "2.8.7", + "randomstring": "^1.2.3", + "semantic-release": "^21.0.1", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "tsup": "^6.6.3" + "tsup": "^6.7.0" }, "engines": { "node": ">=14.0.0" @@ -1245,14 +1249,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", - "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -1290,9 +1294,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2627,81 +2631,225 @@ } }, "node_modules/@semantic-release/npm": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", - "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-10.0.2.tgz", + "integrity": "sha512-Mo0XoBza4pUapxiBhLLYXeSZ9tkuHDUd/WvMbpilwuPRfJDnQXMqx5tBVon8d2mBk8JXmXpqB+ExhlWJmVT40A==", "dev": true, "dependencies": { "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", + "aggregate-error": "^4.0.1", + "execa": "^7.0.0", "fs-extra": "^11.0.0", - "lodash": "^4.17.15", + "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", + "normalize-url": "^8.0.0", + "npm": "^9.5.0", "rc": "^1.2.8", - "read-pkg": "^5.0.0", + "read-pkg": "^7.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", - "tempy": "^1.0.0" + "tempy": "^3.0.0" }, "engines": { - "node": ">=16 || ^14.17" + "node": ">=18" }, "peerDependencies": { - "semantic-release": ">=19.0.0" + "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@semantic-release/npm/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/release-notes-generator": { @@ -3085,6 +3233,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -3109,6 +3263,12 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "node_modules/@types/randomstring": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@types/randomstring/-/randomstring-1.1.8.tgz", + "integrity": "sha512-NPOJcW+TTjT9Qiog0UjSoG3Sj24c7EfzZO39BU9E61D7fQtwNmBNblyQhSsK9+5s9Fm0o31rvX+ZyZkpE/c7jA==", + "dev": true + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -3149,15 +3309,15 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz", - "integrity": "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", + "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/type-utils": "5.55.0", - "@typescript-eslint/utils": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/type-utils": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -3183,14 +3343,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz", - "integrity": "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz", + "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "debug": "^4.3.4" }, "engines": { @@ -3210,13 +3370,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz", - "integrity": "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz", + "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/visitor-keys": "5.55.0" + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3227,13 +3387,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz", - "integrity": "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz", + "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.55.0", - "@typescript-eslint/utils": "5.55.0", + "@typescript-eslint/typescript-estree": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3254,9 +3414,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz", - "integrity": "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz", + "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3267,13 +3427,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz", - "integrity": "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz", + "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/visitor-keys": "5.55.0", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3294,17 +3454,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz", - "integrity": "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz", + "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -3320,12 +3480,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz", - "integrity": "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz", + "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/types": "5.57.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -3594,6 +3754,15 @@ "node": ">=8" } }, + "node_modules/array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -3675,9 +3844,9 @@ } }, "node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz", + "integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -4298,18 +4467,6 @@ "node": ">=14.16" } }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -4564,18 +4721,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "dev": true, - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, "node_modules/cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -4735,15 +4880,6 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4860,21 +4996,6 @@ "url": "https://github.com/yeoman/configstore?sponsor=1" } }, - "node_modules/configstore/node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/configstore/node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -4890,33 +5011,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/configstore/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/configstore/node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/configstore/node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -5539,12 +5633,30 @@ } }, "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cz-conventional-changelog": { @@ -5997,27 +6109,27 @@ } }, "node_modules/env-ci": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-8.0.0.tgz", - "integrity": "sha512-W+3BqGZozFua9MPeXpmTm5eYEBtGgL76jGu/pwMVp/L8PdECSCEWaIp7d4Mw7kuUrbUldK0oV0bNd6ZZjLiMiA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.0.0.tgz", + "integrity": "sha512-Q3cjr1tX9xwigprw4G8M3o7PIOO/1LYji6TyGsbD1WfMmD23etZvhgmPXJqkP788yH4dgSSK7oaIMuaayUJIfg==", "dev": true, "dependencies": { - "execa": "^6.1.0", + "execa": "^7.0.0", "java-properties": "^1.0.2" }, "engines": { - "node": "^16.10 || >=18" + "node": "^16.14 || >=18" } }, "node_modules/env-ci/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -6026,19 +6138,19 @@ "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/env-ci/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, "engines": { - "node": ">=12.20.0" + "node": ">=14.18.0" } }, "node_modules/env-ci/node_modules/is-stream": { @@ -6299,15 +6411,15 @@ } }, "node_modules/eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -6318,8 +6430,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6356,9 +6468,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", - "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -6566,9 +6678,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", - "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, "dependencies": { "builtins": "^5.0.1", @@ -6736,12 +6848,15 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -6880,14 +6995,14 @@ } }, "node_modules/espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8224,12 +8339,12 @@ "dev": true }, "node_modules/ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.0.0.tgz", + "integrity": "sha512-t0ikzf5qkSFqRl1e6ejKBe+Tk2bsQd8ivEkcisyGXsku2t8NvXZ1Y3RRz5vxrDgOrTBOi13CvGsVoI5wVpd7xg==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/inquirer": { @@ -11415,6 +11530,15 @@ "yallist": "^3.0.2" } }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -12324,27 +12448,25 @@ } }, "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", - "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.6.4.tgz", + "integrity": "sha512-8/Mct0X/w77PmgIpSlXfNIOlrZBfT+8966zLCxOhwi1qZ2Ueyy99uWPSDW6bt2OKw1NzrvHJBSgkzAvn1iWuhw==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", - "@npmcli/ci-detect", "@npmcli/config", - "@npmcli/fs", "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/run-script", @@ -12352,7 +12474,7 @@ "archy", "cacache", "chalk", - "chownr", + "ci-info", "cli-columns", "cli-table3", "columnify", @@ -12380,8 +12502,6 @@ "minimatch", "minipass", "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", "ms", "node-gyp", "nopt", @@ -12393,7 +12513,6 @@ "npm-registry-fetch", "npm-user-validate", "npmlog", - "opener", "p-map", "pacote", "parse-conflict-json", @@ -12402,8 +12521,6 @@ "read", "read-package-json", "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", "semver", "ssri", "tar", @@ -12417,85 +12534,78 @@ "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", + "@npmcli/arborist": "^6.2.7", + "@npmcli/config": "^6.1.5", + "@npmcli/map-workspaces": "^3.0.3", + "@npmcli/package-json": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^16.1.3", + "cacache": "^17.0.5", "chalk": "^4.1.2", - "chownr": "^2.0.0", + "ci-info": "^3.8.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", + "cli-table3": "^0.6.3", "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.1", + "glob": "^9.3.2", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^6.1.1", "ini": "^3.0.1", - "init-package-json": "^3.0.2", + "init-package-json": "^5.0.0", "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", + "json-parse-even-better-errors": "^3.0.0", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.15", + "libnpmexec": "^5.0.15", + "libnpmfund": "^4.0.15", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.3", + "libnpmpack": "^5.0.15", + "libnpmpublish": "^7.1.3", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.0.3", + "minimatch": "^7.4.3", + "minipass": "^4.2.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", + "node-gyp": "^9.3.1", + "nopt": "^7.1.0", + "npm-audit-report": "^4.0.0", + "npm-install-checks": "^6.1.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.3", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", + "pacote": "^15.1.1", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", + "read": "^2.0.0", + "read-package-json": "^6.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.8", + "ssri": "^10.0.2", + "tar": "^6.1.13", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.0", + "write-file-atomic": "^5.0.0" }, "bin": { "npm": "bin/npm-cli.js", "npx": "bin/npx-cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-bundled": { @@ -12511,13 +12621,13 @@ } }, "node_modules/npm-check-updates": { - "version": "16.7.12", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.12.tgz", - "integrity": "sha512-ejYl/BiWhkUxDs1ISQd/6blgTIfHabSdsfR5JWoA7PK+cGn8hCqVKO5p+nNI2PqX+0F21ExGqkt8b7cg2yxuYg==", + "version": "16.10.7", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.7.tgz", + "integrity": "sha512-hVJCULf8AoVob9FDvoC7hrkQGuWhWctE9k3sNmR+M6hxZJnlb+03Ph4G1w/pHmI5BGHoo+ZPJtVEXkJsA+JwPQ==", "dev": true, "dependencies": { "chalk": "^5.2.0", - "cli-table": "^0.3.11", + "cli-table3": "^0.6.3", "commander": "^10.0.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", @@ -12525,27 +12635,27 @@ "get-stdin": "^8.0.0", "globby": "^11.0.4", "hosted-git-info": "^5.1.0", - "ini": "^3.0.1", + "ini": "^4.0.0", + "js-yaml": "^4.1.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^7.0.1", + "minimatch": "^8.0.3", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts-ncu": "^2.5.1", + "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.1.2", + "rimraf": "^4.4.1", "semver": "^7.3.8", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", "strip-json-comments": "^5.0.0", "untildify": "^4.0.0", - "update-notifier": "^6.0.2", - "yaml": "^2.2.1" + "update-notifier": "^6.0.2" }, "bin": { "ncu": "build/src/bin/cli.js", @@ -12577,13 +12687,13 @@ } }, "node_modules/npm-check-updates/node_modules/glob": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", - "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.4.tgz", + "integrity": "sha512-qaSc49hojMOv1EPM4EuyITjDSgSKI0rthoHnvE81tcOi1SCVndHko7auqxdQ14eiQG2NDBJBE86+2xIrbIvrbA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", + "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" }, @@ -12616,15 +12726,15 @@ } }, "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", - "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.3.tgz", + "integrity": "sha512-tEEvU9TkZgnFDCtpnrEYnPsjT7iUx42aXfs4bzmQ5sMA09/6hZY0jeZcGkXyDagiBOvkUjNo8Viom+Me6+2x7g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -12646,9 +12756,9 @@ } }, "node_modules/npm-check-updates/node_modules/rimraf": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz", - "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "dependencies": { "glob": "^9.2.0" @@ -12874,86 +12984,72 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", + "version": "6.2.7", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", + "minimatch": "^7.4.2", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", "walk-up-path": "^1.0.0" }, "bin": { "arborist": "bin/index.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.2", + "version": "6.1.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12961,95 +13057,84 @@ "ansi-styles": "^4.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "2.1.2", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.2", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "index.js" + "installed-package-contents": "lib/index.js" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", + "version": "3.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^9.3.1", + "minimatch": "^7.4.2", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/move-file": { @@ -13066,72 +13151,82 @@ } }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "json-parse-even-better-errors": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "infer-owner": "^1.0.4" + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "1.2.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.2.1", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@tootallnate/once": { @@ -13143,11 +13238,38 @@ "node": ">= 10" } }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minimatch": "^7.4.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abort-controller": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } }, "node_modules/npm/node_modules/agent-base": { "version": "6.0.2", @@ -13162,13 +13284,13 @@ } }, "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { @@ -13225,54 +13347,57 @@ "license": "MIT" }, "node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "readable-stream": "^4.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/bin-links": { - "version": "3.0.3", + "node_modules/npm/node_modules/base64-js": { + "version": "1.5.1", "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.1", "dev": true, "inBundle": true, "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/binary-extensions": { @@ -13293,6 +13418,30 @@ "balanced-match": "^1.0.0" } }, + "node_modules/npm/node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/npm/node_modules/builtins": { "version": "5.0.1", "dev": true, @@ -13303,32 +13452,27 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "16.1.3", + "version": "17.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^9.3.1", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", + "minipass": "^4.0.0", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "unique-filename": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/chalk": { @@ -13356,6 +13500,21 @@ "node": ">=10" } }, + "node_modules/npm/node_modules/ci-info": { + "version": "3.8.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", "dev": true, @@ -13391,7 +13550,7 @@ } }, "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", + "version": "0.6.3", "dev": true, "inBundle": true, "license": "MIT", @@ -13415,15 +13574,12 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/color-convert": { @@ -13519,22 +13675,16 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", + "version": "1.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/delegates": { @@ -13544,22 +13694,12 @@ "license": "MIT" }, "node_modules/npm/node_modules/depd": { - "version": "1.1.2", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "node": ">= 0.8" } }, "node_modules/npm/node_modules/diff": { @@ -13602,22 +13742,43 @@ "inBundle": true, "license": "MIT" }, + "node_modules/npm/node_modules/event-target-shim": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/events": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", + "version": "1.0.16", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/fs.realpath": { @@ -13633,7 +13794,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/gauge": { - "version": "4.0.4", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13648,30 +13809,29 @@ "wide-align": "^1.1.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/glob": { - "version": "8.0.3", + "version": "9.3.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", + "version": "4.2.11", "dev": true, "inBundle": true, "license": "ISC" @@ -13704,7 +13864,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", + "version": "6.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13712,7 +13872,7 @@ "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/http-cache-semantics": { @@ -13770,16 +13930,36 @@ "node": ">=0.10.0" } }, + "node_modules/npm/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" + }, "node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minimatch": "^5.0.1" + "minimatch": "^7.4.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/imurmurhash": { @@ -13832,21 +14012,21 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/ip": { @@ -13877,7 +14057,7 @@ } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.10.0", + "version": "2.11.0", "dev": true, "inBundle": true, "license": "MIT", @@ -13910,10 +14090,13 @@ "license": "ISC" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", + "version": "3.0.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", @@ -13934,187 +14117,188 @@ "license": "MIT" }, "node_modules/npm/node_modules/just-diff": { - "version": "5.1.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.4.1", + "version": "5.5.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.4", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.5", + "version": "5.0.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/arborist": "^6.2.7", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" + "minimatch": "^7.4.2", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", + "version": "5.0.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", + "@npmcli/arborist": "^6.2.7", + "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", + "ci-info": "^3.7.1", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", + "version": "4.0.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^5.6.3" + "@npmcli/arborist": "^6.2.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.4", + "version": "9.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.4", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.3", + "version": "5.0.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" + "@npmcli/arborist": "^6.2.7", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.5", + "version": "7.1.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", - "ssri": "^9.0.0" + "sigstore": "^1.0.0", + "ssri": "^10.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.4", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.4", + "version": "5.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.7", + "version": "4.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/lru-cache": { - "version": "7.13.2", + "version": "7.18.3", "dev": true, "inBundle": true, "license": "ISC", @@ -14123,34 +14307,33 @@ } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.1", + "version": "11.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "ssri": "^10.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", + "version": "7.4.3", "dev": true, "inBundle": true, "license": "ISC", @@ -14159,16 +14342,16 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/minipass": { - "version": "3.3.4", + "version": "4.2.5", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=8" } @@ -14185,18 +14368,30 @@ "node": ">= 8" } }, + "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.1", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^3.1.6", + "minipass": "^4.0.0", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -14214,6 +14409,18 @@ "node": ">= 8" } }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", "dev": true, @@ -14224,6 +14431,18 @@ "minipass": "^3.0.0" } }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "dev": true, @@ -14236,6 +14455,18 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", "dev": true, @@ -14248,6 +14479,18 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minizlib": { "version": "2.1.2", "dev": true, @@ -14261,27 +14504,25 @@ "node": ">= 8" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "dev": true, "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" @@ -14294,10 +14535,13 @@ "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", + "version": "1.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm/node_modules/negotiator": { "version": "0.6.3", @@ -14309,7 +14553,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "9.1.0", + "version": "9.3.1", "dev": true, "inBundle": true, "license": "MIT", @@ -14318,7 +14562,7 @@ "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -14329,7 +14573,39 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { @@ -14342,6 +14618,106 @@ "concat-map": "0.0.1" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", "dev": true, @@ -14362,6 +14738,33 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", "dev": true, @@ -14374,22 +14777,36 @@ "node": "*" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", + "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "abbrev": "1" + "yallist": "^4.0.0" }, - "bin": { - "nopt": "bin/nopt.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/npm/node_modules/nopt": { + "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", "dev": true, "inBundle": true, @@ -14404,188 +14821,256 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.1", + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", "dev": true, "inBundle": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", + "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "chalk": "^4.0.0" + "minipass": "^3.1.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/npm-bundled": { + "node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^2.0.0" + "unique-slug": "^3.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", + "node_modules/npm/node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", "dev": true, "inBundle": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "semver": "^7.1.1" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", + "node_modules/npm/node_modules/nopt": { + "version": "7.1.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", + "node_modules/npm/node_modules/normalize-package-data": { + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.3", + "node_modules/npm/node_modules/npm-audit-report": { + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" + "chalk": "^4.0.0" }, - "bin": { - "npm-packlist": "bin/index.js" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.2", + "node_modules/npm/node_modules/npm-package-arg": { + "version": "10.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/npm/node_modules/npm-packlist": { + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-profile": { - "version": "6.2.1", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.1", + "version": "14.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", + "version": "2.0.0", "dev": true, "inBundle": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "are-we-there-yet": "^3.0.0", + "are-we-there-yet": "^4.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", + "gauge": "^5.0.0", "set-blocking": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/once": { @@ -14597,15 +15082,6 @@ "wrappy": "1" } }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "dev": true, - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -14622,52 +15098,49 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "13.6.2", + "version": "15.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.2", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/path-is-absolute": { @@ -14676,11 +15149,27 @@ "inBundle": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.6.3", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^7.14.1", + "minipass": "^4.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.10", + "version": "6.0.11", "dev": true, "inBundle": true, "license": "MIT", @@ -14693,12 +15182,21 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/process": { + "version": "0.11.10", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" } }, "node_modules/npm/node_modules/promise-all-reject-late": { @@ -14711,7 +15209,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", + "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -14739,12 +15237,15 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", + "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "1" + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/qrcode-terminal": { @@ -14756,87 +15257,67 @@ } }, "node_modules/npm/node_modules/read": { - "version": "1.0.7", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "~0.0.4" + "mute-stream": "~1.0.0" }, "engines": { - "node": ">=0.8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/read-cmd-shim": { - "version": "3.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/read-package-json": { - "version": "5.0.2", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" + "glob": "^9.3.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/npm/node_modules/retry": { @@ -14906,22 +15387,8 @@ } }, "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", + "version": "5.1.2", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "inBundle": true, "license": "MIT" }, @@ -14933,7 +15400,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.3.7", + "version": "7.3.8", "dev": true, "inBundle": true, "license": "ISC", @@ -14971,6 +15438,23 @@ "inBundle": true, "license": "ISC" }, + "node_modules/npm/node_modules/sigstore": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.1.0", + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", "dev": true, @@ -14982,7 +15466,7 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.0", + "version": "2.7.1", "dev": true, "inBundle": true, "license": "MIT", @@ -15010,7 +15494,7 @@ } }, "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", + "version": "3.2.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -15036,30 +15520,30 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", + "version": "3.0.13", "dev": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/npm/node_modules/ssri": { - "version": "9.0.1", + "version": "10.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^3.1.1" + "minipass": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", + "version": "1.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, "node_modules/npm/node_modules/string-width": { @@ -15101,20 +15585,44 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.1.11", + "version": "6.1.13", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/npm/node_modules/text-table": { @@ -15130,28 +15638,41 @@ "license": "MIT" }, "node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "1.0.1", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/unique-filename": { - "version": "2.0.1", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "unique-slug": "^3.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/unique-slug": { - "version": "3.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -15159,7 +15680,7 @@ "imurmurhash": "^0.1.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/util-deprecate": { @@ -15179,7 +15700,7 @@ } }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -15187,7 +15708,7 @@ "builtins": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/walk-up-path": { @@ -15206,7 +15727,7 @@ } }, "node_modules/npm/node_modules/which": { - "version": "2.0.2", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -15214,10 +15735,10 @@ "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/node-which" + "node-which": "bin/which.js" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/wide-align": { @@ -15236,7 +15757,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.2", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -15245,7 +15766,7 @@ "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/yallist": { @@ -15796,16 +16317,16 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz", - "integrity": "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz", + "integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==", "dev": true, "dependencies": { "lru-cache": "^7.14.1", "minipass": "^4.0.2" }, "engines": { - "node": ">=14" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -16069,9 +16590,9 @@ } }, "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -16187,16 +16708,16 @@ } }, "node_modules/prompts-ncu": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", - "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dev": true, "dependencies": { "kleur": "^4.0.1", "sisteransi": "^1.0.5" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/prompts-ncu/node_modules/kleur": { @@ -16315,6 +16836,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true + }, + "node_modules/randomstring": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", + "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", + "dev": true, + "dependencies": { + "array-uniq": "1.0.2", + "randombytes": "2.0.3" + }, + "bin": { + "randomstring": "bin/randomstring" + }, + "engines": { + "node": "*" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -16940,20 +17483,20 @@ "dev": true }, "node_modules/semantic-release": { - "version": "20.1.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-20.1.3.tgz", - "integrity": "sha512-sMIK9IaOdLP9hxzTxdTVHxINsazlDgv2gjZ1yeyRZXpIT3xAnuQUDEez8k+AC+lFUtGnfzA2Ct3V5lDyiMestw==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.0.1.tgz", + "integrity": "sha512-UhGxTUXHJQCBFgEQRZszLOHDpMduDSHGq3Q+30Bu+g0GbXh/EW508+kuFHezP5m0mN8xINW8hooiR3dzSV5ZLA==", "dev": true, "dependencies": { "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/error": "^3.0.0", "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", + "@semantic-release/npm": "^10.0.2", "@semantic-release/release-notes-generator": "^10.0.0", "aggregate-error": "^4.0.1", "cosmiconfig": "^8.0.0", "debug": "^4.0.0", - "env-ci": "^8.0.0", + "env-ci": "^9.0.0", "execa": "^7.0.0", "figures": "^5.0.0", "find-versions": "^5.1.0", @@ -18118,95 +18661,42 @@ } }, "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", "dev": true, "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", + "is-stream": "^3.0.0", "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tempy/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/slash": { + "node_modules/tempy/node_modules/is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18359,9 +18849,9 @@ "dev": true }, "node_modules/ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -18384,7 +18874,7 @@ "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", - "typescript": ">=4.3" + "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { @@ -18493,9 +18983,9 @@ "dev": true }, "node_modules/tsup": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.6.3.tgz", - "integrity": "sha512-OLx/jFllYlVeZQ7sCHBuRVEQBBa1tFbouoc/gbYakyipjVQdWy/iQOvmExUA/ewap9iQ7tbJf9pW0PgcEFfJcQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.7.0.tgz", + "integrity": "sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==", "dev": true, "dependencies": { "bundle-require": "^4.0.0", @@ -18523,7 +19013,7 @@ "peerDependencies": { "@swc/core": "^1", "postcss": "^8.4.12", - "typescript": "^4.1.0" + "typescript": ">=4.1.0" }, "peerDependenciesMeta": { "@swc/core": { @@ -18718,9 +19208,9 @@ } }, "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18782,15 +19272,18 @@ } }, "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/universal-user-agent": { @@ -20101,14 +20594,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", - "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.0", + "espree": "^9.5.1", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -20138,9 +20631,9 @@ } }, "@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz", + "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==", "dev": true }, "@gar/promisify": { @@ -21152,68 +21645,138 @@ } }, "@semantic-release/npm": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", - "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-10.0.2.tgz", + "integrity": "sha512-Mo0XoBza4pUapxiBhLLYXeSZ9tkuHDUd/WvMbpilwuPRfJDnQXMqx5tBVon8d2mBk8JXmXpqB+ExhlWJmVT40A==", "dev": true, "requires": { "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", + "aggregate-error": "^4.0.1", + "execa": "^7.0.0", "fs-extra": "^11.0.0", - "lodash": "^4.17.15", + "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", + "normalize-url": "^8.0.0", + "npm": "^9.5.0", "rc": "^1.2.8", - "read-pkg": "^5.0.0", + "read-pkg": "^7.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", - "tempy": "^1.0.0" + "tempy": "^3.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "requires": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + } + }, + "clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "requires": { + "escape-string-regexp": "5.0.0" + } + }, + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" } }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", + "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^2.0.0" } }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true } } @@ -21542,6 +22105,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-uKRI5QORDnrGFYgcdAVnHvEIvEZ8noTpP/Bg+HeUzZghwinDlIS87DEenV5r1YoOF9G4x600YsUXLWZ19rmTmg==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -21566,6 +22135,12 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "@types/randomstring": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@types/randomstring/-/randomstring-1.1.8.tgz", + "integrity": "sha512-NPOJcW+TTjT9Qiog0UjSoG3Sj24c7EfzZO39BU9E61D7fQtwNmBNblyQhSsK9+5s9Fm0o31rvX+ZyZkpE/c7jA==", + "dev": true + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -21606,15 +22181,15 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz", - "integrity": "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", + "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/type-utils": "5.55.0", - "@typescript-eslint/utils": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/type-utils": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -21624,53 +22199,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz", - "integrity": "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz", + "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz", - "integrity": "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz", + "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/visitor-keys": "5.55.0" + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1" } }, "@typescript-eslint/type-utils": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz", - "integrity": "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz", + "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.55.0", - "@typescript-eslint/utils": "5.55.0", + "@typescript-eslint/typescript-estree": "5.57.1", + "@typescript-eslint/utils": "5.57.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz", - "integrity": "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz", + "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz", - "integrity": "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz", + "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/visitor-keys": "5.55.0", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/visitor-keys": "5.57.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21679,28 +22254,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz", - "integrity": "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz", + "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.55.0", - "@typescript-eslint/types": "5.55.0", - "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/scope-manager": "5.57.1", + "@typescript-eslint/types": "5.57.1", + "@typescript-eslint/typescript-estree": "5.57.1", "eslint-scope": "^5.1.1", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz", - "integrity": "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==", + "version": "5.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz", + "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/types": "5.57.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -21903,6 +22478,12 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", + "dev": true + }, "array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -21957,9 +22538,9 @@ "dev": true }, "axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz", + "integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -22396,14 +22977,6 @@ "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true - } } }, "cachedir": { @@ -22571,15 +23144,6 @@ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "dev": true }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "dev": true, - "requires": { - "colors": "1.0.3" - } - }, "cli-table3": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", @@ -22696,12 +23260,6 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -22799,15 +23357,6 @@ "xdg-basedir": "^5.0.1" }, "dependencies": { - "crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, - "requires": { - "type-fest": "^1.0.1" - } - }, "dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -22817,21 +23366,6 @@ "is-obj": "^2.0.0" } }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - }, - "unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "requires": { - "crypto-random-string": "^4.0.0" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -23302,10 +23836,21 @@ } }, "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } }, "cz-conventional-changelog": { "version": "3.3.0", @@ -23642,24 +24187,24 @@ } }, "env-ci": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-8.0.0.tgz", - "integrity": "sha512-W+3BqGZozFua9MPeXpmTm5eYEBtGgL76jGu/pwMVp/L8PdECSCEWaIp7d4Mw7kuUrbUldK0oV0bNd6ZZjLiMiA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.0.0.tgz", + "integrity": "sha512-Q3cjr1tX9xwigprw4G8M3o7PIOO/1LYji6TyGsbD1WfMmD23etZvhgmPXJqkP788yH4dgSSK7oaIMuaayUJIfg==", "dev": true, "requires": { - "execa": "^6.1.0", + "execa": "^7.0.0", "java-properties": "^1.0.2" }, "dependencies": { "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -23669,9 +24214,9 @@ } }, "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true }, "is-stream": { @@ -23861,15 +24406,15 @@ "dev": true }, "eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.37.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -23880,8 +24425,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -24006,9 +24551,9 @@ } }, "eslint-config-prettier": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", - "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true }, "eslint-config-standard": { @@ -24145,9 +24690,9 @@ } }, "eslint-plugin-n": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", - "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, "requires": { "builtins": "^5.0.1", @@ -24250,20 +24795,20 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "dev": true }, "espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esprima": { @@ -25272,9 +25817,9 @@ "dev": true }, "ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.0.0.tgz", + "integrity": "sha512-t0ikzf5qkSFqRl1e6ejKBe+Tk2bsQd8ivEkcisyGXsku2t8NvXZ1Y3RRz5vxrDgOrTBOi13CvGsVoI5wVpd7xg==", "dev": true }, "inquirer": { @@ -27604,6 +28149,12 @@ "yallist": "^3.0.2" } }, + "luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -28309,90 +28860,83 @@ "dev": true }, "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", "dev": true }, "npm": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", - "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.6.4.tgz", + "integrity": "sha512-8/Mct0X/w77PmgIpSlXfNIOlrZBfT+8966zLCxOhwi1qZ2Ueyy99uWPSDW6bt2OKw1NzrvHJBSgkzAvn1iWuhw==", "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", + "@npmcli/arborist": "^6.2.7", + "@npmcli/config": "^6.1.5", + "@npmcli/map-workspaces": "^3.0.3", + "@npmcli/package-json": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^16.1.3", + "cacache": "^17.0.5", "chalk": "^4.1.2", - "chownr": "^2.0.0", + "ci-info": "^3.8.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", + "cli-table3": "^0.6.3", "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.1", + "glob": "^9.3.2", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^6.1.1", "ini": "^3.0.1", - "init-package-json": "^3.0.2", + "init-package-json": "^5.0.0", "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", + "json-parse-even-better-errors": "^3.0.0", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.15", + "libnpmexec": "^5.0.15", + "libnpmfund": "^4.0.15", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.3", + "libnpmpack": "^5.0.15", + "libnpmpublish": "^7.1.3", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.0.3", + "minimatch": "^7.4.3", + "minipass": "^4.2.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", + "node-gyp": "^9.3.1", + "nopt": "^7.1.0", + "npm-audit-report": "^4.0.0", + "npm-install-checks": "^6.1.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.3", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", + "pacote": "^15.1.1", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", + "read": "^2.0.0", + "read-package-json": "^6.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.8", + "ssri": "^10.0.2", + "tar": "^6.1.13", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.0", + "write-file-atomic": "^5.0.0" }, "dependencies": { "@colors/colors": { @@ -28412,71 +28956,61 @@ "dev": true }, "@npmcli/arborist": { - "version": "5.6.3", + "version": "6.2.7", "bundled": true, "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", + "minimatch": "^7.4.2", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" + } }, "@npmcli/config": { - "version": "4.2.2", + "version": "6.1.5", "bundled": true, "dev": true, "requires": { - "@npmcli/map-workspaces": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^1.0.0" } }, "@npmcli/disparity-colors": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { @@ -28484,68 +29018,56 @@ } }, "@npmcli/fs": { - "version": "2.1.2", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "@gar/promisify": "^1.1.3", "semver": "^7.3.5" } }, "@npmcli/git": { - "version": "3.0.2", + "version": "4.0.4", "bundled": true, "dev": true, "requires": { - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" + "which": "^3.0.0" } }, "@npmcli/installed-package-contents": { - "version": "1.0.7", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "dependencies": { - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - } + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" } }, "@npmcli/map-workspaces": { - "version": "2.0.4", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^9.3.1", + "minimatch": "^7.4.2", + "read-package-json-fast": "^3.0.0" } }, "@npmcli/metavuln-calculator": { - "version": "3.1.1", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", "semver": "^7.3.5" } }, @@ -28559,63 +29081,82 @@ } }, "@npmcli/name-from-folder": { - "version": "1.0.1", + "version": "2.0.0", "bundled": true, "dev": true }, "@npmcli/node-gyp": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true }, "@npmcli/package-json": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.1" + "json-parse-even-better-errors": "^3.0.0" } }, "@npmcli/promise-spawn": { - "version": "3.0.0", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { - "infer-owner": "^1.0.4" + "which": "^3.0.0" } }, "@npmcli/query": { - "version": "1.2.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" + "postcss-selector-parser": "^6.0.10" } }, "@npmcli/run-script": { - "version": "4.2.1", + "version": "6.0.0", "bundled": true, "dev": true, "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" } }, + "@sigstore/protobuf-specs": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, "@tootallnate/once": { "version": "2.0.0", "bundled": true, "dev": true }, + "@tufjs/models": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^7.4.2" + } + }, "abbrev": { - "version": "1.1.1", + "version": "2.0.0", "bundled": true, "dev": true }, + "abort-controller": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "agent-base": { "version": "6.0.2", "bundled": true, @@ -28625,12 +29166,12 @@ } }, "agentkeepalive": { - "version": "4.2.1", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" } }, @@ -28667,42 +29208,33 @@ "dev": true }, "are-we-there-yet": { - "version": "3.0.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "readable-stream": "^4.1.0" } }, - "asap": { - "version": "2.0.6", + "balanced-match": { + "version": "1.0.2", "bundled": true, "dev": true }, - "balanced-match": { - "version": "1.0.2", + "base64-js": { + "version": "1.5.1", "bundled": true, "dev": true }, "bin-links": { - "version": "3.0.3", + "version": "4.0.1", "bundled": true, "dev": true, "requires": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" } }, "binary-extensions": { @@ -28718,6 +29250,15 @@ "balanced-match": "^1.0.0" } }, + "buffer": { + "version": "6.0.3", + "bundled": true, + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "builtins": { "version": "5.0.1", "bundled": true, @@ -28727,28 +29268,23 @@ } }, "cacache": { - "version": "16.1.3", + "version": "17.0.5", "bundled": true, "dev": true, "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^9.3.1", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", + "minipass": "^4.0.0", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "unique-filename": "^3.0.0" } }, "chalk": { @@ -28765,6 +29301,11 @@ "bundled": true, "dev": true }, + "ci-info": { + "version": "3.8.0", + "bundled": true, + "dev": true + }, "cidr-regex": { "version": "3.1.1", "bundled": true, @@ -28788,7 +29329,7 @@ } }, "cli-table3": { - "version": "0.6.2", + "version": "0.6.3", "bundled": true, "dev": true, "requires": { @@ -28802,12 +29343,9 @@ "dev": true }, "cmd-shim": { - "version": "5.0.0", + "version": "6.0.1", "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } + "dev": true }, "color-convert": { "version": "2.0.1", @@ -28871,13 +29409,8 @@ } } }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "defaults": { - "version": "1.0.3", + "version": "1.0.4", "bundled": true, "dev": true, "requires": { @@ -28890,19 +29423,10 @@ "dev": true }, "depd": { - "version": "1.1.2", + "version": "2.0.0", "bundled": true, "dev": true }, - "dezalgo": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "diff": { "version": "5.1.0", "bundled": true, @@ -28932,17 +29456,27 @@ "bundled": true, "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "events": { + "version": "3.3.0", + "bundled": true, + "dev": true + }, "fastest-levenshtein": { - "version": "1.0.12", + "version": "1.0.16", "bundled": true, "dev": true }, "fs-minipass": { - "version": "2.1.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0" + "minipass": "^4.0.0" } }, "fs.realpath": { @@ -28956,7 +29490,7 @@ "dev": true }, "gauge": { - "version": "4.0.4", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { @@ -28971,19 +29505,18 @@ } }, "glob": { - "version": "8.0.3", + "version": "9.3.2", "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" } }, "graceful-fs": { - "version": "4.2.10", + "version": "4.2.11", "bundled": true, "dev": true }, @@ -29006,7 +29539,7 @@ "dev": true }, "hosted-git-info": { - "version": "5.2.1", + "version": "6.1.1", "bundled": true, "dev": true, "requires": { @@ -29054,12 +29587,17 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ieee754": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, "ignore-walk": { - "version": "5.0.1", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { - "minimatch": "^5.0.1" + "minimatch": "^7.4.2" } }, "imurmurhash": { @@ -29097,17 +29635,17 @@ "dev": true }, "init-package-json": { - "version": "3.0.2", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" } }, "ip": { @@ -29129,7 +29667,7 @@ } }, "is-core-module": { - "version": "2.10.0", + "version": "2.11.0", "bundled": true, "dev": true, "requires": { @@ -29152,7 +29690,7 @@ "dev": true }, "json-parse-even-better-errors": { - "version": "2.3.1", + "version": "3.0.0", "bundled": true, "dev": true }, @@ -29167,169 +29705,169 @@ "dev": true }, "just-diff": { - "version": "5.1.1", + "version": "6.0.2", "bundled": true, "dev": true }, "just-diff-apply": { - "version": "5.4.1", + "version": "5.5.0", "bundled": true, "dev": true }, "libnpmaccess": { - "version": "6.0.4", + "version": "7.0.2", "bundled": true, "dev": true, "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" } }, "libnpmdiff": { - "version": "4.0.5", + "version": "5.0.15", "bundled": true, "dev": true, "requires": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/arborist": "^6.2.7", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" + "minimatch": "^7.4.2", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" } }, "libnpmexec": { - "version": "4.0.14", + "version": "5.0.15", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", + "@npmcli/arborist": "^6.2.7", + "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", + "ci-info": "^3.7.1", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^1.0.0" } }, "libnpmfund": { - "version": "3.0.5", + "version": "4.0.15", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^5.6.3" + "@npmcli/arborist": "^6.2.7" } }, "libnpmhook": { - "version": "8.0.4", + "version": "9.0.3", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" } }, "libnpmorg": { - "version": "4.0.4", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" } }, "libnpmpack": { - "version": "4.1.3", + "version": "5.0.15", "bundled": true, "dev": true, "requires": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" + "@npmcli/arborist": "^6.2.7", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" } }, "libnpmpublish": { - "version": "6.0.5", + "version": "7.1.3", "bundled": true, "dev": true, "requires": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", - "ssri": "^9.0.0" + "sigstore": "^1.0.0", + "ssri": "^10.0.1" } }, "libnpmsearch": { - "version": "5.0.4", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" } }, "libnpmteam": { - "version": "4.0.4", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "npm-registry-fetch": "^14.0.3" } }, "libnpmversion": { - "version": "3.0.7", + "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.7" } }, "lru-cache": { - "version": "7.13.2", + "version": "7.18.3", "bundled": true, "dev": true }, "make-fetch-happen": { - "version": "10.2.1", + "version": "11.0.3", "bundled": true, "dev": true, "requires": { "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", "promise-retry": "^2.0.1", "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "ssri": "^10.0.0" } }, "minimatch": { - "version": "5.1.0", + "version": "7.4.3", "bundled": true, "dev": true, "requires": { @@ -29337,12 +29875,9 @@ } }, "minipass": { - "version": "3.3.4", + "version": "4.2.5", "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "dev": true }, "minipass-collect": { "version": "1.0.2", @@ -29350,15 +29885,25 @@ "dev": true, "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "minipass-fetch": { - "version": "2.1.1", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { "encoding": "^0.1.13", - "minipass": "^3.1.6", + "minipass": "^4.0.0", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" } @@ -29369,6 +29914,16 @@ "dev": true, "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "minipass-json-stream": { @@ -29378,6 +29933,16 @@ "requires": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "minipass-pipeline": { @@ -29386,6 +29951,16 @@ "dev": true, "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "minipass-sized": { @@ -29394,6 +29969,16 @@ "dev": true, "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "minizlib": { @@ -29403,6 +29988,16 @@ "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "mkdirp": { @@ -29410,23 +30005,13 @@ "bundled": true, "dev": true }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, "ms": { "version": "2.1.3", "bundled": true, "dev": true }, "mute-stream": { - "version": "0.0.8", + "version": "1.0.0", "bundled": true, "dev": true }, @@ -29436,7 +30021,7 @@ "dev": true }, "node-gyp": { - "version": "9.1.0", + "version": "9.3.1", "bundled": true, "dev": true, "requires": { @@ -29444,7 +30029,7 @@ "glob": "^7.1.4", "graceful-fs": "^4.2.6", "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", + "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", @@ -29452,6 +30037,29 @@ "which": "^2.0.2" }, "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -29461,6 +30069,84 @@ "concat-map": "0.0.1" } }, + "cacache": { + "version": "16.1.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "gauge": { + "version": "4.0.4", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, "glob": { "version": "7.2.3", "bundled": true, @@ -29474,6 +30160,29 @@ "path-is-absolute": "^1.0.0" } }, + "make-fetch-happen": { + "version": "10.2.1", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, "minimatch": { "version": "3.1.2", "bundled": true, @@ -29482,37 +30191,109 @@ "brace-expansion": "^1.1.7" } }, + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, "nopt": { - "version": "5.0.0", + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "ssri": { + "version": "9.0.1", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "which": { + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "abbrev": "1" + "isexe": "^2.0.0" } } } }, "nopt": { - "version": "6.0.0", + "version": "7.1.0", "bundled": true, "dev": true, "requires": { - "abbrev": "^1.0.0" + "abbrev": "^2.0.0" } }, "normalize-package-data": { - "version": "4.0.1", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^5.0.0", + "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "npm-audit-report": { - "version": "3.0.0", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { @@ -29520,22 +30301,15 @@ } }, "npm-bundled": { - "version": "2.0.1", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "npm-normalize-package-bin": "^3.0.0" } }, "npm-install-checks": { - "version": "5.0.0", + "version": "6.1.0", "bundled": true, "dev": true, "requires": { @@ -29543,93 +30317,76 @@ } }, "npm-normalize-package-bin": { - "version": "1.0.1", + "version": "3.0.0", "bundled": true, "dev": true }, "npm-package-arg": { - "version": "9.1.0", + "version": "10.1.0", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "validate-npm-package-name": "^5.0.0" } }, "npm-packlist": { - "version": "5.1.3", + "version": "7.0.4", "bundled": true, "dev": true, "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "ignore-walk": "^6.0.0" } }, "npm-pick-manifest": { - "version": "7.0.2", + "version": "8.0.1", "bundled": true, "dev": true, "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", "semver": "^7.3.5" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } } }, "npm-profile": { - "version": "6.2.1", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" } }, "npm-registry-fetch": { - "version": "13.3.1", + "version": "14.0.3", "bundled": true, "dev": true, "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" } }, "npm-user-validate": { - "version": "1.0.1", + "version": "2.0.0", "bundled": true, "dev": true }, "npmlog": { - "version": "6.0.2", + "version": "7.0.1", "bundled": true, "dev": true, "requires": { - "are-we-there-yet": "^3.0.0", + "are-we-there-yet": "^4.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", + "gauge": "^5.0.0", "set-blocking": "^2.0.0" } }, @@ -29641,11 +30398,6 @@ "wrappy": "1" } }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, "p-map": { "version": "4.0.0", "bundled": true, @@ -29655,40 +30407,37 @@ } }, "pacote": { - "version": "13.6.2", + "version": "15.1.1", "bundled": true, "dev": true, "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", "tar": "^6.1.11" } }, "parse-conflict-json": { - "version": "2.0.2", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, @@ -29697,8 +30446,17 @@ "bundled": true, "dev": true }, + "path-scurry": { + "version": "1.6.3", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^7.14.1", + "minipass": "^4.0.2" + } + }, "postcss-selector-parser": { - "version": "6.0.10", + "version": "6.0.11", "bundled": true, "dev": true, "requires": { @@ -29707,7 +30465,12 @@ } }, "proc-log": { - "version": "2.0.1", + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "process": { + "version": "0.11.10", "bundled": true, "dev": true }, @@ -29717,7 +30480,7 @@ "dev": true }, "promise-call-limit": { - "version": "1.0.1", + "version": "1.0.2", "bundled": true, "dev": true }, @@ -29736,11 +30499,11 @@ } }, "promzard": { - "version": "0.3.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "read": "1" + "read": "^2.0.0" } }, "qrcode-terminal": { @@ -29749,64 +30512,47 @@ "dev": true }, "read": { - "version": "1.0.7", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "mute-stream": "~0.0.4" + "mute-stream": "~1.0.0" } }, "read-cmd-shim": { - "version": "3.0.0", + "version": "4.0.0", "bundled": true, "dev": true }, "read-package-json": { - "version": "5.0.2", + "version": "6.0.1", "bundled": true, "dev": true, "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "glob": "^9.3.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" } }, "read-package-json-fast": { - "version": "2.0.3", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" } }, "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" } }, "retry": { @@ -29855,7 +30601,7 @@ } }, "safe-buffer": { - "version": "5.2.1", + "version": "5.1.2", "bundled": true, "dev": true }, @@ -29866,7 +30612,7 @@ "optional": true }, "semver": { - "version": "7.3.7", + "version": "7.3.8", "bundled": true, "dev": true, "requires": { @@ -29893,13 +30639,23 @@ "bundled": true, "dev": true }, + "sigstore": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.1.0", + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + } + }, "smart-buffer": { "version": "4.2.0", "bundled": true, "dev": true }, "socks": { - "version": "2.7.0", + "version": "2.7.1", "bundled": true, "dev": true, "requires": { @@ -29918,7 +30674,7 @@ } }, "spdx-correct": { - "version": "3.1.1", + "version": "3.2.0", "bundled": true, "dev": true, "requires": { @@ -29941,24 +30697,24 @@ } }, "spdx-license-ids": { - "version": "3.0.11", + "version": "3.0.13", "bundled": true, "dev": true }, "ssri": { - "version": "9.0.1", + "version": "10.0.2", "bundled": true, "dev": true, "requires": { - "minipass": "^3.1.1" + "minipass": "^4.0.0" } }, "string_decoder": { - "version": "1.3.0", + "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, "string-width": { @@ -29988,16 +30744,36 @@ } }, "tar": { - "version": "6.1.11", + "version": "6.1.13", "bundled": true, "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + } } }, "text-table": { @@ -30011,20 +30787,29 @@ "dev": true }, "treeverse": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true }, + "tuf-js": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "@tufjs/models": "1.0.1", + "make-fetch-happen": "^11.0.1" + } + }, "unique-filename": { - "version": "2.0.1", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "unique-slug": "^3.0.0" + "unique-slug": "^4.0.0" } }, "unique-slug": { - "version": "3.0.0", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { @@ -30046,7 +30831,7 @@ } }, "validate-npm-package-name": { - "version": "4.0.0", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { @@ -30067,7 +30852,7 @@ } }, "which": { - "version": "2.0.2", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { @@ -30088,7 +30873,7 @@ "dev": true }, "write-file-atomic": { - "version": "4.0.2", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { @@ -30113,13 +30898,13 @@ } }, "npm-check-updates": { - "version": "16.7.12", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.7.12.tgz", - "integrity": "sha512-ejYl/BiWhkUxDs1ISQd/6blgTIfHabSdsfR5JWoA7PK+cGn8hCqVKO5p+nNI2PqX+0F21ExGqkt8b7cg2yxuYg==", + "version": "16.10.7", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.7.tgz", + "integrity": "sha512-hVJCULf8AoVob9FDvoC7hrkQGuWhWctE9k3sNmR+M6hxZJnlb+03Ph4G1w/pHmI5BGHoo+ZPJtVEXkJsA+JwPQ==", "dev": true, "requires": { "chalk": "^5.2.0", - "cli-table": "^0.3.11", + "cli-table3": "^0.6.3", "commander": "^10.0.0", "fast-memoize": "^2.5.2", "find-up": "5.0.0", @@ -30127,27 +30912,27 @@ "get-stdin": "^8.0.0", "globby": "^11.0.4", "hosted-git-info": "^5.1.0", - "ini": "^3.0.1", + "ini": "^4.0.0", + "js-yaml": "^4.1.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^7.0.1", + "minimatch": "^8.0.3", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", "progress": "^2.0.3", - "prompts-ncu": "^2.5.1", + "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.1.2", + "rimraf": "^4.4.1", "semver": "^7.3.8", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", "strip-json-comments": "^5.0.0", "untildify": "^4.0.0", - "update-notifier": "^6.0.2", - "yaml": "^2.2.1" + "update-notifier": "^6.0.2" }, "dependencies": { "brace-expansion": { @@ -30166,13 +30951,13 @@ "dev": true }, "glob": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.0.tgz", - "integrity": "sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.4.tgz", + "integrity": "sha512-qaSc49hojMOv1EPM4EuyITjDSgSKI0rthoHnvE81tcOi1SCVndHko7auqxdQ14eiQG2NDBJBE86+2xIrbIvrbA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", + "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } @@ -30193,9 +30978,9 @@ "dev": true }, "minimatch": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz", - "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.3.tgz", + "integrity": "sha512-tEEvU9TkZgnFDCtpnrEYnPsjT7iUx42aXfs4bzmQ5sMA09/6hZY0jeZcGkXyDagiBOvkUjNo8Viom+Me6+2x7g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -30211,9 +30996,9 @@ } }, "rimraf": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz", - "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "requires": { "glob": "^9.2.0" @@ -30746,9 +31531,9 @@ "dev": true }, "path-scurry": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz", - "integrity": "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz", + "integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==", "dev": true, "requires": { "lru-cache": "^7.14.1", @@ -30933,9 +31718,9 @@ "dev": true }, "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "dev": true }, "prettier-linter-helpers": { @@ -31019,9 +31804,9 @@ } }, "prompts-ncu": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", - "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dev": true, "requires": { "kleur": "^4.0.1", @@ -31097,6 +31882,22 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, + "randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true + }, + "randomstring": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", + "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", + "dev": true, + "requires": { + "array-uniq": "1.0.2", + "randombytes": "2.0.3" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -31542,20 +32343,20 @@ "dev": true }, "semantic-release": { - "version": "20.1.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-20.1.3.tgz", - "integrity": "sha512-sMIK9IaOdLP9hxzTxdTVHxINsazlDgv2gjZ1yeyRZXpIT3xAnuQUDEez8k+AC+lFUtGnfzA2Ct3V5lDyiMestw==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.0.1.tgz", + "integrity": "sha512-UhGxTUXHJQCBFgEQRZszLOHDpMduDSHGq3Q+30Bu+g0GbXh/EW508+kuFHezP5m0mN8xINW8hooiR3dzSV5ZLA==", "dev": true, "requires": { "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/error": "^3.0.0", "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", + "@semantic-release/npm": "^10.0.2", "@semantic-release/release-notes-generator": "^10.0.0", "aggregate-error": "^4.0.1", "cosmiconfig": "^8.0.0", "debug": "^4.0.0", - "env-ci": "^8.0.0", + "env-ci": "^9.0.0", "execa": "^7.0.0", "figures": "^5.0.0", "find-versions": "^5.1.0", @@ -32403,65 +33204,27 @@ "dev": true }, "tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", "dev": true, "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", + "is-stream": "^3.0.0", "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "dependencies": { - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "slash": { + "is-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true } } @@ -32583,9 +33346,9 @@ "dev": true }, "ts-jest": { - "version": "29.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", - "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -32663,9 +33426,9 @@ "dev": true }, "tsup": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.6.3.tgz", - "integrity": "sha512-OLx/jFllYlVeZQ7sCHBuRVEQBBa1tFbouoc/gbYakyipjVQdWy/iQOvmExUA/ewap9iQ7tbJf9pW0PgcEFfJcQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-6.7.0.tgz", + "integrity": "sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==", "dev": true, "requires": { "bundle-require": "^4.0.0", @@ -32833,9 +33596,9 @@ } }, "typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==" + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==" }, "uglify-js": { "version": "3.17.4", @@ -32875,12 +33638,12 @@ } }, "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "requires": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" } }, "universal-user-agent": { diff --git a/package.json b/package.json index 88f2ead..573c56f 100644 --- a/package.json +++ b/package.json @@ -43,39 +43,43 @@ ] }, "dependencies": { - "axios": "^1.3.4", + "axios": "^1.3.5", "oauth-1.0a": "^2.2.6", - "typescript": "^5.0.2", + "typescript": "^5.0.3", "url-parse": "^1.5.10" }, "devDependencies": { "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^8.0.7", "@types/jest": "^29.5.0", + "@types/luxon": "^3.3.0", + "@types/randomstring": "^1.1.8", "@types/url-parse": "^1.4.8", - "@typescript-eslint/eslint-plugin": "^5.55.0", - "@typescript-eslint/parser": "^5.55.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "^5.57.1", "commitizen": "^4.3.0", "cz-conventional-changelog": "^3.3.0", "del-cli": "^5.0.0", - "eslint": "^8.36.0", - "eslint-config-prettier": "^8.7.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", "eslint-config-standard": "^17.0.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-n": "^15.6.1", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.1.1", "jest": "^29.5.0", "lint-staged": "13.2.0", + "luxon": "^3.3.0", "nock": "13.3.0", - "npm-check-updates": "^16.7.12", - "prettier": "2.8.4", - "semantic-release": "^20.1.3", - "ts-jest": "^29.0.5", + "npm-check-updates": "^16.10.7", + "prettier": "2.8.7", + "randomstring": "^1.2.3", + "semantic-release": "^21.0.1", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", - "tsup": "^6.6.3" + "tsup": "^6.7.0" }, "homepage": "https://yurilima.uk/", "repository": { From e9a793fa2ead6c2aa648a7d699fa8f286e984047 Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:07:44 +0000 Subject: [PATCH 3/7] docs(tsconfig): excluded file updated --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index 8a944c7..8647710 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -116,5 +116,6 @@ "dist", "lib", "configs", + "test", ] } From e7656258f9f3dab4cd634e26dce173252d13c8fd Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:11:17 +0000 Subject: [PATCH 4/7] refactor(types/index): types exported A few types was corrected, and function also, Detele, Put, Get types updated BREAKING CHANGE: Methods Get, Delete, Put, Post were updated to received Params and Data, as object to use types. --- src/index.ts | 47 ++++-- src/typesANDinterfaces.ts | 299 ++++++++++++++++++++++---------------- 2 files changed, 207 insertions(+), 139 deletions(-) diff --git a/src/index.ts b/src/index.ts index 231ba76..10eb206 100755 --- a/src/index.ts +++ b/src/index.ts @@ -12,23 +12,38 @@ import { SystemStatusParams, CouponsParams, CustomersParams, + DELETE, } from "./typesANDinterfaces.js"; // Typescript types for the library +export { + WooRestApiMethod, + IWooRestApiQuery, + IWooRestApiOptions, + WooRestApiEndpoint, + OrdersMainParams, + ProductsMainParams, + SystemStatusParams, + CouponsParams, + CustomersParams, + DELETE, +} from "./typesANDinterfaces.js"; // Export all the types + /** * Set the axiosConfig property to the axios config object. * Could reveive any axios |... config objects. * @param {AxiosRequestConfig} axiosConfig */ -type WooRestApiOptions = IWooRestApiOptions; +export type WooRestApiOptions = IWooRestApiOptions; /** * Set all the possible query params for the WooCommerce REST API. */ -type WooRestApiParams = CouponsParams & +export type WooRestApiParams = CouponsParams & CustomersParams & OrdersMainParams & ProductsMainParams & - SystemStatusParams; + SystemStatusParams & + DELETE /** * WooCommerce REST API wrapper @@ -198,27 +213,30 @@ export default class WooCommerceRestApi { _getUrl(endpoint: string, params: Partial>): string { const api = this._opt.wpAPIPrefix + "/"; // Add prefix to endpoint - let url = - this._opt.url.slice(-1) === "/" ? this._opt.url : this._opt.url + "/"; + let url = this._opt.url.slice(-1) === "/" ? this._opt.url : this._opt.url + "/"; url = url + api + this._opt.version + "/" + endpoint; + // Add id param to url + if (params.id) { + url = url + "/" + params.id; + delete params.id; + } /** * If port is defined, add it to the url */ if (this._opt.port) { const hostname = new Url(url).hostname; - url = url.replace(hostname, hostname + ":" + this._opt.port); } /** - * If isHttps is true, normalize the query string - */ - if (this._opt.isHttps) { - return this._normalizeQueryString(url, params); - } - + * If isHttps is true, normalize the query string + */ + // if (this._opt.isHttps) { + // url = this._normalizeQueryString(url, params); + // return url; + // } return url; } @@ -384,9 +402,10 @@ export default class WooCommerceRestApi { */ delete( endpoint: T, - params?: Partial + data: Pick, + params: Pick ): Promise { - return this._request("DELETE", endpoint, {}, params); + return this._request("DELETE", endpoint, data, params); } /** diff --git a/src/typesANDinterfaces.ts b/src/typesANDinterfaces.ts index 0ff8457..7ac11c2 100755 --- a/src/typesANDinterfaces.ts +++ b/src/typesANDinterfaces.ts @@ -36,6 +36,13 @@ export type IWooCredentials = { consumerSecret: string; }; +export type WooCommerceRestApiTypeFunctions = { + get: (endpoint: string, params?: T) => Promise; + post: (endpoint: string, params?: T) => Promise; + put: (endpoint: string, params?: T) => Promise; + delete: (endpoint: string, params?: T) => Promise; +}; + export interface IWooRestApiOptions extends IWooCredentials { /* Your Store URL, example: http://woo.dev/ */ url: string; @@ -87,7 +94,7 @@ export type Links = { }>; }; -type Billing = { +export type Billing = { first_name: string; last_name: string; company: string; @@ -100,7 +107,8 @@ type Billing = { email: string; phone: string; }; -type Shipping = { + +export type Shipping = { first_name: string; last_name: string; company: string; @@ -111,7 +119,8 @@ type Shipping = { postcode: string; country: string; }; -type Taxes = { + +export type Taxes = { id: number; rate_code: string; rate_id: number; @@ -121,7 +130,8 @@ type Taxes = { shipping_tax_total: string; meta_data: Meta_Data; }; -type Shipping_Lines = { + +export type Shipping_Lines = { id: number; method_title: string; method_id: string; @@ -130,7 +140,8 @@ type Shipping_Lines = { taxes: Taxes[]; meta_data: Meta_Data; }; -type Line_Items = { + +export type Line_Items = { id: number; name: string; product_id: number; @@ -146,7 +157,8 @@ type Line_Items = { sku: string; price: number; }; -type Tax_Lines = { + +export type Tax_Lines = { id: number; rate_code: string; rate_id: number; @@ -156,7 +168,8 @@ type Tax_Lines = { shipping_tax_total: string; meta_data: Meta_Data; }; -type Fee_Lines = { + +export type Fee_Lines = { id: number; name: string; tax_class: string; @@ -166,72 +179,82 @@ type Fee_Lines = { taxes: Taxes[]; meta_data: Meta_Data; }; -type Coupon_Lines = { - id: number; - code: string; - discount: string; - discount_tax: string; - meta_data: Meta_Data; + +export type Coupon_Lines = { + id?: number; + code?: string; + discount?: string; + discount_tax?: string; + meta_data?: Meta_Data; }; -type Refunds = { - id: number; - reason: string; - total: string; + +export type Refunds = { + id?: number; + reason?: string; + total?: string; }; -type Orders_Refunds_Lines = { - id: number; - total: string; - subtotal: string; - refund_total: number; + +export type Orders_Refunds_Lines = { + id?: number; + total?: string; + subtotal?: string; + refund_total?: number; }; -type Orders_Refunds_Line_Items = { - id: number; - name: string; - product_id: number; - variation_id: number; - quantity: number; - tax_class: string; - subtotal: string; - subtotal_tax: string; - total: string; - total_tax: string; - taxes: Orders_Refunds_Lines[]; - meta_data: Meta_Data[]; - sku: string; - price: string; - refund_total: number; + +export type Orders_Refunds_Line_Items = { + id?: number; + name?: string; + product_id?: number; + variation_id?: number; + quantity?: number; + tax_class?: string; + subtotal?: string; + subtotal_tax?: string; + total?: string; + total_tax?: string; + taxes?: Orders_Refunds_Lines[]; + meta_data?: Meta_Data[]; + sku?: string; + price?: string; + refund_total?: number; }; -type Downloads = { - id: number; - name: string; - file: string; + +export type Downloads = { + id?: number; + name?: string; + file?: string; }; -type Dimensions = { - length: string; - width: string; - height: string; + +export type Dimensions = { + length?: string; + width?: string; + height?: string; }; -type Categories = { - id: number; - name: string; - slug: string; + +export type Categories = { + id?: number; + name?: string; + slug?: string; }; -type Tags = { - id: number; - name: string; - slug: string; + +export type Tags = { + id?: number; + name?: string; + slug?: string; }; -type Images = { - id: number; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; - src: string; - name: string; - alt: string; + +export type Images = { + id?: number; + date_created?: Date; + date_created_gmt?: Date; + date_modified?: Date; + date_modified_gmt?: Date; + src?: string; + name?: string; + alt?: string; }; -type Attributes = { + +export type Attributes = { id: number; name: string; position: number; @@ -239,12 +262,14 @@ type Attributes = { variation: boolean; options: string[]; }; -type Default_Attributes = { + +export type Default_Attributes = { id: number; name: string; option: string; }; -type SystemStatusEnvironment = { + +export type SystemStatusEnvironment = { home_url: string; site_url: string; wc_version: string; @@ -276,13 +301,15 @@ type SystemStatusEnvironment = { remote_get_successful: boolean; remote_get_response: string; }; -type SystemStatusDatabase = { + +export type SystemStatusDatabase = { wc_database_version: string; database_prefix: string; maxmind_geoip_database: string; database_tables: string[]; }; -type SystemStatusTheme = { + +export type SystemStatusTheme = { name: string; version: string; version_latest: string; @@ -297,7 +324,8 @@ type SystemStatusTheme = { parent_version: string; parent_author_url: string; }; -type SystemStatusSettings = { + +export type SystemStatusSettings = { api_enabled: boolean; force_ssl: boolean; currency: string; @@ -309,21 +337,27 @@ type SystemStatusSettings = { geolocate_enabled: boolean; taxnomies: string[]; }; -type SystemStatusSecurity = { + +export type SystemStatusSecurity = { secure_connection: boolean; hide_errors: boolean; }; /* End of Types */ +export interface DELETE { + id: number | string; + force?: boolean |string; +} + /* Start of Interfaces */ export interface Coupons { id: number; code: string; amount: string; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; discount_type: string; description: string; date_expires: string; @@ -346,12 +380,12 @@ export interface Coupons { meta_data: Meta_Data[]; } -interface Customers { +export interface Customers { id: number; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; email: string; first_name: string; last_name: string; @@ -364,7 +398,7 @@ interface Customers { meta_data: Meta_Data[]; } -interface Orders { +export interface Orders { id: number; parent_id: number; number: string; @@ -373,10 +407,10 @@ interface Orders { version: string; status: string; currency: string; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; discount_total: string; discount_tax: string; shipping_total: string; @@ -408,19 +442,20 @@ interface Orders { refunds: Refunds[]; set_paid: boolean; } -interface OrdersNotes { +export interface OrdersNotes { id: number; author: string; - date_created(): Date; - date_created_gmt(): Date; + date_created: Date; + date_created_gmt: Date; note: string; customer_note: boolean; added_by_user: boolean; } -interface OrdersRefunds { + +export interface OrdersRefunds { id: number; - date_created(): Date; - date_created_gmt(): Date; + date_created: Date; + date_created_gmt: Date; amount: string; reason: string; refunded_by: number; @@ -429,24 +464,26 @@ interface OrdersRefunds { line_items: Orders_Refunds_Line_Items[]; api_refund: boolean; } -interface Products { + +export interface Products { id: number; name: string; slug: string; permalink: string; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; catalog_visibility: string; description: string; + short_description: string; price: string; regular_price: string; sale_price: string; - date_on_sale_from(): Date; - date_on_sale_from_gmt(): Date; - date_on_sale_to(): Date; - date_on_sale_to_gmt(): Date; + date_on_sale_from: Date; + date_on_sale_from_gmt: Date; + date_on_sale_to: Date; + date_on_sale_to_gmt: Date; price_html: string; purchasable: boolean; total_sales: number; @@ -527,22 +564,23 @@ interface Products { max_price: string; stock_status: "instock" | "outofstock" | "onbackorder" | string; } -interface ProductsVariations { + +export interface ProductsVariations { id: number; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; description: string; permalink: string; sku: string; price: string; regular_price: string; sale_price: string; - date_on_sale_from(): Date; - date_on_sale_from_gmt(): Date; - date_on_sale_to(): Date; - date_on_sale_to_gmt(): Date; + date_on_sale_from: Date; + date_on_sale_from_gmt: Date; + date_on_sale_to: Date; + date_on_sale_to_gmt: Date; on_sale: boolean; status: string; purchasable: boolean; @@ -568,7 +606,8 @@ interface ProductsVariations { menu_order: number; meta_data: Meta_Data[]; } -interface ProductsAttributes { + +export interface ProductsAttributes { id: number; name: string; slug: string; @@ -576,7 +615,8 @@ interface ProductsAttributes { order_by: string; has_archives: boolean; } -interface ProductsAttributesTerms { + +export interface ProductsAttributesTerms { id: number; name: string; slug: string; @@ -584,7 +624,8 @@ interface ProductsAttributesTerms { menu_order: number; count: number; } -interface ProductsCategories { + +export interface ProductsCategories { id: number; name: string; slug: string; @@ -595,24 +636,27 @@ interface ProductsCategories { menu_order: number; count: number; } -interface ProductsShippingClasses { + +export interface ProductsShippingClasses { id: number; name: string; slug: string; description: string; count: number; } -interface ProductsTags { + +export interface ProductsTags { id: number; name: string; slug: string; description: string; count: number; } -interface ProductsReviews { + +export interface ProductsReviews { id: number; - date_created(): Date; - date_created_gmt(): Date; + date_created: Date; + date_created_gmt: Date; parent_id: number; status: string; reviewer: string; @@ -620,6 +664,7 @@ interface ProductsReviews { review: string; verified: boolean; } + // interface Reports {} // TODO // interface ReportsCoupons {} // TODO // interface ReportsCustomers {} // TODO @@ -630,7 +675,8 @@ interface ProductsReviews { // interface ReportsSales {} // TODO // interface TaxRates {} // TODO // interface TaxClasses {} // TODO -interface Webhooks { + +export interface Webhooks { id: number; name: string; status: "all" | "active" | "paused" | "disabled" | string; @@ -640,10 +686,10 @@ interface Webhooks { hooks: string[]; delivery_url: string; secret: string; - date_created(): Date; - date_created_gmt(): Date; - date_modified(): Date; - date_modified_gmt(): Date; + date_created: Date; + date_created_gmt: Date; + date_modified: Date; + date_modified_gmt: Date; links: Partial; context: "view" | "edit" | string; page: 1 | number; @@ -665,7 +711,8 @@ interface Webhooks { // interface ShippingZonesLocations {} // TODO // interface ShippingZonesMethods {} // TODO // interface ShippingMethods {} // TODO -interface SystemStatus { + +export interface SystemStatus { environment: SystemStatusEnvironment; database: SystemStatusDatabase; active_plugins: string[]; @@ -681,9 +728,9 @@ export type CouponsParams = Partial; // Partial means all properties ar export type CustomersParams = Partial; // Partial means all properties are optional [Temporary] -type OrdersParams = Partial; // Partial means all properties are optional [Temporary] -type OrdersNotesParams = Partial; // Partial means all properties are optional [Temporary] -type OrdersRefundsParams = Partial; // Partial means all properties are optional [Temporary] +export type OrdersParams = Partial; // Partial means all properties are optional [Temporary] +export type OrdersNotesParams = Partial; // Partial means all properties are optional [Temporary] +export type OrdersRefundsParams = Partial; // Partial means all properties are optional [Temporary] /** * Union type for all possible params for Orders */ @@ -716,3 +763,5 @@ export type SystemStatusParams = Partial; // Partial means all pro // Webhooks export type WebhooksParams = Partial; // Partial means all properties are optional [Temporary] + + From 1be87722fe106ac6c2763234a64389aa89ca7ada Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:13:00 +0000 Subject: [PATCH 5/7] docs(ignore): removed test from --- .gitignore | 3 +- src/test/test.ts | 142 ----------------------------------------------- 2 files changed, 1 insertion(+), 144 deletions(-) delete mode 100755 src/test/test.ts diff --git a/.gitignore b/.gitignore index 0b48c06..58951bb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,4 @@ dist .env .src/test .reminder -./reminder/ -test \ No newline at end of file +./reminder/ \ No newline at end of file diff --git a/src/test/test.ts b/src/test/test.ts deleted file mode 100755 index 54428ae..0000000 --- a/src/test/test.ts +++ /dev/null @@ -1,142 +0,0 @@ -"use strict"; - -import WooCommerceRestApi from "../index"; -import nock from "nock"; - -const secretKey = "ck_"; -const consumerKey = "cs_"; - -describe("#options", () => { - test("wpAPIPrefix should set WP REST API custom path", () => { - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: secretKey, - consumerSecret: consumerKey, - wpAPIPrefix: "wp-rest", - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - const endpoint = "products"; - const expected = "https://test.dev/wp-rest/wc/v3/" + endpoint; - const url = api._getUrl(endpoint, {}); - expect(url).toBe(expected); - }); -}); - -describe("#methods", () => { - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - test("_getUrl should return full endpoint URL", () => { - // Fix #1 This is the same test as the one above - const endpoint = "products"; - const expected = "https://test.dev/wp-json/wc/v3/" + endpoint; - const url = api._getUrl(endpoint, {}); - - expect(url).toBe(expected); - }); - - test("_normalizeQueryString should return query string sorted by name", () => { - const url = - "http://test.dev/wp-json/wc/v3/products?filter[q]=Woo+Album&fields=id&filter[limit]=1"; - const expected = - "http://test.dev/wp-json/wc/v3/products?fields=id&filter[limit]=1&filter[q]=Woo%20Album"; - const normalized = api._normalizeQueryString(url, {}); - - expect(normalized).toBe(expected); - }); -}); - -describe("#requests", () => { - beforeEach(() => { - nock.cleanAll(); // clean all nock mocks - }); - - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - test("should return content for basic auth", async () => { - expect.assertions(1); - - nock(`https://test.dev/wp-json/wc/v3`).post("/coupons").reply(201, { - ok: true, - }); - - const response = await api.post("coupons", {}, {}); - expect(response.status).toBe(201); - }); - - test("should return content for get requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").get("/orders").reply(200, { - ok: true, - }); - - const response = await api.get("orders"); - expect(response.status).toBe(200); - }); - - test("should return content for put requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").put("/orders").reply(200, { - ok: true, - }); - - const response = await api.put("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for delete requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").delete("/orders").reply(200, { - ok: true, - }); - - const response = await api.delete("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for options requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3") - .intercept("/orders", "OPTIONS") - .reply(200, { - ok: true, - }); - - const response = await api.options("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for OAuth", async () => { - expect.assertions(1); - const oAuth = new WooCommerceRestApi({ - url: "http://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - nock("http://test.dev/wp-json/wc/v3") - .filteringPath(/\?.*/, "?params") - .get("/orders?params") - .reply(200, { - ok: true, - }); - - const response = await oAuth.get("orders"); - expect(response.status).toBe(200); - }); -}); From df91ffd486ee4f6836bcd53326d68babf7bd19c2 Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Fri, 7 Apr 2023 19:14:48 +0000 Subject: [PATCH 6/7] test(test): added more test Tests is covering more methods, Products, Customers, Orders and Coupoms --- src/test/api-data.json | 10551 +++++++++++++++++++++++++ src/test/coupons.json | 53 + src/test/customersJson-response.json | 51 + src/test/customersJson.json | 60 + src/test/example_data_orders.json | 863 ++ src/test/ordersJson.json | 1165 +++ src/test/productsJson-response.json | 121 + src/test/productsJson.json | 92 + src/test/wc.test.ts | 868 ++ 9 files changed, 13824 insertions(+) create mode 100755 src/test/api-data.json create mode 100644 src/test/coupons.json create mode 100644 src/test/customersJson-response.json create mode 100644 src/test/customersJson.json create mode 100644 src/test/example_data_orders.json create mode 100755 src/test/ordersJson.json create mode 100644 src/test/productsJson-response.json create mode 100644 src/test/productsJson.json create mode 100755 src/test/wc.test.ts diff --git a/src/test/api-data.json b/src/test/api-data.json new file mode 100755 index 0000000..2171d6e --- /dev/null +++ b/src/test/api-data.json @@ -0,0 +1,10551 @@ +{ + "namespace": "wc/v3", + "routes": { + "/wc/v3": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "namespace": { + "required": false, + "default": "wc/v3" + }, + "context": { + "required": false, + "default": "view" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3" + } + }, + "/wc/v3/coupons": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "code": { + "required": false, + "description": "Limit result set to resources with a specific code.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "code": { + "required": true, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "default": "fixed_cart", + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "default": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "default": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "default": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/coupons" + } + }, + "/wc/v3/coupons/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "code": { + "required": false, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/coupons/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "code": { + "required": false, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/coupons/batch" + } + }, + "/wc/v3/customers/(?P[\\d]+)/downloads": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "customer_id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/customers": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "registered_date" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "email": { + "required": false, + "description": "Limit result set to resources with a specific email.", + "type": "string" + }, + "role": { + "required": false, + "default": "customer", + "enum": [ + "all", + "administrator", + "editor", + "author", + "contributor", + "subscriber", + "customer", + "shop_manager" + ], + "description": "Limit result set to resources with a specific role.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "email": { + "required": true, + "description": "New user email address.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "New user username.", + "type": "string" + }, + "password": { + "required": false, + "description": "New user password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/customers" + } + }, + "/wc/v3/customers/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "email": { + "required": false, + "description": "The email address for the customer.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "Customer login name.", + "type": "string" + }, + "password": { + "required": false, + "description": "Customer password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + }, + "reassign": { + "required": false, + "default": 0, + "description": "ID to reassign posts to.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/customers/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "email": { + "required": false, + "description": "The email address for the customer.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "Customer login name.", + "type": "string" + }, + "password": { + "required": false, + "description": "Customer password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/customers/batch" + } + }, + "/wc/v3/orders/(?P[\\d]+)/notes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "type": { + "required": false, + "default": "any", + "enum": [ + "any", + "customer", + "internal" + ], + "description": "Limit result to customers or internal notes.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "note": { + "required": true, + "description": "Order note content.", + "type": "string" + }, + "customer_note": { + "required": false, + "default": false, + "description": "If true, the note will be shown to customers and they will be notified. If false, the note will be for admin reference only.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/notes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/refunds": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "dp": { + "required": false, + "default": 2, + "description": "Number of decimal points to use in each resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "amount": { + "required": false, + "description": "Refund amount.", + "type": "string" + }, + "reason": { + "required": false, + "description": "Reason for refund.", + "type": "string" + }, + "refunded_by": { + "required": false, + "description": "User ID of user who created the refund.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "api_refund": { + "required": false, + "default": true, + "description": "When true, the payment gateway API is used to generate the refund.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/refunds/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": true, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Limit result set to orders assigned a specific status.", + "type": "string" + }, + "customer": { + "required": false, + "description": "Limit result set to orders assigned a specific customer.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to orders assigned a specific product.", + "type": "integer" + }, + "dp": { + "required": false, + "default": 2, + "description": "Number of decimal points to use in each resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "default": "pending", + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "default": "USD", + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "default": 0, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "default": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/orders" + } + }, + "/wc/v3/orders/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/orders/batch" + } + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "parent": { + "required": false, + "description": "Limit result set to resources assigned to a specific parent.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Term name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Term name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/products/attributes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "default": "select", + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "default": "menu_order", + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "default": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/attributes" + } + }, + "/wc/v3/products/attributes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Attribute name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": true, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/attributes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Attribute name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/attributes/batch" + } + }, + "/wc/v3/products/categories": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "parent": { + "required": false, + "description": "Limit result set to resources assigned to a specific parent.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "default": "default", + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/categories" + } + }, + "/wc/v3/products/categories/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Category name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/categories/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Category name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/categories/batch" + } + }, + "/wc/v3/products/(?P[\\d]+)/reviews": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "review": { + "required": true, + "description": "Review content.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": true, + "description": "Name of the reviewer.", + "type": "string" + }, + "email": { + "required": true, + "description": "Email of the reviewer.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/reviews/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "review": { + "required": false, + "description": "The content of the review.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": false, + "description": "Reviewer name.", + "type": "string" + }, + "email": { + "required": false, + "description": "Reviewer email.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/reviews/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "review": { + "required": false, + "description": "The content of the review.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": false, + "description": "Reviewer name.", + "type": "string" + }, + "email": { + "required": false, + "description": "Reviewer email.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/products/shipping_classes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/shipping_classes" + } + }, + "/wc/v3/products/shipping_classes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Shipping class name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/shipping_classes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Shipping class name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/shipping_classes/batch" + } + }, + "/wc/v3/products/tags": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/tags" + } + }, + "/wc/v3/products/tags/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Tag name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/tags/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Tag name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/tags/batch" + } + }, + "/wc/v3/products": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug", + "price", + "popularity", + "rating" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "slug": { + "required": false, + "description": "Limit result set to products with a specific slug.", + "type": "string" + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "draft", + "pending", + "private", + "publish" + ], + "description": "Limit result set to products assigned a specific status.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Limit result set to products assigned a specific type.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Limit result set to products with a specific SKU.", + "type": "string" + }, + "featured": { + "required": false, + "description": "Limit result set to featured products.", + "type": "boolean" + }, + "category": { + "required": false, + "description": "Limit result set to products assigned a specific category ID.", + "type": "string" + }, + "tag": { + "required": false, + "description": "Limit result set to products assigned a specific tag ID.", + "type": "string" + }, + "shipping_class": { + "required": false, + "description": "Limit result set to products assigned a specific shipping class ID.", + "type": "string" + }, + "attribute": { + "required": false, + "description": "Limit result set to products with a specific attribute.", + "type": "string" + }, + "attribute_term": { + "required": false, + "description": "Limit result set to products with a specific attribute term ID (required an assigned attribute).", + "type": "string" + }, + "tax_class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Limit result set to products with a specific tax class.", + "type": "string" + }, + "in_stock": { + "required": false, + "description": "Limit result set to products in stock or out of stock.", + "type": "boolean" + }, + "on_sale": { + "required": false, + "description": "Limit result set to products on sale.", + "type": "boolean" + }, + "min_price": { + "required": false, + "description": "Limit result set to products based on a minimum price.", + "type": "string" + }, + "max_price": { + "required": false, + "description": "Limit result set to products based on a maximum price.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "default": "simple", + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "default": "publish", + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "default": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "default": "visible", + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "default": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "default": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "default": -1, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "default": -1, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "default": "taxable", + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "default": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "default": true, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "default": "no", + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "default": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "default": true, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products" + } + }, + "/wc/v3/products/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/batch" + } + }, + "/wc/v3/products/(?P[\\d]+)/variations": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "slug": { + "required": false, + "description": "Limit result set to products with a specific slug.", + "type": "string" + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "draft", + "pending", + "private", + "publish" + ], + "description": "Limit result set to products assigned a specific status.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Limit result set to products assigned a specific type.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Limit result set to products with a specific SKU.", + "type": "string" + }, + "featured": { + "required": false, + "description": "Limit result set to featured products.", + "type": "boolean" + }, + "category": { + "required": false, + "description": "Limit result set to products assigned a specific category ID.", + "type": "string" + }, + "tag": { + "required": false, + "description": "Limit result set to products assigned a specific tag ID.", + "type": "string" + }, + "shipping_class": { + "required": false, + "description": "Limit result set to products assigned a specific shipping class ID.", + "type": "string" + }, + "attribute": { + "required": false, + "description": "Limit result set to products with a specific attribute.", + "type": "string" + }, + "attribute_term": { + "required": false, + "description": "Limit result set to products with a specific attribute term ID (required an assigned attribute).", + "type": "string" + }, + "tax_class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Limit result set to products with a specific tax class.", + "type": "string" + }, + "in_stock": { + "required": false, + "description": "Limit result set to products in stock or out of stock.", + "type": "boolean" + }, + "on_sale": { + "required": false, + "description": "Limit result set to products on sale.", + "type": "boolean" + }, + "min_price": { + "required": false, + "description": "Limit result set to products based on a minimum price.", + "type": "string" + }, + "max_price": { + "required": false, + "description": "Limit result set to products based on a maximum price.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "default": true, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "default": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "default": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "default": -1, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "default": -1, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "default": "taxable", + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "default": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "default": true, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "default": "no", + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/variations/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/variations/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ] + }, + "/wc/v3/reports/sales": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "period": { + "required": false, + "enum": [ + "week", + "month", + "last_month", + "year" + ], + "description": "Report period.", + "type": "string" + }, + "date_min": { + "required": false, + "description": "Return sales for a specific start date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + }, + "date_max": { + "required": false, + "description": "Return sales for a specific end date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports/sales" + } + }, + "/wc/v3/reports/top_sellers": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "period": { + "required": false, + "enum": [ + "week", + "month", + "last_month", + "year" + ], + "description": "Report period.", + "type": "string" + }, + "date_min": { + "required": false, + "description": "Return sales for a specific start date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + }, + "date_max": { + "required": false, + "description": "Return sales for a specific end date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports/top_sellers" + } + }, + "/wc/v3/reports": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports" + } + }, + "/wc/v3/settings": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": [] + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/settings" + } + }, + "/wc/v3/settings/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/settings/(?P[\\w-]+)/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "value": { + "required": false, + "description": "Setting value.", + "type": "mixed" + } + } + } + ] + }, + "/wc/v3/settings/(?P[\\w-]+)/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "value": { + "required": false, + "description": "Setting value.", + "type": "mixed" + } + } + } + ] + }, + "/wc/v3/shipping/zones": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": [] + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Shipping zone name.", + "type": "string" + }, + "order": { + "required": false, + "description": "Shipping zone order.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/shipping/zones" + } + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Shipping zone name.", + "type": "string" + }, + "order": { + "required": false, + "description": "Shipping zone order.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/locations": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "code": { + "required": false, + "description": "Shipping zone location code.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "postcode", + "state", + "country", + "continent" + ], + "description": "Shipping zone location type.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/methods": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "order": { + "required": false, + "description": "Shipping method sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Shipping method enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Shipping method settings.", + "type": "object" + }, + "method_id": { + "required": true, + "description": "Shipping method ID." + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/methods/(?P[\\d-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + }, + "order": { + "required": false, + "description": "Shipping method sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Shipping method enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Shipping method settings.", + "type": "object" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes/classes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Tax class name.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes/classes" + } + }, + "/wc/v3/taxes/classes/(?P\\w[\\w\\s\\-]*)": { + "namespace": "wc/v3", + "methods": [ + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "DELETE" + ], + "args": { + "slug": { + "required": false, + "description": "Unique slug for the resource.", + "type": "string" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "order", + "enum": [ + "id", + "order" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Sort by tax class.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "default": 1, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "default": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "default": true, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "default": "standard", + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes" + } + }, + "/wc/v3/taxes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes/batch" + } + }, + "/wc/v3/webhooks/(?P[\\d]+)/deliveries": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "webhook_id": { + "required": false, + "description": "Unique identifier for the webhook.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/webhooks/(?P[\\d]+)/deliveries/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "webhook_id": { + "required": false, + "description": "Unique identifier for the webhook.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/webhooks": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "status": { + "required": false, + "default": "all", + "enum": [ + "all", + "active", + "paused", + "disabled" + ], + "description": "Limit result set to webhooks assigned a specific status.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "default": "active", + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": true, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": true, + "description": "Webhook secret.", + "type": "string" + }, + "delivery_url": { + "required": true, + "description": "Webhook delivery URL.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/webhooks" + } + }, + "/wc/v3/webhooks/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": false, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": false, + "description": "Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/webhooks/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": false, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": false, + "description": "Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/webhooks/batch" + } + }, + "/wc/v3/system_status": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/system_status" + } + }, + "/wc/v3/system_status/tools": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/system_status/tools" + } + }, + "/wc/v3/system_status/tools/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "A unique identifier for the tool.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tool name.", + "type": "string" + }, + "action": { + "required": false, + "description": "What running the tool will do.", + "type": "string" + }, + "description": { + "required": false, + "description": "Tool description.", + "type": "string" + }, + "success": { + "required": false, + "description": "Did the tool run successfully?", + "type": "boolean" + }, + "message": { + "required": false, + "description": "Tool return message.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/shipping_methods": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/shipping_methods" + } + }, + "/wc/v3/shipping_methods/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/payment_gateways": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/payment_gateways" + } + }, + "/wc/v3/payment_gateways/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "title": { + "required": false, + "description": "Payment gateway title on checkout.", + "type": "string" + }, + "description": { + "required": false, + "description": "Payment gateway description on checkout.", + "type": "string" + }, + "order": { + "required": false, + "description": "Payment gateway sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Payment gateway enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Payment gateway settings.", + "type": "object" + } + } + } + ] + } + }, + "_links": { + "up": [ + { + "href": "https://example.com/wp-json/" + } + ] + } + } \ No newline at end of file diff --git a/src/test/coupons.json b/src/test/coupons.json new file mode 100644 index 0000000..a4c091d --- /dev/null +++ b/src/test/coupons.json @@ -0,0 +1,53 @@ +[{ + "id": 720, + "code": "free shipping", + "amount": "0.00", + "status": "publish", + "date_created": "2017-03-21T15:25:02", + "date_created_gmt": "2017-03-21T18:25:02", + "date_modified": "2017-03-21T15:25:02", + "date_modified_gmt": "2017-03-21T18:25:02", + "discount_type": "fixed_cart", + "description": "", + "date_expires": "", + "date_expires_gmt": "", + "usage_count": 0, + "individual_use": true, + "product_ids": [], + "excluded_product_ids": [], + "usage_limit": 0, + "usage_limit_per_user": 0, + "limit_usage_to_x_items": 0, + "free_shipping": true, + "product_categories": [], + "excluded_product_categories": [], + "exclude_sale_items": false, + "minimum_amount": "0.00", + "maximum_amount": "0.00", + "email_restrictions": [], + "used_by": [], + "meta_data": [ + { + "id": 721, + "key": "discount_type", + "value": "fixed_cart" + }, + { + "id": 722, + "key": "coupon_amount", + "value": "0" + } + ], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/coupons/720" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/coupons" + } + ] + } + }] \ No newline at end of file diff --git a/src/test/customersJson-response.json b/src/test/customersJson-response.json new file mode 100644 index 0000000..494aa96 --- /dev/null +++ b/src/test/customersJson-response.json @@ -0,0 +1,51 @@ +[{ + "id": 25, + "date_created": "2017-03-21T16:09:28", + "date_created_gmt": "2017-03-21T19:09:28", + "date_modified": "2017-03-21T16:09:30", + "date_modified_gmt": "2017-03-21T19:09:30", + "email": "john.doe@example.com", + "first_name": "John", + "last_name": "Doe", + "role": "customer", + "username": "john.doe", + "billing": { + "first_name": "John", + "last_name": "Doe", + "company": "", + "address_1": "969 Market", + "address_2": "", + "city": "San Francisco", + "state": "CA", + "postcode": "94103", + "country": "US", + "email": "john.doe@example.com", + "phone": "(555) 555-5555" + }, + "shipping": { + "first_name": "John", + "last_name": "Doe", + "company": "", + "address_1": "969 Market", + "address_2": "", + "city": "San Francisco", + "state": "CA", + "postcode": "94103", + "country": "US" + }, + "is_paying_customer": false, + "avatar_url": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96", + "meta_data": [], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/customers/25" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/customers" + } + ] + } + }] \ No newline at end of file diff --git a/src/test/customersJson.json b/src/test/customersJson.json new file mode 100644 index 0000000..99c0c74 --- /dev/null +++ b/src/test/customersJson.json @@ -0,0 +1,60 @@ +[{ + "id": 303, + "date_created": "2022-04-09T15:29:04", + "date_created_gmt": "2022-04-09T18:29:04", + "date_modified": "2022-04-09T15:29:04", + "date_modified_gmt": "2022-04-09T18:29:04", + "email": "abreusfelipe@gmail.com", + "first_name": "", + "last_name": "", + "role": "customer", + "username": "abreusfelipe", + "billing": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "postcode": "", + "country": "", + "state": "", + "email": "", + "phone": "", + "number": "", + "neighborhood": "", + "persontype": "F", + "cpf": "", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "postcode": "", + "country": "", + "state": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "is_paying_customer": false, + "avatar_url": "https://secure.gravatar.com/avatar/0a3114732ffd608c96a3aed0bc99c391?s=96&d=mm&r=g", + "meta_data": [ + { + "id": 10744, + "key": "_yoast_wpseo_profile_updated", + "value": "1649528944" + }, + { "id": 10747, "key": "wc_last_active", "value": "1649462400" } + ], + "_links": { "self": [ ["Object"] ], "collection": [ ["Object"] ] } +}] \ No newline at end of file diff --git a/src/test/example_data_orders.json b/src/test/example_data_orders.json new file mode 100644 index 0000000..171cad9 --- /dev/null +++ b/src/test/example_data_orders.json @@ -0,0 +1,863 @@ +[ + { + "id": 36875, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T19:10:21", + "date_modified": "2022-07-03T09:49:19", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "15.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "164.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_CsufiGQ7amiLL", + "billing": { + "first_name": "Mariana", + "last_name": "Barreto", + "company": "", + "address_1": "Rua Nove de Julho", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88111-380", + "country": "BR", + "email": "maris.barreto19@gmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "061.828.689-61", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Vanessa Barreto Bossle", + "billing_recipient_phone": "85996859001", + "billing_number": "611", + "billing_complementary": "Casa Branca em frente ao salão de Beleza", + "billing_neighborhood": "Bairro Ipiranga", + "billing_msg": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho", + "space_2": "", + "number": "611", + "neighborhood": "Bairro Ipiranga", + "persontype": "F", + "cpf": "06182868961", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.4.77.0", + "customer_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T09:49:19", + "date_paid": "2022-07-03T09:49:19", + "cart_hash": "a7fee777c8ff0919b8e9cbf0d90849e8", + "number": "36875", + "meta_data": [ + { + "id": 996295, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996296, + "key": "_billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996297, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996298, + "key": "_billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996299, + "key": "_billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996300, + "key": "_billing_number", + "value": "611" + }, + { + "id": 996301, + "key": "_billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996302, + "key": "_billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996303, + "key": "_billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\n\nDaqueles que te amam e te querem bem.\n\nCom carinho,\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996304, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996305, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996306, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996307, + "key": "billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996308, + "key": "billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996309, + "key": "billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996310, + "key": "billing_number", + "value": "611" + }, + { + "id": 996311, + "key": "billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996312, + "key": "billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996313, + "key": "billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996314, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996315, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996316, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996320, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996321, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996328, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996329, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18074, + "name": "Doce Encanto", + "product_id": 2157, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "149.90", + "subtotal_tax": "0.00", + "total": "149.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 149.9, + "image": { + "id": "807", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Doce-Encanto.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18075, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "9", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148342, + "key": "Itens", + "value": "Doce Encanto × 1", + "display_key": "Itens", + "display_value": "Doce Encanto × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36875/?pay_for_order=true&key=wc_order_CsufiGQ7amiLL", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T22:10:21", + "date_modified_gmt": "2022-07-03T12:49:19", + "date_completed_gmt": "2022-07-03T12:49:19", + "date_paid_gmt": "2022-07-03T12:49:19", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36875" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + }, + { + "id": 36874, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T17:55:52", + "date_modified": "2022-07-03T10:05:31", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "20.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "309.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_PYC1jtOGNjsb7", + "billing": { + "first_name": "Nayara", + "last_name": "Gonçalves", + "company": "", + "address_1": "Rua José Graciliano da Silva", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88115-239", + "country": "BR", + "email": "nayarapg@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "035.916.769-18", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Scheila Pereira", + "billing_recipient_phone": "85996859001", + "billing_number": "170", + "billing_complementary": "Bloco 4 apto 104", + "billing_neighborhood": "Serraria", + "billing_msg": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay", + "space_2": "", + "number": "170", + "neighborhood": "Serraria", + "persontype": "F", + "cpf": "03591676918", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "179.232.120.95", + "customer_user_agent": "Mozilla/5.0 (Linux; Android 11; moto g(10)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T10:05:31", + "date_paid": "2022-07-03T10:05:31", + "cart_hash": "b24cdbd254b0bc0202d60224586b50bf", + "number": "36874", + "meta_data": [ + { + "id": 996240, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996241, + "key": "_billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996242, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996243, + "key": "_billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996244, + "key": "_billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996245, + "key": "_billing_number", + "value": "170" + }, + { + "id": 996246, + "key": "_billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996247, + "key": "_billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996248, + "key": "_billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\nTe amo e desejo apenas as melhores coisas desse mundão!!\nBeijos\nNay" + }, + { + "id": 996249, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996250, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996251, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996252, + "key": "billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996253, + "key": "billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996254, + "key": "billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996255, + "key": "billing_number", + "value": "170" + }, + { + "id": 996256, + "key": "billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996257, + "key": "billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996258, + "key": "billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay" + }, + { + "id": 996259, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996260, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996261, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996265, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996266, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996324, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996325, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18072, + "name": "Baú Rosas Carinho Chandon", + "product_id": 2102, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "289.90", + "subtotal_tax": "0.00", + "total": "289.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 289.9, + "image": { + "id": "688", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Baú-Rosas-Carinho-Chandon-1.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18073, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "11", + "total": "20.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148327, + "key": "Itens", + "value": "Baú Rosas Carinho Chandon × 1", + "display_key": "Itens", + "display_value": "Baú Rosas Carinho Chandon × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36874/?pay_for_order=true&key=wc_order_PYC1jtOGNjsb7", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T20:55:52", + "date_modified_gmt": "2022-07-03T13:05:31", + "date_completed_gmt": "2022-07-03T13:05:31", + "date_paid_gmt": "2022-07-03T13:05:31", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36874" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + }, + { + "id": 36873, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T13:30:57", + "date_modified": "2022-07-03T08:48:14", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "32.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "251.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_xyhq7G0pGlaSc", + "billing": { + "first_name": "Elis", + "last_name": "Capeletti", + "company": "", + "address_1": "Rua Dario João de Souza", + "address_2": "", + "city": "florianopolis", + "state": "SC", + "postcode": "88053-760", + "country": "BR", + "email": "eliscapeletti@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "921.232.520-34", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Marcia Capeletti", + "billing_recipient_phone": "85996859001", + "billing_number": "61", + "billing_complementary": "apto. 210B", + "billing_neighborhood": "Jurere", + "billing_msg": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia", + "space_2": "", + "number": "61", + "neighborhood": "Jurere", + "persontype": "F", + "cpf": "92123252034", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.6.245.142", + "customer_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T08:48:14", + "date_paid": "2022-07-03T08:48:14", + "cart_hash": "e472b17fe31d78eaf5191713b4eda912", + "number": "36873", + "meta_data": [ + { + "id": 996159, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996160, + "key": "_billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996161, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996162, + "key": "_billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996163, + "key": "_billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996164, + "key": "_billing_number", + "value": "61" + }, + { + "id": 996165, + "key": "_billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996166, + "key": "_billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996167, + "key": "_billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\nElis e Letícia" + }, + { + "id": 996168, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996169, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996170, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996171, + "key": "billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996172, + "key": "billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996173, + "key": "billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996174, + "key": "billing_number", + "value": "61" + }, + { + "id": 996175, + "key": "billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996176, + "key": "billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996177, + "key": "billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia" + }, + { + "id": 996178, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996179, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996180, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996184, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996185, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996192, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996193, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18070, + "name": "Caixa Surpresa de Aniversário", + "product_id": 2025, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "219.90", + "subtotal_tax": "0.00", + "total": "219.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 219.9, + "image": { + "id": "23189", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/06/pinnkk.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18071, + "method_title": "Uber Flash", + "method_id": "flat_rate", + "instance_id": "16", + "total": "32.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148312, + "key": "Itens", + "value": "Caixa Surpresa de Aniversário × 1", + "display_key": "Itens", + "display_value": "Caixa Surpresa de Aniversário × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36873/?pay_for_order=true&key=wc_order_xyhq7G0pGlaSc", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T16:30:57", + "date_modified_gmt": "2022-07-03T11:48:14", + "date_completed_gmt": "2022-07-03T11:48:14", + "date_paid_gmt": "2022-07-03T11:48:14", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36873" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + } +] \ No newline at end of file diff --git a/src/test/ordersJson.json b/src/test/ordersJson.json new file mode 100755 index 0000000..afaf9bf --- /dev/null +++ b/src/test/ordersJson.json @@ -0,0 +1,1165 @@ +[ + { + "id": 66621, + "parent_id": 0, + "status": "on-hold", + "currency": "BRL", + "version": "6.0.1", + "prices_include_tax": false, + "date_created": "2022-05-01T15:17:30", + "date_modified": "2022-05-01T15:17:30", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "0.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "374.80", + "total_tax": "0.00", + "customer_id": 1, + "order_key": "wc_order_T11dai6ISTCS0", + "billing": { + "first_name": "Teste", + "last_name": "Teste", + "company": "Teste", + "address_1": "VITOR KONDER", + "address_2": "", + "city": "florianópolis", + "state": "SC", + "postcode": "88015-400", + "country": "BR", + "email": "jardel.godinho@gmail.com", + "phone": "(85) 99685-9001", + "payment": "", + "billing_cpf": "005.762.739-88", + "billing_cnpj": "18.270.630/0001-41", + "billing_company": "Teste", + "space": "", + "delivery": "", + "billing_recipient": "teste", + "billing_recipient_phone": "85996859001", + "billing_number": "302", + "billing_complementary": "APTO 704", + "billing_neighborhood": "CENTRO", + "billing_msg": "testes", + "space_2": "", + "number": "302", + "neighborhood": "CENTRO", + "persontype": "J", + "cpf": "00576273988", + "rg": "", + "cnpj": "18270630000141", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX", + "transaction_id": "", + "customer_ip_address": "127.0.0.1", + "customer_user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": null, + "date_paid": null, + "cart_hash": "d503384c6706e15cc7ce3abb181c8df9", + "number": "66621", + "meta_data": [ + { + "id": 1559419, + "key": "tm_woo_api_sync_enabled_for_Loja+Base", + "value": "no" + }, + { + "id": 1559449, + "key": "_billing_persontype", + "value": "2" + }, + { + "id": 1559450, + "key": "_billing_cpf", + "value": "005.762.739-88" + }, + { + "id": 1559451, + "key": "_billing_cnpj", + "value": "18.270.630/0001-41" + }, + { + "id": 1559452, + "key": "_billing_recipient", + "value": "teste" + }, + { + "id": 1559453, + "key": "_billing_recipient_phone", + "value": "85996859001" + }, + { + "id": 1559454, + "key": "_billing_number", + "value": "302" + }, + { + "id": 1559455, + "key": "_billing_complementary", + "value": "APTO 704" + }, + { + "id": 1559456, + "key": "_billing_neighborhood", + "value": "CENTRO" + }, + { + "id": 1559457, + "key": "_billing_msg", + "value": "testes" + }, + { + "id": 1559458, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 1559459, + "key": "thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 1559460, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 1559461, + "key": "billing_cpf", + "value": "005.762.739-88" + }, + { + "id": 1559462, + "key": "billing_cnpj", + "value": "18.270.630/0001-41" + }, + { + "id": 1559463, + "key": "billing_company", + "value": "Teste" + }, + { + "id": 1559464, + "key": "billing_recipient", + "value": "teste" + }, + { + "id": 1559465, + "key": "billing_recipient_phone", + "value": "85996859001" + }, + { + "id": 1559466, + "key": "billing_number", + "value": "302" + }, + { + "id": 1559467, + "key": "billing_complementary", + "value": "APTO 704" + }, + { + "id": 1559468, + "key": "billing_neighborhood", + "value": "CENTRO" + }, + { + "id": 1559469, + "key": "billing_msg", + "value": "testes" + }, + { + "id": 1559470, + "key": "date", + "value": "01/05/2022" + }, + { + "id": 1559471, + "key": "time_celebration", + "value": "Antes das 8h00" + } + ], + "line_items": [ + { + "id": 46981, + "name": "Box Petiscos", + "product_id": 32205, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "199.90", + "subtotal_tax": "0.00", + "total": "199.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 199.9, + "parent_name": null + }, + { + "id": 46982, + "name": "Cesta Café da Manhã Coqueiros", + "product_id": 32129, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "159.90", + "subtotal_tax": "0.00", + "total": "159.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 159.9, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 46984, + "method_title": "Frete grátis", + "method_id": "free_shipping", + "instance_id": "30", + "total": "0.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 380952, + "key": "Itens", + "value": "Box Petiscos × 1, Cesta Café da Manhã Coqueiros × 1", + "display_key": "Itens", + "display_value": "Box Petiscos × 1, Cesta Café da Manhã Coqueiros × 1" + } + ] + } + ], + "fee_lines": [ + { + "id": 46983, + "name": "Horário de Entrega (Antes das 8h00)", + "tax_class": "0", + "tax_status": "taxable", + "amount": "15", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [] + } + ], + "coupon_lines": [], + "refunds": [], + "date_created_gmt": "2022-05-01T18:17:30", + "date_modified_gmt": "2022-05-01T18:17:30", + "date_completed_gmt": null, + "date_paid_gmt": null, + "schedule": { + "date": "01/05/2022", + "time": "", + "time_celebration": "Antes das 8h00", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/orders/66621" + } + ], + "collection": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/orders" + } + ], + "customer": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/customers/1" + } + ] + } + }, + { + "id": 36875, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T19:10:21", + "date_modified": "2022-07-03T09:49:19", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "15.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "164.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_CsufiGQ7amiLL", + "billing": { + "first_name": "Mariana", + "last_name": "Barreto", + "company": "", + "address_1": "Rua Nove de Julho", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88111-380", + "country": "BR", + "email": "maris.barreto19@gmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "061.828.689-61", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Vanessa Barreto Bossle", + "billing_recipient_phone": "85996859001", + "billing_number": "611", + "billing_complementary": "Casa Branca em frente ao salão de Beleza", + "billing_neighborhood": "Bairro Ipiranga", + "billing_msg": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho", + "space_2": "", + "number": "611", + "neighborhood": "Bairro Ipiranga", + "persontype": "F", + "cpf": "06182868961", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.4.77.0", + "customer_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T09:49:19", + "date_paid": "2022-07-03T09:49:19", + "cart_hash": "a7fee777c8ff0919b8e9cbf0d90849e8", + "number": "36875", + "meta_data": [ + { + "id": 996295, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996296, + "key": "_billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996297, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996298, + "key": "_billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996299, + "key": "_billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996300, + "key": "_billing_number", + "value": "611" + }, + { + "id": 996301, + "key": "_billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996302, + "key": "_billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996303, + "key": "_billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\n\nDaqueles que te amam e te querem bem.\n\nCom carinho,\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996304, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996305, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996306, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996307, + "key": "billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996308, + "key": "billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996309, + "key": "billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996310, + "key": "billing_number", + "value": "611" + }, + { + "id": 996311, + "key": "billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996312, + "key": "billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996313, + "key": "billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996314, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996315, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996316, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996320, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996321, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996328, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996329, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18074, + "name": "Doce Encanto", + "product_id": 2157, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "149.90", + "subtotal_tax": "0.00", + "total": "149.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 149.9, + "image": { + "id": "807", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Doce-Encanto.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18075, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "9", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148342, + "key": "Itens", + "value": "Doce Encanto × 1", + "display_key": "Itens", + "display_value": "Doce Encanto × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36875/?pay_for_order=true&key=wc_order_CsufiGQ7amiLL", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T22:10:21", + "date_modified_gmt": "2022-07-03T12:49:19", + "date_completed_gmt": "2022-07-03T12:49:19", + "date_paid_gmt": "2022-07-03T12:49:19", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36875" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +}, +{ + "id": 36874, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T17:55:52", + "date_modified": "2022-07-03T10:05:31", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "20.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "309.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_PYC1jtOGNjsb7", + "billing": { + "first_name": "Nayara", + "last_name": "Gonçalves", + "company": "", + "address_1": "Rua José Graciliano da Silva", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88115-239", + "country": "BR", + "email": "nayarapg@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "035.916.769-18", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Scheila Pereira", + "billing_recipient_phone": "85996859001", + "billing_number": "170", + "billing_complementary": "Bloco 4 apto 104", + "billing_neighborhood": "Serraria", + "billing_msg": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay", + "space_2": "", + "number": "170", + "neighborhood": "Serraria", + "persontype": "F", + "cpf": "03591676918", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "179.232.120.95", + "customer_user_agent": "Mozilla/5.0 (Linux; Android 11; moto g(10)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T10:05:31", + "date_paid": "2022-07-03T10:05:31", + "cart_hash": "b24cdbd254b0bc0202d60224586b50bf", + "number": "36874", + "meta_data": [ + { + "id": 996240, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996241, + "key": "_billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996242, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996243, + "key": "_billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996244, + "key": "_billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996245, + "key": "_billing_number", + "value": "170" + }, + { + "id": 996246, + "key": "_billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996247, + "key": "_billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996248, + "key": "_billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\nTe amo e desejo apenas as melhores coisas desse mundão!!\nBeijos\nNay" + }, + { + "id": 996249, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996250, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996251, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996252, + "key": "billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996253, + "key": "billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996254, + "key": "billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996255, + "key": "billing_number", + "value": "170" + }, + { + "id": 996256, + "key": "billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996257, + "key": "billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996258, + "key": "billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay" + }, + { + "id": 996259, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996260, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996261, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996265, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996266, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996324, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996325, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18072, + "name": "Baú Rosas Carinho Chandon", + "product_id": 2102, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "289.90", + "subtotal_tax": "0.00", + "total": "289.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 289.9, + "image": { + "id": "688", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Baú-Rosas-Carinho-Chandon-1.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18073, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "11", + "total": "20.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148327, + "key": "Itens", + "value": "Baú Rosas Carinho Chandon × 1", + "display_key": "Itens", + "display_value": "Baú Rosas Carinho Chandon × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36874/?pay_for_order=true&key=wc_order_PYC1jtOGNjsb7", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T20:55:52", + "date_modified_gmt": "2022-07-03T13:05:31", + "date_completed_gmt": "2022-07-03T13:05:31", + "date_paid_gmt": "2022-07-03T13:05:31", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36874" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +}, +{ + "id": 36873, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T13:30:57", + "date_modified": "2022-07-03T08:48:14", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "32.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "251.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_xyhq7G0pGlaSc", + "billing": { + "first_name": "Elis", + "last_name": "Capeletti", + "company": "", + "address_1": "Rua Dario João de Souza", + "address_2": "", + "city": "florianopolis", + "state": "SC", + "postcode": "88053-760", + "country": "BR", + "email": "eliscapeletti@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "921.232.520-34", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Marcia Capeletti", + "billing_recipient_phone": "85996859001", + "billing_number": "61", + "billing_complementary": "apto. 210B", + "billing_neighborhood": "Jurere", + "billing_msg": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia", + "space_2": "", + "number": "61", + "neighborhood": "Jurere", + "persontype": "F", + "cpf": "92123252034", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.6.245.142", + "customer_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T08:48:14", + "date_paid": "2022-07-03T08:48:14", + "cart_hash": "e472b17fe31d78eaf5191713b4eda912", + "number": "36873", + "meta_data": [ + { + "id": 996159, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996160, + "key": "_billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996161, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996162, + "key": "_billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996163, + "key": "_billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996164, + "key": "_billing_number", + "value": "61" + }, + { + "id": 996165, + "key": "_billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996166, + "key": "_billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996167, + "key": "_billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\nElis e Letícia" + }, + { + "id": 996168, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996169, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996170, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996171, + "key": "billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996172, + "key": "billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996173, + "key": "billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996174, + "key": "billing_number", + "value": "61" + }, + { + "id": 996175, + "key": "billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996176, + "key": "billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996177, + "key": "billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia" + }, + { + "id": 996178, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996179, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996180, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996184, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996185, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996192, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996193, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18070, + "name": "Caixa Surpresa de Aniversário", + "product_id": 2025, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "219.90", + "subtotal_tax": "0.00", + "total": "219.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 219.9, + "image": { + "id": "23189", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/06/pinnkk.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18071, + "method_title": "Uber Flash", + "method_id": "flat_rate", + "instance_id": "16", + "total": "32.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148312, + "key": "Itens", + "value": "Caixa Surpresa de Aniversário × 1", + "display_key": "Itens", + "display_value": "Caixa Surpresa de Aniversário × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36873/?pay_for_order=true&key=wc_order_xyhq7G0pGlaSc", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T16:30:57", + "date_modified_gmt": "2022-07-03T11:48:14", + "date_completed_gmt": "2022-07-03T11:48:14", + "date_paid_gmt": "2022-07-03T11:48:14", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36873" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +} +] \ No newline at end of file diff --git a/src/test/productsJson-response.json b/src/test/productsJson-response.json new file mode 100644 index 0000000..f580e23 --- /dev/null +++ b/src/test/productsJson-response.json @@ -0,0 +1,121 @@ +[{ + "id": 794, + "name": "Premium Quality", + "slug": "premium-quality-19", + "permalink": "https://example.com/product/premium-quality-19/", + "date_created": "2017-03-23T17:01:14", + "date_created_gmt": "2017-03-23T20:01:14", + "date_modified": "2017-03-23T17:01:14", + "date_modified_gmt": "2017-03-23T20:01:14", + "type": "simple", + "status": "publish", + "featured": false, + "catalog_visibility": "visible", + "description": "

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n", + "short_description": "

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

\n", + "sku": "", + "price": "21.99", + "regular_price": "21.99", + "sale_price": "", + "date_on_sale_from": null, + "date_on_sale_from_gmt": null, + "date_on_sale_to": null, + "date_on_sale_to_gmt": null, + "price_html": "$21.99", + "on_sale": false, + "purchasable": true, + "total_sales": 0, + "virtual": false, + "downloadable": false, + "downloads": [], + "download_limit": -1, + "download_expiry": -1, + "external_url": "", + "button_text": "", + "tax_status": "taxable", + "tax_class": "", + "manage_stock": false, + "stock_quantity": null, + "stock_status": "instock", + "backorders": "no", + "backorders_allowed": false, + "backordered": false, + "sold_individually": false, + "weight": "", + "dimensions": { + "length": "", + "width": "", + "height": "" + }, + "shipping_required": true, + "shipping_taxable": true, + "shipping_class": "", + "shipping_class_id": 0, + "reviews_allowed": true, + "average_rating": "0.00", + "rating_count": 0, + "related_ids": [ + 53, + 40, + 56, + 479, + 99 + ], + "upsell_ids": [], + "cross_sell_ids": [], + "parent_id": 0, + "purchase_note": "", + "categories": [ + { + "id": 9, + "name": "Clothing", + "slug": "clothing" + }, + { + "id": 14, + "name": "T-shirts", + "slug": "t-shirts" + } + ], + "tags": [], + "images": [ + { + "id": 792, + "date_created": "2017-03-23T14:01:13", + "date_created_gmt": "2017-03-23T20:01:13", + "date_modified": "2017-03-23T14:01:13", + "date_modified_gmt": "2017-03-23T20:01:13", + "src": "https://example.com/wp-content/uploads/2017/03/T_2_front-4.jpg", + "name": "", + "alt": "" + }, + { + "id": 793, + "date_created": "2017-03-23T14:01:14", + "date_created_gmt": "2017-03-23T20:01:14", + "date_modified": "2017-03-23T14:01:14", + "date_modified_gmt": "2017-03-23T20:01:14", + "src": "https://example.com/wp-content/uploads/2017/03/T_2_back-2.jpg", + "name": "", + "alt": "" + } + ], + "attributes": [], + "default_attributes": [], + "variations": [], + "grouped_products": [], + "menu_order": 0, + "meta_data": [], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/products/794" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/products" + } + ] + } +}] \ No newline at end of file diff --git a/src/test/productsJson.json b/src/test/productsJson.json new file mode 100644 index 0000000..0122956 --- /dev/null +++ b/src/test/productsJson.json @@ -0,0 +1,92 @@ + [{ + "id": 39474, + "name": "Kit Natal Doce", + "slug": "kit-natal-doce", + "permalink": "https://innova.eetp.com.br/produto/kit-natal-doce/", + "date_created": "2022-11-18T18:08:01", + "date_created_gmt": "2022-11-18T21:08:01", + "date_modified": "2022-11-18T18:08:01", + "date_modified_gmt": "2022-11-18T21:08:01", + "type": "simple", + "status": "publish", + "featured": false, + "catalog_visibility": "visible", + "description": "", + "short_description": "", + "sku": "", + "price": "129.90", + "regular_price": "129.90", + "sale_price": "", + "date_on_sale_from": null, + "date_on_sale_from_gmt": null, + "date_on_sale_to": null, + "date_on_sale_to_gmt": null, + "on_sale": false, + "purchasable": true, + "total_sales": 0, + "virtual": false, + "downloadable": false, + "downloads": [], + "download_limit": -1, + "download_expiry": -1, + "external_url": "", + "button_text": "", + "tax_status": "taxable", + "tax_class": "", + "manage_stock": false, + "stock_quantity": null, + "backorders": "no", + "backorders_allowed": false, + "backordered": false, + "low_stock_amount": null, + "sold_individually": true, + "weight": "", + "dimensions": { "length": "", "width": "", "height": "" }, + "shipping_required": true, + "shipping_taxable": true, + "shipping_class": "", + "shipping_class_id": 0, + "reviews_allowed": false, + "average_rating": "0.00", + "rating_count": 0, + "upsell_ids": [], + "cross_sell_ids": [], + "parent_id": 0, + "purchase_note": "", + "categories": [ ["Object"] ], + "tags": [], + "images": [ ["Object"] ], + "attributes": [], + "default_attributes": [], + "variations": [], + "grouped_products": [], + "menu_order": 0, + "price_html": "
R$129,90 à vista
ou 3x de R$43,30
", + "related_ids": [ 39476, 39465, 39463, 39672, 39470 ], + "meta_data": [ + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"] + ], + "stock_status": "instock", + "has_options": false, + "yoast_head": "\nKit Natal Doce - Versão de desenvolvimento\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\n\n\n", + "yoast_head_json": { + "title": "Kit Natal Doce - Versão de desenvolvimento", + "robots": ["Object"], + "og_locale": "pt_BR", + "og_type": "article", + "og_title": "Kit Natal Doce - Versão de desenvolvimento", + "og_url": "https://innova.eetp.com.br/produto/kit-natal-doce/", + "og_site_name": "Versão de desenvolvimento", + "article_publisher": "https://www.facebook.com/innova.cestas/", + "og_image": ["Array"], + "twitter_card": "summary_large_image", + "schema": ["Object"] + }, + "_links": { "self": ["Array"], "collection": ["Array"] } + } +] \ No newline at end of file diff --git a/src/test/wc.test.ts b/src/test/wc.test.ts new file mode 100755 index 0000000..eb563a1 --- /dev/null +++ b/src/test/wc.test.ts @@ -0,0 +1,868 @@ +/* eslint-disable @typescript-eslint/no-array-constructor */ +/* eslint-disable jest/no-focused-tests */ +/* eslint-disable array-callback-return */ +/* eslint-disable jest/no-conditional-expect */ +/* eslint-disable no-console */ +/* eslint-disable camelcase */ +/* no-disabled-tests */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable-next-line jest/no-conditional-expect */ + +"use strict"; +// import { randomUUID } from 'crypto' +import WooCommerceRestApi,{CouponsParams, ProductsMainParams} from "../index"; +import couponsJson from "./coupons.json"; +import productsJson from "./productsJson.json"; +import productsJsonResponse from "./productsJson-response.json"; +import ordersJson from "./ordersJson.json"; +import constomersJson from "./customersJson.json"; +import userOrder from "./example_data_orders.json"; +import randomstring from "randomstring"; +import constomersJsonResponse from "./customersJson-response.json"; +import {DateTime} from "luxon"; + +/* +* @param {Json} data +* @data { years, month, days, hours, minutes} +* @timezone default 'America/Fortaleza' +* @returns date from time, day, month or years ago in Iso Format +*/ +const WOODateMinus = async(data: Partial<{ years: any; month: any; days: any; hours: any; minutes: any; }>)=>{ + const dateTime = DateTime.now() + const newDate = dateTime.minus({ years: data.years || 0, months:data.month || 0, days: data.days || 0 , hours:data.hours || 0, minutes:data.minutes || 0}).startOf('day').setZone('America/Fortaleza'); + return newDate.toISO() +} +/** +* Return the experires days for cupons +* @param {Json} data +* @data { years, month, days, hours, minutes} +* @timezone default 'America/Fortaleza' +* @returns date from time, day, month or years ago in Iso Format +*/ +const WOODatePlus = async(data: Partial<{ years: any; month: any; days: any; hours: any; minutes: any; }>)=>{ + const dateTime = DateTime.now() + const newDate = dateTime.plus({ years: data.years || 0, months:data.month || 0, days: data.days || 0 , hours:data.hours || 0, minutes:data.minutes || 0}).startOf('day').setZone('America/Fortaleza'); + return newDate.toISO() +} + +const testSecrets = { + url: process.env.URL, + consumerKey: process.env.CONSUMERKEY, + consumerSecret: process.env.CONSUMERSECRET +} + +describe.only("#options/#methods", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + // #Options + test("wpAPIPrefix should set WP REST API custom path", () => { + + const endpoint = "products"; + const expected = env.url + "/wp-json/wc/v3/" + endpoint; + const url = wooCommerce._getUrl(endpoint, {}); + + expect(url).toBe(expected); + }); + // #Methods + const endpoint = "products"; + test("_getUrl should return full endpoint URL", () => { + // Fix #1 This is the same test as the one above + + const expected = env.url + "/wp-json/wc/v3/" + endpoint; + const url = wooCommerce._getUrl(endpoint, {}); + + expect(url).toBe(expected); + }); + + test("_normalizeQueryString should return query string sorted by name", () => { + const url = env.url + "/wp-json/wc/v3/" + endpoint + "?filter[q]=Woo+Album&fields=id&filter[limit]=1"; + const expected = env.url + "/wp-json/wc/v3/" + endpoint + "?fields=id&filter[limit]=1&filter[q]=Woo%20Album"; + const normalized = wooCommerce._normalizeQueryString(url, {}); + + expect(normalized).toBe(expected); + }); +}); + +describe.only("Test Coupons", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + let each: typeof userOrder[0]; + let first_name: string; + let middle_name: string; + let last_name: string; + let full_name: string; + let discount: string | number; + let best_before: string; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + beforeEach(() => { + jest.resetModules(); // Clears the cache + each = userOrder[0]; + // Coupon + discount = "15"; + best_before = "2021-12-31T00:00:00"; + // Customer + first_name = String(each.billing?.first_name).split(" ")[0]; + first_name = `${first_name.charAt(0).toLocaleUpperCase()}${first_name.slice(1).toLocaleLowerCase()}` || " "; + middle_name = String(each.billing?.first_name).split(" ")[1] || " "; + middle_name = `${middle_name.charAt(0).toLocaleUpperCase()}${middle_name.slice(1).toLocaleLowerCase()}` || " "; + last_name= `${String(each.billing?.last_name).charAt(0).toLocaleUpperCase()}${String(each.billing?.last_name).slice(1).toLocaleLowerCase()}` || " "; + full_name = `${first_name} ${middle_name} ${last_name}` || " "; + }); + + test("should return a list with all coupons created", async () => { + const coupons = await wooCommerce.get("coupons"); + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(keys[index]).toEqual(expectedKeys[index]); + } + ); + } + }, 20000); // 20 seconds + + test("should create a Coupon", async () => { + /** + * Get the discount amount from the discount % from Google Sheet + * @param {Number} discount - The discount % + * @param {Number} total - The total amount of the order + * @return {Number} shipping_total - The discount amount + */ + const total_products_price = Number(each.total) - Number(each.shipping_total); + const total_products_price_with_discount = (total_products_price * (Number( discount ) / 100)).toFixed(2); + console.log(`Total: ${total_products_price} - Discount: ${discount} - Total with discount: ${total_products_price_with_discount}`); + /** + * Data to Create new Coupons + * @description Create a new Coupon with the following format: first + 12 + - + id + */ + const coupom_data:CouponsParams = { + code: (first_name.substring(0,3)).toLocaleUpperCase() + randomstring.generate({length:2, capitalization:"uppercase", charset: "numeric"}) + `-${each.id}`, + discount_type: "fixed_cart", + amount: total_products_price_with_discount, + individual_use: true, + exclude_sale_items: false, + minimum_amount: "300", + usage_limit: 1, + usage_limit_per_user: 1, + description: "Campanha de CashBack para clientes Test", + date_expires: await WOODatePlus({days: -3}) as string, + } + const coupons = await wooCommerce.post("coupons", coupom_data); + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length, couponID: coupons.data.id}]); + + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index, array) => { + expect(key).toEqual(expectedKeys[index]); + }); + } + console.log(coupons.data); + }, 20000); // 20 seconds + + test("should retrive a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.get("coupons", {code: getAllCoupons.data[0].id}) + console.log(coupons.data.code); + + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should update a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.put("coupons", + { + description: "Campanha de CashBack para clientes Test - Updated - " + randomstring.generate({length:4, capitalization:"uppercase", charset: "alphanumeric"}) + }, + { + id: getAllCoupons.data[0].id + }) + console.log(coupons.data); + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should delete a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.delete("coupons", {force:true}, {id: getAllCoupons.data[0].id}) + console.log(coupons.data); + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds +}); + +describe.only("Test Products", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + test("should return a list with all products created", async () => { + const products = await wooCommerce.get("products"); + // console.log(products.data); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + // eslint-disable-next-line jest/no-conditional-expect + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data.length > 0) { + const expectedKeys = Object.keys(productsJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + // eslint-disable-next-line jest/no-conditional-expect + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should create a new product", async () => { + const data:ProductsMainParams = { + name: "Premium Quality", + type: "simple", + regular_price: "21.99", + description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + short_description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.", + categories: [ + { + id: 9 + }, + { + id: 14 + } + ], + images: [ + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" + }, + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" + } + ] + }; + const products = await wooCommerce.post("products", data); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should retrive a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + const products = await wooCommerce.get("products", {id: getAllProducts.data[0].id}) + // console.log(products.data); + + expect(products).toBeInstanceOf(Object); + + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + + if (products.data.length > 0) { + const expectedKeys = Object.keys(productsJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should update a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + // Update the product + const data:ProductsMainParams = { + name: "Premium Quality Updated-" + randomstring.generate({length:4, capitalization:"uppercase", charset: "alphanumeric"}), + type: "simple", + regular_price: "30.22", + description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + short_description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.", + categories: [ + { + id: 9 + }, + { + id: 14 + } + ], + images: [ + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" + }, + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" + } + ] + }; + const products = await wooCommerce.put("products", data, {id: getAllProducts.data[0].id}); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should delete a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + const products = await wooCommerce.delete("products", {force: true}, {id: getAllProducts.data[0].id}); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds +}); + +describe.only("Test Orders", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + test("should get all orders", async () => { + const orders = await wooCommerce.get("orders"); + expect(orders).toBeInstanceOf(Object); + if (orders.headers["x-wp-totalpages"] > 1) { + expect(orders).toHaveProperty("data", expect.any(Array)); + } + if (orders.data.length > 0) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(orders.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should get an order", async () => { + const getAllOrders = await wooCommerce.get("orders"); + if (getAllOrders.headers["x-wp-totalpages"] > 1) { + expect(getAllOrders).toHaveProperty("data", expect.any(Array)); + } + // console.log("ID: ", getAllOrders.data[0].id); + const orders = await wooCommerce.get("orders", {id: getAllOrders.data[0].id}); + // console.log("Order", orders.data); + expect(orders).toBeInstanceOf(Object); + if (orders.headers["x-wp-totalpages"] > 1) { + expect(orders).toHaveProperty("data", expect.any(Array)); + } + if (orders.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(orders.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should create an order", async () => { + const data = { + payment_method: "bacs", + payment_method_title: "Direct Bank Transfer", + set_paid: true, + billing: { + first_name: `John ${Math.random()}`, + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + email: "john.doe@example.com", + phone: "85996859001" + }, + shipping: { + first_name: "John", + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US" + }, + line_items: [ + { + product_id: 93, + quantity: 2 + }, + { + product_id: 22, + variation_id: 23, + quantity: 1 + } + ], + shipping_lines: [ + { + method_id: "flat_rate", + method_title: "Flat Rate", + total: "10.00" + } + ] + }; + const order = await wooCommerce.post("orders", data); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should update an order", async () => { + const getAllCoupons = await wooCommerce.get("orders"); + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const data = { + payment_method: "bacs", + payment_method_title: "Direct Bank Transfer", + set_paid: true, + billing: { + first_name: `Yuri ${Math.random()}`, + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + }, + }; + const order = await wooCommerce.put("orders", data, {id: getAllCoupons.data[0].id}); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should delete an order", async () => { + const getAllCoupons = await wooCommerce.get("orders"); + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const order = await wooCommerce.delete("orders", {force: true}, {id: getAllCoupons.data[0].id}); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + +}); + +describe("Test Customers", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + test.only("should get all customers", async () => { + const customers = await wooCommerce.get("customers"); + // console.log("Customers", customers.data[0]); + + expect(customers).toBeInstanceOf(Object); + if (customers.headers["x-wp-totalpages"] > 1) { + expect(customers).toHaveProperty("data", expect.any(Array)); + } + if (customers.data) { + const expectedKeys = Object.keys(constomersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customers.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test.only("should get a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const customer = await wooCommerce.get("customers", {id: getAllCustomers.data[0].id}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + // Probably this test is failling because of permissions #TODO + test("should create a customer", async () => { + const data = { + email: "john.doe@example.com", + first_name: `Yuri`, + last_name: "Doe", + username: "john.doe", + billing: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + email: "john.doe@example.com", + phone: "85996859001", + number: "123", + neighborhood: "123" + + }, + shipping: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + phone: "85996859001", + number: "123", + neighborhood: "123" + } + }; + const customer = await wooCommerce.post("customers", data); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + // Probably this test is failling because of permissions #TODO + test("should update a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const data = { + email: "y.m.limaTEST@gmail.com", + first_name: `Yuri`, + last_name: "Doe", + username: "john.doe", + billing: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + }, + shipping: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + } + }; + const customer = await wooCommerce.put("customers", {id: getAllCustomers.data[0].id, data}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test.only("should delete a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const customer = await wooCommerce.delete("customers",{force: true}, {id: getAllCustomers.data[0].id}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds +}); + + +function ConsoleMacthKeys(keys: string[], expectedKeys: string[]) { + const arr= Array(); + keys.forEach((key:any, index, array) => { + arr.push(keys[index]); + if (index === keys.length - 1) { + const table = arr.map((key, index) => { + return { + Keys: key, + Expected: expectedKeys[index], + Macth: key === expectedKeys[index] ? "OK" : "ERROR" + } + }); + const table2 = [{ + Keys: keys.length, + Expected: expectedKeys.length, + Macth: keys.length === expectedKeys.length ? "OK" : "ERROR" + }]; + console.table(table); + console.table(table2); + } + } + ); +} \ No newline at end of file From 9ab219b424e6a1e45685efbd80d2c42829bde579 Mon Sep 17 00:00:00 2001 From: Yuri-Lima Date: Mon, 10 Apr 2023 10:53:30 +0000 Subject: [PATCH 7/7] update branch from main --- src/test/api-data.json | 10551 +++++++++++++++++++++++++ src/test/coupons.json | 53 + src/test/customersJson-response.json | 51 + src/test/customersJson.json | 60 + src/test/example_data_orders.json | 863 ++ src/test/ordersJson.json | 1165 +++ src/test/productsJson-response.json | 121 + src/test/productsJson.json | 92 + src/test/test.ts | 142 - src/test/wc.test.ts | 868 ++ 10 files changed, 13824 insertions(+), 142 deletions(-) create mode 100755 src/test/api-data.json create mode 100644 src/test/coupons.json create mode 100644 src/test/customersJson-response.json create mode 100644 src/test/customersJson.json create mode 100644 src/test/example_data_orders.json create mode 100755 src/test/ordersJson.json create mode 100644 src/test/productsJson-response.json create mode 100644 src/test/productsJson.json delete mode 100755 src/test/test.ts create mode 100755 src/test/wc.test.ts diff --git a/src/test/api-data.json b/src/test/api-data.json new file mode 100755 index 0000000..2171d6e --- /dev/null +++ b/src/test/api-data.json @@ -0,0 +1,10551 @@ +{ + "namespace": "wc/v3", + "routes": { + "/wc/v3": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "namespace": { + "required": false, + "default": "wc/v3" + }, + "context": { + "required": false, + "default": "view" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3" + } + }, + "/wc/v3/coupons": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "code": { + "required": false, + "description": "Limit result set to resources with a specific code.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "code": { + "required": true, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "default": "fixed_cart", + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "default": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "default": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "default": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/coupons" + } + }, + "/wc/v3/coupons/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "code": { + "required": false, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/coupons/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "code": { + "required": false, + "description": "Coupon code.", + "type": "string" + }, + "amount": { + "required": false, + "description": "The amount of discount. Should always be numeric, even if setting a percentage.", + "type": "string" + }, + "discount_type": { + "required": false, + "enum": [ + "percent", + "fixed_cart", + "fixed_product" + ], + "description": "Determines the type of discount that will be applied.", + "type": "string" + }, + "description": { + "required": false, + "description": "Coupon description.", + "type": "string" + }, + "date_expires": { + "required": false, + "description": "The date the coupon expires, in the site's timezone.", + "type": "string" + }, + "date_expires_gmt": { + "required": false, + "description": "The date the coupon expires, as GMT.", + "type": "string" + }, + "individual_use": { + "required": false, + "description": "If true, the coupon can only be used individually. Other applied coupons will be removed from the cart.", + "type": "boolean" + }, + "product_ids": { + "required": false, + "description": "List of product IDs the coupon can be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_ids": { + "required": false, + "description": "List of product IDs the coupon cannot be used on.", + "type": "array", + "items": { + "type": "integer" + } + }, + "usage_limit": { + "required": false, + "description": "How many times the coupon can be used in total.", + "type": "integer" + }, + "usage_limit_per_user": { + "required": false, + "description": "How many times the coupon can be used per customer.", + "type": "integer" + }, + "limit_usage_to_x_items": { + "required": false, + "description": "Max number of items in the cart the coupon can be applied to.", + "type": "integer" + }, + "free_shipping": { + "required": false, + "description": "If true and if the free shipping method requires a coupon, this coupon will enable free shipping.", + "type": "boolean" + }, + "product_categories": { + "required": false, + "description": "List of category IDs the coupon applies to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "excluded_product_categories": { + "required": false, + "description": "List of category IDs the coupon does not apply to.", + "type": "array", + "items": { + "type": "integer" + } + }, + "exclude_sale_items": { + "required": false, + "description": "If true, this coupon will not be applied to items that have sale prices.", + "type": "boolean" + }, + "minimum_amount": { + "required": false, + "description": "Minimum order amount that needs to be in the cart before coupon applies.", + "type": "string" + }, + "maximum_amount": { + "required": false, + "description": "Maximum order amount allowed when using the coupon.", + "type": "string" + }, + "email_restrictions": { + "required": false, + "description": "List of email addresses that can use this coupon.", + "type": "array", + "items": { + "type": "string" + } + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/coupons/batch" + } + }, + "/wc/v3/customers/(?P[\\d]+)/downloads": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "customer_id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/customers": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "registered_date" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "email": { + "required": false, + "description": "Limit result set to resources with a specific email.", + "type": "string" + }, + "role": { + "required": false, + "default": "customer", + "enum": [ + "all", + "administrator", + "editor", + "author", + "contributor", + "subscriber", + "customer", + "shop_manager" + ], + "description": "Limit result set to resources with a specific role.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "email": { + "required": true, + "description": "New user email address.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "New user username.", + "type": "string" + }, + "password": { + "required": false, + "description": "New user password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/customers" + } + }, + "/wc/v3/customers/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "email": { + "required": false, + "description": "The email address for the customer.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "Customer login name.", + "type": "string" + }, + "password": { + "required": false, + "description": "Customer password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + }, + "reassign": { + "required": false, + "default": 0, + "description": "ID to reassign posts to.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/customers/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "email": { + "required": false, + "description": "The email address for the customer.", + "type": "string" + }, + "first_name": { + "required": false, + "description": "Customer first name.", + "type": "string" + }, + "last_name": { + "required": false, + "description": "Customer last name.", + "type": "string" + }, + "username": { + "required": false, + "description": "Customer login name.", + "type": "string" + }, + "password": { + "required": false, + "description": "Customer password.", + "type": "string" + }, + "billing": { + "required": false, + "description": "List of billing address data.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "List of shipping address data.", + "type": "object" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/customers/batch" + } + }, + "/wc/v3/orders/(?P[\\d]+)/notes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "type": { + "required": false, + "default": "any", + "enum": [ + "any", + "customer", + "internal" + ], + "description": "Limit result to customers or internal notes.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "note": { + "required": true, + "description": "Order note content.", + "type": "string" + }, + "customer_note": { + "required": false, + "default": false, + "description": "If true, the note will be shown to customers and they will be notified. If false, the note will be for admin reference only.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/notes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/refunds": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "dp": { + "required": false, + "default": 2, + "description": "Number of decimal points to use in each resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "amount": { + "required": false, + "description": "Refund amount.", + "type": "string" + }, + "reason": { + "required": false, + "description": "Reason for refund.", + "type": "string" + }, + "refunded_by": { + "required": false, + "description": "User ID of user who created the refund.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "api_refund": { + "required": false, + "default": true, + "description": "When true, the payment gateway API is used to generate the refund.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/(?P[\\d]+)/refunds/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "order_id": { + "required": false, + "description": "The order ID.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": true, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Limit result set to orders assigned a specific status.", + "type": "string" + }, + "customer": { + "required": false, + "description": "Limit result set to orders assigned a specific customer.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to orders assigned a specific product.", + "type": "integer" + }, + "dp": { + "required": false, + "default": 2, + "description": "Number of decimal points to use in each resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "default": "pending", + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "default": "USD", + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "default": 0, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "default": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/orders" + } + }, + "/wc/v3/orders/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/orders/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "parent_id": { + "required": false, + "description": "Parent order ID.", + "type": "integer" + }, + "status": { + "required": false, + "enum": [ + "pending", + "processing", + "on-hold", + "completed", + "cancelled", + "refunded", + "failed" + ], + "description": "Order status.", + "type": "string" + }, + "currency": { + "required": false, + "enum": [ + "AED", + "AFN", + "ALL", + "AMD", + "ANG", + "AOA", + "ARS", + "AUD", + "AWG", + "AZN", + "BAM", + "BBD", + "BDT", + "BGN", + "BHD", + "BIF", + "BMD", + "BND", + "BOB", + "BRL", + "BSD", + "BTC", + "BTN", + "BWP", + "BYR", + "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", + "IRT", + "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", + "PRB", + "PYG", + "QAR", + "RON", + "RSD", + "RUB", + "RWF", + "SAR", + "SBD", + "SCR", + "SDG", + "SEK", + "SGD", + "SHP", + "SLL", + "SOS", + "SRD", + "SSP", + "STD", + "SYP", + "SZL", + "THB", + "TJS", + "TMT", + "TND", + "TOP", + "TRY", + "TTD", + "TWD", + "TZS", + "UAH", + "UGX", + "USD", + "UYU", + "UZS", + "VEF", + "VND", + "VUV", + "WST", + "XAF", + "XCD", + "XOF", + "XPF", + "YER", + "ZAR", + "ZMW" + ], + "description": "Currency the order was created with, in ISO format.", + "type": "string" + }, + "customer_id": { + "required": false, + "description": "User ID who owns the order. 0 for guests.", + "type": "integer" + }, + "customer_note": { + "required": false, + "description": "Note left by customer during checkout.", + "type": "string" + }, + "billing": { + "required": false, + "description": "Billing address.", + "type": "object" + }, + "shipping": { + "required": false, + "description": "Shipping address.", + "type": "object" + }, + "payment_method": { + "required": false, + "description": "Payment method ID.", + "type": "string" + }, + "payment_method_title": { + "required": false, + "description": "Payment method title.", + "type": "string" + }, + "transaction_id": { + "required": false, + "description": "Unique transaction ID.", + "type": "string" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "line_items": { + "required": false, + "description": "Line items data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Product name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "product_id": { + "description": "Product ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "variation_id": { + "description": "Variation ID, if applicable.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "quantity": { + "description": "Quantity ordered.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of product.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Line subtotal (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal_tax": { + "description": "Line subtotal tax (before discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "sku": { + "description": "Product SKU.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "price": { + "description": "Product price.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "shipping_lines": { + "required": false, + "description": "Shipping lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "method_title": { + "description": "Shipping method name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "method_id": { + "description": "Shipping method ID.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "fee_lines": { + "required": false, + "description": "Fee lines data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "Fee name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_class": { + "description": "Tax class of fee.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "tax_status": { + "description": "Tax status of fee.", + "type": "string", + "context": [ + "view", + "edit" + ], + "enum": [ + "taxable", + "none" + ] + }, + "total": { + "description": "Line total (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "total_tax": { + "description": "Line total tax (after discounts).", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "taxes": { + "description": "Line taxes.", + "type": "array", + "context": [ + "view", + "edit" + ], + "readonly": true, + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tax rate ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "total": { + "description": "Tax total.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "subtotal": { + "description": "Tax subtotal.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "coupon_lines": { + "required": false, + "description": "Coupons line data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Item ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "code": { + "description": "Coupon code.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount": { + "description": "Discount total.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "discount_tax": { + "description": "Discount total tax.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "meta_data": { + "description": "Meta data.", + "type": "array", + "context": [ + "view", + "edit" + ], + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + }, + "set_paid": { + "required": false, + "description": "Define if the order is paid. It will set the status to processing and reduce stock items.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/orders/batch" + } + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "parent": { + "required": false, + "description": "Limit result set to resources assigned to a specific parent.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Term name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/attributes/(?P[\\d]+)/terms/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "attribute_id": { + "required": false, + "description": "Unique identifier for the attribute of the terms.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Term name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ] + }, + "/wc/v3/products/attributes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "default": "select", + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "default": "menu_order", + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "default": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/attributes" + } + }, + "/wc/v3/products/attributes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Attribute name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": true, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/attributes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Attribute name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "select", + "text" + ], + "description": "Type of attribute.", + "type": "string" + }, + "order_by": { + "required": false, + "enum": [ + "menu_order", + "name", + "name_num", + "id" + ], + "description": "Default sort order.", + "type": "string" + }, + "has_archives": { + "required": false, + "description": "Enable/Disable attribute archives.", + "type": "boolean" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/attributes/batch" + } + }, + "/wc/v3/products/categories": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "parent": { + "required": false, + "description": "Limit result set to resources assigned to a specific parent.", + "type": "integer" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "default": "default", + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/categories" + } + }, + "/wc/v3/products/categories/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Category name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/categories/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Category name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "parent": { + "required": false, + "description": "The ID for the parent of the resource.", + "type": "integer" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + }, + "display": { + "required": false, + "enum": [ + "default", + "products", + "subcategories", + "both" + ], + "description": "Category archive display type.", + "type": "string" + }, + "image": { + "required": false, + "description": "Image data.", + "type": "object" + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort the resource.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/categories/batch" + } + }, + "/wc/v3/products/(?P[\\d]+)/reviews": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "review": { + "required": true, + "description": "Review content.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": true, + "description": "Name of the reviewer.", + "type": "string" + }, + "email": { + "required": true, + "description": "Email of the reviewer.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/reviews/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "review": { + "required": false, + "description": "The content of the review.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": false, + "description": "Reviewer name.", + "type": "string" + }, + "email": { + "required": false, + "description": "Reviewer email.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/reviews/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "review": { + "required": false, + "description": "The content of the review.", + "type": "string" + }, + "date_created": { + "required": false, + "description": "The date the review was created, in the site's timezone.", + "type": "date-time" + }, + "date_created_gmt": { + "required": false, + "description": "The date the review was created, as GMT.", + "type": "date-time" + }, + "rating": { + "required": false, + "description": "Review rating (0 to 5).", + "type": "integer" + }, + "name": { + "required": false, + "description": "Reviewer name.", + "type": "string" + }, + "email": { + "required": false, + "description": "Reviewer email.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/products/shipping_classes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/shipping_classes" + } + }, + "/wc/v3/products/shipping_classes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Shipping class name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/shipping_classes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Shipping class name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/shipping_classes/batch" + } + }, + "/wc/v3/products/tags": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "name", + "enum": [ + "id", + "include", + "name", + "slug", + "term_group", + "description", + "count" + ], + "description": "Sort collection by resource attribute.", + "type": "string" + }, + "hide_empty": { + "required": false, + "default": false, + "description": "Whether to hide resources not assigned to any products.", + "type": "boolean" + }, + "product": { + "required": false, + "description": "Limit result set to resources assigned to a specific product.", + "type": "integer" + }, + "slug": { + "required": false, + "description": "Limit result set to resources with a specific slug.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Name for the resource.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/tags" + } + }, + "/wc/v3/products/tags/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Tag name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/tags/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Tag name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "An alphanumeric identifier for the resource unique to its type.", + "type": "string" + }, + "description": { + "required": false, + "description": "HTML description of the resource.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/tags/batch" + } + }, + "/wc/v3/products": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug", + "price", + "popularity", + "rating" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "slug": { + "required": false, + "description": "Limit result set to products with a specific slug.", + "type": "string" + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "draft", + "pending", + "private", + "publish" + ], + "description": "Limit result set to products assigned a specific status.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Limit result set to products assigned a specific type.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Limit result set to products with a specific SKU.", + "type": "string" + }, + "featured": { + "required": false, + "description": "Limit result set to featured products.", + "type": "boolean" + }, + "category": { + "required": false, + "description": "Limit result set to products assigned a specific category ID.", + "type": "string" + }, + "tag": { + "required": false, + "description": "Limit result set to products assigned a specific tag ID.", + "type": "string" + }, + "shipping_class": { + "required": false, + "description": "Limit result set to products assigned a specific shipping class ID.", + "type": "string" + }, + "attribute": { + "required": false, + "description": "Limit result set to products with a specific attribute.", + "type": "string" + }, + "attribute_term": { + "required": false, + "description": "Limit result set to products with a specific attribute term ID (required an assigned attribute).", + "type": "string" + }, + "tax_class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Limit result set to products with a specific tax class.", + "type": "string" + }, + "in_stock": { + "required": false, + "description": "Limit result set to products in stock or out of stock.", + "type": "boolean" + }, + "on_sale": { + "required": false, + "description": "Limit result set to products on sale.", + "type": "boolean" + }, + "min_price": { + "required": false, + "description": "Limit result set to products based on a minimum price.", + "type": "string" + }, + "max_price": { + "required": false, + "description": "Limit result set to products based on a maximum price.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "default": "simple", + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "default": "publish", + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "default": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "default": "visible", + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "default": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "default": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "default": -1, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "default": -1, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "default": "taxable", + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "default": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "default": true, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "default": "no", + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "default": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "default": true, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products" + } + }, + "/wc/v3/products/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "Product name.", + "type": "string" + }, + "slug": { + "required": false, + "description": "Product slug.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Product type.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "draft", + "pending", + "private", + "publish" + ], + "description": "Product status (post status).", + "type": "string" + }, + "featured": { + "required": false, + "description": "Featured product.", + "type": "boolean" + }, + "catalog_visibility": { + "required": false, + "enum": [ + "visible", + "catalog", + "search", + "hidden" + ], + "description": "Catalog visibility.", + "type": "string" + }, + "description": { + "required": false, + "description": "Product description.", + "type": "string" + }, + "short_description": { + "required": false, + "description": "Product short description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Product regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Product sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "virtual": { + "required": false, + "description": "If the product is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the product is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "external_url": { + "required": false, + "description": "Product external URL. Only for external products.", + "type": "string" + }, + "button_text": { + "required": false, + "description": "Product external button text. Only for external products.", + "type": "string" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at product level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the product is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "sold_individually": { + "required": false, + "description": "Allow one item to be bought in a single order.", + "type": "boolean" + }, + "weight": { + "required": false, + "description": "Product weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Product dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "reviews_allowed": { + "required": false, + "description": "Allow reviews.", + "type": "boolean" + }, + "upsell_ids": { + "required": false, + "description": "List of up-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "cross_sell_ids": { + "required": false, + "description": "List of cross-sell products IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_id": { + "required": false, + "description": "Product parent ID.", + "type": "integer" + }, + "purchase_note": { + "required": false, + "description": "Optional note to send the customer after purchase.", + "type": "string" + }, + "categories": { + "required": false, + "description": "List of categories.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Category ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Category name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Category slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "tags": { + "required": false, + "description": "List of tags.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Tag ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Tag name.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "slug": { + "description": "Tag slug.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + } + } + } + }, + "images": { + "required": false, + "description": "List of images.", + "type": "object", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Image ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "date_created": { + "description": "The date the image was created, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_created_gmt": { + "description": "The date the image was created, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified": { + "description": "The date the image was last modified, in the site's timezone.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "date_modified_gmt": { + "description": "The date the image was last modified, as GMT.", + "type": "date-time", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "src": { + "description": "Image URL.", + "type": "string", + "format": "uri", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Image name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "alt": { + "description": "Image alternative text.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Image position. 0 means that the image is featured.", + "type": "integer", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "position": { + "description": "Attribute position.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "visible": { + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "variation": { + "description": "Define if the attribute can be used as variation.", + "type": "boolean", + "default": false, + "context": [ + "view", + "edit" + ] + }, + "options": { + "description": "List of available term names of the attribute.", + "type": "array", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "default_attributes": { + "required": false, + "description": "Defaults variation attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/products/batch" + } + }, + "/wc/v3/products/(?P[\\d]+)/variations": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "parent": { + "required": false, + "default": [], + "description": "Limit result set to those of particular parent IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "parent_exclude": { + "required": false, + "default": [], + "description": "Limit result set to all items except those of a particular parent ID.", + "type": "array", + "items": { + "type": "integer" + } + }, + "slug": { + "required": false, + "description": "Limit result set to products with a specific slug.", + "type": "string" + }, + "status": { + "required": false, + "default": "any", + "enum": [ + "any", + "draft", + "pending", + "private", + "publish" + ], + "description": "Limit result set to products assigned a specific status.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "simple", + "grouped", + "external", + "variable" + ], + "description": "Limit result set to products assigned a specific type.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Limit result set to products with a specific SKU.", + "type": "string" + }, + "featured": { + "required": false, + "description": "Limit result set to featured products.", + "type": "boolean" + }, + "category": { + "required": false, + "description": "Limit result set to products assigned a specific category ID.", + "type": "string" + }, + "tag": { + "required": false, + "description": "Limit result set to products assigned a specific tag ID.", + "type": "string" + }, + "shipping_class": { + "required": false, + "description": "Limit result set to products assigned a specific shipping class ID.", + "type": "string" + }, + "attribute": { + "required": false, + "description": "Limit result set to products with a specific attribute.", + "type": "string" + }, + "attribute_term": { + "required": false, + "description": "Limit result set to products with a specific attribute term ID (required an assigned attribute).", + "type": "string" + }, + "tax_class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Limit result set to products with a specific tax class.", + "type": "string" + }, + "in_stock": { + "required": false, + "description": "Limit result set to products in stock or out of stock.", + "type": "boolean" + }, + "on_sale": { + "required": false, + "description": "Limit result set to products on sale.", + "type": "boolean" + }, + "min_price": { + "required": false, + "description": "Limit result set to products based on a minimum price.", + "type": "string" + }, + "max_price": { + "required": false, + "description": "Limit result set to products based on a maximum price.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "default": true, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "default": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "default": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "default": -1, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "default": -1, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "default": "taxable", + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "default": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "default": true, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "default": "no", + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/variations/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the variation.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/products/(?P[\\d]+)/variations/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "product_id": { + "required": false, + "description": "Unique identifier for the variable product.", + "type": "integer" + }, + "description": { + "required": false, + "description": "Variation description.", + "type": "string" + }, + "sku": { + "required": false, + "description": "Unique identifier.", + "type": "string" + }, + "regular_price": { + "required": false, + "description": "Variation regular price.", + "type": "string" + }, + "sale_price": { + "required": false, + "description": "Variation sale price.", + "type": "string" + }, + "date_on_sale_from": { + "required": false, + "description": "Start date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_from_gmt": { + "required": false, + "description": "Start date of sale price, as GMT.", + "type": "date-time" + }, + "date_on_sale_to": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "date_on_sale_to_gmt": { + "required": false, + "description": "End date of sale price, in the site's timezone.", + "type": "date-time" + }, + "visible": { + "required": false, + "description": "Define if the attribute is visible on the \"Additional information\" tab in the product's page.", + "type": "boolean" + }, + "virtual": { + "required": false, + "description": "If the variation is virtual.", + "type": "boolean" + }, + "downloadable": { + "required": false, + "description": "If the variation is downloadable.", + "type": "boolean" + }, + "downloads": { + "required": false, + "description": "List of downloadable files.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "File ID.", + "type": "string", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "name": { + "description": "File name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "file": { + "description": "File URL.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "download_limit": { + "required": false, + "description": "Number of times downloadable files can be downloaded after purchase.", + "type": "integer" + }, + "download_expiry": { + "required": false, + "description": "Number of days until access to downloadable files expires.", + "type": "integer" + }, + "tax_status": { + "required": false, + "enum": [ + "taxable", + "shipping", + "none" + ], + "description": "Tax status.", + "type": "string" + }, + "tax_class": { + "required": false, + "description": "Tax class.", + "type": "string" + }, + "manage_stock": { + "required": false, + "description": "Stock management at variation level.", + "type": "boolean" + }, + "stock_quantity": { + "required": false, + "description": "Stock quantity.", + "type": "integer" + }, + "in_stock": { + "required": false, + "description": "Controls whether or not the variation is listed as \"in stock\" or \"out of stock\" on the frontend.", + "type": "boolean" + }, + "backorders": { + "required": false, + "enum": [ + "no", + "notify", + "yes" + ], + "description": "If managing stock, this controls if backorders are allowed.", + "type": "string" + }, + "weight": { + "required": false, + "description": "Variation weight (kg).", + "type": "string" + }, + "dimensions": { + "required": false, + "description": "Variation dimensions.", + "type": "object" + }, + "shipping_class": { + "required": false, + "description": "Shipping class slug.", + "type": "string" + }, + "image": { + "required": false, + "description": "Variation image data.", + "type": "object" + }, + "attributes": { + "required": false, + "description": "List of attributes.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Attribute ID.", + "type": "integer", + "context": [ + "view", + "edit" + ] + }, + "name": { + "description": "Attribute name.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "option": { + "description": "Selected attribute term name.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + }, + "menu_order": { + "required": false, + "description": "Menu order, used to custom sort products.", + "type": "integer" + }, + "meta_data": { + "required": false, + "description": "Meta data.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "Meta ID.", + "type": "integer", + "context": [ + "view", + "edit" + ], + "readonly": true + }, + "key": { + "description": "Meta key.", + "type": "string", + "context": [ + "view", + "edit" + ] + }, + "value": { + "description": "Meta value.", + "type": "string", + "context": [ + "view", + "edit" + ] + } + } + } + } + } + } + ] + }, + "/wc/v3/reports/sales": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "period": { + "required": false, + "enum": [ + "week", + "month", + "last_month", + "year" + ], + "description": "Report period.", + "type": "string" + }, + "date_min": { + "required": false, + "description": "Return sales for a specific start date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + }, + "date_max": { + "required": false, + "description": "Return sales for a specific end date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports/sales" + } + }, + "/wc/v3/reports/top_sellers": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "period": { + "required": false, + "enum": [ + "week", + "month", + "last_month", + "year" + ], + "description": "Report period.", + "type": "string" + }, + "date_min": { + "required": false, + "description": "Return sales for a specific start date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + }, + "date_max": { + "required": false, + "description": "Return sales for a specific end date, the date need to be in the YYYY-MM-DD format.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports/top_sellers" + } + }, + "/wc/v3/reports": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/reports" + } + }, + "/wc/v3/settings": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": [] + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/settings" + } + }, + "/wc/v3/settings/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/settings/(?P[\\w-]+)/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "value": { + "required": false, + "description": "Setting value.", + "type": "mixed" + } + } + } + ] + }, + "/wc/v3/settings/(?P[\\w-]+)/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "group": { + "required": false, + "description": "Settings group ID.", + "type": "string" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "value": { + "required": false, + "description": "Setting value.", + "type": "mixed" + } + } + } + ] + }, + "/wc/v3/shipping/zones": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": [] + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Shipping zone name.", + "type": "string" + }, + "order": { + "required": false, + "description": "Shipping zone order.", + "type": "integer" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/shipping/zones" + } + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "Shipping zone name.", + "type": "string" + }, + "order": { + "required": false, + "description": "Shipping zone order.", + "type": "integer" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/locations": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique ID for the resource.", + "type": "integer" + }, + "code": { + "required": false, + "description": "Shipping zone location code.", + "type": "string" + }, + "type": { + "required": false, + "enum": [ + "postcode", + "state", + "country", + "continent" + ], + "description": "Shipping zone location type.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/methods": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "order": { + "required": false, + "description": "Shipping method sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Shipping method enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Shipping method settings.", + "type": "object" + }, + "method_id": { + "required": true, + "description": "Shipping method ID." + } + } + } + ] + }, + "/wc/v3/shipping/zones/(?P[\\d-]+)/methods/(?P[\\d-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + }, + "order": { + "required": false, + "description": "Shipping method sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Shipping method enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Shipping method settings.", + "type": "object" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "zone_id": { + "required": false, + "description": "Unique ID for the zone.", + "type": "integer" + }, + "instance_id": { + "required": false, + "description": "Unique ID for the instance.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Whether to bypass trash and force deletion.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes/classes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": true, + "description": "Tax class name.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes/classes" + } + }, + "/wc/v3/taxes/classes/(?P\\w[\\w\\s\\-]*)": { + "namespace": "wc/v3", + "methods": [ + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "DELETE" + ], + "args": { + "slug": { + "required": false, + "description": "Unique slug for the resource.", + "type": "string" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "order", + "enum": [ + "id", + "order" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Sort by tax class.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "default": 1, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "default": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "default": true, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "default": "standard", + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes" + } + }, + "/wc/v3/taxes/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/taxes/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "country": { + "required": false, + "description": "Country ISO 3166 code.", + "type": "string" + }, + "state": { + "required": false, + "description": "State code.", + "type": "string" + }, + "postcode": { + "required": false, + "description": "Postcode / ZIP.", + "type": "string" + }, + "city": { + "required": false, + "description": "City name.", + "type": "string" + }, + "rate": { + "required": false, + "description": "Tax rate.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tax rate name.", + "type": "string" + }, + "priority": { + "required": false, + "description": "Tax priority.", + "type": "integer" + }, + "compound": { + "required": false, + "description": "Whether or not this is a compound rate.", + "type": "boolean" + }, + "shipping": { + "required": false, + "description": "Whether or not this tax rate also gets applied to shipping.", + "type": "boolean" + }, + "order": { + "required": false, + "description": "Indicates the order that will appear in queries.", + "type": "integer" + }, + "class": { + "required": false, + "enum": [ + "standard", + "reduced-rate", + "zero-rate" + ], + "description": "Tax class.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/taxes/batch" + } + }, + "/wc/v3/webhooks/(?P[\\d]+)/deliveries": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "webhook_id": { + "required": false, + "description": "Unique identifier for the webhook.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/webhooks/(?P[\\d]+)/deliveries/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "webhook_id": { + "required": false, + "description": "Unique identifier for the webhook.", + "type": "integer" + }, + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/webhooks": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + }, + "page": { + "required": false, + "default": 1, + "description": "Current page of the collection.", + "type": "integer" + }, + "per_page": { + "required": false, + "default": 10, + "description": "Maximum number of items to be returned in result set.", + "type": "integer" + }, + "search": { + "required": false, + "description": "Limit results to those matching a string.", + "type": "string" + }, + "after": { + "required": false, + "description": "Limit response to resources published after a given ISO8601 compliant date.", + "type": "string" + }, + "before": { + "required": false, + "description": "Limit response to resources published before a given ISO8601 compliant date.", + "type": "string" + }, + "exclude": { + "required": false, + "default": [], + "description": "Ensure result set excludes specific IDs.", + "type": "array", + "items": { + "type": "integer" + } + }, + "include": { + "required": false, + "default": [], + "description": "Limit result set to specific ids.", + "type": "array", + "items": { + "type": "integer" + } + }, + "offset": { + "required": false, + "description": "Offset the result set by a specific number of items.", + "type": "integer" + }, + "order": { + "required": false, + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "description": "Order sort attribute ascending or descending.", + "type": "string" + }, + "orderby": { + "required": false, + "default": "date", + "enum": [ + "date", + "id", + "include", + "title", + "slug" + ], + "description": "Sort collection by object attribute.", + "type": "string" + }, + "status": { + "required": false, + "default": "all", + "enum": [ + "all", + "active", + "paused", + "disabled" + ], + "description": "Limit result set to webhooks assigned a specific status.", + "type": "string" + } + } + }, + { + "methods": [ + "POST" + ], + "args": { + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "default": "active", + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": true, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": true, + "description": "Webhook secret.", + "type": "string" + }, + "delivery_url": { + "required": true, + "description": "Webhook delivery URL.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/webhooks" + } + }, + "/wc/v3/webhooks/(?P[\\d]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": false, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": false, + "description": "Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided.", + "type": "string" + } + } + }, + { + "methods": [ + "DELETE" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "integer" + }, + "force": { + "required": false, + "default": false, + "description": "Required to be true, as resource does not support trashing.", + "type": "boolean" + } + } + } + ] + }, + "/wc/v3/webhooks/batch": { + "namespace": "wc/v3", + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "name": { + "required": false, + "description": "A friendly name for the webhook.", + "type": "string" + }, + "status": { + "required": false, + "enum": [ + "active", + "paused", + "disabled" + ], + "description": "Webhook status.", + "type": "string" + }, + "topic": { + "required": false, + "description": "Webhook topic.", + "type": "string" + }, + "secret": { + "required": false, + "description": "Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/webhooks/batch" + } + }, + "/wc/v3/system_status": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/system_status" + } + }, + "/wc/v3/system_status/tools": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/system_status/tools" + } + }, + "/wc/v3/system_status/tools/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "A unique identifier for the tool.", + "type": "string" + }, + "name": { + "required": false, + "description": "Tool name.", + "type": "string" + }, + "action": { + "required": false, + "description": "What running the tool will do.", + "type": "string" + }, + "description": { + "required": false, + "description": "Tool description.", + "type": "string" + }, + "success": { + "required": false, + "description": "Did the tool run successfully?", + "type": "boolean" + }, + "message": { + "required": false, + "description": "Tool return message.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/shipping_methods": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/shipping_methods" + } + }, + "/wc/v3/shipping_methods/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ] + }, + "/wc/v3/payment_gateways": { + "namespace": "wc/v3", + "methods": [ + "GET" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + } + ], + "_links": { + "self": "https://example.com/wp-json/wc/v3/payment_gateways" + } + }, + "/wc/v3/payment_gateways/(?P[\\w-]+)": { + "namespace": "wc/v3", + "methods": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "endpoints": [ + { + "methods": [ + "GET" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "context": { + "required": false, + "default": "view", + "enum": [ + "view", + "edit" + ], + "description": "Scope under which the request is made; determines fields present in response.", + "type": "string" + } + } + }, + { + "methods": [ + "POST", + "PUT", + "PATCH" + ], + "args": { + "id": { + "required": false, + "description": "Unique identifier for the resource.", + "type": "string" + }, + "title": { + "required": false, + "description": "Payment gateway title on checkout.", + "type": "string" + }, + "description": { + "required": false, + "description": "Payment gateway description on checkout.", + "type": "string" + }, + "order": { + "required": false, + "description": "Payment gateway sort order.", + "type": "integer" + }, + "enabled": { + "required": false, + "description": "Payment gateway enabled status.", + "type": "boolean" + }, + "settings": { + "required": false, + "description": "Payment gateway settings.", + "type": "object" + } + } + } + ] + } + }, + "_links": { + "up": [ + { + "href": "https://example.com/wp-json/" + } + ] + } + } \ No newline at end of file diff --git a/src/test/coupons.json b/src/test/coupons.json new file mode 100644 index 0000000..a4c091d --- /dev/null +++ b/src/test/coupons.json @@ -0,0 +1,53 @@ +[{ + "id": 720, + "code": "free shipping", + "amount": "0.00", + "status": "publish", + "date_created": "2017-03-21T15:25:02", + "date_created_gmt": "2017-03-21T18:25:02", + "date_modified": "2017-03-21T15:25:02", + "date_modified_gmt": "2017-03-21T18:25:02", + "discount_type": "fixed_cart", + "description": "", + "date_expires": "", + "date_expires_gmt": "", + "usage_count": 0, + "individual_use": true, + "product_ids": [], + "excluded_product_ids": [], + "usage_limit": 0, + "usage_limit_per_user": 0, + "limit_usage_to_x_items": 0, + "free_shipping": true, + "product_categories": [], + "excluded_product_categories": [], + "exclude_sale_items": false, + "minimum_amount": "0.00", + "maximum_amount": "0.00", + "email_restrictions": [], + "used_by": [], + "meta_data": [ + { + "id": 721, + "key": "discount_type", + "value": "fixed_cart" + }, + { + "id": 722, + "key": "coupon_amount", + "value": "0" + } + ], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/coupons/720" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/coupons" + } + ] + } + }] \ No newline at end of file diff --git a/src/test/customersJson-response.json b/src/test/customersJson-response.json new file mode 100644 index 0000000..494aa96 --- /dev/null +++ b/src/test/customersJson-response.json @@ -0,0 +1,51 @@ +[{ + "id": 25, + "date_created": "2017-03-21T16:09:28", + "date_created_gmt": "2017-03-21T19:09:28", + "date_modified": "2017-03-21T16:09:30", + "date_modified_gmt": "2017-03-21T19:09:30", + "email": "john.doe@example.com", + "first_name": "John", + "last_name": "Doe", + "role": "customer", + "username": "john.doe", + "billing": { + "first_name": "John", + "last_name": "Doe", + "company": "", + "address_1": "969 Market", + "address_2": "", + "city": "San Francisco", + "state": "CA", + "postcode": "94103", + "country": "US", + "email": "john.doe@example.com", + "phone": "(555) 555-5555" + }, + "shipping": { + "first_name": "John", + "last_name": "Doe", + "company": "", + "address_1": "969 Market", + "address_2": "", + "city": "San Francisco", + "state": "CA", + "postcode": "94103", + "country": "US" + }, + "is_paying_customer": false, + "avatar_url": "https://secure.gravatar.com/avatar/8eb1b522f60d11fa897de1dc6351b7e8?s=96", + "meta_data": [], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/customers/25" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/customers" + } + ] + } + }] \ No newline at end of file diff --git a/src/test/customersJson.json b/src/test/customersJson.json new file mode 100644 index 0000000..99c0c74 --- /dev/null +++ b/src/test/customersJson.json @@ -0,0 +1,60 @@ +[{ + "id": 303, + "date_created": "2022-04-09T15:29:04", + "date_created_gmt": "2022-04-09T18:29:04", + "date_modified": "2022-04-09T15:29:04", + "date_modified_gmt": "2022-04-09T18:29:04", + "email": "abreusfelipe@gmail.com", + "first_name": "", + "last_name": "", + "role": "customer", + "username": "abreusfelipe", + "billing": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "postcode": "", + "country": "", + "state": "", + "email": "", + "phone": "", + "number": "", + "neighborhood": "", + "persontype": "F", + "cpf": "", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "postcode": "", + "country": "", + "state": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "is_paying_customer": false, + "avatar_url": "https://secure.gravatar.com/avatar/0a3114732ffd608c96a3aed0bc99c391?s=96&d=mm&r=g", + "meta_data": [ + { + "id": 10744, + "key": "_yoast_wpseo_profile_updated", + "value": "1649528944" + }, + { "id": 10747, "key": "wc_last_active", "value": "1649462400" } + ], + "_links": { "self": [ ["Object"] ], "collection": [ ["Object"] ] } +}] \ No newline at end of file diff --git a/src/test/example_data_orders.json b/src/test/example_data_orders.json new file mode 100644 index 0000000..171cad9 --- /dev/null +++ b/src/test/example_data_orders.json @@ -0,0 +1,863 @@ +[ + { + "id": 36875, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T19:10:21", + "date_modified": "2022-07-03T09:49:19", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "15.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "164.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_CsufiGQ7amiLL", + "billing": { + "first_name": "Mariana", + "last_name": "Barreto", + "company": "", + "address_1": "Rua Nove de Julho", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88111-380", + "country": "BR", + "email": "maris.barreto19@gmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "061.828.689-61", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Vanessa Barreto Bossle", + "billing_recipient_phone": "85996859001", + "billing_number": "611", + "billing_complementary": "Casa Branca em frente ao salão de Beleza", + "billing_neighborhood": "Bairro Ipiranga", + "billing_msg": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho", + "space_2": "", + "number": "611", + "neighborhood": "Bairro Ipiranga", + "persontype": "F", + "cpf": "06182868961", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.4.77.0", + "customer_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T09:49:19", + "date_paid": "2022-07-03T09:49:19", + "cart_hash": "a7fee777c8ff0919b8e9cbf0d90849e8", + "number": "36875", + "meta_data": [ + { + "id": 996295, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996296, + "key": "_billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996297, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996298, + "key": "_billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996299, + "key": "_billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996300, + "key": "_billing_number", + "value": "611" + }, + { + "id": 996301, + "key": "_billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996302, + "key": "_billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996303, + "key": "_billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\n\nDaqueles que te amam e te querem bem.\n\nCom carinho,\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996304, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996305, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996306, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996307, + "key": "billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996308, + "key": "billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996309, + "key": "billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996310, + "key": "billing_number", + "value": "611" + }, + { + "id": 996311, + "key": "billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996312, + "key": "billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996313, + "key": "billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996314, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996315, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996316, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996320, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996321, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996328, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996329, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18074, + "name": "Doce Encanto", + "product_id": 2157, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "149.90", + "subtotal_tax": "0.00", + "total": "149.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 149.9, + "image": { + "id": "807", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Doce-Encanto.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18075, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "9", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148342, + "key": "Itens", + "value": "Doce Encanto × 1", + "display_key": "Itens", + "display_value": "Doce Encanto × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36875/?pay_for_order=true&key=wc_order_CsufiGQ7amiLL", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T22:10:21", + "date_modified_gmt": "2022-07-03T12:49:19", + "date_completed_gmt": "2022-07-03T12:49:19", + "date_paid_gmt": "2022-07-03T12:49:19", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36875" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + }, + { + "id": 36874, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T17:55:52", + "date_modified": "2022-07-03T10:05:31", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "20.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "309.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_PYC1jtOGNjsb7", + "billing": { + "first_name": "Nayara", + "last_name": "Gonçalves", + "company": "", + "address_1": "Rua José Graciliano da Silva", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88115-239", + "country": "BR", + "email": "nayarapg@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "035.916.769-18", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Scheila Pereira", + "billing_recipient_phone": "85996859001", + "billing_number": "170", + "billing_complementary": "Bloco 4 apto 104", + "billing_neighborhood": "Serraria", + "billing_msg": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay", + "space_2": "", + "number": "170", + "neighborhood": "Serraria", + "persontype": "F", + "cpf": "03591676918", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "179.232.120.95", + "customer_user_agent": "Mozilla/5.0 (Linux; Android 11; moto g(10)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T10:05:31", + "date_paid": "2022-07-03T10:05:31", + "cart_hash": "b24cdbd254b0bc0202d60224586b50bf", + "number": "36874", + "meta_data": [ + { + "id": 996240, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996241, + "key": "_billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996242, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996243, + "key": "_billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996244, + "key": "_billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996245, + "key": "_billing_number", + "value": "170" + }, + { + "id": 996246, + "key": "_billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996247, + "key": "_billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996248, + "key": "_billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\nTe amo e desejo apenas as melhores coisas desse mundão!!\nBeijos\nNay" + }, + { + "id": 996249, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996250, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996251, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996252, + "key": "billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996253, + "key": "billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996254, + "key": "billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996255, + "key": "billing_number", + "value": "170" + }, + { + "id": 996256, + "key": "billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996257, + "key": "billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996258, + "key": "billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay" + }, + { + "id": 996259, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996260, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996261, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996265, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996266, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996324, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996325, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18072, + "name": "Baú Rosas Carinho Chandon", + "product_id": 2102, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "289.90", + "subtotal_tax": "0.00", + "total": "289.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 289.9, + "image": { + "id": "688", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Baú-Rosas-Carinho-Chandon-1.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18073, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "11", + "total": "20.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148327, + "key": "Itens", + "value": "Baú Rosas Carinho Chandon × 1", + "display_key": "Itens", + "display_value": "Baú Rosas Carinho Chandon × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36874/?pay_for_order=true&key=wc_order_PYC1jtOGNjsb7", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T20:55:52", + "date_modified_gmt": "2022-07-03T13:05:31", + "date_completed_gmt": "2022-07-03T13:05:31", + "date_paid_gmt": "2022-07-03T13:05:31", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36874" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + }, + { + "id": 36873, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T13:30:57", + "date_modified": "2022-07-03T08:48:14", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "32.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "251.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_xyhq7G0pGlaSc", + "billing": { + "first_name": "Elis", + "last_name": "Capeletti", + "company": "", + "address_1": "Rua Dario João de Souza", + "address_2": "", + "city": "florianopolis", + "state": "SC", + "postcode": "88053-760", + "country": "BR", + "email": "eliscapeletti@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "921.232.520-34", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Marcia Capeletti", + "billing_recipient_phone": "85996859001", + "billing_number": "61", + "billing_complementary": "apto. 210B", + "billing_neighborhood": "Jurere", + "billing_msg": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia", + "space_2": "", + "number": "61", + "neighborhood": "Jurere", + "persontype": "F", + "cpf": "92123252034", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.6.245.142", + "customer_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T08:48:14", + "date_paid": "2022-07-03T08:48:14", + "cart_hash": "e472b17fe31d78eaf5191713b4eda912", + "number": "36873", + "meta_data": [ + { + "id": 996159, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996160, + "key": "_billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996161, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996162, + "key": "_billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996163, + "key": "_billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996164, + "key": "_billing_number", + "value": "61" + }, + { + "id": 996165, + "key": "_billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996166, + "key": "_billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996167, + "key": "_billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\nElis e Letícia" + }, + { + "id": 996168, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996169, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996170, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996171, + "key": "billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996172, + "key": "billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996173, + "key": "billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996174, + "key": "billing_number", + "value": "61" + }, + { + "id": 996175, + "key": "billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996176, + "key": "billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996177, + "key": "billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia" + }, + { + "id": 996178, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996179, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996180, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996184, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996185, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996192, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996193, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18070, + "name": "Caixa Surpresa de Aniversário", + "product_id": 2025, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "219.90", + "subtotal_tax": "0.00", + "total": "219.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 219.9, + "image": { + "id": "23189", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/06/pinnkk.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18071, + "method_title": "Uber Flash", + "method_id": "flat_rate", + "instance_id": "16", + "total": "32.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148312, + "key": "Itens", + "value": "Caixa Surpresa de Aniversário × 1", + "display_key": "Itens", + "display_value": "Caixa Surpresa de Aniversário × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36873/?pay_for_order=true&key=wc_order_xyhq7G0pGlaSc", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T16:30:57", + "date_modified_gmt": "2022-07-03T11:48:14", + "date_completed_gmt": "2022-07-03T11:48:14", + "date_paid_gmt": "2022-07-03T11:48:14", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36873" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } + } +] \ No newline at end of file diff --git a/src/test/ordersJson.json b/src/test/ordersJson.json new file mode 100755 index 0000000..afaf9bf --- /dev/null +++ b/src/test/ordersJson.json @@ -0,0 +1,1165 @@ +[ + { + "id": 66621, + "parent_id": 0, + "status": "on-hold", + "currency": "BRL", + "version": "6.0.1", + "prices_include_tax": false, + "date_created": "2022-05-01T15:17:30", + "date_modified": "2022-05-01T15:17:30", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "0.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "374.80", + "total_tax": "0.00", + "customer_id": 1, + "order_key": "wc_order_T11dai6ISTCS0", + "billing": { + "first_name": "Teste", + "last_name": "Teste", + "company": "Teste", + "address_1": "VITOR KONDER", + "address_2": "", + "city": "florianópolis", + "state": "SC", + "postcode": "88015-400", + "country": "BR", + "email": "jardel.godinho@gmail.com", + "phone": "(85) 99685-9001", + "payment": "", + "billing_cpf": "005.762.739-88", + "billing_cnpj": "18.270.630/0001-41", + "billing_company": "Teste", + "space": "", + "delivery": "", + "billing_recipient": "teste", + "billing_recipient_phone": "85996859001", + "billing_number": "302", + "billing_complementary": "APTO 704", + "billing_neighborhood": "CENTRO", + "billing_msg": "testes", + "space_2": "", + "number": "302", + "neighborhood": "CENTRO", + "persontype": "J", + "cpf": "00576273988", + "rg": "", + "cnpj": "18270630000141", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX", + "transaction_id": "", + "customer_ip_address": "127.0.0.1", + "customer_user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": null, + "date_paid": null, + "cart_hash": "d503384c6706e15cc7ce3abb181c8df9", + "number": "66621", + "meta_data": [ + { + "id": 1559419, + "key": "tm_woo_api_sync_enabled_for_Loja+Base", + "value": "no" + }, + { + "id": 1559449, + "key": "_billing_persontype", + "value": "2" + }, + { + "id": 1559450, + "key": "_billing_cpf", + "value": "005.762.739-88" + }, + { + "id": 1559451, + "key": "_billing_cnpj", + "value": "18.270.630/0001-41" + }, + { + "id": 1559452, + "key": "_billing_recipient", + "value": "teste" + }, + { + "id": 1559453, + "key": "_billing_recipient_phone", + "value": "85996859001" + }, + { + "id": 1559454, + "key": "_billing_number", + "value": "302" + }, + { + "id": 1559455, + "key": "_billing_complementary", + "value": "APTO 704" + }, + { + "id": 1559456, + "key": "_billing_neighborhood", + "value": "CENTRO" + }, + { + "id": 1559457, + "key": "_billing_msg", + "value": "testes" + }, + { + "id": 1559458, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 1559459, + "key": "thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 1559460, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 1559461, + "key": "billing_cpf", + "value": "005.762.739-88" + }, + { + "id": 1559462, + "key": "billing_cnpj", + "value": "18.270.630/0001-41" + }, + { + "id": 1559463, + "key": "billing_company", + "value": "Teste" + }, + { + "id": 1559464, + "key": "billing_recipient", + "value": "teste" + }, + { + "id": 1559465, + "key": "billing_recipient_phone", + "value": "85996859001" + }, + { + "id": 1559466, + "key": "billing_number", + "value": "302" + }, + { + "id": 1559467, + "key": "billing_complementary", + "value": "APTO 704" + }, + { + "id": 1559468, + "key": "billing_neighborhood", + "value": "CENTRO" + }, + { + "id": 1559469, + "key": "billing_msg", + "value": "testes" + }, + { + "id": 1559470, + "key": "date", + "value": "01/05/2022" + }, + { + "id": 1559471, + "key": "time_celebration", + "value": "Antes das 8h00" + } + ], + "line_items": [ + { + "id": 46981, + "name": "Box Petiscos", + "product_id": 32205, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "199.90", + "subtotal_tax": "0.00", + "total": "199.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 199.9, + "parent_name": null + }, + { + "id": 46982, + "name": "Cesta Café da Manhã Coqueiros", + "product_id": 32129, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "159.90", + "subtotal_tax": "0.00", + "total": "159.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 159.9, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 46984, + "method_title": "Frete grátis", + "method_id": "free_shipping", + "instance_id": "30", + "total": "0.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 380952, + "key": "Itens", + "value": "Box Petiscos × 1, Cesta Café da Manhã Coqueiros × 1", + "display_key": "Itens", + "display_value": "Box Petiscos × 1, Cesta Café da Manhã Coqueiros × 1" + } + ] + } + ], + "fee_lines": [ + { + "id": 46983, + "name": "Horário de Entrega (Antes das 8h00)", + "tax_class": "0", + "tax_status": "taxable", + "amount": "15", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [] + } + ], + "coupon_lines": [], + "refunds": [], + "date_created_gmt": "2022-05-01T18:17:30", + "date_modified_gmt": "2022-05-01T18:17:30", + "date_completed_gmt": null, + "date_paid_gmt": null, + "schedule": { + "date": "01/05/2022", + "time": "", + "time_celebration": "Antes das 8h00", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/orders/66621" + } + ], + "collection": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/orders" + } + ], + "customer": [ + { + "href": "http://localhost:10003/wp-json/wc/v3/customers/1" + } + ] + } + }, + { + "id": 36875, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T19:10:21", + "date_modified": "2022-07-03T09:49:19", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "15.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "164.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_CsufiGQ7amiLL", + "billing": { + "first_name": "Mariana", + "last_name": "Barreto", + "company": "", + "address_1": "Rua Nove de Julho", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88111-380", + "country": "BR", + "email": "maris.barreto19@gmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "061.828.689-61", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Vanessa Barreto Bossle", + "billing_recipient_phone": "85996859001", + "billing_number": "611", + "billing_complementary": "Casa Branca em frente ao salão de Beleza", + "billing_neighborhood": "Bairro Ipiranga", + "billing_msg": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho", + "space_2": "", + "number": "611", + "neighborhood": "Bairro Ipiranga", + "persontype": "F", + "cpf": "06182868961", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.4.77.0", + "customer_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T09:49:19", + "date_paid": "2022-07-03T09:49:19", + "cart_hash": "a7fee777c8ff0919b8e9cbf0d90849e8", + "number": "36875", + "meta_data": [ + { + "id": 996295, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996296, + "key": "_billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996297, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996298, + "key": "_billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996299, + "key": "_billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996300, + "key": "_billing_number", + "value": "611" + }, + { + "id": 996301, + "key": "_billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996302, + "key": "_billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996303, + "key": "_billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\n\nDaqueles que te amam e te querem bem.\n\nCom carinho,\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996304, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996305, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996306, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996307, + "key": "billing_cpf", + "value": "061.828.689-61" + }, + { + "id": 996308, + "key": "billing_recipient", + "value": "Vanessa Barreto Bossle" + }, + { + "id": 996309, + "key": "billing_recipient_phone", + "value": "48998051955" + }, + { + "id": 996310, + "key": "billing_number", + "value": "611" + }, + { + "id": 996311, + "key": "billing_complementary", + "value": "Casa Branca em frente ao salão de Beleza" + }, + { + "id": 996312, + "key": "billing_neighborhood", + "value": "Bairro Ipiranga" + }, + { + "id": 996313, + "key": "billing_msg", + "value": "Nessa, que seu dia seja repleto de amor.\r\n\r\nDaqueles que te amam e te querem bem.\r\n\r\nCom carinho,\r\nRenato, Josiani, Mana, Mari, Manu e Miguelzinho" + }, + { + "id": 996314, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996315, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996316, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996320, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996321, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996328, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996329, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18074, + "name": "Doce Encanto", + "product_id": 2157, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "149.90", + "subtotal_tax": "0.00", + "total": "149.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 149.9, + "image": { + "id": "807", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Doce-Encanto.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18075, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "9", + "total": "15.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148342, + "key": "Itens", + "value": "Doce Encanto × 1", + "display_key": "Itens", + "display_value": "Doce Encanto × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36875/?pay_for_order=true&key=wc_order_CsufiGQ7amiLL", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T22:10:21", + "date_modified_gmt": "2022-07-03T12:49:19", + "date_completed_gmt": "2022-07-03T12:49:19", + "date_paid_gmt": "2022-07-03T12:49:19", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36875" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +}, +{ + "id": 36874, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T17:55:52", + "date_modified": "2022-07-03T10:05:31", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "20.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "309.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_PYC1jtOGNjsb7", + "billing": { + "first_name": "Nayara", + "last_name": "Gonçalves", + "company": "", + "address_1": "Rua José Graciliano da Silva", + "address_2": "", + "city": "São José", + "state": "SC", + "postcode": "88115-239", + "country": "BR", + "email": "nayarapg@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "035.916.769-18", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Scheila Pereira", + "billing_recipient_phone": "85996859001", + "billing_number": "170", + "billing_complementary": "Bloco 4 apto 104", + "billing_neighborhood": "Serraria", + "billing_msg": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay", + "space_2": "", + "number": "170", + "neighborhood": "Serraria", + "persontype": "F", + "cpf": "03591676918", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "179.232.120.95", + "customer_user_agent": "Mozilla/5.0 (Linux; Android 11; moto g(10)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T10:05:31", + "date_paid": "2022-07-03T10:05:31", + "cart_hash": "b24cdbd254b0bc0202d60224586b50bf", + "number": "36874", + "meta_data": [ + { + "id": 996240, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996241, + "key": "_billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996242, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996243, + "key": "_billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996244, + "key": "_billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996245, + "key": "_billing_number", + "value": "170" + }, + { + "id": 996246, + "key": "_billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996247, + "key": "_billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996248, + "key": "_billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\nTe amo e desejo apenas as melhores coisas desse mundão!!\nBeijos\nNay" + }, + { + "id": 996249, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996250, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996251, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996252, + "key": "billing_cpf", + "value": "035.916.769-18" + }, + { + "id": 996253, + "key": "billing_recipient", + "value": "Scheila Pereira" + }, + { + "id": 996254, + "key": "billing_recipient_phone", + "value": "48 99830-6708" + }, + { + "id": 996255, + "key": "billing_number", + "value": "170" + }, + { + "id": 996256, + "key": "billing_complementary", + "value": "Bloco 4 apto 104" + }, + { + "id": 996257, + "key": "billing_neighborhood", + "value": "Serraria" + }, + { + "id": 996258, + "key": "billing_msg", + "value": "Parabéns para a minha amiga irmã que está quarentando ainda mais linda!\r\nTe amo e desejo apenas as melhores coisas desse mundão!!\r\nBeijos\r\nNay" + }, + { + "id": 996259, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996260, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996261, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996265, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996266, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996324, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996325, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18072, + "name": "Baú Rosas Carinho Chandon", + "product_id": 2102, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "289.90", + "subtotal_tax": "0.00", + "total": "289.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 289.9, + "image": { + "id": "688", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/05/Baú-Rosas-Carinho-Chandon-1.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18073, + "method_title": "Delivery", + "method_id": "flat_rate", + "instance_id": "11", + "total": "20.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148327, + "key": "Itens", + "value": "Baú Rosas Carinho Chandon × 1", + "display_key": "Itens", + "display_value": "Baú Rosas Carinho Chandon × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36874/?pay_for_order=true&key=wc_order_PYC1jtOGNjsb7", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T20:55:52", + "date_modified_gmt": "2022-07-03T13:05:31", + "date_completed_gmt": "2022-07-03T13:05:31", + "date_paid_gmt": "2022-07-03T13:05:31", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36874" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +}, +{ + "id": 36873, + "parent_id": 0, + "status": "completed", + "currency": "BRL", + "version": "6.6.0", + "prices_include_tax": true, + "date_created": "2022-07-02T13:30:57", + "date_modified": "2022-07-03T08:48:14", + "discount_total": "0.00", + "discount_tax": "0.00", + "shipping_total": "32.00", + "shipping_tax": "0.00", + "cart_tax": "0.00", + "total": "251.90", + "total_tax": "0.00", + "customer_id": 0, + "order_key": "wc_order_xyhq7G0pGlaSc", + "billing": { + "first_name": "Elis", + "last_name": "Capeletti", + "company": "", + "address_1": "Rua Dario João de Souza", + "address_2": "", + "city": "florianopolis", + "state": "SC", + "postcode": "88053-760", + "country": "BR", + "email": "eliscapeletti@hotmail.com", + "phone": "85996859001", + "payment": "", + "billing_cpf": "921.232.520-34", + "billing_cnpj": "", + "billing_company": "", + "space": "", + "delivery": "", + "billing_recipient": "Marcia Capeletti", + "billing_recipient_phone": "85996859001", + "billing_number": "61", + "billing_complementary": "apto. 210B", + "billing_neighborhood": "Jurere", + "billing_msg": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia", + "space_2": "", + "number": "61", + "neighborhood": "Jurere", + "persontype": "F", + "cpf": "92123252034", + "rg": "", + "cnpj": "", + "ie": "", + "birthdate": "", + "sex": "", + "cellphone": "" + }, + "shipping": { + "first_name": "", + "last_name": "", + "company": "", + "address_1": "", + "address_2": "", + "city": "", + "state": "", + "postcode": "", + "country": "", + "phone": "", + "number": "", + "neighborhood": "" + }, + "payment_method": "bacs", + "payment_method_title": "PIX ou Transferência ", + "transaction_id": "", + "customer_ip_address": "189.6.245.142", + "customer_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36 Edg/103.0.1264.44", + "created_via": "checkout", + "customer_note": "", + "date_completed": "2022-07-03T08:48:14", + "date_paid": "2022-07-03T08:48:14", + "cart_hash": "e472b17fe31d78eaf5191713b4eda912", + "number": "36873", + "meta_data": [ + { + "id": 996159, + "key": "_billing_persontype", + "value": "1" + }, + { + "id": 996160, + "key": "_billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996161, + "key": "_billing_cnpj", + "value": "" + }, + { + "id": 996162, + "key": "_billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996163, + "key": "_billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996164, + "key": "_billing_number", + "value": "61" + }, + { + "id": 996165, + "key": "_billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996166, + "key": "_billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996167, + "key": "_billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\nElis e Letícia" + }, + { + "id": 996168, + "key": "is_vat_exempt", + "value": "no" + }, + { + "id": 996169, + "key": "_thwcfe_ship_to_billing", + "value": "1" + }, + { + "id": 996170, + "key": "_thwcfe_disabled_fields", + "value": "time" + }, + { + "id": 996171, + "key": "billing_cpf", + "value": "921.232.520-34" + }, + { + "id": 996172, + "key": "billing_recipient", + "value": "Marcia Capeletti" + }, + { + "id": 996173, + "key": "billing_recipient_phone", + "value": "48991639003" + }, + { + "id": 996174, + "key": "billing_number", + "value": "61" + }, + { + "id": 996175, + "key": "billing_complementary", + "value": "apto. 210B" + }, + { + "id": 996176, + "key": "billing_neighborhood", + "value": "Jurere" + }, + { + "id": 996177, + "key": "billing_msg", + "value": "Mana, tenha um dia muito doce, te amamos! Feliz aniver!\r\nElis e Letícia" + }, + { + "id": 996178, + "key": "date", + "value": "03/07/2022" + }, + { + "id": 996179, + "key": "time_celebration", + "value": "Período da Manhã" + }, + { + "id": 996180, + "key": "_wc_facebook_for_woocommerce_order_placed", + "value": "yes" + }, + { + "id": 996184, + "key": "_new_order_email_sent", + "value": "true" + }, + { + "id": 996185, + "key": "_wc_facebook_for_woocommerce_purchase_tracked", + "value": "yes" + }, + { + "id": 996192, + "key": "_shipping_number", + "value": "" + }, + { + "id": 996193, + "key": "_shipping_neighborhood", + "value": "" + } + ], + "line_items": [ + { + "id": 18070, + "name": "Caixa Surpresa de Aniversário", + "product_id": 2025, + "variation_id": 0, + "quantity": 1, + "tax_class": "", + "subtotal": "219.90", + "subtotal_tax": "0.00", + "total": "219.90", + "total_tax": "0.00", + "taxes": [], + "meta_data": [], + "sku": "", + "price": 219.9, + "image": { + "id": "23189", + "src": "https://innovacestas.com.br/wp-content/uploads/2020/06/pinnkk.jpg" + }, + "parent_name": null + } + ], + "tax_lines": [], + "shipping_lines": [ + { + "id": 18071, + "method_title": "Uber Flash", + "method_id": "flat_rate", + "instance_id": "16", + "total": "32.00", + "total_tax": "0.00", + "taxes": [], + "meta_data": [ + { + "id": 148312, + "key": "Itens", + "value": "Caixa Surpresa de Aniversário × 1", + "display_key": "Itens", + "display_value": "Caixa Surpresa de Aniversário × 1" + } + ] + } + ], + "fee_lines": [], + "coupon_lines": [], + "refunds": [], + "payment_url": "https://innovacestas.com.br/finalizar-compra/order-pay/36873/?pay_for_order=true&key=wc_order_xyhq7G0pGlaSc", + "is_editable": false, + "needs_payment": false, + "needs_processing": true, + "date_created_gmt": "2022-07-02T16:30:57", + "date_modified_gmt": "2022-07-03T11:48:14", + "date_completed_gmt": "2022-07-03T11:48:14", + "date_paid_gmt": "2022-07-03T11:48:14", + "schedule": { + "date": "03/07/2022", + "time": "", + "delivery_alert": "", + "time_celebration": "Período da Manhã", + "space_3": "" + }, + "currency_symbol": "R$", + "_links": { + "self": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders/36873" + } + ], + "collection": [ + { + "href": "https://innovacestas.com.br/wp-json/wc/v3/orders" + } + ] + } +} +] \ No newline at end of file diff --git a/src/test/productsJson-response.json b/src/test/productsJson-response.json new file mode 100644 index 0000000..f580e23 --- /dev/null +++ b/src/test/productsJson-response.json @@ -0,0 +1,121 @@ +[{ + "id": 794, + "name": "Premium Quality", + "slug": "premium-quality-19", + "permalink": "https://example.com/product/premium-quality-19/", + "date_created": "2017-03-23T17:01:14", + "date_created_gmt": "2017-03-23T20:01:14", + "date_modified": "2017-03-23T17:01:14", + "date_modified_gmt": "2017-03-23T20:01:14", + "type": "simple", + "status": "publish", + "featured": false, + "catalog_visibility": "visible", + "description": "

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n", + "short_description": "

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.

\n", + "sku": "", + "price": "21.99", + "regular_price": "21.99", + "sale_price": "", + "date_on_sale_from": null, + "date_on_sale_from_gmt": null, + "date_on_sale_to": null, + "date_on_sale_to_gmt": null, + "price_html": "$21.99", + "on_sale": false, + "purchasable": true, + "total_sales": 0, + "virtual": false, + "downloadable": false, + "downloads": [], + "download_limit": -1, + "download_expiry": -1, + "external_url": "", + "button_text": "", + "tax_status": "taxable", + "tax_class": "", + "manage_stock": false, + "stock_quantity": null, + "stock_status": "instock", + "backorders": "no", + "backorders_allowed": false, + "backordered": false, + "sold_individually": false, + "weight": "", + "dimensions": { + "length": "", + "width": "", + "height": "" + }, + "shipping_required": true, + "shipping_taxable": true, + "shipping_class": "", + "shipping_class_id": 0, + "reviews_allowed": true, + "average_rating": "0.00", + "rating_count": 0, + "related_ids": [ + 53, + 40, + 56, + 479, + 99 + ], + "upsell_ids": [], + "cross_sell_ids": [], + "parent_id": 0, + "purchase_note": "", + "categories": [ + { + "id": 9, + "name": "Clothing", + "slug": "clothing" + }, + { + "id": 14, + "name": "T-shirts", + "slug": "t-shirts" + } + ], + "tags": [], + "images": [ + { + "id": 792, + "date_created": "2017-03-23T14:01:13", + "date_created_gmt": "2017-03-23T20:01:13", + "date_modified": "2017-03-23T14:01:13", + "date_modified_gmt": "2017-03-23T20:01:13", + "src": "https://example.com/wp-content/uploads/2017/03/T_2_front-4.jpg", + "name": "", + "alt": "" + }, + { + "id": 793, + "date_created": "2017-03-23T14:01:14", + "date_created_gmt": "2017-03-23T20:01:14", + "date_modified": "2017-03-23T14:01:14", + "date_modified_gmt": "2017-03-23T20:01:14", + "src": "https://example.com/wp-content/uploads/2017/03/T_2_back-2.jpg", + "name": "", + "alt": "" + } + ], + "attributes": [], + "default_attributes": [], + "variations": [], + "grouped_products": [], + "menu_order": 0, + "meta_data": [], + "_links": { + "self": [ + { + "href": "https://example.com/wp-json/wc/v3/products/794" + } + ], + "collection": [ + { + "href": "https://example.com/wp-json/wc/v3/products" + } + ] + } +}] \ No newline at end of file diff --git a/src/test/productsJson.json b/src/test/productsJson.json new file mode 100644 index 0000000..0122956 --- /dev/null +++ b/src/test/productsJson.json @@ -0,0 +1,92 @@ + [{ + "id": 39474, + "name": "Kit Natal Doce", + "slug": "kit-natal-doce", + "permalink": "https://innova.eetp.com.br/produto/kit-natal-doce/", + "date_created": "2022-11-18T18:08:01", + "date_created_gmt": "2022-11-18T21:08:01", + "date_modified": "2022-11-18T18:08:01", + "date_modified_gmt": "2022-11-18T21:08:01", + "type": "simple", + "status": "publish", + "featured": false, + "catalog_visibility": "visible", + "description": "", + "short_description": "", + "sku": "", + "price": "129.90", + "regular_price": "129.90", + "sale_price": "", + "date_on_sale_from": null, + "date_on_sale_from_gmt": null, + "date_on_sale_to": null, + "date_on_sale_to_gmt": null, + "on_sale": false, + "purchasable": true, + "total_sales": 0, + "virtual": false, + "downloadable": false, + "downloads": [], + "download_limit": -1, + "download_expiry": -1, + "external_url": "", + "button_text": "", + "tax_status": "taxable", + "tax_class": "", + "manage_stock": false, + "stock_quantity": null, + "backorders": "no", + "backorders_allowed": false, + "backordered": false, + "low_stock_amount": null, + "sold_individually": true, + "weight": "", + "dimensions": { "length": "", "width": "", "height": "" }, + "shipping_required": true, + "shipping_taxable": true, + "shipping_class": "", + "shipping_class_id": 0, + "reviews_allowed": false, + "average_rating": "0.00", + "rating_count": 0, + "upsell_ids": [], + "cross_sell_ids": [], + "parent_id": 0, + "purchase_note": "", + "categories": [ ["Object"] ], + "tags": [], + "images": [ ["Object"] ], + "attributes": [], + "default_attributes": [], + "variations": [], + "grouped_products": [], + "menu_order": 0, + "price_html": "
R$129,90 à vista
ou 3x de R$43,30
", + "related_ids": [ 39476, 39465, 39463, 39672, 39470 ], + "meta_data": [ + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"], + ["Object"], ["Object"] + ], + "stock_status": "instock", + "has_options": false, + "yoast_head": "\nKit Natal Doce - Versão de desenvolvimento\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\n\n\n", + "yoast_head_json": { + "title": "Kit Natal Doce - Versão de desenvolvimento", + "robots": ["Object"], + "og_locale": "pt_BR", + "og_type": "article", + "og_title": "Kit Natal Doce - Versão de desenvolvimento", + "og_url": "https://innova.eetp.com.br/produto/kit-natal-doce/", + "og_site_name": "Versão de desenvolvimento", + "article_publisher": "https://www.facebook.com/innova.cestas/", + "og_image": ["Array"], + "twitter_card": "summary_large_image", + "schema": ["Object"] + }, + "_links": { "self": ["Array"], "collection": ["Array"] } + } +] \ No newline at end of file diff --git a/src/test/test.ts b/src/test/test.ts deleted file mode 100755 index 54428ae..0000000 --- a/src/test/test.ts +++ /dev/null @@ -1,142 +0,0 @@ -"use strict"; - -import WooCommerceRestApi from "../index"; -import nock from "nock"; - -const secretKey = "ck_"; -const consumerKey = "cs_"; - -describe("#options", () => { - test("wpAPIPrefix should set WP REST API custom path", () => { - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: secretKey, - consumerSecret: consumerKey, - wpAPIPrefix: "wp-rest", - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - const endpoint = "products"; - const expected = "https://test.dev/wp-rest/wc/v3/" + endpoint; - const url = api._getUrl(endpoint, {}); - expect(url).toBe(expected); - }); -}); - -describe("#methods", () => { - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - test("_getUrl should return full endpoint URL", () => { - // Fix #1 This is the same test as the one above - const endpoint = "products"; - const expected = "https://test.dev/wp-json/wc/v3/" + endpoint; - const url = api._getUrl(endpoint, {}); - - expect(url).toBe(expected); - }); - - test("_normalizeQueryString should return query string sorted by name", () => { - const url = - "http://test.dev/wp-json/wc/v3/products?filter[q]=Woo+Album&fields=id&filter[limit]=1"; - const expected = - "http://test.dev/wp-json/wc/v3/products?fields=id&filter[limit]=1&filter[q]=Woo%20Album"; - const normalized = api._normalizeQueryString(url, {}); - - expect(normalized).toBe(expected); - }); -}); - -describe("#requests", () => { - beforeEach(() => { - nock.cleanAll(); // clean all nock mocks - }); - - const api = new WooCommerceRestApi({ - url: "https://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - test("should return content for basic auth", async () => { - expect.assertions(1); - - nock(`https://test.dev/wp-json/wc/v3`).post("/coupons").reply(201, { - ok: true, - }); - - const response = await api.post("coupons", {}, {}); - expect(response.status).toBe(201); - }); - - test("should return content for get requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").get("/orders").reply(200, { - ok: true, - }); - - const response = await api.get("orders"); - expect(response.status).toBe(200); - }); - - test("should return content for put requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").put("/orders").reply(200, { - ok: true, - }); - - const response = await api.put("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for delete requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3").delete("/orders").reply(200, { - ok: true, - }); - - const response = await api.delete("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for options requests", async () => { - expect.assertions(1); - nock("https://test.dev/wp-json/wc/v3") - .intercept("/orders", "OPTIONS") - .reply(200, { - ok: true, - }); - - const response = await api.options("orders", {}); - expect(response.status).toBe(200); - }); - - test("should return content for OAuth", async () => { - expect.assertions(1); - const oAuth = new WooCommerceRestApi({ - url: "http://test.dev", - consumerKey: "secretKey", - consumerSecret: consumerKey, - version: "wc/v3", - queryStringAuth: false, // Force Basic Authentication as query string true and using under HTTPS - }); - - nock("http://test.dev/wp-json/wc/v3") - .filteringPath(/\?.*/, "?params") - .get("/orders?params") - .reply(200, { - ok: true, - }); - - const response = await oAuth.get("orders"); - expect(response.status).toBe(200); - }); -}); diff --git a/src/test/wc.test.ts b/src/test/wc.test.ts new file mode 100755 index 0000000..eb563a1 --- /dev/null +++ b/src/test/wc.test.ts @@ -0,0 +1,868 @@ +/* eslint-disable @typescript-eslint/no-array-constructor */ +/* eslint-disable jest/no-focused-tests */ +/* eslint-disable array-callback-return */ +/* eslint-disable jest/no-conditional-expect */ +/* eslint-disable no-console */ +/* eslint-disable camelcase */ +/* no-disabled-tests */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable-next-line jest/no-conditional-expect */ + +"use strict"; +// import { randomUUID } from 'crypto' +import WooCommerceRestApi,{CouponsParams, ProductsMainParams} from "../index"; +import couponsJson from "./coupons.json"; +import productsJson from "./productsJson.json"; +import productsJsonResponse from "./productsJson-response.json"; +import ordersJson from "./ordersJson.json"; +import constomersJson from "./customersJson.json"; +import userOrder from "./example_data_orders.json"; +import randomstring from "randomstring"; +import constomersJsonResponse from "./customersJson-response.json"; +import {DateTime} from "luxon"; + +/* +* @param {Json} data +* @data { years, month, days, hours, minutes} +* @timezone default 'America/Fortaleza' +* @returns date from time, day, month or years ago in Iso Format +*/ +const WOODateMinus = async(data: Partial<{ years: any; month: any; days: any; hours: any; minutes: any; }>)=>{ + const dateTime = DateTime.now() + const newDate = dateTime.minus({ years: data.years || 0, months:data.month || 0, days: data.days || 0 , hours:data.hours || 0, minutes:data.minutes || 0}).startOf('day').setZone('America/Fortaleza'); + return newDate.toISO() +} +/** +* Return the experires days for cupons +* @param {Json} data +* @data { years, month, days, hours, minutes} +* @timezone default 'America/Fortaleza' +* @returns date from time, day, month or years ago in Iso Format +*/ +const WOODatePlus = async(data: Partial<{ years: any; month: any; days: any; hours: any; minutes: any; }>)=>{ + const dateTime = DateTime.now() + const newDate = dateTime.plus({ years: data.years || 0, months:data.month || 0, days: data.days || 0 , hours:data.hours || 0, minutes:data.minutes || 0}).startOf('day').setZone('America/Fortaleza'); + return newDate.toISO() +} + +const testSecrets = { + url: process.env.URL, + consumerKey: process.env.CONSUMERKEY, + consumerSecret: process.env.CONSUMERSECRET +} + +describe.only("#options/#methods", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + // #Options + test("wpAPIPrefix should set WP REST API custom path", () => { + + const endpoint = "products"; + const expected = env.url + "/wp-json/wc/v3/" + endpoint; + const url = wooCommerce._getUrl(endpoint, {}); + + expect(url).toBe(expected); + }); + // #Methods + const endpoint = "products"; + test("_getUrl should return full endpoint URL", () => { + // Fix #1 This is the same test as the one above + + const expected = env.url + "/wp-json/wc/v3/" + endpoint; + const url = wooCommerce._getUrl(endpoint, {}); + + expect(url).toBe(expected); + }); + + test("_normalizeQueryString should return query string sorted by name", () => { + const url = env.url + "/wp-json/wc/v3/" + endpoint + "?filter[q]=Woo+Album&fields=id&filter[limit]=1"; + const expected = env.url + "/wp-json/wc/v3/" + endpoint + "?fields=id&filter[limit]=1&filter[q]=Woo%20Album"; + const normalized = wooCommerce._normalizeQueryString(url, {}); + + expect(normalized).toBe(expected); + }); +}); + +describe.only("Test Coupons", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + let each: typeof userOrder[0]; + let first_name: string; + let middle_name: string; + let last_name: string; + let full_name: string; + let discount: string | number; + let best_before: string; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + beforeEach(() => { + jest.resetModules(); // Clears the cache + each = userOrder[0]; + // Coupon + discount = "15"; + best_before = "2021-12-31T00:00:00"; + // Customer + first_name = String(each.billing?.first_name).split(" ")[0]; + first_name = `${first_name.charAt(0).toLocaleUpperCase()}${first_name.slice(1).toLocaleLowerCase()}` || " "; + middle_name = String(each.billing?.first_name).split(" ")[1] || " "; + middle_name = `${middle_name.charAt(0).toLocaleUpperCase()}${middle_name.slice(1).toLocaleLowerCase()}` || " "; + last_name= `${String(each.billing?.last_name).charAt(0).toLocaleUpperCase()}${String(each.billing?.last_name).slice(1).toLocaleLowerCase()}` || " "; + full_name = `${first_name} ${middle_name} ${last_name}` || " "; + }); + + test("should return a list with all coupons created", async () => { + const coupons = await wooCommerce.get("coupons"); + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(keys[index]).toEqual(expectedKeys[index]); + } + ); + } + }, 20000); // 20 seconds + + test("should create a Coupon", async () => { + /** + * Get the discount amount from the discount % from Google Sheet + * @param {Number} discount - The discount % + * @param {Number} total - The total amount of the order + * @return {Number} shipping_total - The discount amount + */ + const total_products_price = Number(each.total) - Number(each.shipping_total); + const total_products_price_with_discount = (total_products_price * (Number( discount ) / 100)).toFixed(2); + console.log(`Total: ${total_products_price} - Discount: ${discount} - Total with discount: ${total_products_price_with_discount}`); + /** + * Data to Create new Coupons + * @description Create a new Coupon with the following format: first + 12 + - + id + */ + const coupom_data:CouponsParams = { + code: (first_name.substring(0,3)).toLocaleUpperCase() + randomstring.generate({length:2, capitalization:"uppercase", charset: "numeric"}) + `-${each.id}`, + discount_type: "fixed_cart", + amount: total_products_price_with_discount, + individual_use: true, + exclude_sale_items: false, + minimum_amount: "300", + usage_limit: 1, + usage_limit_per_user: 1, + description: "Campanha de CashBack para clientes Test", + date_expires: await WOODatePlus({days: -3}) as string, + } + const coupons = await wooCommerce.post("coupons", coupom_data); + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length, couponID: coupons.data.id}]); + + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index, array) => { + expect(key).toEqual(expectedKeys[index]); + }); + } + console.log(coupons.data); + }, 20000); // 20 seconds + + test("should retrive a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.get("coupons", {code: getAllCoupons.data[0].id}) + console.log(coupons.data.code); + + + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should update a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.put("coupons", + { + description: "Campanha de CashBack para clientes Test - Updated - " + randomstring.generate({length:4, capitalization:"uppercase", charset: "alphanumeric"}) + }, + { + id: getAllCoupons.data[0].id + }) + console.log(coupons.data); + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should delete a Coupon", async () => { + const getAllCoupons = await wooCommerce.get("coupons"); + + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const coupons = await wooCommerce.delete("coupons", {force:true}, {id: getAllCoupons.data[0].id}) + console.log(coupons.data); + expect(coupons).toBeInstanceOf(Object); + + if (coupons.headers["x-wp-totalpages"] > 1) { + expect(coupons).toHaveProperty("data", expect.any(Array)); + } + + if (coupons.data.length > 0) { + const expectedKeys = Object.keys(couponsJson[0]); // Array of the keys of the couponsJson object + const keys = Object.keys(coupons.data[0]) // Array of the keys of the first coupon in the coupons.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds +}); + +describe.only("Test Products", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + test("should return a list with all products created", async () => { + const products = await wooCommerce.get("products"); + // console.log(products.data); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + // eslint-disable-next-line jest/no-conditional-expect + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data.length > 0) { + const expectedKeys = Object.keys(productsJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.forEach((key:any, index) => { + // eslint-disable-next-line jest/no-conditional-expect + expect(key).toEqual(expectedKeys[index]); + } + ); + } + } + , 20000); // 20 seconds + + test("should create a new product", async () => { + const data:ProductsMainParams = { + name: "Premium Quality", + type: "simple", + regular_price: "21.99", + description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + short_description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.", + categories: [ + { + id: 9 + }, + { + id: 14 + } + ], + images: [ + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" + }, + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" + } + ] + }; + const products = await wooCommerce.post("products", data); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should retrive a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + const products = await wooCommerce.get("products", {id: getAllProducts.data[0].id}) + // console.log(products.data); + + expect(products).toBeInstanceOf(Object); + + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + + if (products.data.length > 0) { + const expectedKeys = Object.keys(productsJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should update a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + // Update the product + const data:ProductsMainParams = { + name: "Premium Quality Updated-" + randomstring.generate({length:4, capitalization:"uppercase", charset: "alphanumeric"}), + type: "simple", + regular_price: "30.22", + description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + short_description: "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.", + categories: [ + { + id: 9 + }, + { + id: 14 + } + ], + images: [ + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" + }, + { + src: "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" + } + ] + }; + const products = await wooCommerce.put("products", data, {id: getAllProducts.data[0].id}); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should delete a product", async () => { + const getAllProducts = await wooCommerce.get("products"); + if (getAllProducts.headers["x-wp-totalpages"] > 1) { + expect(getAllProducts).toHaveProperty("data", expect.any(Array)); + } + const products = await wooCommerce.delete("products", {force: true}, {id: getAllProducts.data[0].id}); + expect(products).toBeInstanceOf(Object); + if (products.headers["x-wp-totalpages"] > 1) { + expect(products).toHaveProperty("data", expect.any(Array)); + } + if (products.data) { + const expectedKeys = Object.keys(productsJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(products.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds +}); + +describe.only("Test Orders", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + test("should get all orders", async () => { + const orders = await wooCommerce.get("orders"); + expect(orders).toBeInstanceOf(Object); + if (orders.headers["x-wp-totalpages"] > 1) { + expect(orders).toHaveProperty("data", expect.any(Array)); + } + if (orders.data.length > 0) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(orders.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should get an order", async () => { + const getAllOrders = await wooCommerce.get("orders"); + if (getAllOrders.headers["x-wp-totalpages"] > 1) { + expect(getAllOrders).toHaveProperty("data", expect.any(Array)); + } + // console.log("ID: ", getAllOrders.data[0].id); + const orders = await wooCommerce.get("orders", {id: getAllOrders.data[0].id}); + // console.log("Order", orders.data); + expect(orders).toBeInstanceOf(Object); + if (orders.headers["x-wp-totalpages"] > 1) { + expect(orders).toHaveProperty("data", expect.any(Array)); + } + if (orders.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(orders.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should create an order", async () => { + const data = { + payment_method: "bacs", + payment_method_title: "Direct Bank Transfer", + set_paid: true, + billing: { + first_name: `John ${Math.random()}`, + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + email: "john.doe@example.com", + phone: "85996859001" + }, + shipping: { + first_name: "John", + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US" + }, + line_items: [ + { + product_id: 93, + quantity: 2 + }, + { + product_id: 22, + variation_id: 23, + quantity: 1 + } + ], + shipping_lines: [ + { + method_id: "flat_rate", + method_title: "Flat Rate", + total: "10.00" + } + ] + }; + const order = await wooCommerce.post("orders", data); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should update an order", async () => { + const getAllCoupons = await wooCommerce.get("orders"); + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const data = { + payment_method: "bacs", + payment_method_title: "Direct Bank Transfer", + set_paid: true, + billing: { + first_name: `Yuri ${Math.random()}`, + last_name: "Doe", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + }, + }; + const order = await wooCommerce.put("orders", data, {id: getAllCoupons.data[0].id}); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test("should delete an order", async () => { + const getAllCoupons = await wooCommerce.get("orders"); + if (getAllCoupons.headers["x-wp-totalpages"] > 1) { + expect(getAllCoupons).toHaveProperty("data", expect.any(Array)); + } + const order = await wooCommerce.delete("orders", {force: true}, {id: getAllCoupons.data[0].id}); + console.log("Order", order.data); + expect(order).toBeInstanceOf(Object); + if (order.headers["x-wp-totalpages"] > 1) { + expect(order).toHaveProperty("data", expect.any(Array)); + } + if (order.data) { + const expectedKeys = Object.keys(ordersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(order.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 4) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + +}); + +describe("Test Customers", () => { + const env = {...testSecrets}; + let wooCommerce: WooCommerceRestApi<{url: string,consumerKey: string,consumerSecret: string}>; + + beforeAll(() => { + wooCommerce = new WooCommerceRestApi({ + url: env.url , + consumerKey: env.consumerKey, + consumerSecret: env.consumerSecret, + version: "wc/v3", + queryStringAuth: false + }) + }); + + test.only("should get all customers", async () => { + const customers = await wooCommerce.get("customers"); + // console.log("Customers", customers.data[0]); + + expect(customers).toBeInstanceOf(Object); + if (customers.headers["x-wp-totalpages"] > 1) { + expect(customers).toHaveProperty("data", expect.any(Array)); + } + if (customers.data) { + const expectedKeys = Object.keys(constomersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customers.data[0]) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test.only("should get a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const customer = await wooCommerce.get("customers", {id: getAllCustomers.data[0].id}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJson[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + // Probably this test is failling because of permissions #TODO + test("should create a customer", async () => { + const data = { + email: "john.doe@example.com", + first_name: `Yuri`, + last_name: "Doe", + username: "john.doe", + billing: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + email: "john.doe@example.com", + phone: "85996859001", + number: "123", + neighborhood: "123" + + }, + shipping: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + phone: "85996859001", + number: "123", + neighborhood: "123" + } + }; + const customer = await wooCommerce.post("customers", data); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + // Probably this test is failling because of permissions #TODO + test("should update a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const data = { + email: "y.m.limaTEST@gmail.com", + first_name: `Yuri`, + last_name: "Doe", + username: "john.doe", + billing: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + }, + shipping: { + first_name: "John", + last_name: "Doe", + company: "", + address_1: "969 Market", + address_2: "", + city: "San Francisco", + state: "CA", + postcode: "94103", + country: "US", + } + }; + const customer = await wooCommerce.put("customers", {id: getAllCustomers.data[0].id, data}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds + + test.only("should delete a customer", async () => { + const getAllCustomers = await wooCommerce.get("customers"); + if (getAllCustomers.headers["x-wp-totalpages"] > 1) { + expect(getAllCustomers).toHaveProperty("data", expect.any(Array)); + } + const customer = await wooCommerce.delete("customers",{force: true}, {id: getAllCustomers.data[0].id}); + console.log("Customer", customer.data); + expect(customer).toBeInstanceOf(Object); + if (customer.headers["x-wp-totalpages"] > 1) { + expect(customer).toHaveProperty("data", expect.any(Array)); + } + if (customer.data) { + const expectedKeys = Object.keys(constomersJsonResponse[0]); // Array of the keys of the productsJson object + const keys = Object.keys(customer.data) // Array of the keys of the first product in the products.data array + console.table([{ Keys: expectedKeys.length, Expected: keys.length, diff: expectedKeys.length - keys.length}]); + ConsoleMacthKeys(keys, expectedKeys); + keys.every((key:any, index) => { + if(index === 8) return false; // only to test the first 4 keys, because the last key is the date of creation could be different + expect(key).toEqual(expectedKeys[index]); + }); + } + } + , 20000); // 20 seconds +}); + + +function ConsoleMacthKeys(keys: string[], expectedKeys: string[]) { + const arr= Array(); + keys.forEach((key:any, index, array) => { + arr.push(keys[index]); + if (index === keys.length - 1) { + const table = arr.map((key, index) => { + return { + Keys: key, + Expected: expectedKeys[index], + Macth: key === expectedKeys[index] ? "OK" : "ERROR" + } + }); + const table2 = [{ + Keys: keys.length, + Expected: expectedKeys.length, + Macth: keys.length === expectedKeys.length ? "OK" : "ERROR" + }]; + console.table(table); + console.table(table2); + } + } + ); +} \ No newline at end of file