From e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Tue, 4 Apr 2023 16:02:35 +0200 Subject: [PATCH 01/12] fix(medusa): circular loading (#3705) --- .changeset/friendly-jars-try.md | 5 +++++ packages/medusa/src/interfaces/price-selection-strategy.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/friendly-jars-try.md diff --git a/.changeset/friendly-jars-try.md b/.changeset/friendly-jars-try.md new file mode 100644 index 0000000000..5653e7975e --- /dev/null +++ b/.changeset/friendly-jars-try.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): circular loading diff --git a/packages/medusa/src/interfaces/price-selection-strategy.ts b/packages/medusa/src/interfaces/price-selection-strategy.ts index 02dacfedeb..c7b83e8c7c 100644 --- a/packages/medusa/src/interfaces/price-selection-strategy.ts +++ b/packages/medusa/src/interfaces/price-selection-strategy.ts @@ -1,5 +1,5 @@ import { EntityManager } from "typeorm" -import { MoneyAmount } from ".." +import { MoneyAmount } from "../models" import { PriceListType } from "../types/price-list" import { TaxServiceRate } from "../types/tax-service" From dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Tue, 4 Apr 2023 16:04:31 +0200 Subject: [PATCH 02/12] fix(admin): Duplicate product without prices (#3706) * fix(admin): Duplicate product without prices * Create honest-ways-eat.md --- .changeset/honest-ways-eat.md | 6 ++++++ .../components/templates/product-table/use-copy-product.ts | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 .changeset/honest-ways-eat.md diff --git a/.changeset/honest-ways-eat.md b/.changeset/honest-ways-eat.md new file mode 100644 index 0000000000..2812db1c9e --- /dev/null +++ b/.changeset/honest-ways-eat.md @@ -0,0 +1,6 @@ +--- +"@medusajs/admin-ui": patch +"@medusajs/admin": patch +--- + +fix(admin): Duplicate product without prices diff --git a/packages/admin-ui/ui/src/components/templates/product-table/use-copy-product.ts b/packages/admin-ui/ui/src/components/templates/product-table/use-copy-product.ts index 0fb1967c20..f1dd32cfbb 100644 --- a/packages/admin-ui/ui/src/components/templates/product-table/use-copy-product.ts +++ b/packages/admin-ui/ui/src/components/templates/product-table/use-copy-product.ts @@ -97,6 +97,8 @@ const useCopyProduct = () => { return acc }, {} as NonNullable[0]) + variantBase.prices = [] + if (prices && prices.length) { variantBase.prices = prices.map((price) => ({ amount: price.amount, From 7a3194c313f939baf9011447dd4a9f544c900237 Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Tue, 4 Apr 2023 16:07:48 +0200 Subject: [PATCH 03/12] chore(release): v1.8.0-rc.7 --- .changeset/pre.json | 3 ++ integration-tests/api/package.json | 2 +- integration-tests/plugins/package.json | 2 +- integration-tests/repositories/package.json | 2 +- packages/admin-ui/CHANGELOG.md | 9 ++++ packages/admin-ui/package.json | 6 +-- packages/admin/CHANGELOG.md | 10 ++++ packages/admin/package.json | 6 +-- packages/generated/client-types/package.json | 2 +- .../package.json | 2 +- packages/medusa-js/CHANGELOG.md | 7 +++ packages/medusa-js/package.json | 6 +-- packages/medusa-payment-paypal/CHANGELOG.md | 7 +++ packages/medusa-payment-paypal/package.json | 6 +-- packages/medusa-payment-stripe/CHANGELOG.md | 7 +++ packages/medusa-payment-stripe/package.json | 6 +-- .../medusa-plugin-meilisearch/package.json | 2 +- .../CHANGELOG.md | 7 +++ .../package.json | 4 +- packages/medusa-react/CHANGELOG.md | 8 +++ packages/medusa-react/package.json | 8 +-- packages/medusa/CHANGELOG.md | 8 +++ packages/medusa/package.json | 2 +- packages/oas/medusa-oas-cli/CHANGELOG.md | 7 +++ packages/oas/medusa-oas-cli/package.json | 4 +- packages/oas/oas-github-ci/CHANGELOG.md | 7 +++ packages/oas/oas-github-ci/package.json | 4 +- yarn.lock | 54 +++++++++---------- 28 files changed, 139 insertions(+), 59 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8f87677828..7161db9dc8 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -87,14 +87,17 @@ "famous-bananas-pay", "fast-buckets-marry", "fifty-ears-relax", + "four-maps-suffer", "four-rings-admire", "fresh-forks-carry", + "friendly-jars-try", "funny-cars-crash", "funny-ways-dress", "gold-fireants-look", "grumpy-buses-pump", "healthy-geese-worry", "hip-otters-thank", + "honest-ways-eat", "kind-dogs-argue", "kind-rings-wave", "kind-seas-roll", diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 34a357e1ab..98b75d2832 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -11,7 +11,7 @@ "dependencies": { "@medusajs/cache-inmemory": "1.8.0-rc.3", "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "faker": "^5.5.3", "medusa-interfaces": "1.3.7-rc.0", "typeorm": "^0.3.11" diff --git a/integration-tests/plugins/package.json b/integration-tests/plugins/package.json index ec9d1a6bd9..d7dbcbf498 100644 --- a/integration-tests/plugins/package.json +++ b/integration-tests/plugins/package.json @@ -11,7 +11,7 @@ "dependencies": { "@medusajs/cache-inmemory": "1.8.0-rc.3", "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "faker": "^5.5.3", "medusa-fulfillment-webshipper": "1.3.8-rc.1", "medusa-interfaces": "1.3.7-rc.0", diff --git a/integration-tests/repositories/package.json b/integration-tests/repositories/package.json index 4e527b981f..4ae2e851fd 100644 --- a/integration-tests/repositories/package.json +++ b/integration-tests/repositories/package.json @@ -8,7 +8,7 @@ "test": "jest --silent=false --runInBand --bail --detectOpenHandles --forceExit" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "medusa-interfaces": "1.3.7-rc.0", "typeorm": "^0.3.11" }, diff --git a/packages/admin-ui/CHANGELOG.md b/packages/admin-ui/CHANGELOG.md index 0b61601147..048a2a6821 100644 --- a/packages/admin-ui/CHANGELOG.md +++ b/packages/admin-ui/CHANGELOG.md @@ -1,5 +1,14 @@ # @medusajs/admin-ui +## 0.0.1-rc.7 + +### Patch Changes + +- [#3706](https://github.com/medusajs/medusa/pull/3706) [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(admin): Duplicate product without prices + +- Updated dependencies []: + - medusa-react@5.0.0-rc.7 + ## 0.0.1-rc.6 ### Patch Changes diff --git a/packages/admin-ui/package.json b/packages/admin-ui/package.json index 1b410d81fb..284357086a 100644 --- a/packages/admin-ui/package.json +++ b/packages/admin-ui/package.json @@ -2,7 +2,7 @@ "name": "@medusajs/admin-ui", "author": "Kasper Kristensen ", "license": "MIT", - "version": "0.0.1-rc.6", + "version": "0.0.1-rc.7", "repository": { "type": "git", "url": "https://github.com/medusajs/medusa.git", @@ -49,7 +49,7 @@ "copy-to-clipboard": "^3.3.1", "emoji-picker-react": "^4.4.3", "framer-motion": "^9.1.6", - "medusa-react": "5.0.0-rc.6", + "medusa-react": "5.0.0-rc.7", "moment": "^2.29.4", "pluralize": "^8.0.0", "postcss": "^8.4.21", @@ -79,7 +79,7 @@ "vite": "^4.1.4" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@medusajs/types": "0.0.2-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", diff --git a/packages/admin/CHANGELOG.md b/packages/admin/CHANGELOG.md index 607d094c73..08709d8a53 100644 --- a/packages/admin/CHANGELOG.md +++ b/packages/admin/CHANGELOG.md @@ -1,5 +1,15 @@ # @medusajs/admin +## 1.0.0-rc.7 + +### Patch Changes + +- [#3706](https://github.com/medusajs/medusa/pull/3706) [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(admin): Duplicate product without prices + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc)]: + - @medusajs/medusa@1.8.0-rc.7 + - @medusajs/admin-ui@0.0.1-rc.7 + ## 1.0.0-rc.6 ### Patch Changes diff --git a/packages/admin/package.json b/packages/admin/package.json index 252fca15ea..52529efab5 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/admin", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "bin": { "medusa-admin": "./bin/medusa-admin.js" }, @@ -26,7 +26,7 @@ "directory": "packages/admin" }, "dependencies": { - "@medusajs/admin-ui": "0.0.1-rc.6", + "@medusajs/admin-ui": "0.0.1-rc.7", "commander": "^10.0.0", "dotenv": "^16.0.3", "express": "^4.17.1", @@ -37,7 +37,7 @@ "ts-dedent": "^2.2.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6" + "@medusajs/medusa": "1.8.0-rc.7" }, "devDependencies": { "@types/express": "^4.17.13", diff --git a/packages/generated/client-types/package.json b/packages/generated/client-types/package.json index 70fc4c4074..6a68602ff0 100644 --- a/packages/generated/client-types/package.json +++ b/packages/generated/client-types/package.json @@ -24,7 +24,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.6", + "@medusajs/medusa-oas-cli": "0.2.0-rc.7", "cross-env": "^7.0.3", "execa": "^5.1.1", "jest": "^27.4.7", diff --git a/packages/medusa-fulfillment-webshipper/package.json b/packages/medusa-fulfillment-webshipper/package.json index c92a3faa5b..bca79ac948 100644 --- a/packages/medusa-fulfillment-webshipper/package.json +++ b/packages/medusa-fulfillment-webshipper/package.json @@ -18,7 +18,7 @@ "@babel/plugin-transform-runtime": "^7.7.6", "@babel/preset-env": "^7.7.5", "@babel/runtime": "^7.9.6", - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/packages/medusa-js/CHANGELOG.md b/packages/medusa-js/CHANGELOG.md index 55909cfd30..4a06f2c5fd 100644 --- a/packages/medusa-js/CHANGELOG.md +++ b/packages/medusa-js/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + ## 2.0.0-rc.6 ### Patch Changes diff --git a/packages/medusa-js/package.json b/packages/medusa-js/package.json index f206823be9..ec0d4b620c 100644 --- a/packages/medusa-js/package.json +++ b/packages/medusa-js/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-js", - "version": "2.0.0-rc.6", + "version": "2.0.0-rc.7", "description": "Client for Medusa Commerce Rest API", "main": "dist/index.js", "module": "dist/index.mjs", @@ -32,7 +32,7 @@ "uuid": "^9.0.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6" + "@medusajs/medusa": "1.8.0-rc.7" }, "repository": { "type": "git", @@ -43,7 +43,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@types/uuid": "^9.0.0", "cross-env": "^7.0.3", "jest": "^27.4.7", diff --git a/packages/medusa-payment-paypal/CHANGELOG.md b/packages/medusa-payment-paypal/CHANGELOG.md index f8695a2eb1..e0a64bd7b1 100644 --- a/packages/medusa-payment-paypal/CHANGELOG.md +++ b/packages/medusa-payment-paypal/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + ## 2.0.0-rc.6 ### Patch Changes diff --git a/packages/medusa-payment-paypal/package.json b/packages/medusa-payment-paypal/package.json index cb9d9e0c5b..4883a15686 100644 --- a/packages/medusa-payment-paypal/package.json +++ b/packages/medusa-payment-paypal/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-paypal", - "version": "2.0.0-rc.6", + "version": "2.0.0-rc.7", "description": "Paypal Payment provider for Medusa Commerce", "main": "dist/index.js", "repository": { @@ -20,14 +20,14 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.4.4" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6" + "@medusajs/medusa": "1.8.0-rc.7" }, "dependencies": { "@paypal/checkout-server-sdk": "^1.0.3", diff --git a/packages/medusa-payment-stripe/CHANGELOG.md b/packages/medusa-payment-stripe/CHANGELOG.md index 488842e868..b7ff886e8f 100644 --- a/packages/medusa-payment-stripe/CHANGELOG.md +++ b/packages/medusa-payment-stripe/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + ## 2.0.0-rc.6 ### Patch Changes diff --git a/packages/medusa-payment-stripe/package.json b/packages/medusa-payment-stripe/package.json index d248fd91f8..12fd5d6b69 100644 --- a/packages/medusa-payment-stripe/package.json +++ b/packages/medusa-payment-stripe/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-stripe", - "version": "2.0.0-rc.6", + "version": "2.0.0-rc.7", "description": "Stripe Payment provider for Meduas Commerce", "main": "dist/index.js", "repository": { @@ -20,14 +20,14 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.9.5" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6" + "@medusajs/medusa": "1.8.0-rc.7" }, "dependencies": { "body-parser": "^1.19.0", diff --git a/packages/medusa-plugin-meilisearch/package.json b/packages/medusa-plugin-meilisearch/package.json index f9ad9c9f84..513eea791d 100644 --- a/packages/medusa-plugin-meilisearch/package.json +++ b/packages/medusa-plugin-meilisearch/package.json @@ -25,7 +25,7 @@ "meilisearch": "^0.31.1" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@medusajs/types": "0.0.2-rc.1", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/packages/medusa-plugin-restock-notification/CHANGELOG.md b/packages/medusa-plugin-restock-notification/CHANGELOG.md index 344f0740b6..f9e531b533 100644 --- a/packages/medusa-plugin-restock-notification/CHANGELOG.md +++ b/packages/medusa-plugin-restock-notification/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 3.0.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + ## 3.0.0-rc.6 ### Patch Changes diff --git a/packages/medusa-plugin-restock-notification/package.json b/packages/medusa-plugin-restock-notification/package.json index cb1f003328..fb58e6a17a 100644 --- a/packages/medusa-plugin-restock-notification/package.json +++ b/packages/medusa-plugin-restock-notification/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-restock-notification", - "version": "3.0.0-rc.6", + "version": "3.0.0-rc.7", "main": "index.js", "repository": { "type": "git", @@ -29,7 +29,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "medusa-interfaces": "1.3.7-rc.0" }, "dependencies": { diff --git a/packages/medusa-react/CHANGELOG.md b/packages/medusa-react/CHANGELOG.md index afa4b533bf..a7688769a6 100644 --- a/packages/medusa-react/CHANGELOG.md +++ b/packages/medusa-react/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 5.0.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + - @medusajs/medusa-js@2.0.0-rc.7 + ## 5.0.0-rc.6 ### Patch Changes diff --git a/packages/medusa-react/package.json b/packages/medusa-react/package.json index 7f96d82c10..c24a1256fa 100644 --- a/packages/medusa-react/package.json +++ b/packages/medusa-react/package.json @@ -1,5 +1,5 @@ { - "version": "5.0.0-rc.6", + "version": "5.0.0-rc.7", "license": "MIT", "main": "dist/index.js", "module": "dist/index.mjs", @@ -25,7 +25,7 @@ "test": "echo \"Tests disabled temporarily\"" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@tanstack/react-query": "^4.22.0", "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" @@ -34,7 +34,7 @@ "author": "Zakaria S. El Asri", "devDependencies": { "@babel/core": "^7.16.0", - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@storybook/addon-essentials": "^6.3.12", "@storybook/addon-links": "^6.3.12", "@storybook/addons": "^6.3.12", @@ -61,7 +61,7 @@ "tsup": "^6.5.0" }, "dependencies": { - "@medusajs/medusa-js": "^2.0.0-rc.6" + "@medusajs/medusa-js": "2.0.0-rc.7" }, "msw": { "workerDirectory": "public" diff --git a/packages/medusa/CHANGELOG.md b/packages/medusa/CHANGELOG.md index c4c2543bd2..701e1476db 100644 --- a/packages/medusa/CHANGELOG.md +++ b/packages/medusa/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.8.0-rc.7 + +### Patch Changes + +- [#3665](https://github.com/medusajs/medusa/pull/3665) [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): draft order adjustments for mw + +- [#3705](https://github.com/medusajs/medusa/pull/3705) [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medusa): circular loading + ## 1.8.0-rc.6 ### Patch Changes diff --git a/packages/medusa/package.json b/packages/medusa/package.json index a154a454aa..3dcda47148 100644 --- a/packages/medusa/package.json +++ b/packages/medusa/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa", - "version": "1.8.0-rc.6", + "version": "1.8.0-rc.7", "description": "E-commerce for JAMstack", "main": "dist/index.js", "bin": "./cli.js", diff --git a/packages/oas/medusa-oas-cli/CHANGELOG.md b/packages/oas/medusa-oas-cli/CHANGELOG.md index 1467318753..f6c0ca29a1 100644 --- a/packages/oas/medusa-oas-cli/CHANGELOG.md +++ b/packages/oas/medusa-oas-cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @medusajs/oas-cli +## 0.2.0-rc.7 + +### Patch Changes + +- Updated dependencies [[`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24)]: + - @medusajs/medusa@1.8.0-rc.7 + ## 0.2.0-rc.6 ### Patch Changes diff --git a/packages/oas/medusa-oas-cli/package.json b/packages/oas/medusa-oas-cli/package.json index 51091f5b64..0fcbda177d 100644 --- a/packages/oas/medusa-oas-cli/package.json +++ b/packages/oas/medusa-oas-cli/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-oas-cli", - "version": "0.2.0-rc.6", + "version": "0.2.0-rc.7", "description": "OAS CLI", "main": "dist/index.js", "bin": { @@ -36,7 +36,7 @@ "test:unit": "jest src" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.6", + "@medusajs/medusa": "1.8.0-rc.7", "@medusajs/openapi-typescript-codegen": "0.2.0-rc.0", "@readme/openapi-parser": "^2.4.0", "@types/lodash": "^4.14.191", diff --git a/packages/oas/oas-github-ci/CHANGELOG.md b/packages/oas/oas-github-ci/CHANGELOG.md index f28107f9f3..4f5bd75e58 100644 --- a/packages/oas/oas-github-ci/CHANGELOG.md +++ b/packages/oas/oas-github-ci/CHANGELOG.md @@ -1,5 +1,12 @@ # @medusajs/oas-github-ci +## 1.0.1-rc.7 + +### Patch Changes + +- Updated dependencies []: + - @medusajs/medusa-oas-cli@0.2.0-rc.7 + ## 1.0.1-rc.6 ### Patch Changes diff --git a/packages/oas/oas-github-ci/package.json b/packages/oas/oas-github-ci/package.json index 336fd5df36..41066e9d48 100644 --- a/packages/oas/oas-github-ci/package.json +++ b/packages/oas/oas-github-ci/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/oas-github-ci", - "version": "1.0.1-rc.6", + "version": "1.0.1-rc.7", "description": "OAS Github CI", "main": "scripts/build-openapi.js", "files": [ @@ -22,7 +22,7 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.6", + "@medusajs/medusa-oas-cli": "0.2.0-rc.7", "@readme/openapi-parser": "^2.4.0", "@redocly/cli": "1.0.0-beta.123", "execa": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index ba5e994546..d8f0c9d873 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5606,12 +5606,12 @@ __metadata: languageName: node linkType: hard -"@medusajs/admin-ui@0.0.1-rc.6, @medusajs/admin-ui@workspace:packages/admin-ui": +"@medusajs/admin-ui@0.0.1-rc.7, @medusajs/admin-ui@workspace:packages/admin-ui": version: 0.0.0-use.local resolution: "@medusajs/admin-ui@workspace:packages/admin-ui" dependencies: "@hookform/error-message": ^2.0.1 - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@medusajs/types": 0.0.2-rc.1 "@radix-ui/react-accordion": ^1.0.1 "@radix-ui/react-avatar": ^1.0.1 @@ -5642,7 +5642,7 @@ __metadata: copy-to-clipboard: ^3.3.1 emoji-picker-react: ^4.4.3 framer-motion: ^9.1.6 - medusa-react: 5.0.0-rc.6 + medusa-react: 5.0.0-rc.7 moment: ^2.29.4 pluralize: ^8.0.0 postcss: ^8.4.21 @@ -5679,7 +5679,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/admin@workspace:packages/admin" dependencies: - "@medusajs/admin-ui": 0.0.1-rc.6 + "@medusajs/admin-ui": 0.0.1-rc.7 "@types/express": ^4.17.13 commander: ^10.0.0 dotenv: ^16.0.3 @@ -5691,7 +5691,7 @@ __metadata: ts-dedent: ^2.2.0 typescript: ^4.9.3 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 bin: medusa-admin: ./bin/medusa-admin.js languageName: unknown @@ -5729,7 +5729,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/client-types@workspace:packages/generated/client-types" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.6 + "@medusajs/medusa-oas-cli": 0.2.0-rc.7 cross-env: ^7.0.3 execa: ^5.1.1 jest: ^27.4.7 @@ -5831,11 +5831,11 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa-js@^2.0.0-rc.6, @medusajs/medusa-js@workspace:packages/medusa-js": +"@medusajs/medusa-js@2.0.0-rc.7, @medusajs/medusa-js@workspace:packages/medusa-js": version: 0.0.0-use.local resolution: "@medusajs/medusa-js@workspace:packages/medusa-js" dependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@types/uuid": ^9.0.0 axios: ^0.24.0 cross-env: ^7.0.3 @@ -5847,15 +5847,15 @@ __metadata: typescript: ^4.9.5 uuid: ^9.0.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 languageName: unknown linkType: soft -"@medusajs/medusa-oas-cli@0.2.0-rc.6, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": +"@medusajs/medusa-oas-cli@0.2.0-rc.7, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": version: 0.0.0-use.local resolution: "@medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli" dependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@medusajs/openapi-typescript-codegen": 0.2.0-rc.0 "@readme/openapi-parser": ^2.4.0 "@types/lodash": ^4.14.191 @@ -5874,7 +5874,7 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa@1.8.0-rc.6, @medusajs/medusa@workspace:packages/medusa": +"@medusajs/medusa@1.8.0-rc.7, @medusajs/medusa@workspace:packages/medusa": version: 0.0.0-use.local resolution: "@medusajs/medusa@workspace:packages/medusa" dependencies: @@ -5965,7 +5965,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/oas-github-ci@workspace:packages/oas/oas-github-ci" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.6 + "@medusajs/medusa-oas-cli": 0.2.0-rc.7 "@readme/openapi-parser": ^2.4.0 "@redocly/cli": 1.0.0-beta.123 execa: ^5.1.1 @@ -23353,7 +23353,7 @@ __metadata: "@babel/node": ^7.12.10 "@medusajs/cache-inmemory": 1.8.0-rc.3 "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 @@ -23372,7 +23372,7 @@ __metadata: "@babel/node": ^7.12.10 "@medusajs/cache-inmemory": 1.8.0-rc.3 "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 @@ -23391,7 +23391,7 @@ __metadata: "@babel/cli": ^7.12.10 "@babel/core": ^7.12.10 "@babel/node": ^7.12.10 - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 babel-preset-medusa-package: "*" jest: ^26.6.3 jest-environment-node: 26.6.2 @@ -28430,7 +28430,7 @@ __metadata: "@babel/plugin-transform-runtime": ^7.7.6 "@babel/preset-env": ^7.7.5 "@babel/runtime": ^7.9.6 - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 axios: ^0.20.0 body-parser: ^1.19.0 client-sessions: ^0.8.0 @@ -28553,7 +28553,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-paypal@workspace:packages/medusa-payment-paypal" dependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@paypal/checkout-server-sdk": ^1.0.3 "@types/stripe": ^8.0.417 axios: ^1.3.4 @@ -28564,7 +28564,7 @@ __metadata: medusa-core-utils: ^1.2.0-rc.0 typescript: ^4.4.4 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 languageName: unknown linkType: soft @@ -28572,7 +28572,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-stripe@workspace:packages/medusa-payment-stripe" dependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@types/stripe": ^8.0.417 body-parser: ^1.19.0 cross-env: ^5.2.1 @@ -28582,7 +28582,7 @@ __metadata: stripe: ^11.10.0 typescript: ^4.9.5 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 languageName: unknown linkType: soft @@ -28771,7 +28771,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-plugin-meilisearch@workspace:packages/medusa-plugin-meilisearch" dependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@medusajs/types": 0.0.2-rc.1 "@medusajs/utils": 0.0.2-rc.2 body-parser: ^1.19.0 @@ -28803,7 +28803,7 @@ __metadata: pg: ^8.5.1 ulid: ^2.3.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 medusa-interfaces: 1.3.7-rc.0 languageName: unknown linkType: soft @@ -28947,13 +28947,13 @@ __metadata: languageName: unknown linkType: soft -"medusa-react@5.0.0-rc.6, medusa-react@workspace:packages/medusa-react": +"medusa-react@5.0.0-rc.7, medusa-react@workspace:packages/medusa-react": version: 0.0.0-use.local resolution: "medusa-react@workspace:packages/medusa-react" dependencies: "@babel/core": ^7.16.0 - "@medusajs/medusa": 1.8.0-rc.6 - "@medusajs/medusa-js": ^2.0.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa-js": 2.0.0-rc.7 "@storybook/addon-essentials": ^6.3.12 "@storybook/addon-links": ^6.3.12 "@storybook/addons": ^6.3.12 @@ -28979,7 +28979,7 @@ __metadata: tslib: ^2.3.1 tsup: ^6.5.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.6 + "@medusajs/medusa": 1.8.0-rc.7 "@tanstack/react-query": ^4.22.0 react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 From 4488ec68524f95f367cbd352e9e5eb1957d1d0d6 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Tue, 4 Apr 2023 17:33:49 +0200 Subject: [PATCH 04/12] fix(medusa): Ignore categories seeding for sqlite (#3713) --- .changeset/warm-files-fly.md | 5 +++++ packages/medusa/src/commands/seed.ts | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/warm-files-fly.md diff --git a/.changeset/warm-files-fly.md b/.changeset/warm-files-fly.md new file mode 100644 index 0000000000..70912a3fce --- /dev/null +++ b/.changeset/warm-files-fly.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Category seeding result in non null constraint error diff --git a/packages/medusa/src/commands/seed.ts b/packages/medusa/src/commands/seed.ts index 1d40603e08..c095744cfe 100644 --- a/packages/medusa/src/commands/seed.ts +++ b/packages/medusa/src/commands/seed.ts @@ -13,8 +13,8 @@ import Logger from "../loaders/logger" import featureFlagLoader from "../loaders/feature-flags" import { - ProductService, ProductCategoryService, + ProductService, ProductVariantService, RegionService, ShippingOptionService, @@ -22,7 +22,6 @@ import { StoreService, UserService, } from "../services" -import { ProductCategory } from "../models" import { ConfigModule } from "../types/global" import { CreateProductInput } from "../types/product" import { CreateProductCategoryInput } from "../types/product-category" @@ -234,8 +233,10 @@ const seed = async function ({ directory, migrate, seedFile }: SeedOptions) { } } - for (const c of categories) { - await createProductCategory(c, null) + if (dbType !== "sqlite") { + for (const c of categories) { + await createProductCategory(c, null) + } } }) From f0d37b4d2dfcf10dcf619282b5e764707b16288d Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Tue, 4 Apr 2023 17:37:13 +0200 Subject: [PATCH 05/12] chore(release): v1.8.0-rc.8 --- .changeset/pre.json | 1 + integration-tests/api/package.json | 2 +- integration-tests/plugins/package.json | 2 +- integration-tests/repositories/package.json | 2 +- packages/admin-ui/CHANGELOG.md | 7 +++ packages/admin-ui/package.json | 6 +-- packages/admin/CHANGELOG.md | 8 +++ packages/admin/package.json | 6 +-- packages/generated/client-types/package.json | 2 +- .../package.json | 2 +- packages/medusa-js/CHANGELOG.md | 7 +++ packages/medusa-js/package.json | 6 +-- packages/medusa-payment-paypal/CHANGELOG.md | 7 +++ packages/medusa-payment-paypal/package.json | 6 +-- packages/medusa-payment-stripe/CHANGELOG.md | 7 +++ packages/medusa-payment-stripe/package.json | 6 +-- .../medusa-plugin-meilisearch/package.json | 2 +- .../CHANGELOG.md | 7 +++ .../package.json | 4 +- packages/medusa-react/CHANGELOG.md | 8 +++ packages/medusa-react/package.json | 8 +-- packages/medusa/CHANGELOG.md | 6 +++ packages/medusa/package.json | 2 +- packages/oas/medusa-oas-cli/CHANGELOG.md | 7 +++ packages/oas/medusa-oas-cli/package.json | 4 +- packages/oas/oas-github-ci/CHANGELOG.md | 7 +++ packages/oas/oas-github-ci/package.json | 4 +- yarn.lock | 54 +++++++++---------- 28 files changed, 131 insertions(+), 59 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7161db9dc8..3dbcff6a64 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -173,6 +173,7 @@ "two-cups-crash", "violet-lobsters-retire", "violet-pans-greet", + "warm-files-fly", "weak-hats-develop", "weak-parrots-search", "wicked-toes-fold", diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 98b75d2832..b2301e09b1 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -11,7 +11,7 @@ "dependencies": { "@medusajs/cache-inmemory": "1.8.0-rc.3", "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "faker": "^5.5.3", "medusa-interfaces": "1.3.7-rc.0", "typeorm": "^0.3.11" diff --git a/integration-tests/plugins/package.json b/integration-tests/plugins/package.json index d7dbcbf498..b41ea01bb4 100644 --- a/integration-tests/plugins/package.json +++ b/integration-tests/plugins/package.json @@ -11,7 +11,7 @@ "dependencies": { "@medusajs/cache-inmemory": "1.8.0-rc.3", "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "faker": "^5.5.3", "medusa-fulfillment-webshipper": "1.3.8-rc.1", "medusa-interfaces": "1.3.7-rc.0", diff --git a/integration-tests/repositories/package.json b/integration-tests/repositories/package.json index 4ae2e851fd..1133114e9a 100644 --- a/integration-tests/repositories/package.json +++ b/integration-tests/repositories/package.json @@ -8,7 +8,7 @@ "test": "jest --silent=false --runInBand --bail --detectOpenHandles --forceExit" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "medusa-interfaces": "1.3.7-rc.0", "typeorm": "^0.3.11" }, diff --git a/packages/admin-ui/CHANGELOG.md b/packages/admin-ui/CHANGELOG.md index 048a2a6821..b7153baab8 100644 --- a/packages/admin-ui/CHANGELOG.md +++ b/packages/admin-ui/CHANGELOG.md @@ -1,5 +1,12 @@ # @medusajs/admin-ui +## 0.0.1-rc.8 + +### Patch Changes + +- Updated dependencies []: + - medusa-react@5.0.0-rc.8 + ## 0.0.1-rc.7 ### Patch Changes diff --git a/packages/admin-ui/package.json b/packages/admin-ui/package.json index 284357086a..a9ae9c23b5 100644 --- a/packages/admin-ui/package.json +++ b/packages/admin-ui/package.json @@ -2,7 +2,7 @@ "name": "@medusajs/admin-ui", "author": "Kasper Kristensen ", "license": "MIT", - "version": "0.0.1-rc.7", + "version": "0.0.1-rc.8", "repository": { "type": "git", "url": "https://github.com/medusajs/medusa.git", @@ -49,7 +49,7 @@ "copy-to-clipboard": "^3.3.1", "emoji-picker-react": "^4.4.3", "framer-motion": "^9.1.6", - "medusa-react": "5.0.0-rc.7", + "medusa-react": "5.0.0-rc.8", "moment": "^2.29.4", "pluralize": "^8.0.0", "postcss": "^8.4.21", @@ -79,7 +79,7 @@ "vite": "^4.1.4" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@medusajs/types": "0.0.2-rc.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", diff --git a/packages/admin/CHANGELOG.md b/packages/admin/CHANGELOG.md index 08709d8a53..f946cd06ac 100644 --- a/packages/admin/CHANGELOG.md +++ b/packages/admin/CHANGELOG.md @@ -1,5 +1,13 @@ # @medusajs/admin +## 1.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + - @medusajs/admin-ui@0.0.1-rc.8 + ## 1.0.0-rc.7 ### Patch Changes diff --git a/packages/admin/package.json b/packages/admin/package.json index 52529efab5..93454e2460 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/admin", - "version": "1.0.0-rc.7", + "version": "1.0.0-rc.8", "bin": { "medusa-admin": "./bin/medusa-admin.js" }, @@ -26,7 +26,7 @@ "directory": "packages/admin" }, "dependencies": { - "@medusajs/admin-ui": "0.0.1-rc.7", + "@medusajs/admin-ui": "0.0.1-rc.8", "commander": "^10.0.0", "dotenv": "^16.0.3", "express": "^4.17.1", @@ -37,7 +37,7 @@ "ts-dedent": "^2.2.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7" + "@medusajs/medusa": "1.8.0-rc.8" }, "devDependencies": { "@types/express": "^4.17.13", diff --git a/packages/generated/client-types/package.json b/packages/generated/client-types/package.json index 6a68602ff0..4627fdd5f5 100644 --- a/packages/generated/client-types/package.json +++ b/packages/generated/client-types/package.json @@ -24,7 +24,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.7", + "@medusajs/medusa-oas-cli": "0.2.0-rc.8", "cross-env": "^7.0.3", "execa": "^5.1.1", "jest": "^27.4.7", diff --git a/packages/medusa-fulfillment-webshipper/package.json b/packages/medusa-fulfillment-webshipper/package.json index bca79ac948..f024193a47 100644 --- a/packages/medusa-fulfillment-webshipper/package.json +++ b/packages/medusa-fulfillment-webshipper/package.json @@ -18,7 +18,7 @@ "@babel/plugin-transform-runtime": "^7.7.6", "@babel/preset-env": "^7.7.5", "@babel/runtime": "^7.9.6", - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/packages/medusa-js/CHANGELOG.md b/packages/medusa-js/CHANGELOG.md index 4a06f2c5fd..c2564df0fd 100644 --- a/packages/medusa-js/CHANGELOG.md +++ b/packages/medusa-js/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + ## 2.0.0-rc.7 ### Patch Changes diff --git a/packages/medusa-js/package.json b/packages/medusa-js/package.json index ec0d4b620c..b4587de81a 100644 --- a/packages/medusa-js/package.json +++ b/packages/medusa-js/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-js", - "version": "2.0.0-rc.7", + "version": "2.0.0-rc.8", "description": "Client for Medusa Commerce Rest API", "main": "dist/index.js", "module": "dist/index.mjs", @@ -32,7 +32,7 @@ "uuid": "^9.0.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7" + "@medusajs/medusa": "1.8.0-rc.8" }, "repository": { "type": "git", @@ -43,7 +43,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@types/uuid": "^9.0.0", "cross-env": "^7.0.3", "jest": "^27.4.7", diff --git a/packages/medusa-payment-paypal/CHANGELOG.md b/packages/medusa-payment-paypal/CHANGELOG.md index e0a64bd7b1..98203052b2 100644 --- a/packages/medusa-payment-paypal/CHANGELOG.md +++ b/packages/medusa-payment-paypal/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + ## 2.0.0-rc.7 ### Patch Changes diff --git a/packages/medusa-payment-paypal/package.json b/packages/medusa-payment-paypal/package.json index 4883a15686..03dab96f9c 100644 --- a/packages/medusa-payment-paypal/package.json +++ b/packages/medusa-payment-paypal/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-paypal", - "version": "2.0.0-rc.7", + "version": "2.0.0-rc.8", "description": "Paypal Payment provider for Medusa Commerce", "main": "dist/index.js", "repository": { @@ -20,14 +20,14 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.4.4" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7" + "@medusajs/medusa": "1.8.0-rc.8" }, "dependencies": { "@paypal/checkout-server-sdk": "^1.0.3", diff --git a/packages/medusa-payment-stripe/CHANGELOG.md b/packages/medusa-payment-stripe/CHANGELOG.md index b7ff886e8f..34024ad9d2 100644 --- a/packages/medusa-payment-stripe/CHANGELOG.md +++ b/packages/medusa-payment-stripe/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 2.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + ## 2.0.0-rc.7 ### Patch Changes diff --git a/packages/medusa-payment-stripe/package.json b/packages/medusa-payment-stripe/package.json index 12fd5d6b69..1e101f5d3d 100644 --- a/packages/medusa-payment-stripe/package.json +++ b/packages/medusa-payment-stripe/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-stripe", - "version": "2.0.0-rc.7", + "version": "2.0.0-rc.8", "description": "Stripe Payment provider for Meduas Commerce", "main": "dist/index.js", "repository": { @@ -20,14 +20,14 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.9.5" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7" + "@medusajs/medusa": "1.8.0-rc.8" }, "dependencies": { "body-parser": "^1.19.0", diff --git a/packages/medusa-plugin-meilisearch/package.json b/packages/medusa-plugin-meilisearch/package.json index 513eea791d..f02d045ff4 100644 --- a/packages/medusa-plugin-meilisearch/package.json +++ b/packages/medusa-plugin-meilisearch/package.json @@ -25,7 +25,7 @@ "meilisearch": "^0.31.1" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@medusajs/types": "0.0.2-rc.1", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/packages/medusa-plugin-restock-notification/CHANGELOG.md b/packages/medusa-plugin-restock-notification/CHANGELOG.md index f9e531b533..a1ceb9d950 100644 --- a/packages/medusa-plugin-restock-notification/CHANGELOG.md +++ b/packages/medusa-plugin-restock-notification/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 3.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + ## 3.0.0-rc.7 ### Patch Changes diff --git a/packages/medusa-plugin-restock-notification/package.json b/packages/medusa-plugin-restock-notification/package.json index fb58e6a17a..3cf88e8be8 100644 --- a/packages/medusa-plugin-restock-notification/package.json +++ b/packages/medusa-plugin-restock-notification/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-restock-notification", - "version": "3.0.0-rc.7", + "version": "3.0.0-rc.8", "main": "index.js", "repository": { "type": "git", @@ -29,7 +29,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "medusa-interfaces": "1.3.7-rc.0" }, "dependencies": { diff --git a/packages/medusa-react/CHANGELOG.md b/packages/medusa-react/CHANGELOG.md index a7688769a6..fa9def9e39 100644 --- a/packages/medusa-react/CHANGELOG.md +++ b/packages/medusa-react/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 5.0.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + - @medusajs/medusa-js@2.0.0-rc.8 + ## 5.0.0-rc.7 ### Patch Changes diff --git a/packages/medusa-react/package.json b/packages/medusa-react/package.json index c24a1256fa..3e8c57635f 100644 --- a/packages/medusa-react/package.json +++ b/packages/medusa-react/package.json @@ -1,5 +1,5 @@ { - "version": "5.0.0-rc.7", + "version": "5.0.0-rc.8", "license": "MIT", "main": "dist/index.js", "module": "dist/index.mjs", @@ -25,7 +25,7 @@ "test": "echo \"Tests disabled temporarily\"" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@tanstack/react-query": "^4.22.0", "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" @@ -34,7 +34,7 @@ "author": "Zakaria S. El Asri", "devDependencies": { "@babel/core": "^7.16.0", - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@storybook/addon-essentials": "^6.3.12", "@storybook/addon-links": "^6.3.12", "@storybook/addons": "^6.3.12", @@ -61,7 +61,7 @@ "tsup": "^6.5.0" }, "dependencies": { - "@medusajs/medusa-js": "2.0.0-rc.7" + "@medusajs/medusa-js": "2.0.0-rc.8" }, "msw": { "workerDirectory": "public" diff --git a/packages/medusa/CHANGELOG.md b/packages/medusa/CHANGELOG.md index 701e1476db..61405c28a1 100644 --- a/packages/medusa/CHANGELOG.md +++ b/packages/medusa/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 1.8.0-rc.8 + +### Patch Changes + +- [#3713](https://github.com/medusajs/medusa/pull/3713) [`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medusa): Category seeding result in non null constraint error + ## 1.8.0-rc.7 ### Patch Changes diff --git a/packages/medusa/package.json b/packages/medusa/package.json index 3dcda47148..ce4cd02ebb 100644 --- a/packages/medusa/package.json +++ b/packages/medusa/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa", - "version": "1.8.0-rc.7", + "version": "1.8.0-rc.8", "description": "E-commerce for JAMstack", "main": "dist/index.js", "bin": "./cli.js", diff --git a/packages/oas/medusa-oas-cli/CHANGELOG.md b/packages/oas/medusa-oas-cli/CHANGELOG.md index f6c0ca29a1..4c2106fb43 100644 --- a/packages/oas/medusa-oas-cli/CHANGELOG.md +++ b/packages/oas/medusa-oas-cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @medusajs/oas-cli +## 0.2.0-rc.8 + +### Patch Changes + +- Updated dependencies [[`4488ec685`](https://github.com/medusajs/medusa/commit/4488ec68524f95f367cbd352e9e5eb1957d1d0d6)]: + - @medusajs/medusa@1.8.0-rc.8 + ## 0.2.0-rc.7 ### Patch Changes diff --git a/packages/oas/medusa-oas-cli/package.json b/packages/oas/medusa-oas-cli/package.json index 0fcbda177d..abc5034d2e 100644 --- a/packages/oas/medusa-oas-cli/package.json +++ b/packages/oas/medusa-oas-cli/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-oas-cli", - "version": "0.2.0-rc.7", + "version": "0.2.0-rc.8", "description": "OAS CLI", "main": "dist/index.js", "bin": { @@ -36,7 +36,7 @@ "test:unit": "jest src" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.7", + "@medusajs/medusa": "1.8.0-rc.8", "@medusajs/openapi-typescript-codegen": "0.2.0-rc.0", "@readme/openapi-parser": "^2.4.0", "@types/lodash": "^4.14.191", diff --git a/packages/oas/oas-github-ci/CHANGELOG.md b/packages/oas/oas-github-ci/CHANGELOG.md index 4f5bd75e58..7480de15e7 100644 --- a/packages/oas/oas-github-ci/CHANGELOG.md +++ b/packages/oas/oas-github-ci/CHANGELOG.md @@ -1,5 +1,12 @@ # @medusajs/oas-github-ci +## 1.0.1-rc.8 + +### Patch Changes + +- Updated dependencies []: + - @medusajs/medusa-oas-cli@0.2.0-rc.8 + ## 1.0.1-rc.7 ### Patch Changes diff --git a/packages/oas/oas-github-ci/package.json b/packages/oas/oas-github-ci/package.json index 41066e9d48..ea2545ee4f 100644 --- a/packages/oas/oas-github-ci/package.json +++ b/packages/oas/oas-github-ci/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/oas-github-ci", - "version": "1.0.1-rc.7", + "version": "1.0.1-rc.8", "description": "OAS Github CI", "main": "scripts/build-openapi.js", "files": [ @@ -22,7 +22,7 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.7", + "@medusajs/medusa-oas-cli": "0.2.0-rc.8", "@readme/openapi-parser": "^2.4.0", "@redocly/cli": "1.0.0-beta.123", "execa": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index d8f0c9d873..65288e10fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5606,12 +5606,12 @@ __metadata: languageName: node linkType: hard -"@medusajs/admin-ui@0.0.1-rc.7, @medusajs/admin-ui@workspace:packages/admin-ui": +"@medusajs/admin-ui@0.0.1-rc.8, @medusajs/admin-ui@workspace:packages/admin-ui": version: 0.0.0-use.local resolution: "@medusajs/admin-ui@workspace:packages/admin-ui" dependencies: "@hookform/error-message": ^2.0.1 - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@medusajs/types": 0.0.2-rc.1 "@radix-ui/react-accordion": ^1.0.1 "@radix-ui/react-avatar": ^1.0.1 @@ -5642,7 +5642,7 @@ __metadata: copy-to-clipboard: ^3.3.1 emoji-picker-react: ^4.4.3 framer-motion: ^9.1.6 - medusa-react: 5.0.0-rc.7 + medusa-react: 5.0.0-rc.8 moment: ^2.29.4 pluralize: ^8.0.0 postcss: ^8.4.21 @@ -5679,7 +5679,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/admin@workspace:packages/admin" dependencies: - "@medusajs/admin-ui": 0.0.1-rc.7 + "@medusajs/admin-ui": 0.0.1-rc.8 "@types/express": ^4.17.13 commander: ^10.0.0 dotenv: ^16.0.3 @@ -5691,7 +5691,7 @@ __metadata: ts-dedent: ^2.2.0 typescript: ^4.9.3 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 bin: medusa-admin: ./bin/medusa-admin.js languageName: unknown @@ -5729,7 +5729,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/client-types@workspace:packages/generated/client-types" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.7 + "@medusajs/medusa-oas-cli": 0.2.0-rc.8 cross-env: ^7.0.3 execa: ^5.1.1 jest: ^27.4.7 @@ -5831,11 +5831,11 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa-js@2.0.0-rc.7, @medusajs/medusa-js@workspace:packages/medusa-js": +"@medusajs/medusa-js@2.0.0-rc.8, @medusajs/medusa-js@workspace:packages/medusa-js": version: 0.0.0-use.local resolution: "@medusajs/medusa-js@workspace:packages/medusa-js" dependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@types/uuid": ^9.0.0 axios: ^0.24.0 cross-env: ^7.0.3 @@ -5847,15 +5847,15 @@ __metadata: typescript: ^4.9.5 uuid: ^9.0.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 languageName: unknown linkType: soft -"@medusajs/medusa-oas-cli@0.2.0-rc.7, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": +"@medusajs/medusa-oas-cli@0.2.0-rc.8, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": version: 0.0.0-use.local resolution: "@medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli" dependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@medusajs/openapi-typescript-codegen": 0.2.0-rc.0 "@readme/openapi-parser": ^2.4.0 "@types/lodash": ^4.14.191 @@ -5874,7 +5874,7 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa@1.8.0-rc.7, @medusajs/medusa@workspace:packages/medusa": +"@medusajs/medusa@1.8.0-rc.8, @medusajs/medusa@workspace:packages/medusa": version: 0.0.0-use.local resolution: "@medusajs/medusa@workspace:packages/medusa" dependencies: @@ -5965,7 +5965,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/oas-github-ci@workspace:packages/oas/oas-github-ci" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.7 + "@medusajs/medusa-oas-cli": 0.2.0-rc.8 "@readme/openapi-parser": ^2.4.0 "@redocly/cli": 1.0.0-beta.123 execa: ^5.1.1 @@ -23353,7 +23353,7 @@ __metadata: "@babel/node": ^7.12.10 "@medusajs/cache-inmemory": 1.8.0-rc.3 "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 @@ -23372,7 +23372,7 @@ __metadata: "@babel/node": ^7.12.10 "@medusajs/cache-inmemory": 1.8.0-rc.3 "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 @@ -23391,7 +23391,7 @@ __metadata: "@babel/cli": ^7.12.10 "@babel/core": ^7.12.10 "@babel/node": ^7.12.10 - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 babel-preset-medusa-package: "*" jest: ^26.6.3 jest-environment-node: 26.6.2 @@ -28430,7 +28430,7 @@ __metadata: "@babel/plugin-transform-runtime": ^7.7.6 "@babel/preset-env": ^7.7.5 "@babel/runtime": ^7.9.6 - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 axios: ^0.20.0 body-parser: ^1.19.0 client-sessions: ^0.8.0 @@ -28553,7 +28553,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-paypal@workspace:packages/medusa-payment-paypal" dependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@paypal/checkout-server-sdk": ^1.0.3 "@types/stripe": ^8.0.417 axios: ^1.3.4 @@ -28564,7 +28564,7 @@ __metadata: medusa-core-utils: ^1.2.0-rc.0 typescript: ^4.4.4 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 languageName: unknown linkType: soft @@ -28572,7 +28572,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-stripe@workspace:packages/medusa-payment-stripe" dependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@types/stripe": ^8.0.417 body-parser: ^1.19.0 cross-env: ^5.2.1 @@ -28582,7 +28582,7 @@ __metadata: stripe: ^11.10.0 typescript: ^4.9.5 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 languageName: unknown linkType: soft @@ -28771,7 +28771,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-plugin-meilisearch@workspace:packages/medusa-plugin-meilisearch" dependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@medusajs/types": 0.0.2-rc.1 "@medusajs/utils": 0.0.2-rc.2 body-parser: ^1.19.0 @@ -28803,7 +28803,7 @@ __metadata: pg: ^8.5.1 ulid: ^2.3.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 medusa-interfaces: 1.3.7-rc.0 languageName: unknown linkType: soft @@ -28947,13 +28947,13 @@ __metadata: languageName: unknown linkType: soft -"medusa-react@5.0.0-rc.7, medusa-react@workspace:packages/medusa-react": +"medusa-react@5.0.0-rc.8, medusa-react@workspace:packages/medusa-react": version: 0.0.0-use.local resolution: "medusa-react@workspace:packages/medusa-react" dependencies: "@babel/core": ^7.16.0 - "@medusajs/medusa": 1.8.0-rc.7 - "@medusajs/medusa-js": 2.0.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa-js": 2.0.0-rc.8 "@storybook/addon-essentials": ^6.3.12 "@storybook/addon-links": ^6.3.12 "@storybook/addons": ^6.3.12 @@ -28979,7 +28979,7 @@ __metadata: tslib: ^2.3.1 tsup: ^6.5.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.7 + "@medusajs/medusa": 1.8.0-rc.8 "@tanstack/react-query": ^4.22.0 react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 From 1044a328b228a510a4c8cfee435519fd58ba423b Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Tue, 4 Apr 2023 18:19:20 +0200 Subject: [PATCH 06/12] chore: Merge changesets --- .changeset/tall-lions-rescue.md | 5 ----- .changeset/tame-pillows-heal.md | 5 ----- .changeset/tricky-grapes-flow.md | 5 ----- .changeset/tricky-terms-wash.md | 5 ----- .changeset/two-cups-crash.md | 5 ----- .changeset/violet-pans-greet.md | 5 ----- .changeset/warm-files-fly.md | 5 ----- .changeset/wicked-toes-fold.md | 5 ----- .changeset/wild-goats-sing.md | 5 ----- .changeset/wise-colts-pretend.md | 5 ----- .changeset/wise-tomatoes-fold.md | 5 ----- .changeset/witty-pigs-rescue.md | 11 +++++++++++ 12 files changed, 11 insertions(+), 55 deletions(-) delete mode 100644 .changeset/tall-lions-rescue.md delete mode 100644 .changeset/tame-pillows-heal.md delete mode 100644 .changeset/tricky-grapes-flow.md delete mode 100644 .changeset/tricky-terms-wash.md delete mode 100644 .changeset/two-cups-crash.md delete mode 100644 .changeset/violet-pans-greet.md delete mode 100644 .changeset/warm-files-fly.md delete mode 100644 .changeset/wicked-toes-fold.md delete mode 100644 .changeset/wild-goats-sing.md delete mode 100644 .changeset/wise-colts-pretend.md delete mode 100644 .changeset/wise-tomatoes-fold.md diff --git a/.changeset/tall-lions-rescue.md b/.changeset/tall-lions-rescue.md deleted file mode 100644 index 33c65c0b3f..0000000000 --- a/.changeset/tall-lions-rescue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): remove soft delete from categories + adds indexes for categories diff --git a/.changeset/tame-pillows-heal.md b/.changeset/tame-pillows-heal.md deleted file mode 100644 index bb6b6dd354..0000000000 --- a/.changeset/tame-pillows-heal.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): invalidate price selection caching within update request diff --git a/.changeset/tricky-grapes-flow.md b/.changeset/tricky-grapes-flow.md deleted file mode 100644 index 785d5374e9..0000000000 --- a/.changeset/tricky-grapes-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(admin-ui): add errors and block receiving returns dependent on existing inventory item levels diff --git a/.changeset/tricky-terms-wash.md b/.changeset/tricky-terms-wash.md deleted file mode 100644 index 7be65c6653..0000000000 --- a/.changeset/tricky-terms-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): Improve store list products diff --git a/.changeset/two-cups-crash.md b/.changeset/two-cups-crash.md deleted file mode 100644 index c200ee3623..0000000000 --- a/.changeset/two-cups-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(oas): pluralize OAS tags diff --git a/.changeset/violet-pans-greet.md b/.changeset/violet-pans-greet.md deleted file mode 100644 index 0fd73833d5..0000000000 --- a/.changeset/violet-pans-greet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Account for multiple inventory items when getting inventory diff --git a/.changeset/warm-files-fly.md b/.changeset/warm-files-fly.md deleted file mode 100644 index 70912a3fce..0000000000 --- a/.changeset/warm-files-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Category seeding result in non null constraint error diff --git a/.changeset/wicked-toes-fold.md b/.changeset/wicked-toes-fold.md deleted file mode 100644 index 4f9fc9eb36..0000000000 --- a/.changeset/wicked-toes-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Issue when ordering with multiple columns diff --git a/.changeset/wild-goats-sing.md b/.changeset/wild-goats-sing.md deleted file mode 100644 index eee8b6e26e..0000000000 --- a/.changeset/wild-goats-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -Feat(medusa): fulfill swaps and claims with locations diff --git a/.changeset/wise-colts-pretend.md b/.changeset/wise-colts-pretend.md deleted file mode 100644 index 4e2cd4bf80..0000000000 --- a/.changeset/wise-colts-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -feat(admin-ui): move customs and shipping into manage inventory modal diff --git a/.changeset/wise-tomatoes-fold.md b/.changeset/wise-tomatoes-fold.md deleted file mode 100644 index 10ff885713..0000000000 --- a/.changeset/wise-tomatoes-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): Update transaction base service to expose an activeManager_ getter diff --git a/.changeset/witty-pigs-rescue.md b/.changeset/witty-pigs-rescue.md index f585cc01e9..cde5d4ad28 100644 --- a/.changeset/witty-pigs-rescue.md +++ b/.changeset/witty-pigs-rescue.md @@ -3,3 +3,14 @@ --- feat(oas): identify required fields in responses - admin +feat(medusa): Update transaction base service to expose an activeManager_ getter +feat(admin-ui): move customs and shipping into manage inventory modal +Feat(medusa): fulfill swaps and claims with locations +fix(medusa): Issue when ordering with multiple columns +fix(medusa): Category seeding result in non null constraint error +fix(medusa): Account for multiple inventory items when getting inventory +feat(oas): pluralize OAS tags +feat(medusa): Improve store list products +feat(admin-ui): add errors and block receiving returns dependent on existing inventory item levels +feat(medusa): invalidate price selection caching within update request +feat(medusa): remove soft delete from categories + adds indexes for categories \ No newline at end of file From 66c59d54ff6b20ae7df6bf21ee1f43f05aa31baf Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Tue, 4 Apr 2023 18:35:27 +0200 Subject: [PATCH 07/12] chore(release): v1.8.0 --- .changeset/angry-boxes-press.md | 5 - .changeset/angry-trains-march.md | 5 - .changeset/beige-ties-hunt.md | 5 - .changeset/brave-goats-pay.md | 5 - .changeset/brave-guests-mate.md | 18 - .changeset/brown-wombats-jam.md | 25 -- .changeset/clean-carrots-sell.md | 5 - .changeset/clean-cobras-listen.md | 6 - .changeset/clever-bobcats-clean.md | 5 - .changeset/cool-pumpkins-confess.md | 5 - .changeset/cuddly-keys-hear.md | 5 - .changeset/cuddly-seahorses-thank.md | 5 - .changeset/cuddly-trees-cry.md | 7 - .changeset/curly-mayflies-sell.md | 5 - .changeset/dirty-lions-add.md | 5 - .changeset/dry-cups-occur.md | 5 - .changeset/dull-forks-juggle.md | 5 - .changeset/early-ducks-press.md | 5 - .changeset/eight-wasps-buy.md | 5 - .changeset/eight-wasps-juggle.md | 5 - .changeset/eleven-cycles-mate.md | 7 - .changeset/empty-comics-call.md | 5 - .changeset/empty-melons-eat.md | 7 - .changeset/fair-hats-hammer.md | 5 - .changeset/fair-melons-run.md | 6 - .changeset/famous-bananas-pay.md | 7 - .changeset/fast-buckets-marry.md | 7 - .changeset/fifty-ears-relax.md | 6 - .changeset/four-maps-suffer.md | 5 - .changeset/four-rings-admire.md | 5 - .changeset/fresh-forks-carry.md | 6 - .changeset/friendly-jars-try.md | 5 - .changeset/funny-cars-crash.md | 5 - .changeset/funny-ways-dress.md | 22 -- .changeset/gold-fireants-look.md | 5 - .changeset/grumpy-buses-pump.md | 27 -- .changeset/healthy-geese-worry.md | 5 - .changeset/hip-otters-thank.md | 5 - .changeset/honest-ways-eat.md | 6 - .changeset/kind-dogs-argue.md | 5 - .changeset/kind-rings-wave.md | 6 - .changeset/kind-seas-roll.md | 5 - .changeset/late-rocks-design.md | 5 - .changeset/lemon-boats-obey.md | 7 - .changeset/loud-pillows-report.md | 6 - .changeset/lucky-bikes-end.md | 5 - .changeset/lucky-boats-invent.md | 5 - .changeset/many-papayas-judge.md | 6 - .changeset/mean-ligers-fry.md | 6 - .changeset/mighty-ads-fold.md | 5 - .changeset/neat-days-brush.md | 7 - .changeset/neat-frogs-collect.md | 5 - .changeset/neat-lamps-repeat.md | 5 - .changeset/new-cherries-knock.md | 7 - .changeset/new-pans-explain.md | 5 - .changeset/nice-dryers-search.md | 5 - .changeset/nine-planes-kneel.md | 5 - .changeset/ninety-crews-develop.md | 5 - .changeset/odd-bikes-dance.md | 9 - .changeset/odd-clocks-work.md | 5 - .changeset/odd-meals-help.md | 5 - .changeset/old-planes-cross.md | 5 - .changeset/olive-days-jog.md | 5 - .changeset/olive-penguins-sin.md | 5 - .changeset/olive-seas-repair.md | 5 - .changeset/polite-llamas-sit.md | 5 - .changeset/poor-bulldogs-repeat.md | 5 - .changeset/pre.json | 188 ---------- .changeset/purple-cats-brake.md | 5 - .changeset/purple-sloths-confess.md | 8 - .changeset/quiet-deers-shake.md | 5 - .changeset/quiet-horses-listen.md | 5 - .changeset/quiet-spiders-join.md | 6 - .changeset/red-singers-swim.md | 5 - .changeset/rich-flowers-decide.md | 6 - .changeset/rude-guests-try.md | 6 - .changeset/selfish-grapes-walk.md | 5 - .changeset/serious-geckos-change.md | 5 - .changeset/seven-keys-beg.md | 5 - .changeset/shaggy-ghosts-crash.md | 6 - .changeset/short-plants-work.md | 5 - .changeset/shy-camels-attend.md | 5 - .changeset/shy-years-attack.md | 5 - .changeset/sixty-jeans-fold.md | 7 - .changeset/slimy-brooms-flash.md | 7 - .changeset/small-swans-hunt.md | 11 - .changeset/smart-spies-bake.md | 25 -- .changeset/soft-pets-breathe.md | 5 - .changeset/spotty-rules-hide.md | 9 - .changeset/stale-adults-tease.md | 5 - .changeset/stale-geckos-bow.md | 5 - .changeset/stale-mangos-retire.md | 8 - .changeset/strange-mails-pump.md | 65 ---- .changeset/strong-ducks-change.md | 6 - .changeset/stupid-chefs-ring.md | 5 - .changeset/swift-deers-peel.md | 5 - .changeset/tame-forks-marry.md | 5 - .changeset/tame-geese-applaud.md | 6 - .changeset/tasty-timers-drive.md | 5 - .changeset/ten-actors-complain.md | 14 - .changeset/ten-berries-rest.md | 5 - .changeset/ten-steaks-tan.md | 5 - .changeset/tender-turkeys-exist.md | 5 - .changeset/three-pans-knock.md | 8 - .changeset/tricky-apes-behave.md | 5 - .changeset/tricky-peas-clean.md | 5 - .changeset/twelve-queens-hug.md | 6 - .changeset/two-cherries-enjoy.md | 9 - .changeset/violet-lobsters-retire.md | 5 - .changeset/weak-hats-develop.md | 6 - .changeset/weak-parrots-search.md | 5 - .changeset/wild-rabbits-travel.md | 6 - .changeset/witty-ads-matter.md | 6 - .changeset/witty-pigs-rescue.md | 16 - .changeset/yellow-trees-rest.md | 5 - integration-tests/api/package.json | 8 +- integration-tests/plugins/package.json | 12 +- integration-tests/repositories/package.json | 4 +- packages/admin-ui/CHANGELOG.md | 112 ++++++ packages/admin-ui/package.json | 8 +- packages/admin/CHANGELOG.md | 38 ++ packages/admin/package.json | 8 +- packages/cache-inmemory/CHANGELOG.md | 17 + packages/cache-inmemory/package.json | 6 +- packages/cache-redis/CHANGELOG.md | 17 + packages/cache-redis/package.json | 6 +- packages/create-medusa-app/CHANGELOG.md | 6 + packages/create-medusa-app/package.json | 2 +- packages/event-bus-local/CHANGELOG.md | 18 + packages/event-bus-local/package.json | 8 +- packages/event-bus-redis/CHANGELOG.md | 16 + packages/event-bus-redis/package.json | 10 +- packages/generated/client-types/CHANGELOG.md | 18 + packages/generated/client-types/package.json | 4 +- packages/inventory/CHANGELOG.md | 52 +++ packages/inventory/package.json | 8 +- packages/medusa-cli/CHANGELOG.md | 12 + packages/medusa-cli/package.json | 6 +- packages/medusa-core-utils/CHANGELOG.md | 40 +++ packages/medusa-core-utils/package.json | 2 +- packages/medusa-dev-cli/CHANGELOG.md | 6 + packages/medusa-dev-cli/package.json | 2 +- packages/medusa-file-minio/CHANGELOG.md | 12 + packages/medusa-file-minio/package.json | 10 +- packages/medusa-file-s3/CHANGELOG.md | 11 + packages/medusa-file-s3/package.json | 12 +- packages/medusa-file-spaces/CHANGELOG.md | 9 + packages/medusa-file-spaces/package.json | 12 +- .../medusa-fulfillment-manual/CHANGELOG.md | 8 + .../medusa-fulfillment-manual/package.json | 8 +- .../CHANGELOG.md | 10 + .../package.json | 10 +- packages/medusa-interfaces/CHANGELOG.md | 8 + packages/medusa-interfaces/package.json | 6 +- packages/medusa-js/CHANGELOG.md | 26 ++ packages/medusa-js/package.json | 6 +- packages/medusa-payment-adyen/CHANGELOG.md | 8 + packages/medusa-payment-adyen/package.json | 10 +- packages/medusa-payment-klarna/CHANGELOG.md | 9 + packages/medusa-payment-klarna/package.json | 10 +- packages/medusa-payment-manual/CHANGELOG.md | 7 + packages/medusa-payment-manual/package.json | 8 +- packages/medusa-payment-paypal/CHANGELOG.md | 16 + packages/medusa-payment-paypal/package.json | 8 +- packages/medusa-payment-stripe/CHANGELOG.md | 23 ++ packages/medusa-payment-stripe/package.json | 8 +- packages/medusa-plugin-algolia/CHANGELOG.md | 17 + packages/medusa-plugin-algolia/package.json | 8 +- .../medusa-plugin-brightpearl/CHANGELOG.md | 8 + .../medusa-plugin-brightpearl/package.json | 10 +- .../medusa-plugin-contentful/CHANGELOG.md | 11 + .../medusa-plugin-contentful/package.json | 10 +- .../CHANGELOG.md | 8 + .../package.json | 8 +- packages/medusa-plugin-economic/CHANGELOG.md | 9 + packages/medusa-plugin-economic/package.json | 10 +- packages/medusa-plugin-ip-lookup/CHANGELOG.md | 7 + packages/medusa-plugin-ip-lookup/package.json | 6 +- packages/medusa-plugin-mailchimp/CHANGELOG.md | 9 + packages/medusa-plugin-mailchimp/package.json | 10 +- .../medusa-plugin-meilisearch/CHANGELOG.md | 80 +++++ .../medusa-plugin-meilisearch/package.json | 8 +- .../CHANGELOG.md | 9 + .../package.json | 12 +- packages/medusa-plugin-segment/CHANGELOG.md | 9 + packages/medusa-plugin-segment/package.json | 10 +- packages/medusa-plugin-sendgrid/CHANGELOG.md | 12 + packages/medusa-plugin-sendgrid/package.json | 10 +- .../CHANGELOG.md | 9 + .../package.json | 10 +- .../medusa-plugin-twilio-sms/CHANGELOG.md | 9 + .../medusa-plugin-twilio-sms/package.json | 10 +- packages/medusa-plugin-wishlist/CHANGELOG.md | 9 + packages/medusa-plugin-wishlist/package.json | 10 +- packages/medusa-react/CHANGELOG.md | 57 +++ packages/medusa-react/package.json | 8 +- packages/medusa-source-shopify/CHANGELOG.md | 16 + packages/medusa-source-shopify/package.json | 12 +- packages/medusa-test-utils/CHANGELOG.md | 13 +- packages/medusa-test-utils/package.json | 4 +- packages/medusa/CHANGELOG.md | 278 ++++++++++++++ packages/medusa/package.json | 20 +- packages/modules-sdk/CHANGELOG.md | 24 ++ packages/modules-sdk/package.json | 6 +- packages/oas/medusa-oas-cli/CHANGELOG.md | 20 ++ packages/oas/medusa-oas-cli/package.json | 6 +- packages/oas/oas-github-ci/CHANGELOG.md | 9 + packages/oas/oas-github-ci/package.json | 4 +- .../openapi-typescript-codegen/CHANGELOG.md | 12 + .../openapi-typescript-codegen/package.json | 2 +- packages/stock-location/CHANGELOG.md | 23 ++ packages/stock-location/package.json | 8 +- packages/types/CHANGELOG.md | 10 + packages/types/package.json | 2 +- packages/utils/CHANGELOG.md | 12 + packages/utils/package.json | 4 +- yarn.lock | 340 +++++++++--------- 217 files changed, 1553 insertions(+), 1372 deletions(-) delete mode 100644 .changeset/angry-boxes-press.md delete mode 100644 .changeset/angry-trains-march.md delete mode 100644 .changeset/beige-ties-hunt.md delete mode 100644 .changeset/brave-goats-pay.md delete mode 100644 .changeset/brave-guests-mate.md delete mode 100644 .changeset/brown-wombats-jam.md delete mode 100644 .changeset/clean-carrots-sell.md delete mode 100644 .changeset/clean-cobras-listen.md delete mode 100644 .changeset/clever-bobcats-clean.md delete mode 100644 .changeset/cool-pumpkins-confess.md delete mode 100644 .changeset/cuddly-keys-hear.md delete mode 100644 .changeset/cuddly-seahorses-thank.md delete mode 100644 .changeset/cuddly-trees-cry.md delete mode 100644 .changeset/curly-mayflies-sell.md delete mode 100644 .changeset/dirty-lions-add.md delete mode 100644 .changeset/dry-cups-occur.md delete mode 100644 .changeset/dull-forks-juggle.md delete mode 100644 .changeset/early-ducks-press.md delete mode 100644 .changeset/eight-wasps-buy.md delete mode 100644 .changeset/eight-wasps-juggle.md delete mode 100644 .changeset/eleven-cycles-mate.md delete mode 100644 .changeset/empty-comics-call.md delete mode 100644 .changeset/empty-melons-eat.md delete mode 100644 .changeset/fair-hats-hammer.md delete mode 100644 .changeset/fair-melons-run.md delete mode 100644 .changeset/famous-bananas-pay.md delete mode 100644 .changeset/fast-buckets-marry.md delete mode 100644 .changeset/fifty-ears-relax.md delete mode 100644 .changeset/four-maps-suffer.md delete mode 100644 .changeset/four-rings-admire.md delete mode 100644 .changeset/fresh-forks-carry.md delete mode 100644 .changeset/friendly-jars-try.md delete mode 100644 .changeset/funny-cars-crash.md delete mode 100644 .changeset/funny-ways-dress.md delete mode 100644 .changeset/gold-fireants-look.md delete mode 100644 .changeset/grumpy-buses-pump.md delete mode 100644 .changeset/healthy-geese-worry.md delete mode 100644 .changeset/hip-otters-thank.md delete mode 100644 .changeset/honest-ways-eat.md delete mode 100644 .changeset/kind-dogs-argue.md delete mode 100644 .changeset/kind-rings-wave.md delete mode 100644 .changeset/kind-seas-roll.md delete mode 100644 .changeset/late-rocks-design.md delete mode 100644 .changeset/lemon-boats-obey.md delete mode 100644 .changeset/loud-pillows-report.md delete mode 100644 .changeset/lucky-bikes-end.md delete mode 100644 .changeset/lucky-boats-invent.md delete mode 100644 .changeset/many-papayas-judge.md delete mode 100644 .changeset/mean-ligers-fry.md delete mode 100644 .changeset/mighty-ads-fold.md delete mode 100644 .changeset/neat-days-brush.md delete mode 100644 .changeset/neat-frogs-collect.md delete mode 100644 .changeset/neat-lamps-repeat.md delete mode 100644 .changeset/new-cherries-knock.md delete mode 100644 .changeset/new-pans-explain.md delete mode 100644 .changeset/nice-dryers-search.md delete mode 100644 .changeset/nine-planes-kneel.md delete mode 100644 .changeset/ninety-crews-develop.md delete mode 100644 .changeset/odd-bikes-dance.md delete mode 100644 .changeset/odd-clocks-work.md delete mode 100644 .changeset/odd-meals-help.md delete mode 100644 .changeset/old-planes-cross.md delete mode 100644 .changeset/olive-days-jog.md delete mode 100644 .changeset/olive-penguins-sin.md delete mode 100644 .changeset/olive-seas-repair.md delete mode 100644 .changeset/polite-llamas-sit.md delete mode 100644 .changeset/poor-bulldogs-repeat.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/purple-cats-brake.md delete mode 100644 .changeset/purple-sloths-confess.md delete mode 100644 .changeset/quiet-deers-shake.md delete mode 100644 .changeset/quiet-horses-listen.md delete mode 100644 .changeset/quiet-spiders-join.md delete mode 100644 .changeset/red-singers-swim.md delete mode 100644 .changeset/rich-flowers-decide.md delete mode 100644 .changeset/rude-guests-try.md delete mode 100644 .changeset/selfish-grapes-walk.md delete mode 100644 .changeset/serious-geckos-change.md delete mode 100644 .changeset/seven-keys-beg.md delete mode 100644 .changeset/shaggy-ghosts-crash.md delete mode 100644 .changeset/short-plants-work.md delete mode 100644 .changeset/shy-camels-attend.md delete mode 100644 .changeset/shy-years-attack.md delete mode 100644 .changeset/sixty-jeans-fold.md delete mode 100644 .changeset/slimy-brooms-flash.md delete mode 100644 .changeset/small-swans-hunt.md delete mode 100644 .changeset/smart-spies-bake.md delete mode 100644 .changeset/soft-pets-breathe.md delete mode 100644 .changeset/spotty-rules-hide.md delete mode 100644 .changeset/stale-adults-tease.md delete mode 100644 .changeset/stale-geckos-bow.md delete mode 100644 .changeset/stale-mangos-retire.md delete mode 100644 .changeset/strange-mails-pump.md delete mode 100644 .changeset/strong-ducks-change.md delete mode 100644 .changeset/stupid-chefs-ring.md delete mode 100644 .changeset/swift-deers-peel.md delete mode 100644 .changeset/tame-forks-marry.md delete mode 100644 .changeset/tame-geese-applaud.md delete mode 100644 .changeset/tasty-timers-drive.md delete mode 100644 .changeset/ten-actors-complain.md delete mode 100644 .changeset/ten-berries-rest.md delete mode 100644 .changeset/ten-steaks-tan.md delete mode 100644 .changeset/tender-turkeys-exist.md delete mode 100644 .changeset/three-pans-knock.md delete mode 100644 .changeset/tricky-apes-behave.md delete mode 100644 .changeset/tricky-peas-clean.md delete mode 100644 .changeset/twelve-queens-hug.md delete mode 100644 .changeset/two-cherries-enjoy.md delete mode 100644 .changeset/violet-lobsters-retire.md delete mode 100644 .changeset/weak-hats-develop.md delete mode 100644 .changeset/weak-parrots-search.md delete mode 100644 .changeset/wild-rabbits-travel.md delete mode 100644 .changeset/witty-ads-matter.md delete mode 100644 .changeset/witty-pigs-rescue.md delete mode 100644 .changeset/yellow-trees-rest.md diff --git a/.changeset/angry-boxes-press.md b/.changeset/angry-boxes-press.md deleted file mode 100644 index e61ccf2975..0000000000 --- a/.changeset/angry-boxes-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/inventory": patch ---- - -List inventory items based on locations diff --git a/.changeset/angry-trains-march.md b/.changeset/angry-trains-march.md deleted file mode 100644 index 9a8c75d98a..0000000000 --- a/.changeset/angry-trains-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -add location support in fulfillment modal diff --git a/.changeset/beige-ties-hunt.md b/.changeset/beige-ties-hunt.md deleted file mode 100644 index d561fd891c..0000000000 --- a/.changeset/beige-ties-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -Chores(medusa): draft order create improvement perf (first step) diff --git a/.changeset/brave-goats-pay.md b/.changeset/brave-goats-pay.md deleted file mode 100644 index 8b63b1e7f0..0000000000 --- a/.changeset/brave-goats-pay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Plugin repository loader to work with Typeorm update diff --git a/.changeset/brave-guests-mate.md b/.changeset/brave-guests-mate.md deleted file mode 100644 index 59313bc2c2..0000000000 --- a/.changeset/brave-guests-mate.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -"@medusajs/medusa": minor -"medusa-plugin-sendgrid": patch -"medusa-payment-stripe": patch -"medusa-plugin-algolia": patch -"medusa-source-shopify": patch -"medusa-core-utils": patch -"medusa-file-minio": patch -"medusa-interfaces": patch -"medusa-test-utils": patch -"@medusajs/stock-location": patch -"@medusajs/inventory": patch -"@medusajs/medusa-js": patch ---- - -chore(medusa): Typeorm fixes / enhancements -- upgrade typeorm from 0.2.51 to 0.3.11 -- Plugin repository loader to work with Typeorm update diff --git a/.changeset/brown-wombats-jam.md b/.changeset/brown-wombats-jam.md deleted file mode 100644 index d2f0443adf..0000000000 --- a/.changeset/brown-wombats-jam.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/admin": patch ---- - -fix(admin-ui): Admin UI fixes / enhancements - -- Inventory and order UI fixes and tweaks -- focus-border clipping -- Fix use of `expand` parameter on order page -- Fix location address editing form state -- ensure that the allocation indicator is correctly displayed -- Fix inventory table pagination on location filter change -- Try and ensure allocation table checkmarks align better -- Add gap in table actions -- remove allocate button if no more allcoations can be made -- update edit-allocation sidebar -- create/update/delete inventory items according to inventory items on the variant -- Fix minor bugs related to the edit-allocation modal -- move tailwind to direct dependency -- display error messages for batch jobs -- draft order shipping details -- Implements redesigned public facing pages of admin UI. -- Add location names to fulfilment rows and timeline events -- Encode location id in URL on location table diff --git a/.changeset/clean-carrots-sell.md b/.changeset/clean-carrots-sell.md deleted file mode 100644 index 260da39491..0000000000 --- a/.changeset/clean-carrots-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -chore(medusa): Little improvement in draft order creation diff --git a/.changeset/clean-cobras-listen.md b/.changeset/clean-cobras-listen.md deleted file mode 100644 index 1eddf04fa1..0000000000 --- a/.changeset/clean-cobras-listen.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin": patch -"@medusajs/oas-github-ci": patch ---- - -fix(admin,oas-github-cli): Change public config to private to avoid publishing attempts + include `setup/` in npm release for `admin-ui` diff --git a/.changeset/clever-bobcats-clean.md b/.changeset/clever-bobcats-clean.md deleted file mode 100644 index 66e8d3307d..0000000000 --- a/.changeset/clever-bobcats-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-react": patch ---- - -fix(react): export product-categories store hooks diff --git a/.changeset/cool-pumpkins-confess.md b/.changeset/cool-pumpkins-confess.md deleted file mode 100644 index 22aa89a681..0000000000 --- a/.changeset/cool-pumpkins-confess.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Make copy and UI on manage locations modal better when no locations diff --git a/.changeset/cuddly-keys-hear.md b/.changeset/cuddly-keys-hear.md deleted file mode 100644 index 7ecb75d152..0000000000 --- a/.changeset/cuddly-keys-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-medusa-app": patch ---- - -chore(create-medusa-app): Remove admin + Gatsby starter from npx diff --git a/.changeset/cuddly-seahorses-thank.md b/.changeset/cuddly-seahorses-thank.md deleted file mode 100644 index db30a714bb..0000000000 --- a/.changeset/cuddly-seahorses-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medeusa): Transform query includes options should only be added to allowed props if there is already at least one allowed props diff --git a/.changeset/cuddly-trees-cry.md b/.changeset/cuddly-trees-cry.md deleted file mode 100644 index 437c360db9..0000000000 --- a/.changeset/cuddly-trees-cry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-react": patch -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -fix(admin-ui, medusa-react, medusa): Minor fixes to GC domain in admin UI. Also fixes GC update payload type in medusa-react and medusa. diff --git a/.changeset/curly-mayflies-sell.md b/.changeset/curly-mayflies-sell.md deleted file mode 100644 index 479b7f7a51..0000000000 --- a/.changeset/curly-mayflies-sell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -feat(medusa): remove reservations if cart completion fails after reservation creation diff --git a/.changeset/dirty-lions-add.md b/.changeset/dirty-lions-add.md deleted file mode 100644 index d0c57bc6c4..0000000000 --- a/.changeset/dirty-lions-add.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Include location_id in fulfillment body diff --git a/.changeset/dry-cups-occur.md b/.changeset/dry-cups-occur.md deleted file mode 100644 index dd1dfb25e3..0000000000 --- a/.changeset/dry-cups-occur.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(ci,oas) move oas ci script to a package under the oas workspace diff --git a/.changeset/dull-forks-juggle.md b/.changeset/dull-forks-juggle.md deleted file mode 100644 index 49b5f19330..0000000000 --- a/.changeset/dull-forks-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa-oas-cli": patch ---- - -feat(oas): medusa-oas-cli as OAS build tool diff --git a/.changeset/early-ducks-press.md b/.changeset/early-ducks-press.md deleted file mode 100644 index 59a2c8357f..0000000000 --- a/.changeset/early-ducks-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-file-s3": patch ---- - -fix(medusa-file-s3): update s3 file service to reuse one s3 client diff --git a/.changeset/eight-wasps-buy.md b/.changeset/eight-wasps-buy.md deleted file mode 100644 index 1bed62c1cd..0000000000 --- a/.changeset/eight-wasps-buy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -chore(feature-flag): Remove PublishableAPIKeys feature flag diff --git a/.changeset/eight-wasps-juggle.md b/.changeset/eight-wasps-juggle.md deleted file mode 100644 index 304841ff84..0000000000 --- a/.changeset/eight-wasps-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-dev-cli": patch ---- - -fix(medusa-dev): include packages/ subdirectories in discovery diff --git a/.changeset/eleven-cycles-mate.md b/.changeset/eleven-cycles-mate.md deleted file mode 100644 index 71c01eaad2..0000000000 --- a/.changeset/eleven-cycles-mate.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-payment-paypal": minor -"medusa-payment-stripe": minor -"@medusajs/medusa": minor ---- - -feat(medusa-payment-stripe): Implement payment processor API on stripe plugin and fix web hook issues diff --git a/.changeset/empty-comics-call.md b/.changeset/empty-comics-call.md deleted file mode 100644 index ea4b430e7f..0000000000 --- a/.changeset/empty-comics-call.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -fix(medusa): remove limit of the number of levels to list when joining levels diff --git a/.changeset/empty-melons-eat.md b/.changeset/empty-melons-eat.md deleted file mode 100644 index 1d2b374c40..0000000000 --- a/.changeset/empty-melons-eat.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-payment-paypal": patch -"medusa-payment-stripe": patch -"@medusajs/medusa": patch ---- - -feat(medusa-payment-paypal): Migrate to the new payment processor API diff --git a/.changeset/fair-hats-hammer.md b/.changeset/fair-hats-hammer.md deleted file mode 100644 index ed94239583..0000000000 --- a/.changeset/fair-hats-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(medusa, admin-ui): Fix edit order variant stock diff --git a/.changeset/fair-melons-run.md b/.changeset/fair-melons-run.md deleted file mode 100644 index b588cebd52..0000000000 --- a/.changeset/fair-melons-run.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/client-types": patch -"@medusajs/medusa": patch ---- - -feat(oas): declare x-expanded-relations - Admin diff --git a/.changeset/famous-bananas-pay.md b/.changeset/famous-bananas-pay.md deleted file mode 100644 index 466531a731..0000000000 --- a/.changeset/famous-bananas-pay.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -feat(admin-ui): Adds metadata forms to all applicable domains in the UI. -fix(medusa): Fixes an issue where metadata was not being set for order addresses using `setMetadata`. diff --git a/.changeset/fast-buckets-marry.md b/.changeset/fast-buckets-marry.md deleted file mode 100644 index 8fc6f6ac70..0000000000 --- a/.changeset/fast-buckets-marry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-react": patch -"@medusajs/medusa-js": patch -"@medusajs/medusa": patch ---- - -Add create-inventory-item endpoint diff --git a/.changeset/fifty-ears-relax.md b/.changeset/fifty-ears-relax.md deleted file mode 100644 index 89788702c5..0000000000 --- a/.changeset/fifty-ears-relax.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -Fix(admin-ui,medusa): Ensure stock locations are created with a name diff --git a/.changeset/four-maps-suffer.md b/.changeset/four-maps-suffer.md deleted file mode 100644 index 7cfd48c81d..0000000000 --- a/.changeset/four-maps-suffer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): draft order adjustments for mw diff --git a/.changeset/four-rings-admire.md b/.changeset/four-rings-admire.md deleted file mode 100644 index 8b38b90271..0000000000 --- a/.changeset/four-rings-admire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -feat(admin-ui): Add new feature badge for categories and inventory diff --git a/.changeset/fresh-forks-carry.md b/.changeset/fresh-forks-carry.md deleted file mode 100644 index c4882b3621..0000000000 --- a/.changeset/fresh-forks-carry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"medusa-react": patch -"@medusajs/medusa": patch ---- - -fix(medusa-react): Query key invalidation diff --git a/.changeset/friendly-jars-try.md b/.changeset/friendly-jars-try.md deleted file mode 100644 index 5653e7975e..0000000000 --- a/.changeset/friendly-jars-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): circular loading diff --git a/.changeset/funny-cars-crash.md b/.changeset/funny-cars-crash.md deleted file mode 100644 index 7f8e212848..0000000000 --- a/.changeset/funny-cars-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -Register reservation endpoints + Fix a type issue for get variant inventory diff --git a/.changeset/funny-ways-dress.md b/.changeset/funny-ways-dress.md deleted file mode 100644 index f08c82c65c..0000000000 --- a/.changeset/funny-ways-dress.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"medusa-fulfillment-webshipper": patch -"medusa-plugin-meilisearch": patch -"medusa-payment-paypal": patch -"medusa-payment-stripe": patch -"medusa-plugin-algolia": patch -"@medusajs/event-bus-local": patch -"@medusajs/event-bus-redis": patch -"@medusajs/cache-inmemory": patch -"@medusajs/stock-location": patch -"medusa-react": patch -"@medusajs/cache-redis": patch -"@medusajs/modules-sdk": patch -"@medusajs/inventory": patch -"@medusajs/medusa-js": patch -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch -"@medusajs/types": patch -"@medusajs/utils": patch ---- - -chore: Fix RC package versions diff --git a/.changeset/gold-fireants-look.md b/.changeset/gold-fireants-look.md deleted file mode 100644 index 09d8c22b3a..0000000000 --- a/.changeset/gold-fireants-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): Add event emitter to ProductCollectionService diff --git a/.changeset/grumpy-buses-pump.md b/.changeset/grumpy-buses-pump.md deleted file mode 100644 index e31a68204c..0000000000 --- a/.changeset/grumpy-buses-pump.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -"@medusajs/inventory": patch -"medusa-core-utils": patch -"@medusajs/medusa": patch ---- - -feat(medusa): Modules initializer - -### Loading modules in a project - -Example - -``` typescript -import { InventoryServiceInitializeOptions, initialize } from "@medusajs/inventory" - -const options: InventoryServiceInitializeOptions = { - database: { - type: "postgres", - url: DB_URL, - }, -} - -const inventoryService = await initialize(options) -const newInventoryItem = await inventoryService.createInventoryItem({ - sku: "sku_123", -}) -``` diff --git a/.changeset/healthy-geese-worry.md b/.changeset/healthy-geese-worry.md deleted file mode 100644 index 3592f68d59..0000000000 --- a/.changeset/healthy-geese-worry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): fix bug with create fulfillment and a couple of other minor tweaks diff --git a/.changeset/hip-otters-thank.md b/.changeset/hip-otters-thank.md deleted file mode 100644 index d0e2a3ed0d..0000000000 --- a/.changeset/hip-otters-thank.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -Add inventory management to create-fulfillment flow diff --git a/.changeset/honest-ways-eat.md b/.changeset/honest-ways-eat.md deleted file mode 100644 index 2812db1c9e..0000000000 --- a/.changeset/honest-ways-eat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/admin": patch ---- - -fix(admin): Duplicate product without prices diff --git a/.changeset/kind-dogs-argue.md b/.changeset/kind-dogs-argue.md deleted file mode 100644 index fab700bdac..0000000000 --- a/.changeset/kind-dogs-argue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): Add Lifetime support on project/plugin services diff --git a/.changeset/kind-rings-wave.md b/.changeset/kind-rings-wave.md deleted file mode 100644 index 2a4ce246b3..0000000000 --- a/.changeset/kind-rings-wave.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -fix(admin-ui, medusa): resolve bugs for orders with variants without inventory items diff --git a/.changeset/kind-seas-roll.md b/.changeset/kind-seas-roll.md deleted file mode 100644 index 9a0be31f64..0000000000 --- a/.changeset/kind-seas-roll.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin): Show correct reserved/available values when editing stock on variant diff --git a/.changeset/late-rocks-design.md b/.changeset/late-rocks-design.md deleted file mode 100644 index b5cb407b45..0000000000 --- a/.changeset/late-rocks-design.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): if no headerkey is provided when initilizing idempotency key, no attempt is made at fetching the key diff --git a/.changeset/lemon-boats-obey.md b/.changeset/lemon-boats-obey.md deleted file mode 100644 index ac463fa23d..0000000000 --- a/.changeset/lemon-boats-obey.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@medusajs/medusa-cli": patch -"@medusajs/medusa": patch -"@medusajs/utils": patch ---- - -chore(medusa-cli): Add missing utils dep diff --git a/.changeset/loud-pillows-report.md b/.changeset/loud-pillows-report.md deleted file mode 100644 index d076992908..0000000000 --- a/.changeset/loud-pillows-report.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/client-types": patch -"@medusajs/medusa": patch ---- - -feat(oas): declare x-expanded-relations - Store diff --git a/.changeset/lucky-bikes-end.md b/.changeset/lucky-bikes-end.md deleted file mode 100644 index 57ddd761a9..0000000000 --- a/.changeset/lucky-bikes-end.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Resolve on scope instead of req diff --git a/.changeset/lucky-boats-invent.md b/.changeset/lucky-boats-invent.md deleted file mode 100644 index 6bd75650ba..0000000000 --- a/.changeset/lucky-boats-invent.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -Add filtering of stock locations based on sales channels diff --git a/.changeset/many-papayas-judge.md b/.changeset/many-papayas-judge.md deleted file mode 100644 index 56de28b8cf..0000000000 --- a/.changeset/many-papayas-judge.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/inventory": patch -"@medusajs/medusa": patch ---- - -Fix(inventory, medusa): ensure no orphaned reservations and invenotry levels on location removal diff --git a/.changeset/mean-ligers-fry.md b/.changeset/mean-ligers-fry.md deleted file mode 100644 index 68efffd274..0000000000 --- a/.changeset/mean-ligers-fry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/admin": patch ---- - -feat(admin,admin-ui): Updates the default behaviour of the plugin, and makes building for external deployment easier diff --git a/.changeset/mighty-ads-fold.md b/.changeset/mighty-ads-fold.md deleted file mode 100644 index 20e34e3175..0000000000 --- a/.changeset/mighty-ads-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Clean response data usage for admin and store fields/expand diff --git a/.changeset/neat-days-brush.md b/.changeset/neat-days-brush.md deleted file mode 100644 index 910fc445c6..0000000000 --- a/.changeset/neat-days-brush.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-react": patch -"@medusajs/medusa-js": patch -"@medusajs/medusa": patch ---- - -feat(medusa, medusa-js, medusa-react): Add store queries to react medusa diff --git a/.changeset/neat-frogs-collect.md b/.changeset/neat-frogs-collect.md deleted file mode 100644 index ac449ada4b..0000000000 --- a/.changeset/neat-frogs-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa-cli": patch ---- - -fix(medusa-cli): Add direct dependency of `semver` diff --git a/.changeset/neat-lamps-repeat.md b/.changeset/neat-lamps-repeat.md deleted file mode 100644 index d268ff9034..0000000000 --- a/.changeset/neat-lamps-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Revamps gift card manage page diff --git a/.changeset/new-cherries-knock.md b/.changeset/new-cherries-knock.md deleted file mode 100644 index fd83447fe1..0000000000 --- a/.changeset/new-cherries-knock.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@medusajs/medusa": patch -"@medusajs/medusa-js": patch -"medusa-react": patch ---- - -feat(medusa,medusa-js,medusa-react): Add inventory module endpoints diff --git a/.changeset/new-pans-explain.md b/.changeset/new-pans-explain.md deleted file mode 100644 index 41c748c65f..0000000000 --- a/.changeset/new-pans-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -chore(medusa): EOL causing logging to hang diff --git a/.changeset/nice-dryers-search.md b/.changeset/nice-dryers-search.md deleted file mode 100644 index 00fa37c895..0000000000 --- a/.changeset/nice-dryers-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(oas): include `/admin` and `/store` in paths URLs diff --git a/.changeset/nine-planes-kneel.md b/.changeset/nine-planes-kneel.md deleted file mode 100644 index 1024b75635..0000000000 --- a/.changeset/nine-planes-kneel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Update order edit variants table to fit longer content diff --git a/.changeset/ninety-crews-develop.md b/.changeset/ninety-crews-develop.md deleted file mode 100644 index b06beec3e9..0000000000 --- a/.changeset/ninety-crews-develop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/modules-sdk": patch ---- - -Checks if dependency is registered before resolving it diff --git a/.changeset/odd-bikes-dance.md b/.changeset/odd-bikes-dance.md deleted file mode 100644 index 9af3a077dd..0000000000 --- a/.changeset/odd-bikes-dance.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"medusa-plugin-algolia": patch -"medusa-plugin-meilisearch": patch -"@medusajs/medusa": patch -"@medusajs/types": patch -"@medusajs/utils": patch ---- - -feat(medusa-plugin-algolia): Revamp Algolia search plugin diff --git a/.changeset/odd-clocks-work.md b/.changeset/odd-clocks-work.md deleted file mode 100644 index 1ca7b24e92..0000000000 --- a/.changeset/odd-clocks-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): inventory stocked quantity regulation diff --git a/.changeset/odd-meals-help.md b/.changeset/odd-meals-help.md deleted file mode 100644 index 98199494d8..0000000000 --- a/.changeset/odd-meals-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): minor fixes for inventory items diff --git a/.changeset/old-planes-cross.md b/.changeset/old-planes-cross.md deleted file mode 100644 index 60ba639f17..0000000000 --- a/.changeset/old-planes-cross.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Error messages for reset tokens diff --git a/.changeset/olive-days-jog.md b/.changeset/olive-days-jog.md deleted file mode 100644 index 794a060f41..0000000000 --- a/.changeset/olive-days-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -Fix(medusa): include quantities when listing admin products with an inventory module installed diff --git a/.changeset/olive-penguins-sin.md b/.changeset/olive-penguins-sin.md deleted file mode 100644 index ce9eba7453..0000000000 --- a/.changeset/olive-penguins-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): use get instead of indexing into map diff --git a/.changeset/olive-seas-repair.md b/.changeset/olive-seas-repair.md deleted file mode 100644 index 243515304d..0000000000 --- a/.changeset/olive-seas-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(oas): add @schema OAS for address request payloads diff --git a/.changeset/polite-llamas-sit.md b/.changeset/polite-llamas-sit.md deleted file mode 100644 index 93c7e283c5..0000000000 --- a/.changeset/polite-llamas-sit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Rounding issues on line item adjustments diff --git a/.changeset/poor-bulldogs-repeat.md b/.changeset/poor-bulldogs-repeat.md deleted file mode 100644 index ee97632ae6..0000000000 --- a/.changeset/poor-bulldogs-repeat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa-oas-cli": patch ---- - -fix(oas:test): fix beforeAll timeout silent failure diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 3dbcff6a64..0000000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "mode": "pre", - "tag": "rc", - "initialVersions": { - "integration-tests-api": "1.0.0", - "integration-tests-plugins": "1.0.0", - "integration-tests-repositories": "1.0.0", - "@medusajs/admin": "0.0.1", - "@medusajs/admin-ui": "0.0.0", - "babel-preset-medusa-package": "1.1.19", - "@medusajs/cache-inmemory": "1.7.0", - "@medusajs/cache-redis": "1.7.0", - "create-medusa-app": "0.0.9", - "@medusajs/event-bus-local": "1.7.0", - "@medusajs/event-bus-redis": "1.7.0", - "gatsby-source-medusa": "0.1.3", - "@medusajs/client-types": "0.1.0", - "@medusajs/inventory": "1.7.0", - "@medusajs/medusa": "1.7.13", - "@medusajs/medusa-cli": "1.3.8", - "medusa-core-utils": "1.1.39", - "medusa-dev-cli": "0.0.30", - "medusa-file-minio": "1.1.5", - "medusa-file-s3": "1.1.11", - "medusa-file-spaces": "1.3.5", - "medusa-fulfillment-manual": "1.1.36", - "medusa-fulfillment-webshipper": "1.3.7", - "medusa-interfaces": "1.3.6", - "@medusajs/medusa-js": "1.3.10", - "medusa-payment-adyen": "1.1.43", - "medusa-payment-klarna": "1.3.8", - "medusa-payment-manual": "1.0.22", - "medusa-payment-paypal": "1.2.10", - "medusa-payment-stripe": "1.1.53", - "medusa-plugin-algolia": "0.2.9", - "medusa-plugin-brightpearl": "1.3.6", - "medusa-plugin-contentful": "1.2.7", - "medusa-plugin-discount-generator": "1.1.24", - "medusa-plugin-economic": "1.1.42", - "medusa-plugin-ip-lookup": "1.2.5", - "medusa-plugin-mailchimp": "1.1.46", - "medusa-plugin-meilisearch": "1.0.4", - "medusa-plugin-restock-notification": "2.0.4", - "medusa-plugin-segment": "1.3.4", - "medusa-plugin-sendgrid": "1.3.7", - "medusa-plugin-slack-notification": "1.3.8", - "medusa-plugin-twilio-sms": "1.2.7", - "medusa-plugin-wishlist": "1.1.41", - "medusa-react": "4.0.4", - "medusa-source-shopify": "1.2.7", - "medusa-telemetry": "0.0.16", - "medusa-test-utils": "1.1.39", - "@medusajs/modules-sdk": "0.0.1", - "@medusajs/medusa-oas-cli": "0.1.0", - "@medusajs/oas-github-ci": "1.0.0", - "@medusajs/openapi-typescript-codegen": "0.1.0", - "@medusajs/stock-location": "1.7.0", - "@medusajs/types": "0.0.1", - "@medusajs/utils": "0.0.1" - }, - "changesets": [ - "angry-boxes-press", - "angry-trains-march", - "beige-ties-hunt", - "brave-goats-pay", - "brave-guests-mate", - "brown-wombats-jam", - "clean-carrots-sell", - "clean-cobras-listen", - "clever-bobcats-clean", - "cool-pumpkins-confess", - "cuddly-keys-hear", - "cuddly-seahorses-thank", - "cuddly-trees-cry", - "curly-mayflies-sell", - "dirty-lions-add", - "dry-cups-occur", - "dull-forks-juggle", - "early-ducks-press", - "eight-wasps-buy", - "eight-wasps-juggle", - "eleven-cycles-mate", - "empty-comics-call", - "empty-melons-eat", - "fair-hats-hammer", - "fair-melons-run", - "famous-bananas-pay", - "fast-buckets-marry", - "fifty-ears-relax", - "four-maps-suffer", - "four-rings-admire", - "fresh-forks-carry", - "friendly-jars-try", - "funny-cars-crash", - "funny-ways-dress", - "gold-fireants-look", - "grumpy-buses-pump", - "healthy-geese-worry", - "hip-otters-thank", - "honest-ways-eat", - "kind-dogs-argue", - "kind-rings-wave", - "kind-seas-roll", - "late-rocks-design", - "lemon-boats-obey", - "loud-pillows-report", - "lucky-bikes-end", - "lucky-boats-invent", - "many-papayas-judge", - "mean-ligers-fry", - "mighty-ads-fold", - "neat-days-brush", - "neat-frogs-collect", - "neat-lamps-repeat", - "new-cherries-knock", - "new-pans-explain", - "nice-dryers-search", - "nine-planes-kneel", - "ninety-crews-develop", - "odd-bikes-dance", - "odd-clocks-work", - "odd-meals-help", - "old-planes-cross", - "olive-days-jog", - "olive-penguins-sin", - "olive-seas-repair", - "polite-llamas-sit", - "poor-bulldogs-repeat", - "purple-cats-brake", - "purple-sloths-confess", - "quiet-deers-shake", - "quiet-horses-listen", - "quiet-spiders-join", - "red-singers-swim", - "rich-flowers-decide", - "rude-guests-try", - "selfish-grapes-walk", - "serious-geckos-change", - "seven-keys-beg", - "shaggy-ghosts-crash", - "short-plants-work", - "shy-camels-attend", - "shy-years-attack", - "sixty-jeans-fold", - "slimy-brooms-flash", - "small-swans-hunt", - "smart-spies-bake", - "soft-pets-breathe", - "spotty-rules-hide", - "stale-adults-tease", - "stale-geckos-bow", - "stale-mangos-retire", - "strange-mails-pump", - "strong-ducks-change", - "stupid-chefs-ring", - "swift-deers-peel", - "tall-lions-rescue", - "tame-forks-marry", - "tame-geese-applaud", - "tame-pillows-heal", - "tasty-timers-drive", - "ten-actors-complain", - "ten-berries-rest", - "ten-steaks-tan", - "tender-turkeys-exist", - "three-pans-knock", - "tricky-apes-behave", - "tricky-grapes-flow", - "tricky-peas-clean", - "tricky-terms-wash", - "twelve-queens-hug", - "two-cherries-enjoy", - "two-cups-crash", - "violet-lobsters-retire", - "violet-pans-greet", - "warm-files-fly", - "weak-hats-develop", - "weak-parrots-search", - "wicked-toes-fold", - "wild-goats-sing", - "wild-rabbits-travel", - "wise-colts-pretend", - "wise-tomatoes-fold", - "witty-ads-matter", - "witty-pigs-rescue", - "yellow-trees-rest" - ] -} diff --git a/.changeset/purple-cats-brake.md b/.changeset/purple-cats-brake.md deleted file mode 100644 index 7d04dec3b1..0000000000 --- a/.changeset/purple-cats-brake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Hide inventory quantity field in variant stock form if SL module enabled diff --git a/.changeset/purple-sloths-confess.md b/.changeset/purple-sloths-confess.md deleted file mode 100644 index 6242866238..0000000000 --- a/.changeset/purple-sloths-confess.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): Load PaymentProcessors -- Add loading of PaymentProcessors -- Add PaymentProcessor support in the payment-provider -- Add backward compatibility for the PaymentService diff --git a/.changeset/quiet-deers-shake.md b/.changeset/quiet-deers-shake.md deleted file mode 100644 index 414e04ef81..0000000000 --- a/.changeset/quiet-deers-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -Update types to reflect actual return-type diff --git a/.changeset/quiet-horses-listen.md b/.changeset/quiet-horses-listen.md deleted file mode 100644 index c0d57cc556..0000000000 --- a/.changeset/quiet-horses-listen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(oas): add missing x-codegen + fix schema naming and $ref diff --git a/.changeset/quiet-spiders-join.md b/.changeset/quiet-spiders-join.md deleted file mode 100644 index 413924742e..0000000000 --- a/.changeset/quiet-spiders-join.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/openapi-typescript-codegen": minor -"@medusajs/client-types": minor ---- - -feat(codegen,types): SetRelation on expanded types diff --git a/.changeset/red-singers-swim.md b/.changeset/red-singers-swim.md deleted file mode 100644 index 239343ecd4..0000000000 --- a/.changeset/red-singers-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(medusa): add get-variant endpoint diff --git a/.changeset/rich-flowers-decide.md b/.changeset/rich-flowers-decide.md deleted file mode 100644 index ef67d6df88..0000000000 --- a/.changeset/rich-flowers-decide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -fix(admin-ui, medusa): Minor ui fixes relating to stock locations diff --git a/.changeset/rude-guests-try.md b/.changeset/rude-guests-try.md deleted file mode 100644 index 2a3e715773..0000000000 --- a/.changeset/rude-guests-try.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/openapi-typescript-codegen": patch -"@medusajs/medusa-oas-cli": patch ---- - -feat(codegen): openapi-typescript-codegen fork diff --git a/.changeset/selfish-grapes-walk.md b/.changeset/selfish-grapes-walk.md deleted file mode 100644 index 51bef65070..0000000000 --- a/.changeset/selfish-grapes-walk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -feat(admin-ui): Make number input increment/decrement buttons not tabbable-to diff --git a/.changeset/serious-geckos-change.md b/.changeset/serious-geckos-change.md deleted file mode 100644 index a256527505..0000000000 --- a/.changeset/serious-geckos-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): Fix hanging inventory item migration script diff --git a/.changeset/seven-keys-beg.md b/.changeset/seven-keys-beg.md deleted file mode 100644 index eaac4a7743..0000000000 --- a/.changeset/seven-keys-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/client-types": patch ---- - -feat(codegen): commit generated client types to codebase diff --git a/.changeset/shaggy-ghosts-crash.md b/.changeset/shaggy-ghosts-crash.md deleted file mode 100644 index 6011f627bc..0000000000 --- a/.changeset/shaggy-ghosts-crash.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -feat(medusa,admin): location_ids in swap and claim creation diff --git a/.changeset/short-plants-work.md b/.changeset/short-plants-work.md deleted file mode 100644 index b39cabdc9d..0000000000 --- a/.changeset/short-plants-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(oas): identify required fields in responses - store diff --git a/.changeset/shy-camels-attend.md b/.changeset/shy-camels-attend.md deleted file mode 100644 index 69b548953d..0000000000 --- a/.changeset/shy-camels-attend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": minor ---- - -feat(medusa): remove reservations for all old line items when an order edit is accepted diff --git a/.changeset/shy-years-attack.md b/.changeset/shy-years-attack.md deleted file mode 100644 index 30cff0f42f..0000000000 --- a/.changeset/shy-years-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-react": patch ---- - -fix(medusa-react): invalidate all reservations list queries diff --git a/.changeset/sixty-jeans-fold.md b/.changeset/sixty-jeans-fold.md deleted file mode 100644 index fad382fbe9..0000000000 --- a/.changeset/sixty-jeans-fold.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch -"@medusajs/admin": patch ---- - -feat(medusa,admin,admin-ui): Add new plugin to serve the admin dashboard from the server. Adds a new plugin injection step `setup`, code placed in the `setup` folder of a plugin will be run before any code from a plugin is injected into the Medusa server. diff --git a/.changeset/slimy-brooms-flash.md b/.changeset/slimy-brooms-flash.md deleted file mode 100644 index 0a9aebb422..0000000000 --- a/.changeset/slimy-brooms-flash.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"medusa-core-utils": minor -"medusa-react": minor -"@medusajs/medusa": minor ---- - -Http Server Graceful Shutdown diff --git a/.changeset/small-swans-hunt.md b/.changeset/small-swans-hunt.md deleted file mode 100644 index 99284c6dc3..0000000000 --- a/.changeset/small-swans-hunt.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@medusajs/event-bus-local": patch -"@medusajs/event-bus-redis": patch -"@medusajs/cache-inmemory": patch -"@medusajs/stock-location": patch -"@medusajs/cache-redis": patch -"@medusajs/modules-sdk": patch -"@medusajs/inventory": patch ---- - -Export initialize method for all modules diff --git a/.changeset/smart-spies-bake.md b/.changeset/smart-spies-bake.md deleted file mode 100644 index fc8e362976..0000000000 --- a/.changeset/smart-spies-bake.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch -"medusa-react": patch ---- - -feat(medusa, admin-ui, medusa-react): Improvements to product categories -- Adds name as required in category create form -- Adds name and handle as required in category edit form -- Updates message on create/update forms -- Adds category indicators for is_internal and is_active fields in the tree list -- Fixes bug where tree is not reset when update fails -- allow appending all category descendants with a param in list endpoint -- fix rank order changing on category update -- invalidate products query on category delete -- adds category ui for tree/list, edit, create, delete -- add product category queries and mutations -- category list API can return all descendant -- added breadcrumbs for categories on create/edit modal -- add empty state for product categories -- increase tree depth + scope categories on store + allow categories relation in products API -- categories can be ranked based on position -- seed command can create product categories -- hide categories in products behind feature flag -- fixes bug for mpath incorrectly updated for nested categories diff --git a/.changeset/soft-pets-breathe.md b/.changeset/soft-pets-breathe.md deleted file mode 100644 index 11557a0e28..0000000000 --- a/.changeset/soft-pets-breathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/client-types": patch ---- - -feat(types): package scaffolding for generated types diff --git a/.changeset/spotty-rules-hide.md b/.changeset/spotty-rules-hide.md deleted file mode 100644 index c0b9732de9..0000000000 --- a/.changeset/spotty-rules-hide.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@medusajs/stock-location": minor -"@medusajs/inventory": minor -"medusa-core-utils": minor -"@medusajs/modules-sdk": minor -"@medusajs/medusa": minor ---- - -Inventory and Stock location modules supporting isolated connection diff --git a/.changeset/stale-adults-tease.md b/.changeset/stale-adults-tease.md deleted file mode 100644 index d326667563..0000000000 --- a/.changeset/stale-adults-tease.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin): Fix fulfilment creation diff --git a/.changeset/stale-geckos-bow.md b/.changeset/stale-geckos-bow.md deleted file mode 100644 index d4273fcc80..0000000000 --- a/.changeset/stale-geckos-bow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-payment-stripe": patch ---- - -add typescript dev dependency diff --git a/.changeset/stale-mangos-retire.md b/.changeset/stale-mangos-retire.md deleted file mode 100644 index 9d401fb95a..0000000000 --- a/.changeset/stale-mangos-retire.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@medusajs/client-types": patch -"medusa-react": patch -"@medusajs/medusa-js": patch -"@medusajs/medusa": patch ---- - -fix(oas,js,react): use AdminExtendedStoresRes instead of AdminStoresRes diff --git a/.changeset/strange-mails-pump.md b/.changeset/strange-mails-pump.md deleted file mode 100644 index 319096bce5..0000000000 --- a/.changeset/strange-mails-pump.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -"medusa-plugin-meilisearch": major -"@medusajs/medusa": patch ---- - -feat(medusa-plugin-meilisearch): Update + improve Meilisearch plugin - -**What** -- Bumps `meilisearch` dep to latest major -- Migrates plugin to TypeScript -- Changes the way indexes are configured in `medusa-config.js`: - -**Before** -``` -{ - resolve: `medusa-plugin-meilisearch`, - options: { - config: { host: "...", apiKey: "..." }, - settings: { - products: { - searchableAttributes: ["title"], - displayedAttributes: ["title"], - }, - }, - }, - }, -``` - -**After** -``` -{ - resolve: `medusa-plugin-meilisearch`, - options: { - config: { host: "...", apiKey: "..." }, - settings: { - products: { - **indexSettings**: { - searchableAttributes: ["title"], - displayedAttributes: ["title"], - }, - }, - }, - }, - }, -``` - -This is done to allow for additional configuration of indexes, that are not necessarily passed on query-time. - -We introduce two new settings: -``` -settings: { - products: { - indexSettings: { - searchableAttributes: ["title"], - displayedAttributes: ["title"],, - }, - primaryKey: "id" - transformer: (document) => ({ id: "yo" }) - }, -}, -``` - -Meilisearch changed their primary key inference in the major release. Now we must be explicit when multiple properties end with `id`. Read more in their [docs](https://docs.meilisearch.com/learn/core_concepts/primary_key.html#primary-field). - -The transformer allows developers to specify how their documents are stored in Meilisearch. It is configurable for each index. diff --git a/.changeset/strong-ducks-change.md b/.changeset/strong-ducks-change.md deleted file mode 100644 index 2f1179700f..0000000000 --- a/.changeset/strong-ducks-change.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/modules-sdk": patch -"@medusajs/medusa": patch ---- - -Improved error message if default module is not installed diff --git a/.changeset/stupid-chefs-ring.md b/.changeset/stupid-chefs-ring.md deleted file mode 100644 index 722cffba52..0000000000 --- a/.changeset/stupid-chefs-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -fix(medusa): fix bug with parent not being saved correctly diff --git a/.changeset/swift-deers-peel.md b/.changeset/swift-deers-peel.md deleted file mode 100644 index 13eb63fcfa..0000000000 --- a/.changeset/swift-deers-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/modules-sdk": patch ---- - -chore: Add missing changeset for @medusajs/modules-sdk diff --git a/.changeset/tame-forks-marry.md b/.changeset/tame-forks-marry.md deleted file mode 100644 index 44b05aaff2..0000000000 --- a/.changeset/tame-forks-marry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/openapi-typescript-codegen": minor ---- - -feat(codegen): x-expanded-relations diff --git a/.changeset/tame-geese-applaud.md b/.changeset/tame-geese-applaud.md deleted file mode 100644 index 28b4e7a07e..0000000000 --- a/.changeset/tame-geese-applaud.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/medusa-js": patch -"@medusajs/medusa": patch ---- - -fix(oas): fix paths and fix schema names to match convention diff --git a/.changeset/tasty-timers-drive.md b/.changeset/tasty-timers-drive.md deleted file mode 100644 index 890c4fe99e..0000000000 --- a/.changeset/tasty-timers-drive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Always show categories in product page diff --git a/.changeset/ten-actors-complain.md b/.changeset/ten-actors-complain.md deleted file mode 100644 index 613ffd8497..0000000000 --- a/.changeset/ten-actors-complain.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@medusajs/cache-inmemory": patch -"@medusajs/stock-location": patch -"@medusajs/cache-redis": patch -"@medusajs/modules-sdk": patch -"@medusajs/inventory": patch -"@medusajs/medusa": patch -"@medusajs/types": patch -"@medusajs/utils": patch -"@medusajs/admin-ui": patch -"medusa-plugin-meilisearch": patch ---- - -Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules diff --git a/.changeset/ten-berries-rest.md b/.changeset/ten-berries-rest.md deleted file mode 100644 index f648d7ead8..0000000000 --- a/.changeset/ten-berries-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin-ui): Fix effect check in inventory table and overflow UI diff --git a/.changeset/ten-steaks-tan.md b/.changeset/ten-steaks-tan.md deleted file mode 100644 index efb30675b1..0000000000 --- a/.changeset/ten-steaks-tan.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa-js": patch ---- - -Fix(medusa): Adjust reservations correctly diff --git a/.changeset/tender-turkeys-exist.md b/.changeset/tender-turkeys-exist.md deleted file mode 100644 index e1242ef884..0000000000 --- a/.changeset/tender-turkeys-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/medusa-oas-cli": patch ---- - -feat(oas:cli): output better error when no command is provided diff --git a/.changeset/three-pans-knock.md b/.changeset/three-pans-knock.md deleted file mode 100644 index 0fe9eafdc0..0000000000 --- a/.changeset/three-pans-knock.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@medusajs/medusa": minor -"medusa-react": patch -"@medusajs/event-bus-local": minor -"@medusajs/event-bus-redis": minor ---- - -feat(medusa,event-bus-local,event-bus-redis): Event Bus module (Redis + Local) diff --git a/.changeset/tricky-apes-behave.md b/.changeset/tricky-apes-behave.md deleted file mode 100644 index 82eb98e585..0000000000 --- a/.changeset/tricky-apes-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"medusa-react": patch ---- - -fix(eslint): remove unused .eslintignore in medusa-react package diff --git a/.changeset/tricky-peas-clean.md b/.changeset/tricky-peas-clean.md deleted file mode 100644 index e6c9523fc0..0000000000 --- a/.changeset/tricky-peas-clean.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -fix(admin): Show all locations in allocation creation modal diff --git a/.changeset/twelve-queens-hug.md b/.changeset/twelve-queens-hug.md deleted file mode 100644 index 8b607f2fda..0000000000 --- a/.changeset/twelve-queens-hug.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -fix(medusa, admin-ui): refine create-fulfillment flow diff --git a/.changeset/two-cherries-enjoy.md b/.changeset/two-cherries-enjoy.md deleted file mode 100644 index a36b0e2a81..0000000000 --- a/.changeset/two-cherries-enjoy.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@medusajs/cache-inmemory": minor -"@medusajs/cache-redis": minor -"@medusajs/medusa": minor -"medusa-plugin-contentful": patch -"medusa-source-shopify": patch ---- - -feat(medusa, cache-redis, cache-inmemory): Added cache modules diff --git a/.changeset/violet-lobsters-retire.md b/.changeset/violet-lobsters-retire.md deleted file mode 100644 index 921c59efdc..0000000000 --- a/.changeset/violet-lobsters-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -Add order allocation to admin ui diff --git a/.changeset/weak-hats-develop.md b/.changeset/weak-hats-develop.md deleted file mode 100644 index 08f4b73da9..0000000000 --- a/.changeset/weak-hats-develop.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/admin-ui": patch -"@medusajs/medusa": patch ---- - -feat(medusa,admin-ui): support location_id in diff --git a/.changeset/weak-parrots-search.md b/.changeset/weak-parrots-search.md deleted file mode 100644 index b4fe6350c2..0000000000 --- a/.changeset/weak-parrots-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/event-bus-local": patch ---- - -fix(event-bus-local): Error handling diff --git a/.changeset/wild-rabbits-travel.md b/.changeset/wild-rabbits-travel.md deleted file mode 100644 index 6b7bc5b894..0000000000 --- a/.changeset/wild-rabbits-travel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"medusa-react": patch -"@medusajs/admin-ui": patch ---- - -feat(admin-ui, medusa-react): allow products to be categorized in product create/edit page diff --git a/.changeset/witty-ads-matter.md b/.changeset/witty-ads-matter.md deleted file mode 100644 index 91bfebf283..0000000000 --- a/.changeset/witty-ads-matter.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@medusajs/medusa-oas-cli": minor -"@medusajs/medusa": patch ---- - -feat(oas-cli): combine admin + store + custom OAS diff --git a/.changeset/witty-pigs-rescue.md b/.changeset/witty-pigs-rescue.md deleted file mode 100644 index cde5d4ad28..0000000000 --- a/.changeset/witty-pigs-rescue.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@medusajs/medusa": patch ---- - -feat(oas): identify required fields in responses - admin -feat(medusa): Update transaction base service to expose an activeManager_ getter -feat(admin-ui): move customs and shipping into manage inventory modal -Feat(medusa): fulfill swaps and claims with locations -fix(medusa): Issue when ordering with multiple columns -fix(medusa): Category seeding result in non null constraint error -fix(medusa): Account for multiple inventory items when getting inventory -feat(oas): pluralize OAS tags -feat(medusa): Improve store list products -feat(admin-ui): add errors and block receiving returns dependent on existing inventory item levels -feat(medusa): invalidate price selection caching within update request -feat(medusa): remove soft delete from categories + adds indexes for categories \ No newline at end of file diff --git a/.changeset/yellow-trees-rest.md b/.changeset/yellow-trees-rest.md deleted file mode 100644 index d9545f96f7..0000000000 --- a/.changeset/yellow-trees-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@medusajs/admin-ui": patch ---- - -Fix team table filter dropdown transparency diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index b2301e09b1..10cdfbdcb2 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -9,11 +9,11 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/cache-inmemory": "1.8.0-rc.3", - "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/cache-inmemory": "1.8.0", + "@medusajs/event-bus-local": "1.8.0", + "@medusajs/medusa": "1.8.0", "faker": "^5.5.3", - "medusa-interfaces": "1.3.7-rc.0", + "medusa-interfaces": "1.3.7", "typeorm": "^0.3.11" }, "devDependencies": { diff --git a/integration-tests/plugins/package.json b/integration-tests/plugins/package.json index b41ea01bb4..c163d31c4a 100644 --- a/integration-tests/plugins/package.json +++ b/integration-tests/plugins/package.json @@ -9,13 +9,13 @@ "build": "babel src -d dist --extensions \".ts,.js\"" }, "dependencies": { - "@medusajs/cache-inmemory": "1.8.0-rc.3", - "@medusajs/event-bus-local": "1.8.0-rc.4", - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/cache-inmemory": "1.8.0", + "@medusajs/event-bus-local": "1.8.0", + "@medusajs/medusa": "1.8.0", "faker": "^5.5.3", - "medusa-fulfillment-webshipper": "1.3.8-rc.1", - "medusa-interfaces": "1.3.7-rc.0", - "medusa-plugin-sendgrid": "1.3.8-rc.0", + "medusa-fulfillment-webshipper": "1.3.8", + "medusa-interfaces": "1.3.7", + "medusa-plugin-sendgrid": "1.3.8", "typeorm": "^0.3.11" }, "devDependencies": { diff --git a/integration-tests/repositories/package.json b/integration-tests/repositories/package.json index 1133114e9a..bc6302760f 100644 --- a/integration-tests/repositories/package.json +++ b/integration-tests/repositories/package.json @@ -8,8 +8,8 @@ "test": "jest --silent=false --runInBand --bail --detectOpenHandles --forceExit" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.8", - "medusa-interfaces": "1.3.7-rc.0", + "@medusajs/medusa": "1.8.0", + "medusa-interfaces": "1.3.7", "typeorm": "^0.3.11" }, "devDependencies": { diff --git a/packages/admin-ui/CHANGELOG.md b/packages/admin-ui/CHANGELOG.md index b7153baab8..61a23ae301 100644 --- a/packages/admin-ui/CHANGELOG.md +++ b/packages/admin-ui/CHANGELOG.md @@ -1,5 +1,117 @@ # @medusajs/admin-ui +## 1.8.0 + +### Patch Changes + +- [#3403](https://github.com/medusajs/medusa/pull/3403) [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46) Thanks [@StephixOne](https://github.com/StephixOne)! - add location support in fulfillment modal + +- [#3461](https://github.com/medusajs/medusa/pull/3461) [`478903b55`](https://github.com/medusajs/medusa/commit/478903b55a6f7c276fa2285ee35bf8a2b51a72fb) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Admin UI fixes / enhancements + + - Inventory and order UI fixes and tweaks + - focus-border clipping + - Fix use of `expand` parameter on order page + - Fix location address editing form state + - ensure that the allocation indicator is correctly displayed + - Fix inventory table pagination on location filter change + - Try and ensure allocation table checkmarks align better + - Add gap in table actions + - remove allocate button if no more allcoations can be made + - update edit-allocation sidebar + - create/update/delete inventory items according to inventory items on the variant + - Fix minor bugs related to the edit-allocation modal + - move tailwind to direct dependency + - display error messages for batch jobs + - draft order shipping details + - Implements redesigned public facing pages of admin UI. + - Add location names to fulfilment rows and timeline events + - Encode location id in URL on location table + +- [#3666](https://github.com/medusajs/medusa/pull/3666) [`ca3b32d53`](https://github.com/medusajs/medusa/commit/ca3b32d53c6854716bcbfb641ed381fa0f019a58) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Make copy and UI on manage locations modal better when no locations + +- [#3676](https://github.com/medusajs/medusa/pull/3676) [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - fix(admin-ui, medusa-react, medusa): Minor fixes to GC domain in admin UI. Also fixes GC update payload type in medusa-react and medusa. + +- [#3512](https://github.com/medusajs/medusa/pull/3512) [`a8423b8ac`](https://github.com/medusajs/medusa/commit/a8423b8acc8723dd3f5475d23bd9cb8be9c630c0) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(medusa, admin-ui): Fix edit order variant stock + +- [#3644](https://github.com/medusajs/medusa/pull/3644) [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(admin-ui): Adds metadata forms to all applicable domains in the UI. + fix(medusa): Fixes an issue where metadata was not being set for order addresses using `setMetadata`. + +- [#3670](https://github.com/medusajs/medusa/pull/3670) [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(admin-ui,medusa): Ensure stock locations are created with a name + +- [#3657](https://github.com/medusajs/medusa/pull/3657) [`7e1d8ef59`](https://github.com/medusajs/medusa/commit/7e1d8ef599fe4588d439b449373debf1221e625d) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(admin-ui): Add new feature badge for categories and inventory + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3607](https://github.com/medusajs/medusa/pull/3607) [`d1a6aa5a9`](https://github.com/medusajs/medusa/commit/d1a6aa5a90c147a34448e5398a1f205649598c09) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui): fix bug with create fulfillment and a couple of other minor tweaks + +- [#3706](https://github.com/medusajs/medusa/pull/3706) [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(admin): Duplicate product without prices + +- [#3660](https://github.com/medusajs/medusa/pull/3660) [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui, medusa): resolve bugs for orders with variants without inventory items + +- [#3438](https://github.com/medusajs/medusa/pull/3438) [`f027bc26f`](https://github.com/medusajs/medusa/commit/f027bc26fca94931df61c1cc0c7450de08020975) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin): Show correct reserved/available values when editing stock on variant + +- [#3418](https://github.com/medusajs/medusa/pull/3418) [`8a7421db5`](https://github.com/medusajs/medusa/commit/8a7421db5bd235dd3cf88bf73d2438af8769f7ba) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(admin,admin-ui): Updates the default behaviour of the plugin, and makes building for external deployment easier + +- [#3532](https://github.com/medusajs/medusa/pull/3532) [`bfef22b33`](https://github.com/medusajs/medusa/commit/bfef22b33e0aa4aa542d3f22fb32ee261f5a19ea) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - fix(admin-ui): Revamps gift card manage page + +- [#3608](https://github.com/medusajs/medusa/pull/3608) [`345005573`](https://github.com/medusajs/medusa/commit/345005573a337d63394b63d33d6740a4171d1479) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Update order edit variants table to fit longer content + +- [#3585](https://github.com/medusajs/medusa/pull/3585) [`0d0090338`](https://github.com/medusajs/medusa/commit/0d00903385df980e355c54cee9bcd4e8ede21635) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui): minor fixes for inventory items + +- [#3592](https://github.com/medusajs/medusa/pull/3592) [`455c56c4b`](https://github.com/medusajs/medusa/commit/455c56c4b3846c583f39ba56352d645128b0c967) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Hide inventory quantity field in variant stock form if SL module enabled + +- [#3395](https://github.com/medusajs/medusa/pull/3395) [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui, medusa): Minor ui fixes relating to stock locations + +- [#3645](https://github.com/medusajs/medusa/pull/3645) [`e6b5859af`](https://github.com/medusajs/medusa/commit/e6b5859af213185408e1087073c1cba10f7b33c2) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(admin-ui): Make number input increment/decrement buttons not tabbable-to + +- [#3522](https://github.com/medusajs/medusa/pull/3522) [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa,admin): location_ids in swap and claim creation + +- [#3334](https://github.com/medusajs/medusa/pull/3334) [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(medusa,admin,admin-ui): Add new plugin to serve the admin dashboard from the server. Adds a new plugin injection step `setup`, code placed in the `setup` folder of a plugin will be run before any code from a plugin is injected into the Medusa server. + +- [#3416](https://github.com/medusajs/medusa/pull/3416) [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, admin-ui, medusa-react): Improvements to product categories + + - Adds name as required in category create form + - Adds name and handle as required in category edit form + - Updates message on create/update forms + - Adds category indicators for is_internal and is_active fields in the tree list + - Fixes bug where tree is not reset when update fails + - allow appending all category descendants with a param in list endpoint + - fix rank order changing on category update + - invalidate products query on category delete + - adds category ui for tree/list, edit, create, delete + - add product category queries and mutations + - category list API can return all descendant + - added breadcrumbs for categories on create/edit modal + - add empty state for product categories + - increase tree depth + scope categories on store + allow categories relation in products API + - categories can be ranked based on position + - seed command can create product categories + - hide categories in products behind feature flag + - fixes bug for mpath incorrectly updated for nested categories + +- [#3434](https://github.com/medusajs/medusa/pull/3434) [`f43f03bad`](https://github.com/medusajs/medusa/commit/f43f03badbfd1d3598f3c6bc6c81e6fa2e9c2a09) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin): Fix fulfilment creation + +- [#3655](https://github.com/medusajs/medusa/pull/3655) [`45fd0fb63`](https://github.com/medusajs/medusa/commit/45fd0fb639f05db6115be6823d42b85672c0891d) Thanks [@olivermrbl](https://github.com/olivermrbl)! - fix(admin-ui): Always show categories in product page + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- [#3577](https://github.com/medusajs/medusa/pull/3577) [`95c9fbfdd`](https://github.com/medusajs/medusa/commit/95c9fbfdd5f290df0f22115f27b82f0812f8bd67) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Fix effect check in inventory table and overflow UI + +- [#3448](https://github.com/medusajs/medusa/pull/3448) [`d4af87311`](https://github.com/medusajs/medusa/commit/d4af873113e4e3bb75ff1f5646870eb77b7a2b40) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin): Show all locations in allocation creation modal + +- [#3541](https://github.com/medusajs/medusa/pull/3541) [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa, admin-ui): refine create-fulfillment flow + +- [#3403](https://github.com/medusajs/medusa/pull/3403) [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46) Thanks [@StephixOne](https://github.com/StephixOne)! - Add order allocation to admin ui + +- [#3451](https://github.com/medusajs/medusa/pull/3451) [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa,admin-ui): support location_id in + +- [#3401](https://github.com/medusajs/medusa/pull/3401) [`47d344076`](https://github.com/medusajs/medusa/commit/47d3440766efa26aba6638a05edec520a4e62828) Thanks [@riqwan](https://github.com/riqwan)! - feat(admin-ui, medusa-react): allow products to be categorized in product create/edit page + +- [#3625](https://github.com/medusajs/medusa/pull/3625) [`7428ffa30`](https://github.com/medusajs/medusa/commit/7428ffa300a1e5781ef18b86edf97b711df0b585) Thanks [@StephixOne](https://github.com/StephixOne)! - Fix team table filter dropdown transparency + +- Updated dependencies [[`d06ab9299`](https://github.com/medusajs/medusa/commit/d06ab929946c9e3842dcf4299b2c7e4c85fcc116), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`2d2727f75`](https://github.com/medusajs/medusa/commit/2d2727f753dd9386160d7e677b927c4915e1fce7), [`47d344076`](https://github.com/medusajs/medusa/commit/47d3440766efa26aba6638a05edec520a4e62828)]: + - medusa-react@5.0.0 + ## 0.0.1-rc.8 ### Patch Changes diff --git a/packages/admin-ui/package.json b/packages/admin-ui/package.json index a9ae9c23b5..5fa13df1b8 100644 --- a/packages/admin-ui/package.json +++ b/packages/admin-ui/package.json @@ -2,7 +2,7 @@ "name": "@medusajs/admin-ui", "author": "Kasper Kristensen ", "license": "MIT", - "version": "0.0.1-rc.8", + "version": "1.8.0", "repository": { "type": "git", "url": "https://github.com/medusajs/medusa.git", @@ -49,7 +49,7 @@ "copy-to-clipboard": "^3.3.1", "emoji-picker-react": "^4.4.3", "framer-motion": "^9.1.6", - "medusa-react": "5.0.0-rc.8", + "medusa-react": "5.0.0", "moment": "^2.29.4", "pluralize": "^8.0.0", "postcss": "^8.4.21", @@ -79,8 +79,8 @@ "vite": "^4.1.4" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/medusa": "1.8.0", + "@medusajs/types": "1.8.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", diff --git a/packages/admin/CHANGELOG.md b/packages/admin/CHANGELOG.md index f946cd06ac..7ed4b6c80a 100644 --- a/packages/admin/CHANGELOG.md +++ b/packages/admin/CHANGELOG.md @@ -1,5 +1,43 @@ # @medusajs/admin +## 2.0.0 + +### Patch Changes + +- [#3461](https://github.com/medusajs/medusa/pull/3461) [`478903b55`](https://github.com/medusajs/medusa/commit/478903b55a6f7c276fa2285ee35bf8a2b51a72fb) Thanks [@StephixOne](https://github.com/StephixOne)! - fix(admin-ui): Admin UI fixes / enhancements + + - Inventory and order UI fixes and tweaks + - focus-border clipping + - Fix use of `expand` parameter on order page + - Fix location address editing form state + - ensure that the allocation indicator is correctly displayed + - Fix inventory table pagination on location filter change + - Try and ensure allocation table checkmarks align better + - Add gap in table actions + - remove allocate button if no more allcoations can be made + - update edit-allocation sidebar + - create/update/delete inventory items according to inventory items on the variant + - Fix minor bugs related to the edit-allocation modal + - move tailwind to direct dependency + - display error messages for batch jobs + - draft order shipping details + - Implements redesigned public facing pages of admin UI. + - Add location names to fulfilment rows and timeline events + - Encode location id in URL on location table + +- [#3410](https://github.com/medusajs/medusa/pull/3410) [`8ed67d2d7`](https://github.com/medusajs/medusa/commit/8ed67d2d7d36da2d0cb3541e42bba1770aefc60a) Thanks [@olivermrbl](https://github.com/olivermrbl)! - fix(admin,oas-github-cli): Change public config to private to avoid publishing attempts + include `setup/` in npm release for `admin-ui` + +- [#3706](https://github.com/medusajs/medusa/pull/3706) [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(admin): Duplicate product without prices + +- [#3418](https://github.com/medusajs/medusa/pull/3418) [`8a7421db5`](https://github.com/medusajs/medusa/commit/8a7421db5bd235dd3cf88bf73d2438af8769f7ba) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(admin,admin-ui): Updates the default behaviour of the plugin, and makes building for external deployment easier + +- [#3334](https://github.com/medusajs/medusa/pull/3334) [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(medusa,admin,admin-ui): Add new plugin to serve the admin dashboard from the server. Adds a new plugin injection step `setup`, code placed in the `setup` folder of a plugin will be run before any code from a plugin is injected into the Medusa server. + +- Updated dependencies [[`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`478903b55`](https://github.com/medusajs/medusa/commit/478903b55a6f7c276fa2285ee35bf8a2b51a72fb), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`ca3b32d53`](https://github.com/medusajs/medusa/commit/ca3b32d53c6854716bcbfb641ed381fa0f019a58), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`a8423b8ac`](https://github.com/medusajs/medusa/commit/a8423b8acc8723dd3f5475d23bd9cb8be9c630c0), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7e1d8ef59`](https://github.com/medusajs/medusa/commit/7e1d8ef599fe4588d439b449373debf1221e625d), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`d1a6aa5a9`](https://github.com/medusajs/medusa/commit/d1a6aa5a90c147a34448e5398a1f205649598c09), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`dae8da109`](https://github.com/medusajs/medusa/commit/dae8da1099bbe5fd3c59adc7fd2c28b41c0f71bc), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`f027bc26f`](https://github.com/medusajs/medusa/commit/f027bc26fca94931df61c1cc0c7450de08020975), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`8a7421db5`](https://github.com/medusajs/medusa/commit/8a7421db5bd235dd3cf88bf73d2438af8769f7ba), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`bfef22b33`](https://github.com/medusajs/medusa/commit/bfef22b33e0aa4aa542d3f22fb32ee261f5a19ea), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`345005573`](https://github.com/medusajs/medusa/commit/345005573a337d63394b63d33d6740a4171d1479), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`0d0090338`](https://github.com/medusajs/medusa/commit/0d00903385df980e355c54cee9bcd4e8ede21635), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`455c56c4b`](https://github.com/medusajs/medusa/commit/455c56c4b3846c583f39ba56352d645128b0c967), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`e6b5859af`](https://github.com/medusajs/medusa/commit/e6b5859af213185408e1087073c1cba10f7b33c2), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`f43f03bad`](https://github.com/medusajs/medusa/commit/f43f03badbfd1d3598f3c6bc6c81e6fa2e9c2a09), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`45fd0fb63`](https://github.com/medusajs/medusa/commit/45fd0fb639f05db6115be6823d42b85672c0891d), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`95c9fbfdd`](https://github.com/medusajs/medusa/commit/95c9fbfdd5f290df0f22115f27b82f0812f8bd67), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`d4af87311`](https://github.com/medusajs/medusa/commit/d4af873113e4e3bb75ff1f5646870eb77b7a2b40), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`47d344076`](https://github.com/medusajs/medusa/commit/47d3440766efa26aba6638a05edec520a4e62828), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45), [`7428ffa30`](https://github.com/medusajs/medusa/commit/7428ffa300a1e5781ef18b86edf97b711df0b585)]: + - @medusajs/admin-ui@1.8.0 + - @medusajs/medusa@1.8.0 + - medusa-core-utils@1.2.0 + ## 1.0.0-rc.8 ### Patch Changes diff --git a/packages/admin/package.json b/packages/admin/package.json index 93454e2460..9babfd110a 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/admin", - "version": "1.0.0-rc.8", + "version": "2.0.0", "bin": { "medusa-admin": "./bin/medusa-admin.js" }, @@ -26,18 +26,18 @@ "directory": "packages/admin" }, "dependencies": { - "@medusajs/admin-ui": "0.0.1-rc.8", + "@medusajs/admin-ui": "1.8.0", "commander": "^10.0.0", "dotenv": "^16.0.3", "express": "^4.17.1", "fs-extra": "^11.1.0", - "medusa-core-utils": "1.2.0-rc.0", + "medusa-core-utils": "1.2.0", "ora": "5.4.0", "picocolors": "^1.0.0", "ts-dedent": "^2.2.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8" + "@medusajs/medusa": "1.8.0" }, "devDependencies": { "@types/express": "^4.17.13", diff --git a/packages/cache-inmemory/CHANGELOG.md b/packages/cache-inmemory/CHANGELOG.md index 86790a855f..32ce85b2b6 100644 --- a/packages/cache-inmemory/CHANGELOG.md +++ b/packages/cache-inmemory/CHANGELOG.md @@ -1,5 +1,22 @@ # @medusajs/cache-inmemory +## 1.8.0 + +### Minor Changes + +- [#3187](https://github.com/medusajs/medusa/pull/3187) [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7) Thanks [@fPolic](https://github.com/fPolic)! - feat(medusa, cache-redis, cache-inmemory): Added cache modules + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + ## 1.8.0-rc.3 ### Patch Changes diff --git a/packages/cache-inmemory/package.json b/packages/cache-inmemory/package.json index 48af9e388e..9494019094 100644 --- a/packages/cache-inmemory/package.json +++ b/packages/cache-inmemory/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/cache-inmemory", - "version": "1.8.0-rc.3", + "version": "1.8.0", "description": "In-memory Cache Module for Medusa", "main": "dist/index.js", "repository": { @@ -17,7 +17,7 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", "ts-jest": "^25.5.1", @@ -31,6 +31,6 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4" + "@medusajs/modules-sdk": "1.8.0" } } diff --git a/packages/cache-redis/CHANGELOG.md b/packages/cache-redis/CHANGELOG.md index 6cc35bbc97..7a95e4c89a 100644 --- a/packages/cache-redis/CHANGELOG.md +++ b/packages/cache-redis/CHANGELOG.md @@ -1,5 +1,22 @@ # @medusajs/cache-redis +## 1.8.0 + +### Minor Changes + +- [#3187](https://github.com/medusajs/medusa/pull/3187) [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7) Thanks [@fPolic](https://github.com/fPolic)! - feat(medusa, cache-redis, cache-inmemory): Added cache modules + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + ## 1.8.0-rc.3 ### Patch Changes diff --git a/packages/cache-redis/package.json b/packages/cache-redis/package.json index f8e1901cb2..20f2de6bfc 100644 --- a/packages/cache-redis/package.json +++ b/packages/cache-redis/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/cache-redis", - "version": "1.8.0-rc.3", + "version": "1.8.0", "description": "Redis Cache Module for Medusa", "main": "dist/index.js", "repository": { @@ -17,7 +17,7 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", "ts-jest": "^25.5.1", @@ -31,7 +31,7 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", + "@medusajs/modules-sdk": "1.8.0", "awilix": "^8.0.0", "ioredis": "^5.3.1" } diff --git a/packages/create-medusa-app/CHANGELOG.md b/packages/create-medusa-app/CHANGELOG.md index eceefb8e00..f7609b63c5 100644 --- a/packages/create-medusa-app/CHANGELOG.md +++ b/packages/create-medusa-app/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.0.10 + +### Patch Changes + +- [#3376](https://github.com/medusajs/medusa/pull/3376) [`88392e017`](https://github.com/medusajs/medusa/commit/88392e017653b53069793bd2ee451c2e6b7bcf17) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore(create-medusa-app): Remove admin + Gatsby starter from npx + ## 0.0.10-rc.0 ### Patch Changes diff --git a/packages/create-medusa-app/package.json b/packages/create-medusa-app/package.json index c0fab530f1..4a41aa673f 100644 --- a/packages/create-medusa-app/package.json +++ b/packages/create-medusa-app/package.json @@ -1,6 +1,6 @@ { "name": "create-medusa-app", - "version": "0.0.10-rc.0", + "version": "0.0.10", "main": "dist/index.js", "bin": "cli.js", "license": "MIT", diff --git a/packages/event-bus-local/CHANGELOG.md b/packages/event-bus-local/CHANGELOG.md index 8f1752ed24..18143ec9a9 100644 --- a/packages/event-bus-local/CHANGELOG.md +++ b/packages/event-bus-local/CHANGELOG.md @@ -1,5 +1,23 @@ # @medusajs/event-bus-local +## 1.8.0 + +### Minor Changes + +- [#2599](https://github.com/medusajs/medusa/pull/2599) [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa,event-bus-local,event-bus-redis): Event Bus module (Redis + Local) + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3575](https://github.com/medusajs/medusa/pull/3575) [`4a7bdc917`](https://github.com/medusajs/medusa/commit/4a7bdc917ac17d1f8e0749c033f8816ecb0c10b5) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(event-bus-local): Error handling + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + - @medusajs/utils@1.8.0 + ## 1.8.0-rc.4 ### Patch Changes diff --git a/packages/event-bus-local/package.json b/packages/event-bus-local/package.json index 0b1b205d2b..fe19de4235 100644 --- a/packages/event-bus-local/package.json +++ b/packages/event-bus-local/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/event-bus-local", - "version": "1.8.0-rc.4", + "version": "1.8.0", "description": "Local Event Bus Module for Medusa", "main": "dist/index.js", "files": [ @@ -17,7 +17,7 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.2", "ts-jest": "^25.5.1", @@ -31,7 +31,7 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2" + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0" } } diff --git a/packages/event-bus-redis/CHANGELOG.md b/packages/event-bus-redis/CHANGELOG.md index 7c9762b6d6..512bedf5fe 100644 --- a/packages/event-bus-redis/CHANGELOG.md +++ b/packages/event-bus-redis/CHANGELOG.md @@ -1,5 +1,21 @@ # @medusajs/event-bus-redis +## 1.8.0 + +### Minor Changes + +- [#2599](https://github.com/medusajs/medusa/pull/2599) [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa,event-bus-local,event-bus-redis): Event Bus module (Redis + Local) + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + - @medusajs/utils@1.8.0 + ## 1.8.0-rc.4 ### Patch Changes diff --git a/packages/event-bus-redis/package.json b/packages/event-bus-redis/package.json index de4c56151d..87190e1ff4 100644 --- a/packages/event-bus-redis/package.json +++ b/packages/event-bus-redis/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/event-bus-redis", - "version": "1.8.0-rc.4", + "version": "1.8.0", "description": "Redis Event Bus Module for Medusa", "main": "dist/index.js", "files": [ @@ -17,10 +17,10 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.2", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-test-utils": "^1.1.40", "ts-jest": "^25.5.1", "typescript": "^4.4.4" }, @@ -32,8 +32,8 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0", "awilix": "^8.0.0", "bullmq": "^3.5.6", "ioredis": "^5.2.5" diff --git a/packages/generated/client-types/CHANGELOG.md b/packages/generated/client-types/CHANGELOG.md index 8a37be5adb..8687d7a146 100644 --- a/packages/generated/client-types/CHANGELOG.md +++ b/packages/generated/client-types/CHANGELOG.md @@ -1,5 +1,23 @@ # @medusajs/client-types +## 0.2.0 + +### Minor Changes + +- [#3477](https://github.com/medusajs/medusa/pull/3477) [`826d4bedf`](https://github.com/medusajs/medusa/commit/826d4bedfe1b6459163711d5173eb8eadfdea26e) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen,types): SetRelation on expanded types + +### Patch Changes + +- [#3483](https://github.com/medusajs/medusa/pull/3483) [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): declare x-expanded-relations - Admin + +- [#3482](https://github.com/medusajs/medusa/pull/3482) [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): declare x-expanded-relations - Store + +- [#3492](https://github.com/medusajs/medusa/pull/3492) [`e6e529152`](https://github.com/medusajs/medusa/commit/e6e529152792e63a71664fb88567276a820e9908) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen): commit generated client types to codebase + +- [#3452](https://github.com/medusajs/medusa/pull/3452) [`55febef7f`](https://github.com/medusajs/medusa/commit/55febef7f1e74a07e76039d1ffbcb721c08adeb2) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(types): package scaffolding for generated types + +- [#3478](https://github.com/medusajs/medusa/pull/3478) [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas,js,react): use AdminExtendedStoresRes instead of AdminStoresRes + ## 0.2.0-rc.0 ### Minor Changes diff --git a/packages/generated/client-types/package.json b/packages/generated/client-types/package.json index 4627fdd5f5..2dc060cc27 100644 --- a/packages/generated/client-types/package.json +++ b/packages/generated/client-types/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/client-types", - "version": "0.2.0-rc.0", + "version": "0.2.0", "description": "Client types for Medusa Commerce Rest API", "main": "dist/index.js", "files": [ @@ -24,7 +24,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.8", + "@medusajs/medusa-oas-cli": "0.2.0", "cross-env": "^7.0.3", "execa": "^5.1.1", "jest": "^27.4.7", diff --git a/packages/inventory/CHANGELOG.md b/packages/inventory/CHANGELOG.md index 5c7eed97ee..39b9d489fd 100644 --- a/packages/inventory/CHANGELOG.md +++ b/packages/inventory/CHANGELOG.md @@ -1,5 +1,57 @@ # @medusajs/inventory +## 1.8.0 + +### Minor Changes + +- [#3329](https://github.com/medusajs/medusa/pull/3329) [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Inventory and Stock location modules supporting isolated connection + +### Patch Changes + +- [#3319](https://github.com/medusajs/medusa/pull/3319) [`08c8aa46c`](https://github.com/medusajs/medusa/commit/08c8aa46c55453cf741a97d06547ae85fee6e985) Thanks [@pKorsholm](https://github.com/pKorsholm)! - List inventory items based on locations + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3352](https://github.com/medusajs/medusa/pull/3352) [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - feat(medusa): Modules initializer + + ### Loading modules in a project + + Example + + ```typescript + import { + InventoryServiceInitializeOptions, + initialize, + } from "@medusajs/inventory" + + const options: InventoryServiceInitializeOptions = { + database: { + type: "postgres", + url: DB_URL, + }, + } + + const inventoryService = await initialize(options) + const newInventoryItem = await inventoryService.createInventoryItem({ + sku: "sku_123", + }) + ``` + +- [#3460](https://github.com/medusajs/medusa/pull/3460) [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(inventory, medusa): ensure no orphaned reservations and invenotry levels on location removal + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + - @medusajs/utils@1.8.0 + ## 1.8.0-rc.4 ### Patch Changes diff --git a/packages/inventory/package.json b/packages/inventory/package.json index 28339c0135..66cabe52c1 100644 --- a/packages/inventory/package.json +++ b/packages/inventory/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/inventory", - "version": "1.8.0-rc.4", + "version": "1.8.0", "description": "Inventory Module for Medusa", "main": "dist/index.js", "repository": { @@ -17,15 +17,15 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", "ts-jest": "^25.5.1", "typescript": "^4.4.4" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0", "awilix": "^8.0.0", "typeorm": "^0.3.11" }, diff --git a/packages/medusa-cli/CHANGELOG.md b/packages/medusa-cli/CHANGELOG.md index 1549221519..fcbae5a415 100644 --- a/packages/medusa-cli/CHANGELOG.md +++ b/packages/medusa-cli/CHANGELOG.md @@ -1,5 +1,17 @@ # Change Log +## 1.3.9 + +### Patch Changes + +- [#3688](https://github.com/medusajs/medusa/pull/3688) [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore(medusa-cli): Add missing utils dep + +- [#3603](https://github.com/medusajs/medusa/pull/3603) [`cd54c7dca`](https://github.com/medusajs/medusa/commit/cd54c7dca9f7444dd2bfa91b4e3e3359dc6658cf) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - fix(medusa-cli): Add direct dependency of `semver` + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - medusa-core-utils@1.2.0 + - @medusajs/utils@1.8.0 + ## 1.3.9-rc.2 ### Patch Changes diff --git a/packages/medusa-cli/package.json b/packages/medusa-cli/package.json index 5fea73be24..e410516e2c 100644 --- a/packages/medusa-cli/package.json +++ b/packages/medusa-cli/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-cli", - "version": "1.3.9-rc.2", + "version": "1.3.9", "description": "Command Line interface for Medusa Commerce", "main": "dist/index.js", "bin": { @@ -36,7 +36,7 @@ "jest": "^25.5.4" }, "dependencies": { - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/utils": "1.8.0", "axios": "^0.21.4", "chalk": "^4.0.0", "configstore": "5.0.1", @@ -49,7 +49,7 @@ "inquirer": "^8.0.0", "is-valid-path": "^0.1.1", "meant": "^1.0.3", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "medusa-telemetry": "0.0.16", "open": "^8.0.6", "ora": "^5.4.1", diff --git a/packages/medusa-core-utils/CHANGELOG.md b/packages/medusa-core-utils/CHANGELOG.md index 871e9348fd..542e1e0d7f 100644 --- a/packages/medusa-core-utils/CHANGELOG.md +++ b/packages/medusa-core-utils/CHANGELOG.md @@ -1,5 +1,45 @@ # Change Log +## 1.2.0 + +### Minor Changes + +- [#3408](https://github.com/medusajs/medusa/pull/3408) [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Http Server Graceful Shutdown + +- [#3329](https://github.com/medusajs/medusa/pull/3329) [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Inventory and Stock location modules supporting isolated connection + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3352](https://github.com/medusajs/medusa/pull/3352) [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - feat(medusa): Modules initializer + + ### Loading modules in a project + + Example + + ```typescript + import { + InventoryServiceInitializeOptions, + initialize, + } from "@medusajs/inventory" + + const options: InventoryServiceInitializeOptions = { + database: { + type: "postgres", + url: DB_URL, + }, + } + + const inventoryService = await initialize(options) + const newInventoryItem = await inventoryService.createInventoryItem({ + sku: "sku_123", + }) + ``` + ## 1.2.0-rc.0 ### Minor Changes diff --git a/packages/medusa-core-utils/package.json b/packages/medusa-core-utils/package.json index 9b741deda3..c7069c9e69 100644 --- a/packages/medusa-core-utils/package.json +++ b/packages/medusa-core-utils/package.json @@ -1,6 +1,6 @@ { "name": "medusa-core-utils", - "version": "1.2.0-rc.0", + "version": "1.2.0", "description": "Core utils for Medusa", "main": "dist/index.js", "repository": { diff --git a/packages/medusa-dev-cli/CHANGELOG.md b/packages/medusa-dev-cli/CHANGELOG.md index 475ba14b89..c4284b7dbe 100644 --- a/packages/medusa-dev-cli/CHANGELOG.md +++ b/packages/medusa-dev-cli/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## 0.0.31 + +### Patch Changes + +- [#3293](https://github.com/medusajs/medusa/pull/3293) [`e8e7d7bb5`](https://github.com/medusajs/medusa/commit/e8e7d7bb5355877b3d0b85a079b6b57cfe7391c9) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(medusa-dev): include packages/ subdirectories in discovery + ## 0.0.31-rc.0 ### Patch Changes diff --git a/packages/medusa-dev-cli/package.json b/packages/medusa-dev-cli/package.json index 8a68a8c4c7..3ce690a21a 100644 --- a/packages/medusa-dev-cli/package.json +++ b/packages/medusa-dev-cli/package.json @@ -1,7 +1,7 @@ { "name": "medusa-dev-cli", "description": "CLI helpers for contributors working on Medusa", - "version": "0.0.31-rc.0", + "version": "0.0.31", "author": "Sebastian Rindom ", "bin": { "medusa-dev": "./dist/index.js" diff --git a/packages/medusa-file-minio/CHANGELOG.md b/packages/medusa-file-minio/CHANGELOG.md index ecceb68d99..4efff0c007 100644 --- a/packages/medusa-file-minio/CHANGELOG.md +++ b/packages/medusa-file-minio/CHANGELOG.md @@ -1,5 +1,17 @@ # Change Log +## 1.1.6 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.1.6-rc.0 ### Patch Changes diff --git a/packages/medusa-file-minio/package.json b/packages/medusa-file-minio/package.json index 9fad93d5a0..82e70ed13a 100644 --- a/packages/medusa-file-minio/package.json +++ b/packages/medusa-file-minio/package.json @@ -1,6 +1,6 @@ { "name": "medusa-file-minio", - "version": "1.1.6-rc.0", + "version": "1.1.6", "description": "MinIO server file connector for Medusa", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "build": "babel src --out-dir dist/ --ignore '**/__tests__','**/__mocks__'", @@ -32,15 +32,15 @@ "test": "jest --passWithNoTests src" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.16.0", "aws-sdk": "^2.1043.0", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "3bbd1e8507e00bc471de6ae3c30207999a4a4011", "keywords": [ diff --git a/packages/medusa-file-s3/CHANGELOG.md b/packages/medusa-file-s3/CHANGELOG.md index 814110d309..ce402cf7d7 100644 --- a/packages/medusa-file-s3/CHANGELOG.md +++ b/packages/medusa-file-s3/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log +## 1.1.12 + +### Patch Changes + +- [#3260](https://github.com/medusajs/medusa/pull/3260) [`13c200ad2`](https://github.com/medusajs/medusa/commit/13c200ad2f394734a126ea8920840a70e61401f7) Thanks [@pevey](https://github.com/pevey)! - fix(medusa-file-s3): update s3 file service to reuse one s3 client + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.1.12-rc.0 ### Patch Changes diff --git a/packages/medusa-file-s3/package.json b/packages/medusa-file-s3/package.json index c5d01fbd0e..7b35cad9b5 100644 --- a/packages/medusa-file-s3/package.json +++ b/packages/medusa-file-s3/package.json @@ -1,6 +1,6 @@ { "name": "medusa-file-s3", - "version": "1.1.12-rc.0", + "version": "1.1.12", "description": "AWS s3 file connector for Medusa", "main": "index.js", "repository": { @@ -23,8 +23,8 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -33,15 +33,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.15.4", "aws-sdk": "^2.983.0", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808", "keywords": [ diff --git a/packages/medusa-file-spaces/CHANGELOG.md b/packages/medusa-file-spaces/CHANGELOG.md index b9924b894a..f3007bfeca 100644 --- a/packages/medusa-file-spaces/CHANGELOG.md +++ b/packages/medusa-file-spaces/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.3.6 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.3.6-rc.0 ### Patch Changes diff --git a/packages/medusa-file-spaces/package.json b/packages/medusa-file-spaces/package.json index f63b84e957..ec6a422763 100644 --- a/packages/medusa-file-spaces/package.json +++ b/packages/medusa-file-spaces/package.json @@ -1,6 +1,6 @@ { "name": "medusa-file-spaces", - "version": "1.3.6-rc.0", + "version": "1.3.6", "description": "Digital Ocean Spaces file connector for Medusa", "main": "index.js", "repository": { @@ -23,8 +23,8 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -33,15 +33,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "aws-sdk": "^2.710.0", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "stripe": "^8.50.0" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808", diff --git a/packages/medusa-fulfillment-manual/CHANGELOG.md b/packages/medusa-fulfillment-manual/CHANGELOG.md index c61e8b4c78..f12cbcd5a7 100644 --- a/packages/medusa-fulfillment-manual/CHANGELOG.md +++ b/packages/medusa-fulfillment-manual/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.1.37 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 1.1.37-rc.0 ### Patch Changes diff --git a/packages/medusa-fulfillment-manual/package.json b/packages/medusa-fulfillment-manual/package.json index 6741788d66..fd384fb20c 100644 --- a/packages/medusa-fulfillment-manual/package.json +++ b/packages/medusa-fulfillment-manual/package.json @@ -1,6 +1,6 @@ { "name": "medusa-fulfillment-manual", - "version": "1.1.37-rc.0", + "version": "1.1.37", "description": "A manual fulfillment provider for Medusa", "main": "index.js", "repository": { @@ -20,7 +20,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "test": "jest --passWithNoTests src", @@ -29,14 +29,14 @@ "prepare": "cross-env NODE_ENV=production yarn run build" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "@babel/plugin-transform-instanceof": "^7.8.3", "@babel/runtime": "^7.7.6", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0" + "medusa-core-utils": "^1.2.0" }, "gitHead": "7770046479c361f375842a8605b15e5d7bc24624", "keywords": [ diff --git a/packages/medusa-fulfillment-webshipper/CHANGELOG.md b/packages/medusa-fulfillment-webshipper/CHANGELOG.md index 0a01d41dc3..cc61731a6f 100644 --- a/packages/medusa-fulfillment-webshipper/CHANGELOG.md +++ b/packages/medusa-fulfillment-webshipper/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 1.3.8 + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 1.3.8-rc.1 ### Patch Changes diff --git a/packages/medusa-fulfillment-webshipper/package.json b/packages/medusa-fulfillment-webshipper/package.json index f024193a47..b2bea691cd 100644 --- a/packages/medusa-fulfillment-webshipper/package.json +++ b/packages/medusa-fulfillment-webshipper/package.json @@ -1,6 +1,6 @@ { "name": "medusa-fulfillment-webshipper", - "version": "1.3.8-rc.1", + "version": "1.3.8", "description": "Webshipper Fulfillment provider for Medusa", "main": "index.js", "repository": { @@ -18,11 +18,11 @@ "@babel/plugin-transform-runtime": "^7.7.6", "@babel/preset-env": "^7.7.5", "@babel/runtime": "^7.9.6", - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -31,14 +31,14 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "axios": "^0.20.0", "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0" + "medusa-core-utils": "^1.2.0" }, "gitHead": "7770046479c361f375842a8605b15e5d7bc24624", "keywords": [ diff --git a/packages/medusa-interfaces/CHANGELOG.md b/packages/medusa-interfaces/CHANGELOG.md index 4e38443354..b4f615e2ae 100644 --- a/packages/medusa-interfaces/CHANGELOG.md +++ b/packages/medusa-interfaces/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.3.7 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + ## 1.3.7-rc.0 ### Patch Changes diff --git a/packages/medusa-interfaces/package.json b/packages/medusa-interfaces/package.json index a1e4300c76..abd8fe277a 100644 --- a/packages/medusa-interfaces/package.json +++ b/packages/medusa-interfaces/package.json @@ -1,6 +1,6 @@ { "name": "medusa-interfaces", - "version": "1.3.7-rc.0", + "version": "1.3.7", "description": "Core interfaces for Medusa", "main": "dist/index.js", "repository": { @@ -31,8 +31,8 @@ "@babel/runtime": "^7.9.6", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "typescript": "^4.4.4" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e" diff --git a/packages/medusa-js/CHANGELOG.md b/packages/medusa-js/CHANGELOG.md index c2564df0fd..1c0f0f0dce 100644 --- a/packages/medusa-js/CHANGELOG.md +++ b/packages/medusa-js/CHANGELOG.md @@ -1,5 +1,31 @@ # Change Log +## 2.0.0 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3435](https://github.com/medusajs/medusa/pull/3435) [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Add create-inventory-item endpoint + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3436](https://github.com/medusajs/medusa/pull/3436) [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, medusa-js, medusa-react): Add store queries to react medusa + +- [#3110](https://github.com/medusajs/medusa/pull/3110) [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(medusa,medusa-js,medusa-react): Add inventory module endpoints + +- [#3478](https://github.com/medusajs/medusa/pull/3478) [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas,js,react): use AdminExtendedStoresRes instead of AdminStoresRes + +- [#3288](https://github.com/medusajs/medusa/pull/3288) [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas): fix paths and fix schema names to match convention + +- [#3474](https://github.com/medusajs/medusa/pull/3474) [`02c77d705`](https://github.com/medusajs/medusa/commit/02c77d7059b7e4cb9f6ebfa8cbec2b84e86118ec) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(medusa): Adjust reservations correctly + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + ## 2.0.0-rc.8 ### Patch Changes diff --git a/packages/medusa-js/package.json b/packages/medusa-js/package.json index b4587de81a..889ed8bdc7 100644 --- a/packages/medusa-js/package.json +++ b/packages/medusa-js/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-js", - "version": "2.0.0-rc.8", + "version": "2.0.0", "description": "Client for Medusa Commerce Rest API", "main": "dist/index.js", "module": "dist/index.mjs", @@ -32,7 +32,7 @@ "uuid": "^9.0.0" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8" + "@medusajs/medusa": "1.8.0" }, "repository": { "type": "git", @@ -43,7 +43,7 @@ "url": "https://github.com/medusajs/medusa/issues" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "@types/uuid": "^9.0.0", "cross-env": "^7.0.3", "jest": "^27.4.7", diff --git a/packages/medusa-payment-adyen/CHANGELOG.md b/packages/medusa-payment-adyen/CHANGELOG.md index bb91c5ea10..08ec5445b4 100644 --- a/packages/medusa-payment-adyen/CHANGELOG.md +++ b/packages/medusa-payment-adyen/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.1.44 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 1.1.44-rc.0 ### Patch Changes diff --git a/packages/medusa-payment-adyen/package.json b/packages/medusa-payment-adyen/package.json index d37f413e57..4ed3e879db 100644 --- a/packages/medusa-payment-adyen/package.json +++ b/packages/medusa-payment-adyen/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-adyen", - "version": "1.1.44-rc.0", + "version": "1.1.44", "description": "Adyen Payment provider for Medusa Commerce", "main": "index.js", "repository": { @@ -23,8 +23,8 @@ "client-sessions": "^0.8.0", "cross-env": "^7.0.3", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -33,7 +33,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@adyen/api-library": "^5.0.1", @@ -42,7 +42,7 @@ "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0" + "medusa-core-utils": "^1.2.0" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808", "keywords": [ diff --git a/packages/medusa-payment-klarna/CHANGELOG.md b/packages/medusa-payment-klarna/CHANGELOG.md index 7b8755d0ce..3ad6c81729 100644 --- a/packages/medusa-payment-klarna/CHANGELOG.md +++ b/packages/medusa-payment-klarna/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.3.9 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.3.9-rc.0 ### Patch Changes diff --git a/packages/medusa-payment-klarna/package.json b/packages/medusa-payment-klarna/package.json index a402f1f755..94859bd23a 100644 --- a/packages/medusa-payment-klarna/package.json +++ b/packages/medusa-payment-klarna/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-klarna", - "version": "1.3.9-rc.0", + "version": "1.3.9", "description": "Klarna Payment provider for Medusa Commerce", "main": "index.js", "repository": { @@ -24,7 +24,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -33,15 +33,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "axios": "^0.21.4", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-payment-manual/CHANGELOG.md b/packages/medusa-payment-manual/CHANGELOG.md index 7e37ab3044..77b3a8e1d7 100644 --- a/packages/medusa-payment-manual/CHANGELOG.md +++ b/packages/medusa-payment-manual/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 1.0.23 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724)]: + - medusa-interfaces@1.3.7 + ## 1.0.23-rc.0 ### Patch Changes diff --git a/packages/medusa-payment-manual/package.json b/packages/medusa-payment-manual/package.json index 93ebb418dd..952b147be5 100644 --- a/packages/medusa-payment-manual/package.json +++ b/packages/medusa-payment-manual/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-manual", - "version": "1.0.23-rc.0", + "version": "1.0.23", "description": "A dummy payment provider to be used for testing or manual payments", "main": "index.js", "repository": { @@ -24,8 +24,8 @@ "@babel/runtime": "^7.9.6", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -34,7 +34,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808", "keywords": [ diff --git a/packages/medusa-payment-paypal/CHANGELOG.md b/packages/medusa-payment-paypal/CHANGELOG.md index 98203052b2..690b3800bc 100644 --- a/packages/medusa-payment-paypal/CHANGELOG.md +++ b/packages/medusa-payment-paypal/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log +## 2.0.0 + +### Minor Changes + +- [#3257](https://github.com/medusajs/medusa/pull/3257) [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-stripe): Implement payment processor API on stripe plugin and fix web hook issues + +### Patch Changes + +- [#3414](https://github.com/medusajs/medusa/pull/3414) [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-paypal): Migrate to the new payment processor API + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + - medusa-core-utils@1.2.0 + ## 2.0.0-rc.8 ### Patch Changes diff --git a/packages/medusa-payment-paypal/package.json b/packages/medusa-payment-paypal/package.json index 03dab96f9c..21dd98ddfc 100644 --- a/packages/medusa-payment-paypal/package.json +++ b/packages/medusa-payment-paypal/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-paypal", - "version": "2.0.0-rc.8", + "version": "2.0.0", "description": "Paypal Payment provider for Medusa Commerce", "main": "dist/index.js", "repository": { @@ -20,21 +20,21 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.4.4" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8" + "@medusajs/medusa": "1.8.0" }, "dependencies": { "@paypal/checkout-server-sdk": "^1.0.3", "axios": "^1.3.4", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0" + "medusa-core-utils": "^1.2.0" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-payment-stripe/CHANGELOG.md b/packages/medusa-payment-stripe/CHANGELOG.md index 34024ad9d2..573f01446d 100644 --- a/packages/medusa-payment-stripe/CHANGELOG.md +++ b/packages/medusa-payment-stripe/CHANGELOG.md @@ -1,5 +1,28 @@ # Change Log +## 2.0.0 + +### Minor Changes + +- [#3257](https://github.com/medusajs/medusa/pull/3257) [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-stripe): Implement payment processor API on stripe plugin and fix web hook issues + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3414](https://github.com/medusajs/medusa/pull/3414) [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-paypal): Migrate to the new payment processor API + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3371](https://github.com/medusajs/medusa/pull/3371) [`5d809a7a3`](https://github.com/medusajs/medusa/commit/5d809a7a392866e7c05225ba8b24df94e4b7e95e) Thanks [@pKorsholm](https://github.com/pKorsholm)! - add typescript dev dependency + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + - medusa-core-utils@1.2.0 + ## 2.0.0-rc.8 ### Patch Changes diff --git a/packages/medusa-payment-stripe/package.json b/packages/medusa-payment-stripe/package.json index 1e101f5d3d..0d6013845c 100644 --- a/packages/medusa-payment-stripe/package.json +++ b/packages/medusa-payment-stripe/package.json @@ -1,6 +1,6 @@ { "name": "medusa-payment-stripe", - "version": "2.0.0-rc.8", + "version": "2.0.0", "description": "Stripe Payment provider for Meduas Commerce", "main": "dist/index.js", "repository": { @@ -20,19 +20,19 @@ "watch": "tsc --watch" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "@types/stripe": "^8.0.417", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.9.5" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8" + "@medusajs/medusa": "1.8.0" }, "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "stripe": "^11.10.0" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808", diff --git a/packages/medusa-plugin-algolia/CHANGELOG.md b/packages/medusa-plugin-algolia/CHANGELOG.md index 09fa4e6b65..60b1b335e0 100644 --- a/packages/medusa-plugin-algolia/CHANGELOG.md +++ b/packages/medusa-plugin-algolia/CHANGELOG.md @@ -1,5 +1,22 @@ # Change Log +## 0.2.10 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3510](https://github.com/medusajs/medusa/pull/3510) [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-algolia): Revamp Algolia search plugin + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + - @medusajs/utils@1.8.0 + ## 0.2.10-rc.3 ### Patch Changes diff --git a/packages/medusa-plugin-algolia/package.json b/packages/medusa-plugin-algolia/package.json index 60941abb37..59274f3d8d 100644 --- a/packages/medusa-plugin-algolia/package.json +++ b/packages/medusa-plugin-algolia/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-algolia", - "version": "0.2.10-rc.3", + "version": "0.2.10", "description": "Algolia search plugin for Medusa", "repository": { "type": "git", @@ -19,12 +19,12 @@ "watch": "tsc --watch" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0", "algoliasearch": "^4.15.0" }, "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/packages/medusa-plugin-brightpearl/CHANGELOG.md b/packages/medusa-plugin-brightpearl/CHANGELOG.md index dbea223b62..0a12114c25 100644 --- a/packages/medusa-plugin-brightpearl/CHANGELOG.md +++ b/packages/medusa-plugin-brightpearl/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.3.7 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 1.3.7-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-brightpearl/package.json b/packages/medusa-plugin-brightpearl/package.json index 2924cb4eca..670d42e535 100644 --- a/packages/medusa-plugin-brightpearl/package.json +++ b/packages/medusa-plugin-brightpearl/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-brightpearl", - "version": "1.3.7-rc.0", + "version": "1.3.7", "description": "Brightpearl plugin for Medusa Commerce", "main": "index.js", "repository": { @@ -26,8 +26,8 @@ "client-sessions": "^0.8.0", "cross-env": "^7.0.3", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -36,13 +36,13 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "axios": "^0.19.2", "axios-rate-limit": "^1.2.1", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "randomatic": "^3.1.1" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", diff --git a/packages/medusa-plugin-contentful/CHANGELOG.md b/packages/medusa-plugin-contentful/CHANGELOG.md index bb02bd98c2..2802e84d14 100644 --- a/packages/medusa-plugin-contentful/CHANGELOG.md +++ b/packages/medusa-plugin-contentful/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log +## 1.2.8 + +### Patch Changes + +- [#3187](https://github.com/medusajs/medusa/pull/3187) [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7) Thanks [@fPolic](https://github.com/fPolic)! - feat(medusa, cache-redis, cache-inmemory): Added cache modules + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.2.8-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-contentful/package.json b/packages/medusa-plugin-contentful/package.json index 1f553e7e5c..16c23a2536 100644 --- a/packages/medusa-plugin-contentful/package.json +++ b/packages/medusa-plugin-contentful/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-contentful", - "version": "1.2.8-rc.0", + "version": "1.2.8", "description": "Contentful plugin for Medusa Commerce", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,15 +32,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "body-parser": "^1.19.0", "contentful-management": "^5.27.1", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "redis": "^3.0.2" }, "gitHead": "3bbd1e8507e00bc471de6ae3c30207999a4a4011", diff --git a/packages/medusa-plugin-discount-generator/CHANGELOG.md b/packages/medusa-plugin-discount-generator/CHANGELOG.md index 41d255f05d..4191df0da0 100644 --- a/packages/medusa-plugin-discount-generator/CHANGELOG.md +++ b/packages/medusa-plugin-discount-generator/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 1.1.25 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 1.1.25-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-discount-generator/package.json b/packages/medusa-plugin-discount-generator/package.json index 0d0e516f24..6d82085f65 100644 --- a/packages/medusa-plugin-discount-generator/package.json +++ b/packages/medusa-plugin-discount-generator/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-discount-generator", - "version": "1.1.25-rc.0", + "version": "1.1.25", "main": "index.js", "license": "MIT", "author": "Sebastian Rindom", @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,12 +32,12 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "randomatic": "^3.1.1" }, "gitHead": "41a5425405aea5045a26def95c0dc00cf4a5a44d" diff --git a/packages/medusa-plugin-economic/CHANGELOG.md b/packages/medusa-plugin-economic/CHANGELOG.md index 8fd17b5cfa..6794b0653b 100644 --- a/packages/medusa-plugin-economic/CHANGELOG.md +++ b/packages/medusa-plugin-economic/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.1.43 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.1.43-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-economic/package.json b/packages/medusa-plugin-economic/package.json index 4b33c0a661..482b6379c1 100644 --- a/packages/medusa-plugin-economic/package.json +++ b/packages/medusa-plugin-economic/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-economic", - "version": "1.1.43-rc.0", + "version": "1.1.43", "description": "E-conomic financial reporting", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,15 +32,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "axios": "^0.19.2", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "moment": "^2.27.0" }, "gitHead": "3bbd1e8507e00bc471de6ae3c30207999a4a4011" diff --git a/packages/medusa-plugin-ip-lookup/CHANGELOG.md b/packages/medusa-plugin-ip-lookup/CHANGELOG.md index 1fa368e1f6..e44818ac72 100644 --- a/packages/medusa-plugin-ip-lookup/CHANGELOG.md +++ b/packages/medusa-plugin-ip-lookup/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 1.2.6 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724)]: + - medusa-interfaces@1.3.7 + ## 1.2.6-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-ip-lookup/package.json b/packages/medusa-plugin-ip-lookup/package.json index 2a213e23d0..ebb103f1df 100644 --- a/packages/medusa-plugin-ip-lookup/package.json +++ b/packages/medusa-plugin-ip-lookup/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-ip-lookup", - "version": "1.2.6-rc.0", + "version": "1.2.6", "description": "IP lookup middleware for Medusa core", "main": "dist/index.js", "repository": { @@ -27,10 +27,10 @@ "@babel/runtime": "^7.7.6", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "axios": "^0.20.0" diff --git a/packages/medusa-plugin-mailchimp/CHANGELOG.md b/packages/medusa-plugin-mailchimp/CHANGELOG.md index c5343ed007..92b25649c8 100644 --- a/packages/medusa-plugin-mailchimp/CHANGELOG.md +++ b/packages/medusa-plugin-mailchimp/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.1.47 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.1.47-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-mailchimp/package.json b/packages/medusa-plugin-mailchimp/package.json index 16bf9e61ff..f367024880 100644 --- a/packages/medusa-plugin-mailchimp/package.json +++ b/packages/medusa-plugin-mailchimp/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-mailchimp", - "version": "1.1.47-rc.0", + "version": "1.1.47", "description": "Mailchimp newsletter subscriptions", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,7 +32,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", @@ -40,8 +40,8 @@ "cors": "^2.8.5", "express": "^4.17.1", "mailchimp-api-v3": "^1.14.0", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-plugin-meilisearch/CHANGELOG.md b/packages/medusa-plugin-meilisearch/CHANGELOG.md index c87297ff0b..0cc7eb4025 100644 --- a/packages/medusa-plugin-meilisearch/CHANGELOG.md +++ b/packages/medusa-plugin-meilisearch/CHANGELOG.md @@ -1,5 +1,85 @@ # Change Log +## 2.0.0 + +### Major Changes + +- [#3377](https://github.com/medusajs/medusa/pull/3377) [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-meilisearch): Update + improve Meilisearch plugin + + **What** + + - Bumps `meilisearch` dep to latest major + - Migrates plugin to TypeScript + - Changes the way indexes are configured in `medusa-config.js`: + + **Before** + + ``` + { + resolve: `medusa-plugin-meilisearch`, + options: { + config: { host: "...", apiKey: "..." }, + settings: { + products: { + searchableAttributes: ["title"], + displayedAttributes: ["title"], + }, + }, + }, + }, + ``` + + **After** + + ``` + { + resolve: `medusa-plugin-meilisearch`, + options: { + config: { host: "...", apiKey: "..." }, + settings: { + products: { + **indexSettings**: { + searchableAttributes: ["title"], + displayedAttributes: ["title"], + }, + }, + }, + }, + }, + ``` + + This is done to allow for additional configuration of indexes, that are not necessarily passed on query-time. + + We introduce two new settings: + + ``` + settings: { + products: { + indexSettings: { + searchableAttributes: ["title"], + displayedAttributes: ["title"],, + }, + primaryKey: "id" + transformer: (document) => ({ id: "yo" }) + }, + }, + ``` + + Meilisearch changed their primary key inference in the major release. Now we must be explicit when multiple properties end with `id`. Read more in their [docs](https://docs.meilisearch.com/learn/core_concepts/primary_key.html#primary-field). + + The transformer allows developers to specify how their documents are stored in Meilisearch. It is configurable for each index. + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3510](https://github.com/medusajs/medusa/pull/3510) [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-algolia): Revamp Algolia search plugin + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/utils@1.8.0 + ## 2.0.0-rc.2 ### Patch Changes diff --git a/packages/medusa-plugin-meilisearch/package.json b/packages/medusa-plugin-meilisearch/package.json index f02d045ff4..31e114ad76 100644 --- a/packages/medusa-plugin-meilisearch/package.json +++ b/packages/medusa-plugin-meilisearch/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-meilisearch", - "version": "2.0.0-rc.2", + "version": "2.0.0", "description": "Meilisearch search plugin for Medusa", "repository": { "type": "git", @@ -19,14 +19,14 @@ "watch": "tsc --watch" }, "dependencies": { - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/utils": "1.8.0", "body-parser": "^1.19.0", "lodash": "^4.17.21", "meilisearch": "^0.31.1" }, "devDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/medusa": "1.8.0", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", "typescript": "^4.9.5" diff --git a/packages/medusa-plugin-restock-notification/CHANGELOG.md b/packages/medusa-plugin-restock-notification/CHANGELOG.md index a1ceb9d950..496527a212 100644 --- a/packages/medusa-plugin-restock-notification/CHANGELOG.md +++ b/packages/medusa-plugin-restock-notification/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 3.0.0 + +### Patch Changes + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + ## 3.0.0-rc.8 ### Patch Changes diff --git a/packages/medusa-plugin-restock-notification/package.json b/packages/medusa-plugin-restock-notification/package.json index 3cf88e8be8..9d6dd10180 100644 --- a/packages/medusa-plugin-restock-notification/package.json +++ b/packages/medusa-plugin-restock-notification/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-restock-notification", - "version": "3.0.0-rc.8", + "version": "3.0.0", "main": "index.js", "repository": { "type": "git", @@ -17,8 +17,8 @@ "babel-preset-medusa-package": "^1.1.19", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40", "pg": "^8.5.1", "ulid": "^2.3.0" }, @@ -29,14 +29,14 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", - "medusa-interfaces": "1.3.7-rc.0" + "@medusajs/medusa": "1.8.0", + "medusa-interfaces": "1.3.7" }, "dependencies": { "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0" + "medusa-core-utils": "^1.2.0" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-plugin-segment/CHANGELOG.md b/packages/medusa-plugin-segment/CHANGELOG.md index 1447d1356a..13d91955f9 100644 --- a/packages/medusa-plugin-segment/CHANGELOG.md +++ b/packages/medusa-plugin-segment/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.3.5 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.3.5-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-segment/package.json b/packages/medusa-plugin-segment/package.json index fb1499f5a4..732b7dd31a 100644 --- a/packages/medusa-plugin-segment/package.json +++ b/packages/medusa-plugin-segment/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-segment", - "version": "1.3.5-rc.0", + "version": "1.3.5", "description": "Segment Analytics", "main": "index.js", "repository": { @@ -24,7 +24,7 @@ "cross-env": "^5.2.1", "eslint": "^6.8.0", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -33,15 +33,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "analytics-node": "^3.4.0-beta.1", "axios": "^0.19.2", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-plugin-sendgrid/CHANGELOG.md b/packages/medusa-plugin-sendgrid/CHANGELOG.md index 691380d4e9..7bff3aea6e 100644 --- a/packages/medusa-plugin-sendgrid/CHANGELOG.md +++ b/packages/medusa-plugin-sendgrid/CHANGELOG.md @@ -1,5 +1,17 @@ # Change Log +## 1.3.8 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.3.8-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-sendgrid/package.json b/packages/medusa-plugin-sendgrid/package.json index 053ea45048..acbb8ce211 100644 --- a/packages/medusa-plugin-sendgrid/package.json +++ b/packages/medusa-plugin-sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-sendgrid", - "version": "1.3.8-rc.0", + "version": "1.3.8", "description": "SendGrid transactional emails", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,15 +32,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "@sendgrid/mail": "^7.1.1", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "3bbd1e8507e00bc471de6ae3c30207999a4a4011", "keywords": [ diff --git a/packages/medusa-plugin-slack-notification/CHANGELOG.md b/packages/medusa-plugin-slack-notification/CHANGELOG.md index edaffe8ebd..309c09c497 100644 --- a/packages/medusa-plugin-slack-notification/CHANGELOG.md +++ b/packages/medusa-plugin-slack-notification/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.3.9 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.3.9-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-slack-notification/package.json b/packages/medusa-plugin-slack-notification/package.json index 86c23bd02c..227b948098 100644 --- a/packages/medusa-plugin-slack-notification/package.json +++ b/packages/medusa-plugin-slack-notification/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-slack-notification", - "version": "1.3.9-rc.0", + "version": "1.3.9", "description": "Slack notifications", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "client-sessions": "^0.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,15 +32,15 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "axios": "^0.19.2", "body-parser": "^1.19.0", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "moment": "^2.27.0" }, "gitHead": "c46300d58fbfd0b2dc2c02745ae143e6247e885b", diff --git a/packages/medusa-plugin-twilio-sms/CHANGELOG.md b/packages/medusa-plugin-twilio-sms/CHANGELOG.md index 52e802f54e..c1fdbd1d08 100644 --- a/packages/medusa-plugin-twilio-sms/CHANGELOG.md +++ b/packages/medusa-plugin-twilio-sms/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.2.8 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.2.8-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-twilio-sms/package.json b/packages/medusa-plugin-twilio-sms/package.json index 99fc47f309..54616fe830 100644 --- a/packages/medusa-plugin-twilio-sms/package.json +++ b/packages/medusa-plugin-twilio-sms/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-twilio-sms", - "version": "1.2.8-rc.0", + "version": "1.2.8", "main": "index.js", "repository": { "type": "git", @@ -21,7 +21,7 @@ "@babel/runtime": "^7.9.6", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -30,13 +30,13 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", "body-parser": "^1.19.0", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40", "twilio": "^3.49.1" }, "gitHead": "c46300d58fbfd0b2dc2c02745ae143e6247e885b", diff --git a/packages/medusa-plugin-wishlist/CHANGELOG.md b/packages/medusa-plugin-wishlist/CHANGELOG.md index 47e178301a..35ee66b510 100644 --- a/packages/medusa-plugin-wishlist/CHANGELOG.md +++ b/packages/medusa-plugin-wishlist/CHANGELOG.md @@ -1,5 +1,14 @@ # Change Log +## 1.1.42 + +### Patch Changes + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.1.42-rc.0 ### Patch Changes diff --git a/packages/medusa-plugin-wishlist/package.json b/packages/medusa-plugin-wishlist/package.json index 0abe582f35..99ec966753 100644 --- a/packages/medusa-plugin-wishlist/package.json +++ b/packages/medusa-plugin-wishlist/package.json @@ -1,6 +1,6 @@ { "name": "medusa-plugin-wishlist", - "version": "1.1.42-rc.0", + "version": "1.1.42", "description": "Provides /customers/:id/wishlist to add items to a customr's wishlist", "main": "index.js", "repository": { @@ -23,7 +23,7 @@ "@babel/runtime": "^7.9.6", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "scripts": { "prepare": "cross-env NODE_ENV=production yarn run build", @@ -32,14 +32,14 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0" + "medusa-interfaces": "1.3.7" }, "dependencies": { "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-test-utils": "^1.1.40" }, "gitHead": "3bbd1e8507e00bc471de6ae3c30207999a4a4011", "keywords": [ diff --git a/packages/medusa-react/CHANGELOG.md b/packages/medusa-react/CHANGELOG.md index fa9def9e39..9a9d515f4e 100644 --- a/packages/medusa-react/CHANGELOG.md +++ b/packages/medusa-react/CHANGELOG.md @@ -1,5 +1,62 @@ # Change Log +## 5.0.0 + +### Minor Changes + +- [#3408](https://github.com/medusajs/medusa/pull/3408) [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Http Server Graceful Shutdown + +### Patch Changes + +- [#3689](https://github.com/medusajs/medusa/pull/3689) [`d06ab9299`](https://github.com/medusajs/medusa/commit/d06ab929946c9e3842dcf4299b2c7e4c85fcc116) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(react): export product-categories store hooks + +- [#3676](https://github.com/medusajs/medusa/pull/3676) [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - fix(admin-ui, medusa-react, medusa): Minor fixes to GC domain in admin UI. Also fixes GC update payload type in medusa-react and medusa. + +- [#3435](https://github.com/medusajs/medusa/pull/3435) [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Add create-inventory-item endpoint + +- [#3686](https://github.com/medusajs/medusa/pull/3686) [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa-react): Query key invalidation + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3436](https://github.com/medusajs/medusa/pull/3436) [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, medusa-js, medusa-react): Add store queries to react medusa + +- [#3110](https://github.com/medusajs/medusa/pull/3110) [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(medusa,medusa-js,medusa-react): Add inventory module endpoints + +- [#3419](https://github.com/medusajs/medusa/pull/3419) [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa-react): invalidate all reservations list queries + +- [#3416](https://github.com/medusajs/medusa/pull/3416) [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, admin-ui, medusa-react): Improvements to product categories + + - Adds name as required in category create form + - Adds name and handle as required in category edit form + - Updates message on create/update forms + - Adds category indicators for is_internal and is_active fields in the tree list + - Fixes bug where tree is not reset when update fails + - allow appending all category descendants with a param in list endpoint + - fix rank order changing on category update + - invalidate products query on category delete + - adds category ui for tree/list, edit, create, delete + - add product category queries and mutations + - category list API can return all descendant + - added breadcrumbs for categories on create/edit modal + - add empty state for product categories + - increase tree depth + scope categories on store + allow categories relation in products API + - categories can be ranked based on position + - seed command can create product categories + - hide categories in products behind feature flag + - fixes bug for mpath incorrectly updated for nested categories + +- [#3478](https://github.com/medusajs/medusa/pull/3478) [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas,js,react): use AdminExtendedStoresRes instead of AdminStoresRes + +- [#2599](https://github.com/medusajs/medusa/pull/2599) [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa,event-bus-local,event-bus-redis): Event Bus module (Redis + Local) + +- [#3406](https://github.com/medusajs/medusa/pull/3406) [`2d2727f75`](https://github.com/medusajs/medusa/commit/2d2727f753dd9386160d7e677b927c4915e1fce7) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(eslint): remove unused .eslintignore in medusa-react package + +- [#3401](https://github.com/medusajs/medusa/pull/3401) [`47d344076`](https://github.com/medusajs/medusa/commit/47d3440766efa26aba6638a05edec520a4e62828) Thanks [@riqwan](https://github.com/riqwan)! - feat(admin-ui, medusa-react): allow products to be categorized in product create/edit page + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`02c77d705`](https://github.com/medusajs/medusa/commit/02c77d7059b7e4cb9f6ebfa8cbec2b84e86118ec), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + - @medusajs/medusa-js@2.0.0 + ## 5.0.0-rc.8 ### Patch Changes diff --git a/packages/medusa-react/package.json b/packages/medusa-react/package.json index 3e8c57635f..07877962e8 100644 --- a/packages/medusa-react/package.json +++ b/packages/medusa-react/package.json @@ -1,5 +1,5 @@ { - "version": "5.0.0-rc.8", + "version": "5.0.0", "license": "MIT", "main": "dist/index.js", "module": "dist/index.mjs", @@ -25,7 +25,7 @@ "test": "echo \"Tests disabled temporarily\"" }, "peerDependencies": { - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "@tanstack/react-query": "^4.22.0", "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" @@ -34,7 +34,7 @@ "author": "Zakaria S. El Asri", "devDependencies": { "@babel/core": "^7.16.0", - "@medusajs/medusa": "1.8.0-rc.8", + "@medusajs/medusa": "1.8.0", "@storybook/addon-essentials": "^6.3.12", "@storybook/addon-links": "^6.3.12", "@storybook/addons": "^6.3.12", @@ -61,7 +61,7 @@ "tsup": "^6.5.0" }, "dependencies": { - "@medusajs/medusa-js": "2.0.0-rc.8" + "@medusajs/medusa-js": "2.0.0" }, "msw": { "workerDirectory": "public" diff --git a/packages/medusa-source-shopify/CHANGELOG.md b/packages/medusa-source-shopify/CHANGELOG.md index dedad25cc5..05b49cc4b2 100644 --- a/packages/medusa-source-shopify/CHANGELOG.md +++ b/packages/medusa-source-shopify/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log +## 1.2.8 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3187](https://github.com/medusajs/medusa/pull/3187) [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7) Thanks [@fPolic](https://github.com/fPolic)! - feat(medusa, cache-redis, cache-inmemory): Added cache modules + +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + ## 1.2.8-rc.0 ### Patch Changes diff --git a/packages/medusa-source-shopify/package.json b/packages/medusa-source-shopify/package.json index f953ad37c7..a88de97bb1 100644 --- a/packages/medusa-source-shopify/package.json +++ b/packages/medusa-source-shopify/package.json @@ -1,6 +1,6 @@ { "name": "medusa-source-shopify", - "version": "1.2.8-rc.0", + "version": "1.2.8", "description": "Source plugin that allows users to import products from a Shopify store", "main": "index.js", "repository": { @@ -17,7 +17,7 @@ "watch": "babel -w src --out-dir . --ignore '**/__tests__','**/__mocks__'" }, "peerDependencies": { - "medusa-interfaces": "1.3.7-rc.0", + "medusa-interfaces": "1.3.7", "typeorm": "0.x" }, "dependencies": { @@ -28,9 +28,9 @@ "express": "^4.17.1", "ioredis": "^4.27.9", "lodash": "^4.17.21", - "medusa-core-utils": "^1.2.0-rc.0", - "medusa-interfaces": "^1.3.7-rc.0", - "medusa-test-utils": "^1.1.40-rc.0" + "medusa-core-utils": "^1.2.0", + "medusa-interfaces": "^1.3.7", + "medusa-test-utils": "^1.1.40" }, "devDependencies": { "@babel/cli": "^7.15.4", @@ -45,7 +45,7 @@ "client-sessions": "^0.8.0", "cross-env": "^7.0.3", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0" + "medusa-interfaces": "^1.3.7" }, "gitHead": "cd1f5afa5aa8c0b15ea957008ee19f1d695cbd2e", "keywords": [ diff --git a/packages/medusa-test-utils/CHANGELOG.md b/packages/medusa-test-utils/CHANGELOG.md index aed89d73ab..938db9e8a2 100644 --- a/packages/medusa-test-utils/CHANGELOG.md +++ b/packages/medusa-test-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 1.1.40 + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: + - medusa-core-utils@1.2.0 + ## 1.1.40-rc.0 ### Patch Changes @@ -9,6 +19,7 @@ - Plugin repository loader to work with Typeorm update - Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73)]: - medusa-core-utils@1.2.0-rc.0 + ## 1.1.40 ### Patch Changes @@ -259,4 +270,4 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- updates license ([db519fb](https://github.com/medusajs/medusa/commit/db519fbaa6f8ad02c19cbecba5d4f28ba1ee81aa)) \ No newline at end of file +- updates license ([db519fb](https://github.com/medusajs/medusa/commit/db519fbaa6f8ad02c19cbecba5d4f28ba1ee81aa)) diff --git a/packages/medusa-test-utils/package.json b/packages/medusa-test-utils/package.json index a208381388..9774618bf2 100644 --- a/packages/medusa-test-utils/package.json +++ b/packages/medusa-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "medusa-test-utils", - "version": "1.1.40-rc.0", + "version": "1.1.40", "description": "Test utils for Medusa", "main": "dist/index.js", "repository": { @@ -31,7 +31,7 @@ }, "dependencies": { "@babel/plugin-transform-classes": "^7.9.5", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "randomatic": "^3.1.1" }, "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808" diff --git a/packages/medusa/CHANGELOG.md b/packages/medusa/CHANGELOG.md index 61405c28a1..e63cc93a25 100644 --- a/packages/medusa/CHANGELOG.md +++ b/packages/medusa/CHANGELOG.md @@ -1,5 +1,283 @@ # Change Log +## 1.8.0 + +### Minor Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3554](https://github.com/medusajs/medusa/pull/3554) [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa): remove reservations if cart completion fails after reservation creation + +- [#3257](https://github.com/medusajs/medusa/pull/3257) [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-stripe): Implement payment processor API on stripe plugin and fix web hook issues + +- [#3552](https://github.com/medusajs/medusa/pull/3552) [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): remove limit of the number of levels to list when joining levels + +- [#3172](https://github.com/medusajs/medusa/pull/3172) [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Add inventory management to create-fulfillment flow + +- [#3586](https://github.com/medusajs/medusa/pull/3586) [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(medusa): include quantities when listing admin products with an inventory module installed + +- [#3544](https://github.com/medusajs/medusa/pull/3544) [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa): remove reservations for all old line items when an order edit is accepted + +- [#3408](https://github.com/medusajs/medusa/pull/3408) [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Http Server Graceful Shutdown + +- [#3329](https://github.com/medusajs/medusa/pull/3329) [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Inventory and Stock location modules supporting isolated connection + +- [#2599](https://github.com/medusajs/medusa/pull/2599) [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa,event-bus-local,event-bus-redis): Event Bus module (Redis + Local) + +- [#3187](https://github.com/medusajs/medusa/pull/3187) [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7) Thanks [@fPolic](https://github.com/fPolic)! - feat(medusa, cache-redis, cache-inmemory): Added cache modules + +### Patch Changes + +- [#3350](https://github.com/medusajs/medusa/pull/3350) [`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac) Thanks [@adrien2p](https://github.com/adrien2p)! - Chores(medusa): draft order create improvement perf (first step) + +- [#3345](https://github.com/medusajs/medusa/pull/3345) [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medusa): Plugin repository loader to work with Typeorm update + +- [#3374](https://github.com/medusajs/medusa/pull/3374) [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c) Thanks [@adrien2p](https://github.com/adrien2p)! - chore(medusa): Little improvement in draft order creation + +- [#3362](https://github.com/medusajs/medusa/pull/3362) [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medeusa): Transform query includes options should only be added to allowed props if there is already at least one allowed props + +- [#3676](https://github.com/medusajs/medusa/pull/3676) [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - fix(admin-ui, medusa-react, medusa): Minor fixes to GC domain in admin UI. Also fixes GC update payload type in medusa-react and medusa. + +- [#3462](https://github.com/medusajs/medusa/pull/3462) [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): Include location_id in fulfillment body + +- [#3391](https://github.com/medusajs/medusa/pull/3391) [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(ci,oas) move oas ci script to a package under the oas workspace + +- [#3087](https://github.com/medusajs/medusa/pull/3087) [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad) Thanks [@fPolic](https://github.com/fPolic)! - chore(feature-flag): Remove PublishableAPIKeys feature flag + +- [#3414](https://github.com/medusajs/medusa/pull/3414) [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa-payment-paypal): Migrate to the new payment processor API + +- [#3483](https://github.com/medusajs/medusa/pull/3483) [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): declare x-expanded-relations - Admin + +- [#3644](https://github.com/medusajs/medusa/pull/3644) [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(admin-ui): Adds metadata forms to all applicable domains in the UI. + fix(medusa): Fixes an issue where metadata was not being set for order addresses using `setMetadata`. + +- [#3435](https://github.com/medusajs/medusa/pull/3435) [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Add create-inventory-item endpoint + +- [#3670](https://github.com/medusajs/medusa/pull/3670) [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(admin-ui,medusa): Ensure stock locations are created with a name + +- [#3665](https://github.com/medusajs/medusa/pull/3665) [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): draft order adjustments for mw + +- [#3686](https://github.com/medusajs/medusa/pull/3686) [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa-react): Query key invalidation + +- [#3705](https://github.com/medusajs/medusa/pull/3705) [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medusa): circular loading + +- [#3328](https://github.com/medusajs/medusa/pull/3328) [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Register reservation endpoints + Fix a type issue for get variant inventory + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3495](https://github.com/medusajs/medusa/pull/3495) [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652) Thanks [@davorbacic](https://github.com/davorbacic)! - feat(medusa): Add event emitter to ProductCollectionService + +- [#3352](https://github.com/medusajs/medusa/pull/3352) [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - feat(medusa): Modules initializer + + ### Loading modules in a project + + Example + + ```typescript + import { + InventoryServiceInitializeOptions, + initialize, + } from "@medusajs/inventory" + + const options: InventoryServiceInitializeOptions = { + database: { + type: "postgres", + url: DB_URL, + }, + } + + const inventoryService = await initialize(options) + const newInventoryItem = await inventoryService.createInventoryItem({ + sku: "sku_123", + }) + ``` + +- [#3349](https://github.com/medusajs/medusa/pull/3349) [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa): Add Lifetime support on project/plugin services + +- [#3660](https://github.com/medusajs/medusa/pull/3660) [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui, medusa): resolve bugs for orders with variants without inventory items + +- [#3555](https://github.com/medusajs/medusa/pull/3555) [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): if no headerkey is provided when initilizing idempotency key, no attempt is made at fetching the key + +- [#3688](https://github.com/medusajs/medusa/pull/3688) [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore(medusa-cli): Add missing utils dep + +- [#3482](https://github.com/medusajs/medusa/pull/3482) [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): declare x-expanded-relations - Store + +- [#3419](https://github.com/medusajs/medusa/pull/3419) [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): Resolve on scope instead of req + +- [#3324](https://github.com/medusajs/medusa/pull/3324) [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Add filtering of stock locations based on sales channels + +- [#3460](https://github.com/medusajs/medusa/pull/3460) [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Fix(inventory, medusa): ensure no orphaned reservations and invenotry levels on location removal + +- [#3323](https://github.com/medusajs/medusa/pull/3323) [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6) Thanks [@adrien2p](https://github.com/adrien2p)! - fix(medusa): Clean response data usage for admin and store fields/expand + +- [#3436](https://github.com/medusajs/medusa/pull/3436) [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, medusa-js, medusa-react): Add store queries to react medusa + +- [#3110](https://github.com/medusajs/medusa/pull/3110) [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(medusa,medusa-js,medusa-react): Add inventory module endpoints + +- [#3622](https://github.com/medusajs/medusa/pull/3622) [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore(medusa): EOL causing logging to hang + +- [#3314](https://github.com/medusajs/medusa/pull/3314) [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): include `/admin` and `/store` in paths URLs + +- [#3510](https://github.com/medusajs/medusa/pull/3510) [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-algolia): Revamp Algolia search plugin + +- [#3684](https://github.com/medusajs/medusa/pull/3684) [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): inventory stocked quantity regulation + +- [#3514](https://github.com/medusajs/medusa/pull/3514) [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): Error messages for reset tokens + +- [#3498](https://github.com/medusajs/medusa/pull/3498) [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): use get instead of indexing into map + +- [#3423](https://github.com/medusajs/medusa/pull/3423) [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): add @schema OAS for address request payloads + +- [#3653](https://github.com/medusajs/medusa/pull/3653) [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f) Thanks [@olivermrbl](https://github.com/olivermrbl)! - fix(medusa): Rounding issues on line item adjustments + +- [#2978](https://github.com/medusajs/medusa/pull/2978) [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e) Thanks [@adrien2p](https://github.com/adrien2p)! - feat(medusa): Load PaymentProcessors + + - Add loading of PaymentProcessors + - Add PaymentProcessor support in the payment-provider + - Add backward compatibility for the PaymentService + +- [#3344](https://github.com/medusajs/medusa/pull/3344) [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca) Thanks [@pKorsholm](https://github.com/pKorsholm)! - Update types to reflect actual return-type + +- [#3312](https://github.com/medusajs/medusa/pull/3312) [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas): add missing x-codegen + fix schema naming and $ref + +- [#3403](https://github.com/medusajs/medusa/pull/3403) [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46) Thanks [@StephixOne](https://github.com/StephixOne)! - feat(medusa): add get-variant endpoint + +- [#3395](https://github.com/medusajs/medusa/pull/3395) [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(admin-ui, medusa): Minor ui fixes relating to stock locations + +- [#3624](https://github.com/medusajs/medusa/pull/3624) [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa): Fix hanging inventory item migration script + +- [#3522](https://github.com/medusajs/medusa/pull/3522) [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa,admin): location_ids in swap and claim creation + +- [#3282](https://github.com/medusajs/medusa/pull/3282) [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): identify required fields in responses - store + +- [#3334](https://github.com/medusajs/medusa/pull/3334) [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe) Thanks [@kasperkristensen](https://github.com/kasperkristensen)! - feat(medusa,admin,admin-ui): Add new plugin to serve the admin dashboard from the server. Adds a new plugin injection step `setup`, code placed in the `setup` folder of a plugin will be run before any code from a plugin is injected into the Medusa server. + +- [#3416](https://github.com/medusajs/medusa/pull/3416) [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295) Thanks [@riqwan](https://github.com/riqwan)! - feat(medusa, admin-ui, medusa-react): Improvements to product categories + + - Adds name as required in category create form + - Adds name and handle as required in category edit form + - Updates message on create/update forms + - Adds category indicators for is_internal and is_active fields in the tree list + - Fixes bug where tree is not reset when update fails + - allow appending all category descendants with a param in list endpoint + - fix rank order changing on category update + - invalidate products query on category delete + - adds category ui for tree/list, edit, create, delete + - add product category queries and mutations + - category list API can return all descendant + - added breadcrumbs for categories on create/edit modal + - add empty state for product categories + - increase tree depth + scope categories on store + allow categories relation in products API + - categories can be ranked based on position + - seed command can create product categories + - hide categories in products behind feature flag + - fixes bug for mpath incorrectly updated for nested categories + +- [#3478](https://github.com/medusajs/medusa/pull/3478) [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas,js,react): use AdminExtendedStoresRes instead of AdminStoresRes + +- [#3377](https://github.com/medusajs/medusa/pull/3377) [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-meilisearch): Update + improve Meilisearch plugin + + **What** + + - Bumps `meilisearch` dep to latest major + - Migrates plugin to TypeScript + - Changes the way indexes are configured in `medusa-config.js`: + + **Before** + + ``` + { + resolve: `medusa-plugin-meilisearch`, + options: { + config: { host: "...", apiKey: "..." }, + settings: { + products: { + searchableAttributes: ["title"], + displayedAttributes: ["title"], + }, + }, + }, + }, + ``` + + **After** + + ``` + { + resolve: `medusa-plugin-meilisearch`, + options: { + config: { host: "...", apiKey: "..." }, + settings: { + products: { + **indexSettings**: { + searchableAttributes: ["title"], + displayedAttributes: ["title"], + }, + }, + }, + }, + }, + ``` + + This is done to allow for additional configuration of indexes, that are not necessarily passed on query-time. + + We introduce two new settings: + + ``` + settings: { + products: { + indexSettings: { + searchableAttributes: ["title"], + displayedAttributes: ["title"],, + }, + primaryKey: "id" + transformer: (document) => ({ id: "yo" }) + }, + }, + ``` + + Meilisearch changed their primary key inference in the major release. Now we must be explicit when multiple properties end with `id`. Read more in their [docs](https://docs.meilisearch.com/learn/core_concepts/primary_key.html#primary-field). + + The transformer allows developers to specify how their documents are stored in Meilisearch. It is configurable for each index. + +- [#3605](https://github.com/medusajs/medusa/pull/3605) [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Improved error message if default module is not installed + +- [#3534](https://github.com/medusajs/medusa/pull/3534) [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29) Thanks [@riqwan](https://github.com/riqwan)! - fix(medusa): fix bug with parent not being saved correctly + +- [#3288](https://github.com/medusajs/medusa/pull/3288) [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas): fix paths and fix schema names to match convention + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- [#3541](https://github.com/medusajs/medusa/pull/3541) [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322) Thanks [@pKorsholm](https://github.com/pKorsholm)! - fix(medusa, admin-ui): refine create-fulfillment flow + +- [#3451](https://github.com/medusajs/medusa/pull/3451) [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9) Thanks [@pKorsholm](https://github.com/pKorsholm)! - feat(medusa,admin-ui): support location_id in + +- [#3411](https://github.com/medusajs/medusa/pull/3411) [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas-cli): combine admin + store + custom OAS + +- [#3278](https://github.com/medusajs/medusa/pull/3278) [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): identify required fields in responses - admin + feat(medusa): Update transaction base service to expose an activeManager\_ getter + feat(admin-ui): move customs and shipping into manage inventory modal + Feat(medusa): fulfill swaps and claims with locations + fix(medusa): Issue when ordering with multiple columns + fix(medusa): Category seeding result in non null constraint error + fix(medusa): Account for multiple inventory items when getting inventory + feat(oas): pluralize OAS tags + feat(medusa): Improve store list products + feat(admin-ui): add errors and block receiving returns dependent on existing inventory item levels + feat(medusa): invalidate price selection caching within update request + feat(medusa): remove soft delete from categories + adds indexes for categories +- Updated dependencies [[`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`cd54c7dca`](https://github.com/medusajs/medusa/commit/cd54c7dca9f7444dd2bfa91b4e3e3359dc6658cf), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - medusa-core-utils@1.2.0 + - medusa-interfaces@1.3.7 + - medusa-test-utils@1.1.40 + - @medusajs/modules-sdk@1.8.0 + - @medusajs/types@1.8.0 + - @medusajs/utils@1.8.0 + - @medusajs/medusa-cli@1.3.9 + ## 1.8.0-rc.8 ### Patch Changes diff --git a/packages/medusa/package.json b/packages/medusa/package.json index ce4cd02ebb..dd71900ad3 100644 --- a/packages/medusa/package.json +++ b/packages/medusa/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa", - "version": "1.8.0-rc.8", + "version": "1.8.0", "description": "E-commerce for JAMstack", "main": "dist/index.js", "bin": "./cli.js", @@ -19,13 +19,13 @@ "author": "Sebastian Rindom", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "@types/express": "^4.17.17", "@types/jsonwebtoken": "^8.5.9", "@types/multer": "^1.4.7", "cross-env": "^5.2.1", "jest": "^25.5.4", - "medusa-interfaces": "^1.3.7-rc.0", + "medusa-interfaces": "^1.3.7", "supertest": "^4.0.2", "ts-jest": "^25.5.1", "typescript": "^4.4.4" @@ -39,14 +39,14 @@ "test:unit": "jest" }, "peerDependencies": { - "@medusajs/types": "0.0.2-rc.1", - "medusa-interfaces": "1.3.7-rc.0", + "@medusajs/types": "1.8.0", + "medusa-interfaces": "1.3.7", "typeorm": "^0.3.11" }, "dependencies": { - "@medusajs/medusa-cli": "1.3.9-rc.2", - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/medusa-cli": "1.3.9", + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0", "@types/ioredis": "^4.28.10", "@types/lodash": "^4.14.191", "awilix": "^8.0.0", @@ -71,9 +71,9 @@ "iso8601-duration": "^1.3.0", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", - "medusa-core-utils": "^1.2.0-rc.0", + "medusa-core-utils": "^1.2.0", "medusa-telemetry": "^0.0.16", - "medusa-test-utils": "^1.1.40-rc.0", + "medusa-test-utils": "^1.1.40", "morgan": "^1.9.1", "multer": "^1.4.4", "node-schedule": "^2.1.1", diff --git a/packages/modules-sdk/CHANGELOG.md b/packages/modules-sdk/CHANGELOG.md index 00b4ae80bb..64852d2913 100644 --- a/packages/modules-sdk/CHANGELOG.md +++ b/packages/modules-sdk/CHANGELOG.md @@ -1,5 +1,29 @@ # @medusajs/modules-sdk +## 1.8.0 + +### Minor Changes + +- [#3329](https://github.com/medusajs/medusa/pull/3329) [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Inventory and Stock location modules supporting isolated connection + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3620](https://github.com/medusajs/medusa/pull/3620) [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Checks if dependency is registered before resolving it + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3605](https://github.com/medusajs/medusa/pull/3605) [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Improved error message if default module is not installed + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Add missing changeset for @medusajs/modules-sdk + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/types@1.8.0 + - @medusajs/utils@1.8.0 + ## 0.1.0-rc.4 ### Patch Changes diff --git a/packages/modules-sdk/package.json b/packages/modules-sdk/package.json index 79c6a8423e..51543efe15 100644 --- a/packages/modules-sdk/package.json +++ b/packages/modules-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/modules-sdk", - "version": "0.1.0-rc.4", + "version": "1.8.0", "description": "SDK for medusa modules", "main": "dist/index.js", "repository": { @@ -23,8 +23,8 @@ "typescript": "^4.4.4" }, "dependencies": { - "@medusajs/types": "0.0.2-rc.1", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/types": "1.8.0", + "@medusajs/utils": "1.8.0", "awilix": "^8.0.0", "glob": "7.1.6", "medusa-telemetry": "^0.0.16", diff --git a/packages/oas/medusa-oas-cli/CHANGELOG.md b/packages/oas/medusa-oas-cli/CHANGELOG.md index 4c2106fb43..e023c4f33a 100644 --- a/packages/oas/medusa-oas-cli/CHANGELOG.md +++ b/packages/oas/medusa-oas-cli/CHANGELOG.md @@ -1,5 +1,25 @@ # @medusajs/oas-cli +## 0.2.0 + +### Minor Changes + +- [#3411](https://github.com/medusajs/medusa/pull/3411) [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas-cli): combine admin + store + custom OAS + +### Patch Changes + +- [#3213](https://github.com/medusajs/medusa/pull/3213) [`813706190`](https://github.com/medusajs/medusa/commit/8137061908d20314314b95d049b966a624e7123d) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas): medusa-oas-cli as OAS build tool + +- [#3631](https://github.com/medusajs/medusa/pull/3631) [`377b9ce8c`](https://github.com/medusajs/medusa/commit/377b9ce8c27cb2c4d10d154c005c7553c173c0e8) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - fix(oas:test): fix beforeAll timeout silent failure + +- [#3272](https://github.com/medusajs/medusa/pull/3272) [`1c40346e9`](https://github.com/medusajs/medusa/commit/1c40346e9e56718de4a6e2d5c2d52abd388343e3) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen): openapi-typescript-codegen fork + +- [#3559](https://github.com/medusajs/medusa/pull/3559) [`53c4a43ca`](https://github.com/medusajs/medusa/commit/53c4a43ca2b2c04920dc6f38e07348e7dfc23195) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(oas:cli): output better error when no command is provided + +- Updated dependencies [[`d6b1ad1cc`](https://github.com/medusajs/medusa/commit/d6b1ad1ccd9a8f91b169f30ff99492cf3adcccac), [`e143a8697`](https://github.com/medusajs/medusa/commit/e143a86976a5cc6a53b7a795e8486df4db1d1c09), [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724), [`84e448968`](https://github.com/medusajs/medusa/commit/84e44896836b2c44017572ac5192ab1cd937048c), [`33c6ccf05`](https://github.com/medusajs/medusa/commit/33c6ccf0591b8ef527f3b10a70b51e29751b4998), [`788ddc0f4`](https://github.com/medusajs/medusa/commit/788ddc0f43696df607f07133af15a04b29d5447d), [`5fd74b38a`](https://github.com/medusajs/medusa/commit/5fd74b38ae1b4f7dced191983b78db83f7b1f71b), [`30a320364`](https://github.com/medusajs/medusa/commit/30a3203640be9993ba2f8447abfdecc0d3e2f9b6), [`240d0ea7b`](https://github.com/medusajs/medusa/commit/240d0ea7b88ff494d0fe28c7c5348e958c14571f), [`6c0462472`](https://github.com/medusajs/medusa/commit/6c046247275c46d934f03d53471bdd555a19a9ad), [`589d1c09b`](https://github.com/medusajs/medusa/commit/589d1c09b085dcaf9667061201ac9deff3047466), [`0695ff642`](https://github.com/medusajs/medusa/commit/0695ff642b5836e7c28d40118aafe7a769023d5a), [`530740889`](https://github.com/medusajs/medusa/commit/53074088941719ac7ca435e76e3e64ba23fac200), [`13f40d721`](https://github.com/medusajs/medusa/commit/13f40d721702fbcdf6c131354ec9a81322d4a662), [`4342ac884`](https://github.com/medusajs/medusa/commit/4342ac884bc3fe473576ef10d291f3547e0ffc62), [`fe9eea4c1`](https://github.com/medusajs/medusa/commit/fe9eea4c18b7e04ba91660716c92b11a49840a3c), [`a5ad6c054`](https://github.com/medusajs/medusa/commit/a5ad6c05428e1bb090bbc5a51345a00821781c06), [`748833383`](https://github.com/medusajs/medusa/commit/748833383f4bafd05109dac7afa1286fe851cba3), [`7f87c4f2c`](https://github.com/medusajs/medusa/commit/7f87c4f2c8abb876213a595005e67d770be9cbe4), [`e5a2e9c8d`](https://github.com/medusajs/medusa/commit/e5a2e9c8d237bbe4e3563f5a7a892ca41f01ba24), [`0a02b70e5`](https://github.com/medusajs/medusa/commit/0a02b70e59cfbd8888fb58c29ee9aaf96eb8099a), [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`fe4b8feb7`](https://github.com/medusajs/medusa/commit/fe4b8feb7e0af2ffc436ca77a769ecb37e16e652), [`aa690beed`](https://github.com/medusajs/medusa/commit/aa690beed775646cbc86b445fb5dc90dcac087d5), [`5eb61fa0e`](https://github.com/medusajs/medusa/commit/5eb61fa0ef991b8a9fabb16c2c159e51b9541867), [`f033711ad`](https://github.com/medusajs/medusa/commit/f033711ad649466d72dd9f673d75848c97c0861f), [`eed784d7d`](https://github.com/medusajs/medusa/commit/eed784d7d0b58aeddc9f6f5ea56fe80c608b22f5), [`3171b0e51`](https://github.com/medusajs/medusa/commit/3171b0e518aebcaa31bbe5c6e914d65282873cda), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`522e306e2`](https://github.com/medusajs/medusa/commit/522e306e2e9abf4afce63f30714389eba32bef7f), [`80b95a230`](https://github.com/medusajs/medusa/commit/80b95a230056d9ed15f7302f248094f879516faf), [`a1e59313c`](https://github.com/medusajs/medusa/commit/a1e59313c964a944a287b54f6654d1d19ac8a59b), [`10bf05c14`](https://github.com/medusajs/medusa/commit/10bf05c147cb65a263465129790edd44a6d8948b), [`cbbf3ca05`](https://github.com/medusajs/medusa/commit/cbbf3ca054387a900c5777c2eb0218df2c72bae6), [`9ba09ba4d`](https://github.com/medusajs/medusa/commit/9ba09ba4d753f132537f0447097fe9f54922c074), [`12d304307`](https://github.com/medusajs/medusa/commit/12d304307af87ea9287a41869eb33ef09f273d85), [`693015fde`](https://github.com/medusajs/medusa/commit/693015fde3218d67fb9c07eebeaea9950bf3f1f1), [`287c829c9`](https://github.com/medusajs/medusa/commit/287c829c9c5a9797fb8cd118b7a6066ad1935898), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`0cca13779`](https://github.com/medusajs/medusa/commit/0cca13779d0e84683193ad82ab163a10a807e903), [`aed7805c0`](https://github.com/medusajs/medusa/commit/aed7805c0e64b884007148bde90cfce7bee8aad4), [`e359d3f85`](https://github.com/medusajs/medusa/commit/e359d3f85bc12fd3868fc4b563cd994366e899dd), [`0d1b63d77`](https://github.com/medusajs/medusa/commit/0d1b63d773ad91846757a6f0b81b78b0b97b3f2b), [`4042beb10`](https://github.com/medusajs/medusa/commit/4042beb1026b9ad8b381aaa6e1a5214cd92db00f), [`809ab2e0e`](https://github.com/medusajs/medusa/commit/809ab2e0eb2d62054481fa6491d3f7cafbadab4f), [`f43e9f0f2`](https://github.com/medusajs/medusa/commit/f43e9f0f20a8b0637252951b2bdfed4d42fb9f5e), [`842423679`](https://github.com/medusajs/medusa/commit/8424236799c3789f884285cd3c8a491e91aef2ca), [`935870e01`](https://github.com/medusajs/medusa/commit/935870e010af1ec884259b1f1328421e99acc3af), [`826d4bedf`](https://github.com/medusajs/medusa/commit/826d4bedfe1b6459163711d5173eb8eadfdea26e), [`57d7728dd`](https://github.com/medusajs/medusa/commit/57d7728dd9d00df712e1a872899b8397955dfe46), [`15f47baf5`](https://github.com/medusajs/medusa/commit/15f47baf56e6722b7821cfaa2fb468e582dfa2c1), [`1c40346e9`](https://github.com/medusajs/medusa/commit/1c40346e9e56718de4a6e2d5c2d52abd388343e3), [`999aeb116`](https://github.com/medusajs/medusa/commit/999aeb116c4742e5b5e0d80793af23f7727276f0), [`55c5fba0d`](https://github.com/medusajs/medusa/commit/55c5fba0d3dbd015c3ffd74d645a8057892d0f52), [`38503fff5`](https://github.com/medusajs/medusa/commit/38503fff56bbceb092e396ac11432a56967b53e9), [`5e405be02`](https://github.com/medusajs/medusa/commit/5e405be02cc94779222dc3d930e747027496d918), [`40de54b01`](https://github.com/medusajs/medusa/commit/40de54b0101bdfd37f577d18c10ec9f1ab1ce8fe), [`54dcc1871`](https://github.com/medusajs/medusa/commit/54dcc1871c8f28bea962dbb9df6e79b038d56449), [`478d1af8d`](https://github.com/medusajs/medusa/commit/478d1af8d0df0af16baf4f130e19b0be34f5f295), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`6748877c6`](https://github.com/medusajs/medusa/commit/6748877c694c1433f666c6987f20af76b201b495), [`7e17e0ddc`](https://github.com/medusajs/medusa/commit/7e17e0ddc2e6b2891e9ee1420b04a541899d2a9d), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`7f2223b65`](https://github.com/medusajs/medusa/commit/7f2223b6507b0a3c452977bfcdee92af2086fa29), [`7b57695e0`](https://github.com/medusajs/medusa/commit/7b57695e00433e1d54f8cdc912ef7e5f28fc1071), [`7d585f5f8`](https://github.com/medusajs/medusa/commit/7d585f5f84a910c02d274df7a489dc3ff1ea273a), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def), [`ef5ef9f5a`](https://github.com/medusajs/medusa/commit/ef5ef9f5a26febf0b64d9981606c1e59999ca76e), [`feaf8d2e1`](https://github.com/medusajs/medusa/commit/feaf8d2e19715585d154464d003759c3a1f4f322), [`f97b3d7cc`](https://github.com/medusajs/medusa/commit/f97b3d7ccee381d3491337ab5144bb44520382a7), [`55a1f232a`](https://github.com/medusajs/medusa/commit/55a1f232a3746a22adb1fcd1844b2659077a59f9), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38), [`48ad2426a`](https://github.com/medusajs/medusa/commit/48ad2426aa7a604c226132e85ef3da5cce045f45)]: + - @medusajs/medusa@1.8.0 + - @medusajs/openapi-typescript-codegen@0.2.0 + ## 0.2.0-rc.8 ### Patch Changes diff --git a/packages/oas/medusa-oas-cli/package.json b/packages/oas/medusa-oas-cli/package.json index abc5034d2e..0d8d76d088 100644 --- a/packages/oas/medusa-oas-cli/package.json +++ b/packages/oas/medusa-oas-cli/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/medusa-oas-cli", - "version": "0.2.0-rc.8", + "version": "0.2.0", "description": "OAS CLI", "main": "dist/index.js", "bin": { @@ -36,8 +36,8 @@ "test:unit": "jest src" }, "dependencies": { - "@medusajs/medusa": "1.8.0-rc.8", - "@medusajs/openapi-typescript-codegen": "0.2.0-rc.0", + "@medusajs/medusa": "1.8.0", + "@medusajs/openapi-typescript-codegen": "0.2.0", "@readme/openapi-parser": "^2.4.0", "@types/lodash": "^4.14.191", "commander": "^10.0.0", diff --git a/packages/oas/oas-github-ci/CHANGELOG.md b/packages/oas/oas-github-ci/CHANGELOG.md index 7480de15e7..eefa058186 100644 --- a/packages/oas/oas-github-ci/CHANGELOG.md +++ b/packages/oas/oas-github-ci/CHANGELOG.md @@ -1,5 +1,14 @@ # @medusajs/oas-github-ci +## 1.0.1 + +### Patch Changes + +- [#3410](https://github.com/medusajs/medusa/pull/3410) [`8ed67d2d7`](https://github.com/medusajs/medusa/commit/8ed67d2d7d36da2d0cb3541e42bba1770aefc60a) Thanks [@olivermrbl](https://github.com/olivermrbl)! - fix(admin,oas-github-cli): Change public config to private to avoid publishing attempts + include `setup/` in npm release for `admin-ui` + +- Updated dependencies [[`813706190`](https://github.com/medusajs/medusa/commit/8137061908d20314314b95d049b966a624e7123d), [`377b9ce8c`](https://github.com/medusajs/medusa/commit/377b9ce8c27cb2c4d10d154c005c7553c173c0e8), [`1c40346e9`](https://github.com/medusajs/medusa/commit/1c40346e9e56718de4a6e2d5c2d52abd388343e3), [`53c4a43ca`](https://github.com/medusajs/medusa/commit/53c4a43ca2b2c04920dc6f38e07348e7dfc23195), [`966aea65c`](https://github.com/medusajs/medusa/commit/966aea65c221403bf316ae7665cc8f73bccd9c38)]: + - @medusajs/medusa-oas-cli@0.2.0 + ## 1.0.1-rc.8 ### Patch Changes diff --git a/packages/oas/oas-github-ci/package.json b/packages/oas/oas-github-ci/package.json index ea2545ee4f..e5112122e9 100644 --- a/packages/oas/oas-github-ci/package.json +++ b/packages/oas/oas-github-ci/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/oas-github-ci", - "version": "1.0.1-rc.8", + "version": "1.0.1", "description": "OAS Github CI", "main": "scripts/build-openapi.js", "files": [ @@ -22,7 +22,7 @@ "test:unit": "jest --passWithNoTests" }, "dependencies": { - "@medusajs/medusa-oas-cli": "0.2.0-rc.8", + "@medusajs/medusa-oas-cli": "0.2.0", "@readme/openapi-parser": "^2.4.0", "@redocly/cli": "1.0.0-beta.123", "execa": "^5.1.1", diff --git a/packages/oas/openapi-typescript-codegen/CHANGELOG.md b/packages/oas/openapi-typescript-codegen/CHANGELOG.md index 5ace051269..4d9241c751 100644 --- a/packages/oas/openapi-typescript-codegen/CHANGELOG.md +++ b/packages/oas/openapi-typescript-codegen/CHANGELOG.md @@ -1,5 +1,17 @@ # @medusajs/openapi-typescript-codegen +## 0.2.0 + +### Minor Changes + +- [#3477](https://github.com/medusajs/medusa/pull/3477) [`826d4bedf`](https://github.com/medusajs/medusa/commit/826d4bedfe1b6459163711d5173eb8eadfdea26e) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen,types): SetRelation on expanded types + +- [#3442](https://github.com/medusajs/medusa/pull/3442) [`7b57695e0`](https://github.com/medusajs/medusa/commit/7b57695e00433e1d54f8cdc912ef7e5f28fc1071) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen): x-expanded-relations + +### Patch Changes + +- [#3272](https://github.com/medusajs/medusa/pull/3272) [`1c40346e9`](https://github.com/medusajs/medusa/commit/1c40346e9e56718de4a6e2d5c2d52abd388343e3) Thanks [@patrick-medusajs](https://github.com/patrick-medusajs)! - feat(codegen): openapi-typescript-codegen fork + ## 0.2.0-rc.0 ### Minor Changes diff --git a/packages/oas/openapi-typescript-codegen/package.json b/packages/oas/openapi-typescript-codegen/package.json index c2cbcdcbfc..4747fd2aa4 100644 --- a/packages/oas/openapi-typescript-codegen/package.json +++ b/packages/oas/openapi-typescript-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/openapi-typescript-codegen", - "version": "0.2.0-rc.0", + "version": "0.2.0", "description": "Library that generates Typescript clients based on the OpenAPI specification.", "main": "dist/index.js", "types": "types/index.d.ts", diff --git a/packages/stock-location/CHANGELOG.md b/packages/stock-location/CHANGELOG.md index d6a3a7e54f..a17d7eb018 100644 --- a/packages/stock-location/CHANGELOG.md +++ b/packages/stock-location/CHANGELOG.md @@ -1,5 +1,28 @@ # @medusajs/stock-location +## 1.8.0 + +### Minor Changes + +- [#3329](https://github.com/medusajs/medusa/pull/3329) [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Inventory and Stock location modules supporting isolated connection + +### Patch Changes + +- [#3041](https://github.com/medusajs/medusa/pull/3041) [`121b42acf`](https://github.com/medusajs/medusa/commit/121b42acfe98c12dd593f9b1f2072ff0f3b61724) Thanks [@riqwan](https://github.com/riqwan)! - chore(medusa): Typeorm fixes / enhancements + + - upgrade typeorm from 0.2.51 to 0.3.11 + - Plugin repository loader to work with Typeorm update + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3649](https://github.com/medusajs/medusa/pull/3649) [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Export initialize method for all modules + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + +- Updated dependencies [[`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4), [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38), [`55e94d0b4`](https://github.com/medusajs/medusa/commit/55e94d0b45776776639d3970d4264b8f5c5385dd), [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb), [`bd12a9508`](https://github.com/medusajs/medusa/commit/bd12a95083b69a70b83ad38578c5a68738c41b2b), [`77d46220c`](https://github.com/medusajs/medusa/commit/77d46220c23bfe19e575cbc445874eb6c22f3c73), [`bca1f80dd`](https://github.com/medusajs/medusa/commit/bca1f80dd501d878455e1ad4f5091cf20ef900ea), [`271844aed`](https://github.com/medusajs/medusa/commit/271844aedbe45c369e188b5d06458dbd6984cd39), [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def)]: + - @medusajs/modules-sdk@1.8.0 + - @medusajs/utils@1.8.0 + ## 1.8.0-rc.3 ### Patch Changes diff --git a/packages/stock-location/package.json b/packages/stock-location/package.json index ca6b45116a..e855677cf5 100644 --- a/packages/stock-location/package.json +++ b/packages/stock-location/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/stock-location", - "version": "1.8.0-rc.3", + "version": "1.8.0", "description": "Stock Location Module for Medusa", "main": "dist/index.js", "repository": { @@ -17,15 +17,15 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "cross-env": "^5.2.1", "jest": "^25.5.4", "ts-jest": "^25.5.1", "typescript": "^4.4.4" }, "dependencies": { - "@medusajs/modules-sdk": "0.1.0-rc.4", - "@medusajs/utils": "0.0.2-rc.2", + "@medusajs/modules-sdk": "1.8.0", + "@medusajs/utils": "1.8.0", "awilix": "^8.0.0", "typeorm": "^0.3.11" }, diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index faf081bfaa..c0a0e69e6c 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,15 @@ # @medusajs/types +## 1.8.0 + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3510](https://github.com/medusajs/medusa/pull/3510) [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-algolia): Revamp Algolia search plugin + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + ## 0.0.2-rc.1 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index 24efa82429..ff49166f33 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/types", - "version": "0.0.2-rc.1", + "version": "1.8.0", "description": "Medusa Types definition", "main": "dist/index.js", "repository": { diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index c8f45e3cbf..b3064302e0 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,5 +1,17 @@ # @medusajs/utils +## 1.8.0 + +### Patch Changes + +- [#3685](https://github.com/medusajs/medusa/pull/3685) [`8ddb3952c`](https://github.com/medusajs/medusa/commit/8ddb3952c045e6c05c8d0f6922f0d4ba30cf3bd4) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore: Fix RC package versions + +- [#3688](https://github.com/medusajs/medusa/pull/3688) [`a0c919a8d`](https://github.com/medusajs/medusa/commit/a0c919a8d01ca5edf62336de48e9a112e3822f38) Thanks [@olivermrbl](https://github.com/olivermrbl)! - chore(medusa-cli): Add missing utils dep + +- [#3510](https://github.com/medusajs/medusa/pull/3510) [`74bc4b16a`](https://github.com/medusajs/medusa/commit/74bc4b16a07f78668003ca930bf2a0d928897ceb) Thanks [@olivermrbl](https://github.com/olivermrbl)! - feat(medusa-plugin-algolia): Revamp Algolia search plugin + +- [#3531](https://github.com/medusajs/medusa/pull/3531) [`4e9d257d3`](https://github.com/medusajs/medusa/commit/4e9d257d3bf76703ef5be8ca054cc9f0f7339def) Thanks [@carlos-r-l-rodrigues](https://github.com/carlos-r-l-rodrigues)! - Remove dependency on @medusajs/medusa from Inventory and Stock-Location Modules + ## 0.0.2-rc.2 ### Patch Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index eaef7168a6..9224b25933 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@medusajs/utils", - "version": "0.0.2-rc.2", + "version": "1.8.0", "description": "Medusa utilities functions shared by Medusa core and Modules", "main": "dist/index.js", "repository": { @@ -17,7 +17,7 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "0.0.2-rc.1", + "@medusajs/types": "1.8.0", "@types/express": "^4.17.17", "cross-env": "^5.2.1", "jest": "^25.5.4", diff --git a/yarn.lock b/yarn.lock index 65288e10fc..6a1f99e91c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5606,13 +5606,13 @@ __metadata: languageName: node linkType: hard -"@medusajs/admin-ui@0.0.1-rc.8, @medusajs/admin-ui@workspace:packages/admin-ui": +"@medusajs/admin-ui@1.8.0, @medusajs/admin-ui@workspace:packages/admin-ui": version: 0.0.0-use.local resolution: "@medusajs/admin-ui@workspace:packages/admin-ui" dependencies: "@hookform/error-message": ^2.0.1 - "@medusajs/medusa": 1.8.0-rc.8 - "@medusajs/types": 0.0.2-rc.1 + "@medusajs/medusa": 1.8.0 + "@medusajs/types": 1.8.0 "@radix-ui/react-accordion": ^1.0.1 "@radix-ui/react-avatar": ^1.0.1 "@radix-ui/react-collapsible": ^1.0.1 @@ -5642,7 +5642,7 @@ __metadata: copy-to-clipboard: ^3.3.1 emoji-picker-react: ^4.4.3 framer-motion: ^9.1.6 - medusa-react: 5.0.0-rc.8 + medusa-react: 5.0.0 moment: ^2.29.4 pluralize: ^8.0.0 postcss: ^8.4.21 @@ -5679,30 +5679,30 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/admin@workspace:packages/admin" dependencies: - "@medusajs/admin-ui": 0.0.1-rc.8 + "@medusajs/admin-ui": 1.8.0 "@types/express": ^4.17.13 commander: ^10.0.0 dotenv: ^16.0.3 express: ^4.17.1 fs-extra: ^11.1.0 - medusa-core-utils: 1.2.0-rc.0 + medusa-core-utils: 1.2.0 ora: 5.4.0 picocolors: ^1.0.0 ts-dedent: ^2.2.0 typescript: ^4.9.3 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 bin: medusa-admin: ./bin/medusa-admin.js languageName: unknown linkType: soft -"@medusajs/cache-inmemory@1.8.0-rc.3, @medusajs/cache-inmemory@workspace:packages/cache-inmemory": +"@medusajs/cache-inmemory@1.8.0, @medusajs/cache-inmemory@workspace:packages/cache-inmemory": version: 0.0.0-use.local resolution: "@medusajs/cache-inmemory@workspace:packages/cache-inmemory" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 cross-env: ^5.2.1 jest: ^25.5.4 ts-jest: ^25.5.1 @@ -5714,8 +5714,8 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/cache-redis@workspace:packages/cache-redis" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 awilix: ^8.0.0 cross-env: ^5.2.1 ioredis: ^5.3.1 @@ -5729,7 +5729,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/client-types@workspace:packages/generated/client-types" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.8 + "@medusajs/medusa-oas-cli": 0.2.0 cross-env: ^7.0.3 execa: ^5.1.1 jest: ^27.4.7 @@ -5739,13 +5739,13 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/event-bus-local@1.8.0-rc.4, @medusajs/event-bus-local@workspace:packages/event-bus-local": +"@medusajs/event-bus-local@1.8.0, @medusajs/event-bus-local@workspace:packages/event-bus-local": version: 0.0.0-use.local resolution: "@medusajs/event-bus-local@workspace:packages/event-bus-local" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 cross-env: ^5.2.1 jest: ^25.5.2 ts-jest: ^25.5.1 @@ -5757,15 +5757,15 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/event-bus-redis@workspace:packages/event-bus-redis" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 awilix: ^8.0.0 bullmq: ^3.5.6 cross-env: ^5.2.1 ioredis: ^5.2.5 jest: ^25.5.2 - medusa-test-utils: ^1.1.40-rc.0 + medusa-test-utils: ^1.1.40 ts-jest: ^25.5.1 typescript: ^4.4.4 languageName: unknown @@ -5775,9 +5775,9 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/inventory@workspace:packages/inventory" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 awilix: ^8.0.0 cross-env: ^5.2.1 jest: ^25.5.4 @@ -5787,7 +5787,7 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa-cli@1.3.9-rc.2, @medusajs/medusa-cli@workspace:packages/medusa-cli": +"@medusajs/medusa-cli@1.3.9, @medusajs/medusa-cli@workspace:packages/medusa-cli": version: 0.0.0-use.local resolution: "@medusajs/medusa-cli@workspace:packages/medusa-cli" dependencies: @@ -5796,7 +5796,7 @@ __metadata: "@babel/plugin-proposal-class-properties": ^7.7.4 "@babel/plugin-transform-runtime": ^7.7.6 "@babel/preset-env": ^7.7.5 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/utils": 1.8.0 axios: ^0.21.4 chalk: ^4.0.0 configstore: 5.0.1 @@ -5811,7 +5811,7 @@ __metadata: is-valid-path: ^0.1.1 jest: ^25.5.4 meant: ^1.0.3 - medusa-core-utils: ^1.2.0-rc.0 + medusa-core-utils: ^1.2.0 medusa-telemetry: 0.0.16 open: ^8.0.6 ora: ^5.4.1 @@ -5831,11 +5831,11 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa-js@2.0.0-rc.8, @medusajs/medusa-js@workspace:packages/medusa-js": +"@medusajs/medusa-js@2.0.0, @medusajs/medusa-js@workspace:packages/medusa-js": version: 0.0.0-use.local resolution: "@medusajs/medusa-js@workspace:packages/medusa-js" dependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 "@types/uuid": ^9.0.0 axios: ^0.24.0 cross-env: ^7.0.3 @@ -5847,16 +5847,16 @@ __metadata: typescript: ^4.9.5 uuid: ^9.0.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 languageName: unknown linkType: soft -"@medusajs/medusa-oas-cli@0.2.0-rc.8, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": +"@medusajs/medusa-oas-cli@0.2.0, @medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli": version: 0.0.0-use.local resolution: "@medusajs/medusa-oas-cli@workspace:packages/oas/medusa-oas-cli" dependencies: - "@medusajs/medusa": 1.8.0-rc.8 - "@medusajs/openapi-typescript-codegen": 0.2.0-rc.0 + "@medusajs/medusa": 1.8.0 + "@medusajs/openapi-typescript-codegen": 0.2.0 "@readme/openapi-parser": ^2.4.0 "@types/lodash": ^4.14.191 commander: ^10.0.0 @@ -5874,14 +5874,14 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/medusa@1.8.0-rc.8, @medusajs/medusa@workspace:packages/medusa": +"@medusajs/medusa@1.8.0, @medusajs/medusa@workspace:packages/medusa": version: 0.0.0-use.local resolution: "@medusajs/medusa@workspace:packages/medusa" dependencies: - "@medusajs/medusa-cli": 1.3.9-rc.2 - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/medusa-cli": 1.3.9 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 "@types/express": ^4.17.17 "@types/ioredis": ^4.28.10 "@types/jsonwebtoken": ^8.5.9 @@ -5911,10 +5911,10 @@ __metadata: jest: ^25.5.4 jsonwebtoken: ^8.5.1 lodash: ^4.17.21 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 medusa-telemetry: ^0.0.16 - medusa-test-utils: ^1.1.40-rc.0 + medusa-test-utils: ^1.1.40 morgan: ^1.9.1 multer: ^1.4.4 node-schedule: ^2.1.1 @@ -5936,20 +5936,20 @@ __metadata: uuid: ^8.3.2 winston: ^3.8.2 peerDependencies: - "@medusajs/types": 0.0.2-rc.1 - medusa-interfaces: 1.3.7-rc.0 + "@medusajs/types": 1.8.0 + medusa-interfaces: 1.3.7 typeorm: ^0.3.11 bin: medusa: ./cli.js languageName: unknown linkType: soft -"@medusajs/modules-sdk@0.1.0-rc.4, @medusajs/modules-sdk@workspace:packages/modules-sdk": +"@medusajs/modules-sdk@1.8.0, @medusajs/modules-sdk@workspace:packages/modules-sdk": version: 0.0.0-use.local resolution: "@medusajs/modules-sdk@workspace:packages/modules-sdk" dependencies: - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 awilix: ^8.0.0 cross-env: ^5.2.1 glob: 7.1.6 @@ -5965,7 +5965,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/oas-github-ci@workspace:packages/oas/oas-github-ci" dependencies: - "@medusajs/medusa-oas-cli": 0.2.0-rc.8 + "@medusajs/medusa-oas-cli": 0.2.0 "@readme/openapi-parser": ^2.4.0 "@redocly/cli": 1.0.0-beta.123 execa: ^5.1.1 @@ -5973,7 +5973,7 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/openapi-typescript-codegen@0.2.0-rc.0, @medusajs/openapi-typescript-codegen@workspace:packages/oas/openapi-typescript-codegen": +"@medusajs/openapi-typescript-codegen@0.2.0, @medusajs/openapi-typescript-codegen@workspace:packages/oas/openapi-typescript-codegen": version: 0.0.0-use.local resolution: "@medusajs/openapi-typescript-codegen@workspace:packages/oas/openapi-typescript-codegen" dependencies: @@ -6014,9 +6014,9 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/stock-location@workspace:packages/stock-location" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 awilix: ^8.0.0 cross-env: ^5.2.1 jest: ^25.5.4 @@ -6026,7 +6026,7 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/types@0.0.2-rc.1, @medusajs/types@workspace:packages/types": +"@medusajs/types@1.8.0, @medusajs/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@medusajs/types@workspace:packages/types" dependencies: @@ -6038,11 +6038,11 @@ __metadata: languageName: unknown linkType: soft -"@medusajs/utils@0.0.2-rc.2, @medusajs/utils@workspace:packages/utils": +"@medusajs/utils@1.8.0, @medusajs/utils@workspace:packages/utils": version: 0.0.0-use.local resolution: "@medusajs/utils@workspace:packages/utils" dependencies: - "@medusajs/types": 0.0.2-rc.1 + "@medusajs/types": 1.8.0 "@types/express": ^4.17.17 awilix: ^8.0.0 class-transformer: ^0.5.1 @@ -23351,14 +23351,14 @@ __metadata: "@babel/cli": ^7.12.10 "@babel/core": ^7.12.10 "@babel/node": ^7.12.10 - "@medusajs/cache-inmemory": 1.8.0-rc.3 - "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/cache-inmemory": 1.8.0 + "@medusajs/event-bus-local": 1.8.0 + "@medusajs/medusa": 1.8.0 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 jest-environment-node: 26.6.2 - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 typeorm: ^0.3.11 languageName: unknown linkType: soft @@ -23370,16 +23370,16 @@ __metadata: "@babel/cli": ^7.12.10 "@babel/core": ^7.12.10 "@babel/node": ^7.12.10 - "@medusajs/cache-inmemory": 1.8.0-rc.3 - "@medusajs/event-bus-local": 1.8.0-rc.4 - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/cache-inmemory": 1.8.0 + "@medusajs/event-bus-local": 1.8.0 + "@medusajs/medusa": 1.8.0 babel-preset-medusa-package: "*" faker: ^5.5.3 jest: ^26.6.3 jest-environment-node: 26.6.2 - medusa-fulfillment-webshipper: 1.3.8-rc.1 - medusa-interfaces: 1.3.7-rc.0 - medusa-plugin-sendgrid: 1.3.8-rc.0 + medusa-fulfillment-webshipper: 1.3.8 + medusa-interfaces: 1.3.7 + medusa-plugin-sendgrid: 1.3.8 typeorm: ^0.3.11 languageName: unknown linkType: soft @@ -23391,11 +23391,11 @@ __metadata: "@babel/cli": ^7.12.10 "@babel/core": ^7.12.10 "@babel/node": ^7.12.10 - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 babel-preset-medusa-package: "*" jest: ^26.6.3 jest-environment-node: 26.6.2 - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 typeorm: ^0.3.11 languageName: unknown linkType: soft @@ -28272,7 +28272,7 @@ __metadata: languageName: node linkType: hard -"medusa-core-utils@1.2.0-rc.0, medusa-core-utils@^1.2.0-rc.0, medusa-core-utils@workspace:packages/medusa-core-utils": +"medusa-core-utils@1.2.0, medusa-core-utils@^1.2.0, medusa-core-utils@workspace:packages/medusa-core-utils": version: 0.0.0-use.local resolution: "medusa-core-utils@workspace:packages/medusa-core-utils" dependencies: @@ -28331,11 +28331,11 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28359,11 +28359,11 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28387,12 +28387,12 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 stripe: ^8.50.0 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28412,14 +28412,14 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft -"medusa-fulfillment-webshipper@1.3.8-rc.1, medusa-fulfillment-webshipper@workspace:packages/medusa-fulfillment-webshipper": +"medusa-fulfillment-webshipper@1.3.8, medusa-fulfillment-webshipper@workspace:packages/medusa-fulfillment-webshipper": version: 0.0.0-use.local resolution: "medusa-fulfillment-webshipper@workspace:packages/medusa-fulfillment-webshipper" dependencies: @@ -28430,7 +28430,7 @@ __metadata: "@babel/plugin-transform-runtime": ^7.7.6 "@babel/preset-env": ^7.7.5 "@babel/runtime": ^7.9.6 - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 axios: ^0.20.0 body-parser: ^1.19.0 client-sessions: ^0.8.0 @@ -28438,14 +28438,14 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft -"medusa-interfaces@1.3.7-rc.0, medusa-interfaces@^1.3.7-rc.0, medusa-interfaces@workspace:packages/medusa-interfaces": +"medusa-interfaces@1.3.7, medusa-interfaces@^1.3.7, medusa-interfaces@workspace:packages/medusa-interfaces": version: 0.0.0-use.local resolution: "medusa-interfaces@workspace:packages/medusa-interfaces" dependencies: @@ -28460,8 +28460,8 @@ __metadata: "@babel/runtime": ^7.9.6 cross-env: ^5.2.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-test-utils: ^1.1.40 typescript: ^4.4.4 languageName: unknown linkType: soft @@ -28488,11 +28488,11 @@ __metadata: cross-env: ^7.0.3 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28517,11 +28517,11 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28542,10 +28542,10 @@ __metadata: "@babel/runtime": ^7.9.6 cross-env: ^5.2.1 jest: ^25.5.4 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28553,7 +28553,7 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-paypal@workspace:packages/medusa-payment-paypal" dependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 "@paypal/checkout-server-sdk": ^1.0.3 "@types/stripe": ^8.0.417 axios: ^1.3.4 @@ -28561,10 +28561,10 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 + medusa-core-utils: ^1.2.0 typescript: ^4.4.4 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 languageName: unknown linkType: soft @@ -28572,17 +28572,17 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-payment-stripe@workspace:packages/medusa-payment-stripe" dependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 "@types/stripe": ^8.0.417 body-parser: ^1.19.0 cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 + medusa-core-utils: ^1.2.0 stripe: ^11.10.0 typescript: ^4.9.5 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 languageName: unknown linkType: soft @@ -28590,9 +28590,9 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-plugin-algolia@workspace:packages/medusa-plugin-algolia" dependencies: - "@medusajs/modules-sdk": 0.1.0-rc.4 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/modules-sdk": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 algoliasearch: ^4.15.0 client-sessions: ^0.8.0 cross-env: ^5.2.1 @@ -28623,12 +28623,12 @@ __metadata: cross-env: ^7.0.3 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 randomatic: ^3.1.1 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28652,12 +28652,12 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 redis: ^3.0.2 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28680,11 +28680,11 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 randomatic: ^3.1.1 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28708,12 +28708,12 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 moment: ^2.27.0 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28732,9 +28732,9 @@ __metadata: axios: ^0.20.0 cross-env: ^5.2.1 jest: ^25.5.4 - medusa-interfaces: ^1.3.7-rc.0 + medusa-interfaces: ^1.3.7 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28759,11 +28759,11 @@ __metadata: express: ^4.17.1 jest: ^25.5.4 mailchimp-api-v3: ^1.14.0 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28771,9 +28771,9 @@ __metadata: version: 0.0.0-use.local resolution: "medusa-plugin-meilisearch@workspace:packages/medusa-plugin-meilisearch" dependencies: - "@medusajs/medusa": 1.8.0-rc.8 - "@medusajs/types": 0.0.2-rc.1 - "@medusajs/utils": 0.0.2-rc.2 + "@medusajs/medusa": 1.8.0 + "@medusajs/types": 1.8.0 + "@medusajs/utils": 1.8.0 body-parser: ^1.19.0 cross-env: ^5.2.1 jest: ^25.5.4 @@ -28797,14 +28797,14 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 pg: ^8.5.1 ulid: ^2.3.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 - medusa-interfaces: 1.3.7-rc.0 + "@medusajs/medusa": 1.8.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28829,15 +28829,15 @@ __metadata: eslint: ^6.8.0 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft -"medusa-plugin-sendgrid@1.3.8-rc.0, medusa-plugin-sendgrid@workspace:packages/medusa-plugin-sendgrid": +"medusa-plugin-sendgrid@1.3.8, medusa-plugin-sendgrid@workspace:packages/medusa-plugin-sendgrid": version: 0.0.0-use.local resolution: "medusa-plugin-sendgrid@workspace:packages/medusa-plugin-sendgrid" dependencies: @@ -28857,11 +28857,11 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28885,12 +28885,12 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 moment: ^2.27.0 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28911,12 +28911,12 @@ __metadata: body-parser: ^1.19.0 cross-env: ^5.2.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 twilio: ^3.49.1 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft @@ -28939,21 +28939,21 @@ __metadata: cross-env: ^5.2.1 express: ^4.17.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 languageName: unknown linkType: soft -"medusa-react@5.0.0-rc.8, medusa-react@workspace:packages/medusa-react": +"medusa-react@5.0.0, medusa-react@workspace:packages/medusa-react": version: 0.0.0-use.local resolution: "medusa-react@workspace:packages/medusa-react" dependencies: "@babel/core": ^7.16.0 - "@medusajs/medusa": 1.8.0-rc.8 - "@medusajs/medusa-js": 2.0.0-rc.8 + "@medusajs/medusa": 1.8.0 + "@medusajs/medusa-js": 2.0.0 "@storybook/addon-essentials": ^6.3.12 "@storybook/addon-links": ^6.3.12 "@storybook/addons": ^6.3.12 @@ -28979,7 +28979,7 @@ __metadata: tslib: ^2.3.1 tsup: ^6.5.0 peerDependencies: - "@medusajs/medusa": 1.8.0-rc.8 + "@medusajs/medusa": 1.8.0 "@tanstack/react-query": ^4.22.0 react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 @@ -29009,11 +29009,11 @@ __metadata: ioredis: ^4.27.9 jest: ^25.5.4 lodash: ^4.17.21 - medusa-core-utils: ^1.2.0-rc.0 - medusa-interfaces: ^1.3.7-rc.0 - medusa-test-utils: ^1.1.40-rc.0 + medusa-core-utils: ^1.2.0 + medusa-interfaces: ^1.3.7 + medusa-test-utils: ^1.1.40 peerDependencies: - medusa-interfaces: 1.3.7-rc.0 + medusa-interfaces: 1.3.7 typeorm: 0.x languageName: unknown linkType: soft @@ -29041,7 +29041,7 @@ __metadata: languageName: unknown linkType: soft -"medusa-test-utils@^1.1.40-rc.0, medusa-test-utils@workspace:packages/medusa-test-utils": +"medusa-test-utils@^1.1.40, medusa-test-utils@workspace:packages/medusa-test-utils": version: 0.0.0-use.local resolution: "medusa-test-utils@workspace:packages/medusa-test-utils" dependencies: @@ -29054,7 +29054,7 @@ __metadata: "@babel/runtime": ^7.9.6 cross-env: ^5.2.1 jest: ^25.5.4 - medusa-core-utils: ^1.2.0-rc.0 + medusa-core-utils: ^1.2.0 randomatic: ^3.1.1 languageName: unknown linkType: soft From 3838067a5409aa2d026f84ed374ff6279502b84d Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Tue, 4 Apr 2023 21:01:17 +0300 Subject: [PATCH 08/12] docs: updated meta image (#3720) --- www/docs/static/img/docs-banner.jpg | Bin 1194111 -> 165657 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/www/docs/static/img/docs-banner.jpg b/www/docs/static/img/docs-banner.jpg index 95df4f4074577b626ba8f65275219d31de3412c6..3be9ea2ce09321971bcae915782ba60ed6887389 100644 GIT binary patch literal 165657 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⁡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�O&G;U$LXM}Iuz%#@lbBi%)gUPLO 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�b&R%dz}^8k=^P)$7Ani1|2lc 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%0D+{cd)dCEmot*tp*N?uwrEz{1|Q5`uo5;f$o2r7 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

UbKcj~>L34xHZmO-#J=8syzzS1%#zI` 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�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

~oXi4wdj#?R!1IidFFj?NLP<^-*@1edyD*_5MEt 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

r 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

QZhO8eCSI+but9#8# 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 From 198f39f8d4a82b50cc5463b75c09a48ecc0a6482 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 21:01:53 +0300 Subject: [PATCH 09/12] chore(docs): Generated Services Reference (automated) (#3719) Co-authored-by: olivermrbl --- .../classes/AnalyticsConfigService.md | 54 ++-- .../services/classes/AuthService.md | 52 ++- .../services/classes/BatchJobService.md | 76 +++-- .../services/classes/CacheService.md | 119 ------- .../services/classes/CartService.md | 192 ++++++----- .../services/classes/ClaimItemService.md | 66 ++-- .../services/classes/ClaimService.md | 105 +++--- .../services/classes/CurrencyService.md | 56 ++-- .../classes/CustomShippingOptionService.md | 50 ++- .../services/classes/CustomerGroupService.md | 74 +++-- .../services/classes/CustomerService.md | 100 +++--- .../classes/DiscountConditionService.md | 56 ++-- .../services/classes/DiscountService.md | 116 ++++--- .../services/classes/DraftOrderService.md | 82 +++-- .../services/classes/EventBusService.md | 302 ++++++++++-------- .../classes/FulfillmentProviderService.md | 72 +++-- .../services/classes/FulfillmentService.md | 80 +++-- .../services/classes/GiftCardService.md | 76 +++-- .../services/classes/IdempotencyKeyService.md | 72 +++-- .../classes/LineItemAdjustmentService.md | 64 ++-- .../services/classes/LineItemService.md | 152 ++++----- .../services/classes/MiddlewareService.md | 28 +- .../services/classes/NewTotalsService.md | 70 ++-- .../services/classes/NoteService.md | 58 ++-- .../services/classes/NotificationService.md | 74 +++-- .../services/classes/OauthService.md | 76 +++-- .../classes/OrderEditItemChangeService.md | 62 ++-- .../services/classes/OrderEditService.md | 148 +++++---- .../services/classes/OrderService.md | 156 +++++---- .../classes/PaymentCollectionService.md | 93 +++--- .../classes/PaymentProviderService.md | 198 ++++++++---- .../services/classes/PaymentService.md | 62 ++-- .../services/classes/PriceListService.md | 98 +++--- .../services/classes/PricingService.md | 84 +++-- .../classes/ProductCategoryService.md | 170 ++++++++-- .../classes/ProductCollectionService.md | 90 ++++-- .../services/classes/ProductService.md | 158 +++++---- .../services/classes/ProductTypeService.md | 50 ++- .../classes/ProductVariantInventoryService.md | 118 ++++--- .../services/classes/ProductVariantService.md | 224 ++++++------- .../services/classes/RegionService.md | 114 ++++--- .../services/classes/ReturnReasonService.md | 54 ++-- .../services/classes/ReturnService.md | 134 ++++---- .../classes/SalesChannelInventoryService.md | 191 ++++++++++- .../classes/SalesChannelLocationService.md | 90 ++++-- .../services/classes/SalesChannelService.md | 86 ++--- .../services/classes/SearchService.md | 183 +---------- .../services/classes/ShippingOptionService.md | 98 +++--- .../classes/ShippingProfileService.md | 90 +++--- .../services/classes/StagedJobService.md | 274 ++++++++++++++++ .../services/classes/StoreService.md | 64 ++-- .../classes/StrategyResolverService.md | 44 ++- .../services/classes/SwapService.md | 103 +++--- .../classes/SystemPaymentProviderService.md | 62 ++-- .../services/classes/TaxProviderService.md | 90 +++--- .../services/classes/TaxRateService.md | 78 +++-- .../services/classes/TokenService.md | 10 +- .../services/classes/TotalsService.md | 120 ++++--- .../services/classes/UserService.md | 74 +++-- docs/content/references/services/index.md | 2 +- 60 files changed, 3569 insertions(+), 2425 deletions(-) delete mode 100644 docs/content/references/services/classes/CacheService.md create mode 100644 docs/content/references/services/classes/StagedJobService.md diff --git a/docs/content/references/services/classes/AnalyticsConfigService.md b/docs/content/references/services/classes/AnalyticsConfigService.md index 8d43258394..1056752d13 100644 --- a/docs/content/references/services/classes/AnalyticsConfigService.md +++ b/docs/content/references/services/classes/AnalyticsConfigService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/analytics-config.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L24) +[medusa/src/services/analytics-config.ts:21](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L21) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### analyticsConfigRepository\_ -• `Protected` `Readonly` **analyticsConfigRepository\_**: typeof `AnalyticsConfigRepository` +• `Protected` `Readonly` **analyticsConfigRepository\_**: `Repository`<`AnalyticsConfig`\> #### Defined in -[packages/medusa/src/services/analytics-config.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L21) +[medusa/src/services/analytics-config.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L18) ___ @@ -84,13 +84,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/analytics-config.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L18) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -98,13 +98,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/analytics-config.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L19) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -114,7 +114,25 @@ ___ #### Defined in -[packages/medusa/src/services/analytics-config.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L22) +[medusa/src/services/analytics-config.ts:19](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L19) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -153,7 +171,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -176,7 +194,7 @@ Creates an analytics config. #### Defined in -[packages/medusa/src/services/analytics-config.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L56) +[medusa/src/services/analytics-config.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L50) ___ @@ -198,7 +216,7 @@ Deletes an analytics config. #### Defined in -[packages/medusa/src/services/analytics-config.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L103) +[medusa/src/services/analytics-config.ts:94](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L94) ___ @@ -218,7 +236,7 @@ ___ #### Defined in -[packages/medusa/src/services/analytics-config.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L32) +[medusa/src/services/analytics-config.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L28) ___ @@ -242,7 +260,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -265,7 +283,7 @@ Updates an analytics config. If the config does not exist, it will be created in #### Defined in -[packages/medusa/src/services/analytics-config.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/analytics-config.ts#L72) +[medusa/src/services/analytics-config.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/analytics-config.ts#L65) ___ @@ -289,4 +307,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/AuthService.md b/docs/content/references/services/classes/AuthService.md index a23d1b4914..61b7a0cd6b 100644 --- a/docs/content/references/services/classes/AuthService.md +++ b/docs/content/references/services/classes/AuthService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/auth.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L24) +[medusa/src/services/auth.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L22) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/auth.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L22) +[medusa/src/services/auth.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L20) ___ @@ -86,13 +86,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/auth.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L19) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -100,13 +100,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/auth.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L20) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -116,7 +116,25 @@ ___ #### Defined in -[packages/medusa/src/services/auth.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L21) +[medusa/src/services/auth.ts:19](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L19) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -155,7 +173,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -183,7 +201,7 @@ success: whether authentication succeeded #### Defined in -[packages/medusa/src/services/auth.ts:97](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L97) +[medusa/src/services/auth.ts:95](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L95) ___ @@ -209,7 +227,7 @@ success: whether authentication succeeded #### Defined in -[packages/medusa/src/services/auth.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L54) +[medusa/src/services/auth.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L52) ___ @@ -237,7 +255,7 @@ success: whether authentication succeeded #### Defined in -[packages/medusa/src/services/auth.ts:146](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L146) +[medusa/src/services/auth.ts:144](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L144) ___ @@ -262,7 +280,7 @@ the result of the comparison #### Defined in -[packages/medusa/src/services/auth.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/auth.ts#L38) +[medusa/src/services/auth.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/auth.ts#L36) ___ @@ -286,7 +304,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -310,4 +328,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/BatchJobService.md b/docs/content/references/services/classes/BatchJobService.md index a1c6d8b3c1..3bc9b94e86 100644 --- a/docs/content/references/services/classes/BatchJobService.md +++ b/docs/content/references/services/classes/BatchJobService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/batch-job.ts:93](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L93) +[medusa/src/services/batch-job.ts:91](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L91) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### batchJobRepository\_ -• `Protected` `Readonly` **batchJobRepository\_**: typeof `BatchJobRepository` +• `Protected` `Readonly` **batchJobRepository\_**: `Repository`<`BatchJob`\> #### Defined in -[packages/medusa/src/services/batch-job.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L41) +[medusa/src/services/batch-job.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L39) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L45) +[medusa/src/services/batch-job.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L43) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L42) +[medusa/src/services/batch-job.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L40) ___ @@ -104,13 +104,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/batch-job.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L38) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -120,7 +120,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L43) +[medusa/src/services/batch-job.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L41) ___ @@ -128,13 +128,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/batch-job.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L39) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -157,7 +157,25 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L27) +[medusa/src/services/batch-job.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L28) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -196,7 +214,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -216,7 +234,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:277](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L277) +[medusa/src/services/batch-job.ts:270](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L270) ___ @@ -236,7 +254,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:259](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L259) +[medusa/src/services/batch-job.ts:252](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L252) ___ @@ -256,7 +274,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:241](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L241) +[medusa/src/services/batch-job.ts:234](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L234) ___ @@ -276,7 +294,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:146](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L146) +[medusa/src/services/batch-job.ts:144](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L144) ___ @@ -297,7 +315,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:135](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L135) +[medusa/src/services/batch-job.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L132) ___ @@ -318,7 +336,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:374](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L374) +[medusa/src/services/batch-job.ts:367](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L367) ___ @@ -339,7 +357,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:108](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L108) +[medusa/src/services/batch-job.ts:104](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L104) ___ @@ -360,7 +378,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:348](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L348) +[medusa/src/services/batch-job.ts:341](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L341) ___ @@ -380,7 +398,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:295](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L295) +[medusa/src/services/batch-job.ts:288](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L288) ___ @@ -400,7 +418,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:328](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L328) +[medusa/src/services/batch-job.ts:321](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L321) ___ @@ -424,7 +442,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -445,7 +463,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:165](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L165) +[medusa/src/services/batch-job.ts:161](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L161) ___ @@ -466,7 +484,7 @@ ___ #### Defined in -[packages/medusa/src/services/batch-job.ts:206](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/batch-job.ts#L206) +[medusa/src/services/batch-job.ts:200](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/batch-job.ts#L200) ___ @@ -490,4 +508,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/CacheService.md b/docs/content/references/services/classes/CacheService.md deleted file mode 100644 index 1c52458bec..0000000000 --- a/docs/content/references/services/classes/CacheService.md +++ /dev/null @@ -1,119 +0,0 @@ -# Class: CacheService - -## Implements - -- `ICacheService` - -## Constructors - -### constructor - -• **new CacheService**(`__namedParameters`) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `__namedParameters` | `Object` | - -#### Defined in - -[packages/medusa/src/services/cache.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cache.ts#L10) - -## Properties - -### redis\_ - -• `Protected` `Readonly` **redis\_**: `Redis` - -#### Defined in - -[packages/medusa/src/services/cache.ts:8](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cache.ts#L8) - -## Methods - -### get - -▸ **get**<`T`\>(`cacheKey`): `Promise`<``null`` \| `T`\> - -Retrieve a cached value belonging to the given key. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `cacheKey` | `string` | - -#### Returns - -`Promise`<``null`` \| `T`\> - -#### Implementation of - -ICacheService.get - -#### Defined in - -[packages/medusa/src/services/cache.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cache.ts#L40) - -___ - -### invalidate - -▸ **invalidate**(`key`): `Promise`<`void`\> - -Invalidate cache for a specific key. a key can be either a specific key or more global such as "ps:*". - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `key` | `string` | - -#### Returns - -`Promise`<`void`\> - -#### Implementation of - -ICacheService.invalidate - -#### Defined in - -[packages/medusa/src/services/cache.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cache.ts#L56) - -___ - -### set - -▸ **set**(`key`, `data`, `ttl?`): `Promise`<`void`\> - -Set a key/value pair to the cache. -It is also possible to manage the ttl through environment variable using CACHE_TTL. If the ttl is 0 it will -act like the value should not be cached at all. - -#### Parameters - -| Name | Type | Default value | -| :------ | :------ | :------ | -| `key` | `string` | `undefined` | -| `data` | `Record`<`string`, `unknown`\> | `undefined` | -| `ttl` | `number` | `DEFAULT_CACHE_TIME` | - -#### Returns - -`Promise`<`void`\> - -#### Implementation of - -ICacheService.set - -#### Defined in - -[packages/medusa/src/services/cache.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cache.ts#L22) diff --git a/docs/content/references/services/classes/CartService.md b/docs/content/references/services/classes/CartService.md index af8f829e4d..75519bfbc6 100644 --- a/docs/content/references/services/classes/CartService.md +++ b/docs/content/references/services/classes/CartService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/cart.ts:137](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L137) +[medusa/src/services/cart.ts:134](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L134) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,27 +66,27 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### addressRepository\_ -• `Protected` `Readonly` **addressRepository\_**: typeof `AddressRepository` +• `Protected` `Readonly` **addressRepository\_**: `Repository`<`Address`\> #### Defined in -[packages/medusa/src/services/cart.ts:112](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L112) +[medusa/src/services/cart.ts:109](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L109) ___ ### cartRepository\_ -• `Protected` `Readonly` **cartRepository\_**: typeof `CartRepository` +• `Protected` `Readonly` **cartRepository\_**: `Repository`<`Cart`\> #### Defined in -[packages/medusa/src/services/cart.ts:111](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L111) +[medusa/src/services/cart.ts:108](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L108) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:130](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L130) +[medusa/src/services/cart.ts:127](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L127) ___ @@ -106,7 +106,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:123](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L123) +[medusa/src/services/cart.ts:120](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L120) ___ @@ -116,7 +116,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:125](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L125) +[medusa/src/services/cart.ts:122](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L122) ___ @@ -126,7 +126,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:115](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L115) +[medusa/src/services/cart.ts:112](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L112) ___ @@ -136,7 +136,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:133](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L133) +[medusa/src/services/cart.ts:130](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L130) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:126](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L126) +[medusa/src/services/cart.ts:123](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L123) ___ @@ -156,17 +156,17 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:132](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L132) +[medusa/src/services/cart.ts:129](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L129) ___ ### lineItemRepository\_ -• `Protected` `Readonly` **lineItemRepository\_**: typeof `LineItemRepository` +• `Protected` `Readonly` **lineItemRepository\_**: `Repository`<`LineItem`\> & { `findByReturn`: (`returnId`: `string`) => `Promise`<`LineItem` & { `return_item`: `ReturnItem` }[]\> } #### Defined in -[packages/medusa/src/services/cart.ts:114](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L114) +[medusa/src/services/cart.ts:111](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L111) ___ @@ -176,7 +176,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:121](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L121) +[medusa/src/services/cart.ts:118](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L118) ___ @@ -184,13 +184,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/cart.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L107) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -200,7 +200,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:129](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L129) +[medusa/src/services/cart.ts:126](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L126) ___ @@ -210,17 +210,17 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:122](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L122) +[medusa/src/services/cart.ts:119](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L119) ___ ### paymentSessionRepository\_ -• `Protected` `Readonly` **paymentSessionRepository\_**: typeof `PaymentSessionRepository` +• `Protected` `Readonly` **paymentSessionRepository\_**: `Repository`<`PaymentSession`\> #### Defined in -[packages/medusa/src/services/cart.ts:113](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L113) +[medusa/src/services/cart.ts:110](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L110) ___ @@ -230,7 +230,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:131](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L131) +[medusa/src/services/cart.ts:128](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L128) ___ @@ -240,7 +240,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L117) +[medusa/src/services/cart.ts:114](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L114) ___ @@ -250,7 +250,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:135](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L135) +[medusa/src/services/cart.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L132) ___ @@ -260,7 +260,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:116](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L116) +[medusa/src/services/cart.ts:113](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L113) ___ @@ -270,7 +270,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:120](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L120) +[medusa/src/services/cart.ts:117](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L117) ___ @@ -280,17 +280,17 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:119](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L119) +[medusa/src/services/cart.ts:116](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L116) ___ ### shippingMethodRepository\_ -• `Protected` `Readonly` **shippingMethodRepository\_**: typeof `ShippingMethodRepository` +• `Protected` `Readonly` **shippingMethodRepository\_**: `Repository`<`ShippingMethod`\> #### Defined in -[packages/medusa/src/services/cart.ts:110](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L110) +[medusa/src/services/cart.ts:107](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L107) ___ @@ -300,7 +300,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:124](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L124) +[medusa/src/services/cart.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L121) ___ @@ -310,7 +310,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:118](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L118) +[medusa/src/services/cart.ts:115](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L115) ___ @@ -320,7 +320,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:127](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L127) +[medusa/src/services/cart.ts:124](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L124) ___ @@ -330,7 +330,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:128](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L128) +[medusa/src/services/cart.ts:125](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L125) ___ @@ -338,13 +338,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/cart.ts:108](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L108) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -362,7 +362,25 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:101](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L101) +[medusa/src/services/cart.ts:101](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L101) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -393,7 +411,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:619](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L619) +[medusa/src/services/cart.ts:614](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L614) ___ @@ -421,7 +439,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:745](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L745) +[medusa/src/services/cart.ts:747](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L747) ___ @@ -439,7 +457,7 @@ shop. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrId` | `string` \| `Cart` | the id or the cart to add shipping method to | +| `cartOrId` | `string` \| `Cart` | the id of the cart to add shipping method to | | `optionId` | `string` | id of shipping option to add as valid method | | `data` | `Record`<`string`, `unknown`\> | the fulmillment data for the method | @@ -451,7 +469,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:2068](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2068) +[medusa/src/services/cart.ts:2091](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2091) ___ @@ -479,7 +497,7 @@ void #### Defined in -[packages/medusa/src/services/cart.ts:992](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L992) +[medusa/src/services/cart.ts:1008](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1008) ___ @@ -505,7 +523,7 @@ Throws if discount regions does not include the cart region #### Defined in -[packages/medusa/src/services/cart.ts:1414](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1414) +[medusa/src/services/cart.ts:1429](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1429) ___ @@ -531,7 +549,7 @@ Throws if discount regions does not include the cart region #### Defined in -[packages/medusa/src/services/cart.ts:1426](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1426) +[medusa/src/services/cart.ts:1441](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1441) ___ @@ -552,7 +570,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:1379](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1379) +[medusa/src/services/cart.ts:1394](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1394) ___ @@ -591,7 +609,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -620,7 +638,7 @@ the resulting cart #### Defined in -[packages/medusa/src/services/cart.ts:1592](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1592) +[medusa/src/services/cart.ts:1607](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1607) ___ @@ -644,7 +662,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/cart.ts:320](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L320) +[medusa/src/services/cart.ts:306](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L306) ___ @@ -668,7 +686,7 @@ the resultign customer object #### Defined in -[packages/medusa/src/services/cart.ts:1266](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1266) +[medusa/src/services/cart.ts:1280](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1280) ___ @@ -688,7 +706,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2477](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2477) +[medusa/src/services/cart.ts:2497](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2497) ___ @@ -709,7 +727,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2527](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2527) +[medusa/src/services/cart.ts:2549](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2549) ___ @@ -735,7 +753,7 @@ Use decorateTotals instead #### Defined in -[packages/medusa/src/services/cart.ts:2700](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2700) +[medusa/src/services/cart.ts:2724](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2724) ___ @@ -759,7 +777,7 @@ the deleted cart or undefined if the cart was not found. #### Defined in -[packages/medusa/src/services/cart.ts:2392](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2392) +[medusa/src/services/cart.ts:2414](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2414) ___ @@ -784,7 +802,7 @@ the resulting cart. #### Defined in -[packages/medusa/src/services/cart.ts:1959](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1959) +[medusa/src/services/cart.ts:1984](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1984) ___ @@ -804,7 +822,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2508](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2508) +[medusa/src/services/cart.ts:2530](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2530) ___ @@ -830,7 +848,7 @@ custom shipping option #### Defined in -[packages/medusa/src/services/cart.ts:2175](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2175) +[medusa/src/services/cart.ts:2198](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2198) ___ @@ -850,7 +868,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2751](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2751) +[medusa/src/services/cart.ts:2775](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2775) ___ @@ -870,7 +888,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:456](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L456) +[medusa/src/services/cart.ts:444](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L444) ___ @@ -893,7 +911,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/cart.ts:201](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L201) +[medusa/src/services/cart.ts:196](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L196) ___ @@ -918,7 +936,7 @@ void #### Defined in -[packages/medusa/src/services/cart.ts:1212](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1212) +[medusa/src/services/cart.ts:1226](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1226) ___ @@ -938,7 +956,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2621](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2621) +[medusa/src/services/cart.ts:2648](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2648) ___ @@ -963,7 +981,7 @@ the resulting cart. #### Defined in -[packages/medusa/src/services/cart.ts:2013](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2013) +[medusa/src/services/cart.ts:2036](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2036) ___ @@ -988,7 +1006,7 @@ the resulting cart #### Defined in -[packages/medusa/src/services/cart.ts:1502](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1502) +[medusa/src/services/cart.ts:1517](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1517) ___ @@ -1013,7 +1031,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:488](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L488) +[medusa/src/services/cart.ts:476](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L476) ___ @@ -1039,7 +1057,7 @@ the cart document. #### Defined in -[packages/medusa/src/services/cart.ts:219](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L219) +[medusa/src/services/cart.ts:213](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L213) ___ @@ -1063,7 +1081,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:268](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L268) +[medusa/src/services/cart.ts:258](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L258) ___ @@ -1085,7 +1103,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:300](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L300) +[medusa/src/services/cart.ts:286](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L286) ___ @@ -1113,7 +1131,7 @@ resolves to the updated result. #### Defined in -[packages/medusa/src/services/cart.ts:2435](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2435) +[medusa/src/services/cart.ts:2457](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2457) ___ @@ -1136,7 +1154,7 @@ Selects a payment session for a cart and creates a payment object in the externa #### Defined in -[packages/medusa/src/services/cart.ts:1666](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1666) +[medusa/src/services/cart.ts:1686](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1686) ___ @@ -1164,7 +1182,7 @@ the result of the update operation. #### Defined in -[packages/medusa/src/services/cart.ts:1781](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1781) +[medusa/src/services/cart.ts:1804](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1804) ___ @@ -1190,7 +1208,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:2258](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2258) +[medusa/src/services/cart.ts:2284](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2284) ___ @@ -1214,7 +1232,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -1234,7 +1252,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2642](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2642) +[medusa/src/services/cart.ts:2666](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2666) ___ @@ -1255,7 +1273,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:1035](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1035) +[medusa/src/services/cart.ts:1049](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1049) ___ @@ -1271,7 +1289,7 @@ Updates the cart's billing address. | :------ | :------ | :------ | | `cart` | `Cart` | the cart to update | | `addressOrId` | `string` \| `AddressPayload` \| `Partial`<`Address`\> | the value to set the billing address to | -| `addrRepo` | `AddressRepository` | the repository to use for address updates | +| `addrRepo` | `Repository`<`Address`\> | the repository to use for address updates | #### Returns @@ -1281,7 +1299,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:1292](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1292) +[medusa/src/services/cart.ts:1307](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1307) ___ @@ -1306,7 +1324,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:1248](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1248) +[medusa/src/services/cart.ts:1262](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1262) ___ @@ -1332,7 +1350,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:915](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L915) +[medusa/src/services/cart.ts:924](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L924) ___ @@ -1357,7 +1375,7 @@ the resulting cart #### Defined in -[packages/medusa/src/services/cart.ts:1554](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1554) +[medusa/src/services/cart.ts:1569](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1569) ___ @@ -1373,7 +1391,7 @@ Updates the cart's shipping address. | :------ | :------ | :------ | | `cart` | `Cart` | the cart to update | | `addressOrId` | `string` \| `AddressPayload` \| `Partial`<`Address`\> | the value to set the shipping address to | -| `addrRepo` | `AddressRepository` | the repository to use for address updates | +| `addrRepo` | `Repository`<`Address`\> | the repository to use for address updates | #### Returns @@ -1383,7 +1401,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/cart.ts:1330](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L1330) +[medusa/src/services/cart.ts:1345](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L1345) ___ @@ -1405,7 +1423,7 @@ ___ #### Defined in -[packages/medusa/src/services/cart.ts:2194](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L2194) +[medusa/src/services/cart.ts:2217](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L2217) ___ @@ -1431,7 +1449,7 @@ a boolean indicating validation result #### Defined in -[packages/medusa/src/services/cart.ts:585](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L585) +[medusa/src/services/cart.ts:580](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L580) ___ @@ -1458,7 +1476,7 @@ boolean representing whether shipping method is validated #### Defined in -[packages/medusa/src/services/cart.ts:554](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/cart.ts#L554) +[medusa/src/services/cart.ts:549](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/cart.ts#L549) ___ @@ -1482,4 +1500,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ClaimItemService.md b/docs/content/references/services/classes/ClaimItemService.md index 500c3e28e8..981e467e32 100644 --- a/docs/content/references/services/classes/ClaimItemService.md +++ b/docs/content/references/services/classes/ClaimItemService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/claim-item.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L30) +[medusa/src/services/claim-item.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L26) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,37 +66,37 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### claimImageRepository\_ -• `Protected` `Readonly` **claimImageRepository\_**: typeof `ClaimImageRepository` +• `Protected` `Readonly` **claimImageRepository\_**: `Repository`<`ClaimImage`\> #### Defined in -[packages/medusa/src/services/claim-item.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L25) +[medusa/src/services/claim-item.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L24) ___ ### claimItemRepository\_ -• `Protected` `Readonly` **claimItemRepository\_**: typeof `ClaimItemRepository` +• `Protected` `Readonly` **claimItemRepository\_**: `Repository`<`ClaimItem`\> #### Defined in -[packages/medusa/src/services/claim-item.ts:23](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L23) +[medusa/src/services/claim-item.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L22) ___ ### claimTagRepository\_ -• `Protected` `Readonly` **claimTagRepository\_**: typeof `ClaimTagRepository` +• `Protected` `Readonly` **claimTagRepository\_**: `Repository`<`ClaimTag`\> #### Defined in -[packages/medusa/src/services/claim-item.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L24) +[medusa/src/services/claim-item.ts:23](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L23) ___ @@ -106,7 +106,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim-item.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L22) +[medusa/src/services/claim-item.ts:21](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L21) ___ @@ -116,7 +116,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim-item.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L21) +[medusa/src/services/claim-item.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L20) ___ @@ -124,13 +124,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/claim-item.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L27) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -138,13 +138,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/claim-item.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L28) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -162,7 +162,25 @@ ___ #### Defined in -[packages/medusa/src/services/claim-item.ts:15](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L15) +[medusa/src/services/claim-item.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L14) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -201,7 +219,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -221,7 +239,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim-item.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L49) +[medusa/src/services/claim-item.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L43) ___ @@ -244,7 +262,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/claim-item.ts:221](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L221) +[medusa/src/services/claim-item.ts:205](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L205) ___ @@ -269,7 +287,7 @@ the ClaimItem #### Defined in -[packages/medusa/src/services/claim-item.ts:240](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L240) +[medusa/src/services/claim-item.ts:224](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L224) ___ @@ -293,7 +311,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -314,7 +332,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim-item.ts:139](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim-item.ts#L139) +[medusa/src/services/claim-item.ts:127](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim-item.ts#L127) ___ @@ -338,4 +356,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ClaimService.md b/docs/content/references/services/classes/ClaimService.md index 70f3ba5f7e..2019ce5fc2 100644 --- a/docs/content/references/services/classes/ClaimService.md +++ b/docs/content/references/services/classes/ClaimService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/claim.ts:89](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L89) +[medusa/src/services/claim.ts:86](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L86) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### addressRepository\_ -• `Protected` `Readonly` **addressRepository\_**: typeof `AddressRepository` +• `Protected` `Readonly` **addressRepository\_**: `Repository`<`Address`\> #### Defined in -[packages/medusa/src/services/claim.ts:71](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L71) +[medusa/src/services/claim.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L68) ___ @@ -86,17 +86,17 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:75](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L75) +[medusa/src/services/claim.ts:72](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L72) ___ ### claimRepository\_ -• `Protected` `Readonly` **claimRepository\_**: typeof `ClaimRepository` +• `Protected` `Readonly` **claimRepository\_**: `Repository`<`ClaimOrder`\> #### Defined in -[packages/medusa/src/services/claim.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L72) +[medusa/src/services/claim.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L69) ___ @@ -106,7 +106,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:76](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L76) +[medusa/src/services/claim.ts:73](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L73) ___ @@ -116,7 +116,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:77](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L77) +[medusa/src/services/claim.ts:74](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L74) ___ @@ -126,17 +126,17 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L78) +[medusa/src/services/claim.ts:75](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L75) ___ ### lineItemRepository\_ -• `Protected` `Readonly` **lineItemRepository\_**: typeof `LineItemRepository` +• `Protected` `Readonly` **lineItemRepository\_**: `Repository`<`LineItem`\> & { `findByReturn`: (`returnId`: `string`) => `Promise`<`LineItem` & { `return_item`: `ReturnItem` }[]\> } #### Defined in -[packages/medusa/src/services/claim.ts:74](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L74) +[medusa/src/services/claim.ts:71](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L71) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:79](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L79) +[medusa/src/services/claim.ts:76](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L76) ___ @@ -154,13 +154,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/claim.ts:68](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L68) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -170,7 +170,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:80](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L80) +[medusa/src/services/claim.ts:77](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L77) ___ @@ -180,7 +180,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:87](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L87) +[medusa/src/services/claim.ts:84](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L84) ___ @@ -190,7 +190,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:81](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L81) +[medusa/src/services/claim.ts:78](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L78) ___ @@ -200,17 +200,17 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L82) +[medusa/src/services/claim.ts:79](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L79) ___ ### shippingMethodRepository\_ -• `Protected` `Readonly` **shippingMethodRepository\_**: typeof `ShippingMethodRepository` +• `Protected` `Readonly` **shippingMethodRepository\_**: `Repository`<`ShippingMethod`\> #### Defined in -[packages/medusa/src/services/claim.ts:73](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L73) +[medusa/src/services/claim.ts:70](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L70) ___ @@ -220,7 +220,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:83](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L83) +[medusa/src/services/claim.ts:80](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L80) ___ @@ -230,7 +230,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:84](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L84) +[medusa/src/services/claim.ts:81](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L81) ___ @@ -240,7 +240,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:85](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L85) +[medusa/src/services/claim.ts:82](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L82) ___ @@ -248,13 +248,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/claim.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L69) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -275,7 +275,25 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L59) +[medusa/src/services/claim.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L59) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -314,7 +332,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -334,7 +352,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:810](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L810) +[medusa/src/services/claim.ts:813](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L813) ___ @@ -354,7 +372,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:658](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L658) +[medusa/src/services/claim.ts:661](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L661) ___ @@ -380,7 +398,7 @@ created claim #### Defined in -[packages/medusa/src/services/claim.ts:337](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L337) +[medusa/src/services/claim.ts:331](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L331) ___ @@ -394,6 +412,7 @@ ___ | :------ | :------ | :------ | | `id` | `string` | the object containing all data required to create a claim | | `config` | `Object` | config object | +| `config.location_id?` | `string` | - | | `config.metadata?` | `Record`<`string`, `unknown`\> | config metadata | | `config.no_notification?` | `boolean` | config no notification | @@ -405,7 +424,7 @@ created claim #### Defined in -[packages/medusa/src/services/claim.ts:510](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L510) +[medusa/src/services/claim.ts:512](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L512) ___ @@ -430,7 +449,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:730](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L730) +[medusa/src/services/claim.ts:733](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L733) ___ @@ -460,7 +479,7 @@ the refund amount #### Defined in -[packages/medusa/src/services/claim.ts:279](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L279) +[medusa/src/services/claim.ts:273](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L273) ___ @@ -483,7 +502,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/claim.ts:866](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L866) +[medusa/src/services/claim.ts:869](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L869) ___ @@ -503,7 +522,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:684](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L684) +[medusa/src/services/claim.ts:687](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L687) ___ @@ -528,7 +547,7 @@ the order document #### Defined in -[packages/medusa/src/services/claim.ts:886](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L886) +[medusa/src/services/claim.ts:888](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L888) ___ @@ -552,7 +571,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -573,7 +592,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:131](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L131) +[medusa/src/services/claim.ts:125](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L125) ___ @@ -593,7 +612,7 @@ ___ #### Defined in -[packages/medusa/src/services/claim.ts:212](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/claim.ts#L212) +[medusa/src/services/claim.ts:206](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/claim.ts#L206) ___ @@ -617,4 +636,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/CurrencyService.md b/docs/content/references/services/classes/CurrencyService.md index 6d015c3e86..acbab853e0 100644 --- a/docs/content/references/services/classes/CurrencyService.md +++ b/docs/content/references/services/classes/CurrencyService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/currency.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L32) +[medusa/src/services/currency.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L29) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### currencyRepository\_ -• `Protected` `Readonly` **currencyRepository\_**: typeof `CurrencyRepository` +• `Protected` `Readonly` **currencyRepository\_**: `Repository`<`Currency`\> #### Defined in -[packages/medusa/src/services/currency.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L28) +[medusa/src/services/currency.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L25) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/currency.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L29) +[medusa/src/services/currency.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L26) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/currency.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L30) +[medusa/src/services/currency.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L27) ___ @@ -104,13 +104,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/currency.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L25) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -118,13 +118,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/currency.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -140,7 +140,25 @@ ___ #### Defined in -[packages/medusa/src/services/currency.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L21) +[medusa/src/services/currency.ts:21](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L21) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -179,7 +197,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -207,7 +225,7 @@ an array containing the currencies as #### Defined in -[packages/medusa/src/services/currency.ts:81](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L81) +[medusa/src/services/currency.ts:78](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L78) ___ @@ -231,7 +249,7 @@ The currency #### Defined in -[packages/medusa/src/services/currency.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L50) +[medusa/src/services/currency.ts:47](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L47) ___ @@ -255,7 +273,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -280,7 +298,7 @@ The updated currency #### Defined in -[packages/medusa/src/services/currency.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/currency.ts#L103) +[medusa/src/services/currency.ts:100](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/currency.ts#L100) ___ @@ -304,4 +322,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/CustomShippingOptionService.md b/docs/content/references/services/classes/CustomShippingOptionService.md index ccebd38bb1..dffbaf5372 100644 --- a/docs/content/references/services/classes/CustomShippingOptionService.md +++ b/docs/content/references/services/classes/CustomShippingOptionService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L20) +[medusa/src/services/custom-shipping-option.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/custom-shipping-option.ts#L18) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### customShippingOptionRepository\_ -• `Protected` **customShippingOptionRepository\_**: typeof `CustomShippingOptionRepository` +• `Protected` **customShippingOptionRepository\_**: `Repository`<`CustomShippingOption`\> #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L18) +[medusa/src/services/custom-shipping-option.ts:16](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/custom-shipping-option.ts#L16) ___ @@ -84,13 +84,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:15](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L15) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -98,13 +98,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:16](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L16) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -174,7 +192,7 @@ resolves to the creation result #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:89](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L89) +[medusa/src/services/custom-shipping-option.ts:80](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/custom-shipping-option.ts#L80) ___ @@ -199,7 +217,7 @@ custom shipping options matching the query #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L65) +[medusa/src/services/custom-shipping-option.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/custom-shipping-option.ts#L58) ___ @@ -224,7 +242,7 @@ the requested custom shipping option. #### Defined in -[packages/medusa/src/services/custom-shipping-option.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/custom-shipping-option.ts#L37) +[medusa/src/services/custom-shipping-option.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/custom-shipping-option.ts#L31) ___ @@ -248,7 +266,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -272,4 +290,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/CustomerGroupService.md b/docs/content/references/services/classes/CustomerGroupService.md index c856542c46..c871976d0d 100644 --- a/docs/content/references/services/classes/CustomerGroupService.md +++ b/docs/content/references/services/classes/CustomerGroupService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/customer-group.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L27) +[medusa/src/services/customer-group.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L24) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### customerGroupRepository\_ -• `Protected` `Readonly` **customerGroupRepository\_**: typeof `CustomerGroupRepository` +• `Protected` `Readonly` **customerGroupRepository\_**: `Repository`<`CustomerGroup`\> & { `addCustomers`: (`groupId`: `string`, `customerIds`: `string`[]) => `Promise`<`CustomerGroup`\> ; `findWithRelationsAndCount`: (`relations`: `FindOptionsRelations`<`CustomerGroup`\>, `idsOrOptionsWithoutRelations`: `FindWithoutRelationsOptions`) => `Promise`<[`CustomerGroup`[], `number`]\> ; `removeCustomers`: (`groupId`: `string`, `customerIds`: `string`[]) => `Promise`<`DeleteResult`\> } #### Defined in -[packages/medusa/src/services/customer-group.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L24) +[medusa/src/services/customer-group.ts:21](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L21) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer-group.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L25) +[medusa/src/services/customer-group.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L22) ___ @@ -94,13 +94,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/customer-group.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L21) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -108,13 +108,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/customer-group.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L22) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -139,7 +157,7 @@ the customer group after insertion #### Defined in -[packages/medusa/src/services/customer-group.ts:94](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L94) +[medusa/src/services/customer-group.ts:89](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L89) ___ @@ -178,7 +196,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -192,15 +210,7 @@ Creates a customer group with the provided data. | Name | Type | Description | | :------ | :------ | :------ | -| `group` | `Object` | the customer group to create | -| `group.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `group.customers?` | (`undefined` \| { email?: string \| undefined; first\_name?: string \| undefined; last\_name?: string \| undefined; billing\_address\_id?: string \| null \| undefined; billing\_address?: { customer\_id?: string \| null \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 10 more ...; updated\_at?: { ...; } \| undef...)[] | - | -| `group.deleted_at?` | ``null`` \| { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `group.id?` | `string` | - | -| `group.metadata?` | { [x: string]: unknown; } | - | -| `group.name?` | `string` | - | -| `group.price_lists?` | (`undefined` \| { name?: string \| undefined; description?: string \| undefined; type?: PriceListType \| undefined; status?: PriceListStatus \| undefined; starts\_at?: { ...; } \| ... 1 more ... \| undefined; ... 7 more ...; updated\_at?: { ...; } \| undefined; })[] | - | -| `group.updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | +| `group` | `DeepPartial`<`CustomerGroup`\> | the customer group to create | #### Returns @@ -210,7 +220,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/customer-group.ts:70](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L70) +[medusa/src/services/customer-group.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L65) ___ @@ -234,7 +244,7 @@ a promise #### Defined in -[packages/medusa/src/services/customer-group.ts:158](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L158) +[medusa/src/services/customer-group.ts:153](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L153) ___ @@ -256,7 +266,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer-group.ts:261](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L261) +[medusa/src/services/customer-group.ts:257](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L257) ___ @@ -281,7 +291,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/customer-group.ts:181](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L181) +[medusa/src/services/customer-group.ts:176](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L176) ___ @@ -306,7 +316,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/customer-group.ts:199](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L199) +[medusa/src/services/customer-group.ts:194](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L194) ___ @@ -331,7 +341,7 @@ the customergroup with the provided id #### Defined in -[packages/medusa/src/services/customer-group.ts:240](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L240) +[medusa/src/services/customer-group.ts:236](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L236) ___ @@ -352,7 +362,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer-group.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L40) +[medusa/src/services/customer-group.ts:35](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L35) ___ @@ -376,7 +386,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -401,7 +411,7 @@ resulting customer group #### Defined in -[packages/medusa/src/services/customer-group.ts:125](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer-group.ts#L125) +[medusa/src/services/customer-group.ts:120](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer-group.ts#L120) ___ @@ -425,4 +435,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/CustomerService.md b/docs/content/references/services/classes/CustomerService.md index a7945223d5..96e6b66980 100644 --- a/docs/content/references/services/classes/CustomerService.md +++ b/docs/content/references/services/classes/CustomerService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/customer.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L39) +[medusa/src/services/customer.ts:46](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L46) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,27 +68,27 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### addressRepository\_ -• `Protected` `Readonly` **addressRepository\_**: typeof `AddressRepository` +• `Protected` `Readonly` **addressRepository\_**: `Repository`<`Address`\> #### Defined in -[packages/medusa/src/services/customer.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L27) +[medusa/src/services/customer.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L37) ___ ### customerRepository\_ -• `Protected` `Readonly` **customerRepository\_**: typeof `CustomerRepository` +• `Protected` `Readonly` **customerRepository\_**: `Repository`<`Customer`\> & { `listAndCount`: (`query`: `Omit`<`FindOneOptions`<`Customer`\>, ``"where"`` \| ``"select"`` \| ``"relations"``\> & { `order?`: `FindOptionsOrder`<`Customer`\> ; `relations?`: `FindOptionsRelations`<`Customer`\> ; `select?`: `FindOptionsSelect`<`Customer`\> ; `skip?`: `number` ; `take?`: `number` ; `where`: `FindOptionsWhere`<`Customer`\> \| `FindOptionsWhere`<`Customer`\>[] } & { `where`: `FindOptionsWhere`<`Customer` & { `groups?`: `FindOperator`<`string`[]\> }\> } & `Omit`<`FindManyOptions`<`Customer`\>, ``"where"`` \| ``"select"`` \| ``"relations"``\> & { `order?`: `FindOptionsOrder`<`Customer`\> ; `relations?`: `FindOptionsRelations`<`Customer`\> ; `select?`: `FindOptionsSelect`<`Customer`\> ; `skip?`: `number` ; `take?`: `number` ; `where`: `FindOptionsWhere`<`Customer`\> \| `FindOptionsWhere`<`Customer`\>[] } & { `where`: `FindOptionsWhere`<`Customer` & { `groups?`: `FindOperator`<`string`[]\> }\> }, `q`: `undefined` \| `string`) => `Promise`<[`Customer`[], `number`]\> } #### Defined in -[packages/medusa/src/services/customer.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L26) +[medusa/src/services/customer.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L36) ___ @@ -98,35 +98,35 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L28) +[medusa/src/services/customer.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L38) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/customer.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L30) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### transactionManager\_ -• `Protected` `Readonly` **transactionManager\_**: `undefined` \| `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/customer.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -144,7 +144,25 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L33) +[medusa/src/services/customer.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L40) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -165,7 +183,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:498](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L498) +[medusa/src/services/customer.ts:519](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L519) ___ @@ -204,7 +222,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -222,7 +240,7 @@ the result of the count operation #### Defined in -[packages/medusa/src/services/customer.ts:158](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L158) +[medusa/src/services/customer.ts:178](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L178) ___ @@ -249,7 +267,7 @@ the result of create #### Defined in -[packages/medusa/src/services/customer.ts:285](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L285) +[medusa/src/services/customer.ts:306](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L306) ___ @@ -273,7 +291,7 @@ the result of the delete operation. #### Defined in -[packages/medusa/src/services/customer.ts:546](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L546) +[medusa/src/services/customer.ts:565](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L565) ___ @@ -301,7 +319,7 @@ the generated JSON web token #### Defined in -[packages/medusa/src/services/customer.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L64) +[medusa/src/services/customer.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L68) ___ @@ -325,7 +343,7 @@ hashed password #### Defined in -[packages/medusa/src/services/customer.ts:272](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L272) +[medusa/src/services/customer.ts:293](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L293) ___ @@ -337,7 +355,7 @@ ___ | Name | Type | Description | | :------ | :------ | :------ | -| `selector` | `Selector`<`Customer`\> & { `q?`: `string` } | the query object for find | +| `selector` | `Selector`<`Customer`\> & { `groups?`: `string`[] ; `q?`: `string` } | the query object for find | | `config` | `FindConfig`<`Customer`\> | the config object containing query settings | #### Returns @@ -348,7 +366,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/customer.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L107) +[medusa/src/services/customer.ts:111](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L111) ___ @@ -360,7 +378,7 @@ ___ | Name | Type | Description | | :------ | :------ | :------ | -| `selector` | `Selector`<`Customer`\> & { `q?`: `string` } | the query object for find | +| `selector` | `Selector`<`Customer`\> & { `groups?`: `string`[] ; `q?`: `string` } | the query object for find | | `config` | `FindConfig`<`Customer`\> | the config object containing query settings | #### Returns @@ -371,7 +389,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/customer.ts:131](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L131) +[medusa/src/services/customer.ts:143](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L143) ___ @@ -392,7 +410,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:228](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L228) +[medusa/src/services/customer.ts:249](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L249) ___ @@ -413,7 +431,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:481](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L481) +[medusa/src/services/customer.ts:502](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L502) ___ @@ -438,7 +456,7 @@ the customer document. #### Defined in -[packages/medusa/src/services/customer.ts:253](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L253) +[medusa/src/services/customer.ts:274](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L274) ___ @@ -465,7 +483,7 @@ the customer document. #### Defined in -[packages/medusa/src/services/customer.ts:195](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L195) +[medusa/src/services/customer.ts:216](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L216) ___ @@ -490,7 +508,7 @@ the customer document. #### Defined in -[packages/medusa/src/services/customer.ts:240](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L240) +[medusa/src/services/customer.ts:261](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L261) ___ @@ -511,7 +529,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:218](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L218) +[medusa/src/services/customer.ts:239](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L239) ___ @@ -532,7 +550,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:209](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L209) +[medusa/src/services/customer.ts:230](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L230) ___ @@ -553,7 +571,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:164](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L164) +[medusa/src/services/customer.ts:185](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L185) ___ @@ -577,7 +595,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -602,7 +620,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/customer.ts:341](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L341) +[medusa/src/services/customer.ts:362](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L362) ___ @@ -624,7 +642,7 @@ ___ #### Defined in -[packages/medusa/src/services/customer.ts:453](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L453) +[medusa/src/services/customer.ts:474](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L474) ___ @@ -639,7 +657,7 @@ Updates the customers' billing address. | Name | Type | Description | | :------ | :------ | :------ | | `customer` | `Customer` | the Customer to update | -| `addressOrId` | `undefined` \| `string` \| { `address_1?`: ``null`` \| `string` ; `address_2?`: ``null`` \| `string` ; `city?`: ``null`` \| `string` ; `company?`: ``null`` \| `string` ; `country?`: ``null`` \| { id?: number \| undefined; iso\_2?: string \| undefined; iso\_3?: string \| undefined; num\_code?: number \| undefined; name?: string \| undefined; display\_name?: string \| undefined; region\_id?: string \| ... 1 more ... \| undefined; region?: { ...; } \| undefined; } ; `country_code?`: ``null`` \| `string` ; `created_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `customer?`: ``null`` \| { email?: string \| undefined; first\_name?: string \| undefined; last\_name?: string \| undefined; billing\_address\_id?: string \| null \| undefined; billing\_address?: { customer\_id?: string \| null \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 10 more ...; updated\_at?: { ...; } \| undef... ; `customer_id?`: ``null`` \| `string` ; `deleted_at?`: ``null`` \| { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `first_name?`: ``null`` \| `string` ; `id?`: `string` ; `last_name?`: ``null`` \| `string` ; `metadata?`: { [x: string]: unknown; } ; `phone?`: ``null`` \| `string` ; `postal_code?`: ``null`` \| `string` ; `province?`: ``null`` \| `string` ; `updated_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } } | the value to set the billing address to | +| `addressOrId` | `undefined` \| `string` \| `DeepPartial`<`Address`\> | the value to set the billing address to | #### Returns @@ -649,7 +667,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/customer.ts:401](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/customer.ts#L401) +[medusa/src/services/customer.ts:422](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/customer.ts#L422) ___ @@ -673,4 +691,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/DiscountConditionService.md b/docs/content/references/services/classes/DiscountConditionService.md index 178c81ab22..69e1e9978f 100644 --- a/docs/content/references/services/classes/DiscountConditionService.md +++ b/docs/content/references/services/classes/DiscountConditionService.md @@ -28,7 +28,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/discount-condition.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L37) +[medusa/src/services/discount-condition.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L34) ## Properties @@ -42,7 +42,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -56,7 +56,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -70,17 +70,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### discountConditionRepository\_ -• `Protected` `Readonly` **discountConditionRepository\_**: typeof `DiscountConditionRepository` +• `Protected` `Readonly` **discountConditionRepository\_**: `Repository`<`DiscountCondition`\> & { `addConditionResources`: (`conditionId`: `string`, `resourceIds`: (`string` \| { `id`: `string` })[], `type`: `DiscountConditionType`, `overrideExisting`: `boolean`) => `Promise`<(`DiscountConditionProduct` \| `DiscountConditionProductType` \| `DiscountConditionProductCollection` \| `DiscountConditionProductTag` \| `DiscountConditionCustomerGroup`)[]\> ; `canApplyForCustomer`: (`discountRuleId`: `string`, `customerId`: `string`) => `Promise`<`boolean`\> ; `findOneWithDiscount`: (`conditionId`: `string`, `discountId`: `string`) => `Promise`<`undefined` \| `DiscountCondition` & { `discount`: `Discount` }\> ; `getJoinTableResourceIdentifiers`: (`type`: `string`) => { `conditionTable`: `DiscountConditionResourceType` ; `joinTable`: `string` ; `joinTableForeignKey`: `DiscountConditionJoinTableForeignKey` ; `joinTableKey`: `string` ; `resourceKey`: `string` } ; `isValidForProduct`: (`discountRuleId`: `string`, `productId`: `string`) => `Promise`<`boolean`\> ; `queryConditionTable`: (`__namedParameters`: `Object`) => `Promise`<`number`\> ; `removeConditionResources`: (`id`: `string`, `type`: `DiscountConditionType`, `resourceIds`: (`string` \| { `id`: `string` })[]) => `Promise`<`void` \| `DeleteResult`\> } #### Defined in -[packages/medusa/src/services/discount-condition.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L31) +[medusa/src/services/discount-condition.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L31) ___ @@ -90,7 +90,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L32) +[medusa/src/services/discount-condition.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L32) ___ @@ -98,13 +98,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/discount-condition.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L34) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -112,13 +112,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/discount-condition.ts:35](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L35) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -157,7 +175,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -177,7 +195,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:220](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L220) +[medusa/src/services/discount-condition.ts:217](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L217) ___ @@ -197,7 +215,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:188](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L188) +[medusa/src/services/discount-condition.ts:184](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L184) ___ @@ -218,7 +236,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L49) +[medusa/src/services/discount-condition.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L45) ___ @@ -242,7 +260,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -263,7 +281,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:116](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L116) +[medusa/src/services/discount-condition.ts:111](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L111) ___ @@ -287,7 +305,7 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) ___ @@ -307,4 +325,4 @@ ___ #### Defined in -[packages/medusa/src/services/discount-condition.ts:79](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount-condition.ts#L79) +[medusa/src/services/discount-condition.ts:74](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount-condition.ts#L74) diff --git a/docs/content/references/services/classes/DiscountService.md b/docs/content/references/services/classes/DiscountService.md index e8f1dd1159..2d69eccd42 100644 --- a/docs/content/references/services/classes/DiscountService.md +++ b/docs/content/references/services/classes/DiscountService.md @@ -28,7 +28,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/discount.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L69) +[medusa/src/services/discount.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L65) ## Properties @@ -42,7 +42,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -56,7 +56,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -70,7 +70,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -80,17 +80,17 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L56) +[medusa/src/services/discount.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L52) ___ ### discountConditionRepository\_ -• `Protected` `Readonly` **discountConditionRepository\_**: typeof `DiscountConditionRepository` +• `Protected` `Readonly` **discountConditionRepository\_**: `Repository`<`DiscountCondition`\> & { `addConditionResources`: (`conditionId`: `string`, `resourceIds`: (`string` \| { `id`: `string` })[], `type`: `DiscountConditionType`, `overrideExisting`: `boolean`) => `Promise`<(`DiscountConditionProduct` \| `DiscountConditionProductType` \| `DiscountConditionProductCollection` \| `DiscountConditionProductTag` \| `DiscountConditionCustomerGroup`)[]\> ; `canApplyForCustomer`: (`discountRuleId`: `string`, `customerId`: `string`) => `Promise`<`boolean`\> ; `findOneWithDiscount`: (`conditionId`: `string`, `discountId`: `string`) => `Promise`<`undefined` \| `DiscountCondition` & { `discount`: `Discount` }\> ; `getJoinTableResourceIdentifiers`: (`type`: `string`) => { `conditionTable`: `DiscountConditionResourceType` ; `joinTable`: `string` ; `joinTableForeignKey`: `DiscountConditionJoinTableForeignKey` ; `joinTableKey`: `string` ; `resourceKey`: `string` } ; `isValidForProduct`: (`discountRuleId`: `string`, `productId`: `string`) => `Promise`<`boolean`\> ; `queryConditionTable`: (`__namedParameters`: `Object`) => `Promise`<`number`\> ; `removeConditionResources`: (`id`: `string`, `type`: `DiscountConditionType`, `resourceIds`: (`string` \| { `id`: `string` })[]) => `Promise`<`void` \| `DeleteResult`\> } #### Defined in -[packages/medusa/src/services/discount.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L60) +[medusa/src/services/discount.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L56) ___ @@ -100,27 +100,27 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L61) +[medusa/src/services/discount.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L57) ___ ### discountRepository\_ -• `Protected` `Readonly` **discountRepository\_**: typeof `DiscountRepository` +• `Protected` `Readonly` **discountRepository\_**: `Repository`<`Discount`\> #### Defined in -[packages/medusa/src/services/discount.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L55) +[medusa/src/services/discount.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L51) ___ ### discountRuleRepository\_ -• `Protected` `Readonly` **discountRuleRepository\_**: typeof `DiscountRuleRepository` +• `Protected` `Readonly` **discountRuleRepository\_**: `Repository`<`DiscountRule`\> #### Defined in -[packages/medusa/src/services/discount.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L57) +[medusa/src/services/discount.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L53) ___ @@ -130,7 +130,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L66) +[medusa/src/services/discount.ts:62](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L62) ___ @@ -140,17 +140,17 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L67) +[medusa/src/services/discount.ts:63](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L63) ___ ### giftCardRepository\_ -• `Protected` `Readonly` **giftCardRepository\_**: typeof `GiftCardRepository` +• `Protected` `Readonly` **giftCardRepository\_**: `Repository`<`GiftCard`\> & { `listGiftCardsAndCount`: (`query`: `ExtendedFindConfig`<`GiftCard`\>, `q?`: `string`) => `Promise`<[`GiftCard`[], `number`]\> } #### Defined in -[packages/medusa/src/services/discount.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L58) +[medusa/src/services/discount.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L54) ___ @@ -158,13 +158,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/discount.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L52) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -174,7 +174,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L63) +[medusa/src/services/discount.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L59) ___ @@ -184,7 +184,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L64) +[medusa/src/services/discount.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L60) ___ @@ -194,7 +194,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L65) +[medusa/src/services/discount.ts:61](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L61) ___ @@ -204,7 +204,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L62) +[medusa/src/services/discount.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L58) ___ @@ -212,13 +212,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/discount.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L53) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -243,7 +261,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/discount.ts:513](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L513) +[medusa/src/services/discount.ts:497](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L497) ___ @@ -282,7 +300,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -304,7 +322,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:614](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L614) +[medusa/src/services/discount.ts:599](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L599) ___ @@ -325,7 +343,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:791](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L791) +[medusa/src/services/discount.ts:778](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L778) ___ @@ -350,7 +368,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/discount.ts:187](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L187) +[medusa/src/services/discount.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L172) ___ @@ -375,7 +393,7 @@ the newly created dynamic code #### Defined in -[packages/medusa/src/services/discount.ts:441](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L441) +[medusa/src/services/discount.ts:425](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L425) ___ @@ -399,7 +417,7 @@ the result of the delete operation #### Defined in -[packages/medusa/src/services/discount.ts:573](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L573) +[medusa/src/services/discount.ts:557](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L557) ___ @@ -424,7 +442,7 @@ the newly created dynamic code #### Defined in -[packages/medusa/src/services/discount.ts:492](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L492) +[medusa/src/services/discount.ts:476](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L476) ___ @@ -444,7 +462,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:760](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L760) +[medusa/src/services/discount.ts:747](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L747) ___ @@ -464,7 +482,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:756](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L756) +[medusa/src/services/discount.ts:743](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L743) ___ @@ -484,7 +502,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:750](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L750) +[medusa/src/services/discount.ts:737](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L737) ___ @@ -504,7 +522,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:768](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L768) +[medusa/src/services/discount.ts:755](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L755) ___ @@ -525,7 +543,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:772](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L772) +[medusa/src/services/discount.ts:759](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L759) ___ @@ -548,7 +566,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/discount.ts:125](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L125) +[medusa/src/services/discount.ts:119](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L119) ___ @@ -571,7 +589,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/discount.ts:141](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L141) +[medusa/src/services/discount.ts:136](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L136) ___ @@ -596,7 +614,7 @@ the discounts #### Defined in -[packages/medusa/src/services/discount.ts:314](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L314) +[medusa/src/services/discount.ts:301](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L301) ___ @@ -621,7 +639,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/discount.ts:548](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L548) +[medusa/src/services/discount.ts:532](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L532) ___ @@ -646,7 +664,7 @@ the discount #### Defined in -[packages/medusa/src/services/discount.ts:253](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L253) +[medusa/src/services/discount.ts:238](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L238) ___ @@ -671,7 +689,7 @@ the discount #### Defined in -[packages/medusa/src/services/discount.ts:286](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L286) +[medusa/src/services/discount.ts:272](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L272) ___ @@ -695,7 +713,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -720,7 +738,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/discount.ts:344](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L344) +[medusa/src/services/discount.ts:332](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L332) ___ @@ -741,7 +759,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:685](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L685) +[medusa/src/services/discount.ts:672](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L672) ___ @@ -762,7 +780,7 @@ ___ #### Defined in -[packages/medusa/src/services/discount.ts:587](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L587) +[medusa/src/services/discount.ts:571](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L571) ___ @@ -792,7 +810,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/discount.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/discount.ts#L107) +[medusa/src/services/discount.ts:101](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/discount.ts#L101) ___ @@ -816,4 +834,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/DraftOrderService.md b/docs/content/references/services/classes/DraftOrderService.md index ae5e6e769e..5a1d6e0f42 100644 --- a/docs/content/references/services/classes/DraftOrderService.md +++ b/docs/content/references/services/classes/DraftOrderService.md @@ -28,7 +28,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/draft-order.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L61) +[medusa/src/services/draft-order.ts:66](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L66) ## Properties @@ -42,7 +42,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -56,7 +56,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -70,7 +70,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L55) +[medusa/src/services/draft-order.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L60) ___ @@ -90,17 +90,17 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L59) +[medusa/src/services/draft-order.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L64) ___ ### draftOrderRepository\_ -• `Protected` `Readonly` **draftOrderRepository\_**: typeof `DraftOrderRepository` +• `Protected` `Readonly` **draftOrderRepository\_**: `Repository`<`DraftOrder`\> #### Defined in -[packages/medusa/src/services/draft-order.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L51) +[medusa/src/services/draft-order.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L56) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L54) +[medusa/src/services/draft-order.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L59) ___ @@ -120,7 +120,7 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L56) +[medusa/src/services/draft-order.ts:61](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L61) ___ @@ -128,33 +128,33 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/draft-order.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L48) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### orderRepository\_ -• `Protected` `Readonly` **orderRepository\_**: typeof `OrderRepository` +• `Protected` `Readonly` **orderRepository\_**: `Repository`<`Order`\> & { `findOneWithRelations`: (`relations`: `FindOptionsRelations`<`Order`\>, `optionsWithoutRelations`: `Omit`<`FindManyOptions`<`Order`\>, ``"relations"``\>) => `Promise`<`Order`\> ; `findWithRelations`: (`relations`: `FindOptionsRelations`<`Order`\>, `optionsWithoutRelations`: `Omit`<`FindManyOptions`<`Order`\>, ``"relations"``\>) => `Promise`<`Order`[]\> } #### Defined in -[packages/medusa/src/services/draft-order.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L53) +[medusa/src/services/draft-order.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L58) ___ ### paymentRepository\_ -• `Protected` `Readonly` **paymentRepository\_**: typeof `PaymentRepository` +• `Protected` `Readonly` **paymentRepository\_**: `Repository`<`Payment`\> #### Defined in -[packages/medusa/src/services/draft-order.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L52) +[medusa/src/services/draft-order.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L57) ___ @@ -164,7 +164,7 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L57) +[medusa/src/services/draft-order.ts:62](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L62) ___ @@ -174,7 +174,7 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L58) +[medusa/src/services/draft-order.ts:63](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L63) ___ @@ -182,13 +182,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/draft-order.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L49) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -205,7 +205,25 @@ ___ #### Defined in -[packages/medusa/src/services/draft-order.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L43) +[medusa/src/services/draft-order.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L51) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -244,7 +262,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -268,7 +286,7 @@ the created draft order #### Defined in -[packages/medusa/src/services/draft-order.ts:255](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L255) +[medusa/src/services/draft-order.ts:259](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L259) ___ @@ -292,7 +310,7 @@ empty promise #### Defined in -[packages/medusa/src/services/draft-order.ts:154](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L154) +[medusa/src/services/draft-order.ts:155](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L155) ___ @@ -317,7 +335,7 @@ list of draft orders #### Defined in -[packages/medusa/src/services/draft-order.ts:232](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L232) +[medusa/src/services/draft-order.ts:237](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L237) ___ @@ -342,7 +360,7 @@ draft orders #### Defined in -[packages/medusa/src/services/draft-order.ts:178](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L178) +[medusa/src/services/draft-order.ts:179](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L179) ___ @@ -367,7 +385,7 @@ the created order #### Defined in -[packages/medusa/src/services/draft-order.ts:416](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L416) +[medusa/src/services/draft-order.ts:420](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L420) ___ @@ -392,7 +410,7 @@ the draft order #### Defined in -[packages/medusa/src/services/draft-order.ts:94](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L94) +[medusa/src/services/draft-order.ts:97](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L97) ___ @@ -417,7 +435,7 @@ the draft order #### Defined in -[packages/medusa/src/services/draft-order.ts:128](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L128) +[medusa/src/services/draft-order.ts:130](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L130) ___ @@ -441,7 +459,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -467,7 +485,7 @@ the updated draft order #### Defined in -[packages/medusa/src/services/draft-order.ts:445](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/draft-order.ts#L445) +[medusa/src/services/draft-order.ts:449](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/draft-order.ts#L449) ___ @@ -491,4 +509,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/EventBusService.md b/docs/content/references/services/classes/EventBusService.md index bbe0239a94..c64c24d6dd 100644 --- a/docs/content/references/services/classes/EventBusService.md +++ b/docs/content/references/services/classes/EventBusService.md @@ -3,33 +3,89 @@ Can keep track of multiple subscribers to different events and run the subscribers when events happen. Events will run asynchronously. +## Hierarchy + +- `TransactionBaseService` + + ↳ **`EventBusService`** + +## Implements + +- `IEventBusService` + ## Constructors ### constructor -• **new EventBusService**(`__namedParameters`, `config`, `singleton?`) +• **new EventBusService**(`__namedParameters`, `config`, `isSingleton?`) #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | | `__namedParameters` | `InjectedDependencies` | `undefined` | -| `config` | `ConfigModule` | `undefined` | -| `singleton` | `boolean` | `true` | +| `config` | `any` | `undefined` | +| `isSingleton` | `boolean` | `true` | + +#### Overrides + +TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/event-bus.ts:80](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L80) +[medusa/src/services/event-bus.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L32) ## Properties +### \_\_configModule\_\_ + +• `Protected` `Optional` `Readonly` **\_\_configModule\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_configModule\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) + +___ + +### \_\_container\_\_ + +• `Protected` `Readonly` **\_\_container\_\_**: `any` + +#### Inherited from + +TransactionBaseService.\_\_container\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) + +___ + +### \_\_moduleDeclaration\_\_ + +• `Protected` `Optional` `Readonly` **\_\_moduleDeclaration\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_moduleDeclaration\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) + +___ + ### config\_ • `Protected` `Readonly` **config\_**: `ConfigModule` #### Defined in -[packages/medusa/src/services/event-bus.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L64) +[medusa/src/services/event-bus.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L24) ___ @@ -39,77 +95,31 @@ ___ #### Defined in -[packages/medusa/src/services/event-bus.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L78) +[medusa/src/services/event-bus.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L30) ___ -### eventToSubscribersMap\_ +### eventBusModuleService\_ -• `Protected` `Readonly` **eventToSubscribersMap\_**: `Map`<`string` \| `symbol`, `SubscriberDescriptor`[]\> +• `Protected` `Readonly` **eventBusModuleService\_**: `AbstractEventBusModuleService` #### Defined in -[packages/medusa/src/services/event-bus.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L69) - -___ - -### jobSchedulerService\_ - -• `Protected` `Readonly` **jobSchedulerService\_**: `default` - -#### Defined in - -[packages/medusa/src/services/event-bus.ts:68](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L68) - -___ - -### logger\_ - -• `Protected` `Readonly` **logger\_**: `Logger` - -#### Defined in - -[packages/medusa/src/services/event-bus.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L66) +[medusa/src/services/event-bus.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L27) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` + +#### Inherited from + +TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/event-bus.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L65) - -___ - -### queue\_ - -• `Protected` **queue\_**: `Bull` - -#### Defined in - -[packages/medusa/src/services/event-bus.ts:75](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L75) - -___ - -### redisClient\_ - -• `Protected` `Readonly` **redisClient\_**: `Redis` - -#### Defined in - -[packages/medusa/src/services/event-bus.ts:73](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L73) - -___ - -### redisSubscriber\_ - -• `Protected` `Readonly` **redisSubscriber\_**: `Redis` - -#### Defined in - -[packages/medusa/src/services/event-bus.ts:74](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L74) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -119,17 +129,17 @@ ___ #### Defined in -[packages/medusa/src/services/event-bus.ts:76](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L76) +[medusa/src/services/event-bus.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L29) ___ -### stagedJobRepository\_ +### stagedJobService\_ -• `Protected` `Readonly` **stagedJobRepository\_**: typeof `StagedJobRepository` +• `Protected` `Readonly` **stagedJobService\_**: [`StagedJobService`](StagedJobService.md) #### Defined in -[packages/medusa/src/services/event-bus.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L67) +[medusa/src/services/event-bus.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L25) ___ @@ -137,47 +147,70 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` +#### Inherited from + +TransactionBaseService.transactionManager\_ + #### Defined in -[packages/medusa/src/services/event-bus.ts:77](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L77) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods -### createCronJob +### atomicPhase\_ -▸ **createCronJob**<`T`\>(`eventName`, `data`, `cron`, `handler`, `options?`): `Promise`<`void`\> +▸ `Protected` **atomicPhase_**<`TResult`, `TError`\>(`work`, `isolationOrErrorHandler?`, `maybeErrorHandlerOrDontFail?`): `Promise`<`TResult`\> -Registers a cron job. - -**`Deprecated`** - -All cron job logic has been refactored to the `JobSchedulerService`. This method will be removed in a future release. +Wraps some work within a transactional block. If the service already has +a transaction manager attached this will be reused, otherwise a new +transaction manager is created. #### Type parameters | Name | | :------ | -| `T` | +| `TResult` | +| `TError` | #### Parameters | Name | Type | Description | | :------ | :------ | :------ | -| `eventName` | `string` | the name of the event | -| `data` | `T` | the data to be sent with the event | -| `cron` | `string` | the cron pattern | -| `handler` | `Subscriber`<`unknown`\> | the handler to call on each cron job | -| `options?` | `CreateJobOptions` | - | +| `work` | (`transactionManager`: `EntityManager`) => `Promise`<`TResult`\> | the transactional work to be done | +| `isolationOrErrorHandler?` | `IsolationLevel` \| (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | the isolation level to be used for the work. | +| `maybeErrorHandlerOrDontFail?` | (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | Potential error handler | #### Returns -`Promise`<`void`\> +`Promise`<`TResult`\> -void +the result of the transactional work + +#### Inherited from + +TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/services/event-bus.ts:467](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L467) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -205,9 +238,13 @@ Calls all subscribers when an event occurs. the jobs from our queue +#### Implementation of + +EventBusTypes.IEventBusService.emit + #### Defined in -[packages/medusa/src/services/event-bus.ts:228](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L228) +[medusa/src/services/event-bus.ts:112](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L112) ▸ **emit**<`T`\>(`eventName`, `data`, `options?`): `Promise`<`void` \| `StagedJob`\> @@ -225,7 +262,7 @@ Calls all subscribers when an event occurs. | :------ | :------ | :------ | | `eventName` | `string` | the name of the event to be process. | | `data` | `T` | the data to send to the subscriber. | -| `options?` | `any` | options to add the job with | +| `options?` | `Record`<`string`, `unknown`\> | options to add the job with | #### Returns @@ -233,9 +270,13 @@ Calls all subscribers when an event occurs. the job from our queue +#### Implementation of + +EventBusTypes.IEventBusService.emit + #### Defined in -[packages/medusa/src/services/event-bus.ts:237](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L237) +[medusa/src/services/event-bus.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L121) ___ @@ -249,7 +290,31 @@ ___ #### Defined in -[packages/medusa/src/services/event-bus.ts:326](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L326) +[medusa/src/services/event-bus.ts:184](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L184) + +___ + +### shouldRetryTransaction\_ + +▸ `Protected` **shouldRetryTransaction_**(`err`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Record`<`string`, `unknown`\> \| { `code`: `string` } | + +#### Returns + +`boolean` + +#### Inherited from + +TransactionBaseService.shouldRetryTransaction\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -263,7 +328,7 @@ ___ #### Defined in -[packages/medusa/src/services/event-bus.ts:316](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L316) +[medusa/src/services/event-bus.ts:174](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L174) ___ @@ -277,7 +342,7 @@ ___ #### Defined in -[packages/medusa/src/services/event-bus.ts:321](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L321) +[medusa/src/services/event-bus.ts:179](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L179) ___ @@ -292,8 +357,8 @@ Adds a function to a list of event subscribers. | Name | Type | Description | | :------ | :------ | :------ | | `event` | `string` \| `symbol` | the event that the subscriber will listen for. | -| `subscriber` | `Subscriber`<`unknown`\> | the function to be called when a certain event | -| `context?` | `SubscriberContext` | context to use when attaching subscriber happens. Subscribers must return a Promise. | +| `subscriber` | `Subscriber`<`unknown`\> | the function to be called when a certain event happens. Subscribers must return a Promise. | +| `context?` | `SubscriberContext` | subscriber context | #### Returns @@ -301,24 +366,29 @@ Adds a function to a list of event subscribers. this +#### Implementation of + +EventBusTypes.IEventBusService.subscribe + #### Defined in -[packages/medusa/src/services/event-bus.ts:160](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L160) +[medusa/src/services/event-bus.ts:78](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L78) ___ ### unsubscribe -▸ **unsubscribe**(`event`, `subscriber`): [`EventBusService`](EventBusService.md) +▸ **unsubscribe**(`event`, `subscriber`, `context`): [`EventBusService`](EventBusService.md) -Adds a function to a list of event subscribers. +Removes function from the list of event subscribers. #### Parameters | Name | Type | Description | | :------ | :------ | :------ | -| `event` | `string` \| `symbol` | the event that the subscriber will listen for. | -| `subscriber` | `Subscriber`<`unknown`\> | the function to be called when a certain event happens. Subscribers must return a Promise. | +| `event` | `string` \| `symbol` | the event of the subcriber. | +| `subscriber` | `Subscriber`<`unknown`\> | the function to be removed | +| `context` | `SubscriberContext` | subscriber context | #### Returns @@ -326,56 +396,38 @@ Adds a function to a list of event subscribers. this +#### Implementation of + +EventBusTypes.IEventBusService.unsubscribe + #### Defined in -[packages/medusa/src/services/event-bus.ts:203](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L203) +[medusa/src/services/event-bus.ts:98](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L98) ___ ### withTransaction -▸ **withTransaction**(`transactionManager`): [`EventBusService`](EventBusService.md) +▸ **withTransaction**(`transactionManager?`): [`EventBusService`](EventBusService.md) #### Parameters | Name | Type | | :------ | :------ | -| `transactionManager` | `any` | +| `transactionManager?` | `EntityManager` | #### Returns [`EventBusService`](EventBusService.md) -#### Defined in +#### Implementation of -[packages/medusa/src/services/event-bus.ts:128](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L128) +EventBusTypes.IEventBusService.withTransaction -___ +#### Overrides -### worker\_ - -▸ **worker_**<`T`\>(`job`): `Promise`<`unknown`\> - -Handles incoming jobs. - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `job` | `BullJob`<`T`\> | The job object | - -#### Returns - -`Promise`<`unknown`\> - -resolves to the results of the subscriber calls. +TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/services/event-bus.ts:366](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/event-bus.ts#L366) +[medusa/src/services/event-bus.ts:49](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/event-bus.ts#L49) diff --git a/docs/content/references/services/classes/FulfillmentProviderService.md b/docs/content/references/services/classes/FulfillmentProviderService.md index a19530f26c..ec33f1343f 100644 --- a/docs/content/references/services/classes/FulfillmentProviderService.md +++ b/docs/content/references/services/classes/FulfillmentProviderService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L47) +[medusa/src/services/fulfillment-provider.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L44) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,17 +78,17 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L43) +[medusa/src/services/fulfillment-provider.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L40) ___ ### fulfillmentProviderRepository\_ -• `Protected` `Readonly` **fulfillmentProviderRepository\_**: typeof `FulfillmentProviderRepository` +• `Protected` `Readonly` **fulfillmentProviderRepository\_**: `Repository`<`FulfillmentProvider`\> #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L45) +[medusa/src/services/fulfillment-provider.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L42) ___ @@ -96,13 +96,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L40) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -110,13 +110,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L41) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -155,7 +173,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -169,7 +187,7 @@ ___ | :------ | :------ | | `option` | `ShippingOption` | | `data` | `Record`<`string`, `unknown`\> | -| `cart?` | `Cart` \| `Order` | +| `cart?` | `Order` \| `Cart` | #### Returns @@ -177,7 +195,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:151](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L151) +[medusa/src/services/fulfillment-provider.ts:147](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L147) ___ @@ -197,7 +215,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:126](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L126) +[medusa/src/services/fulfillment-provider.ts:122](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L122) ___ @@ -217,7 +235,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:144](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L144) +[medusa/src/services/fulfillment-provider.ts:140](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L140) ___ @@ -240,7 +258,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:111](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L111) +[medusa/src/services/fulfillment-provider.ts:107](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L107) ___ @@ -260,7 +278,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:169](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L169) +[medusa/src/services/fulfillment-provider.ts:165](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L165) ___ @@ -274,7 +292,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:71](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L71) +[medusa/src/services/fulfillment-provider.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L67) ___ @@ -294,7 +312,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:79](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L79) +[medusa/src/services/fulfillment-provider.ts:75](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L75) ___ @@ -314,7 +332,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L57) +[medusa/src/services/fulfillment-provider.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L53) ___ @@ -340,7 +358,7 @@ document to fetch #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:188](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L188) +[medusa/src/services/fulfillment-provider.ts:184](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L184) ___ @@ -362,7 +380,7 @@ the payment fulfillment provider #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:100](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L100) +[medusa/src/services/fulfillment-provider.ts:96](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L96) ___ @@ -386,7 +404,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -408,7 +426,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:131](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L131) +[medusa/src/services/fulfillment-provider.ts:127](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L127) ___ @@ -428,7 +446,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment-provider.ts:164](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment-provider.ts#L164) +[medusa/src/services/fulfillment-provider.ts:160](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment-provider.ts#L160) ___ @@ -452,4 +470,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/FulfillmentService.md b/docs/content/references/services/classes/FulfillmentService.md index bf534f4624..7f640a2a7d 100644 --- a/docs/content/references/services/classes/FulfillmentService.md +++ b/docs/content/references/services/classes/FulfillmentService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/fulfillment.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L50) +[medusa/src/services/fulfillment.ts:47](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L47) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,27 +78,27 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L43) +[medusa/src/services/fulfillment.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L40) ___ ### fulfillmentRepository\_ -• `Protected` `Readonly` **fulfillmentRepository\_**: typeof `FulfillmentRepository` +• `Protected` `Readonly` **fulfillmentRepository\_**: `Repository`<`Fulfillment`\> #### Defined in -[packages/medusa/src/services/fulfillment.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L44) +[medusa/src/services/fulfillment.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L41) ___ ### lineItemRepository\_ -• `Protected` `Readonly` **lineItemRepository\_**: typeof `LineItemRepository` +• `Protected` `Readonly` **lineItemRepository\_**: `Repository`<`LineItem`\> & { `findByReturn`: (`returnId`: `string`) => `Promise`<`LineItem` & { `return_item`: `ReturnItem` }[]\> } #### Defined in -[packages/medusa/src/services/fulfillment.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L46) +[medusa/src/services/fulfillment.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L43) ___ @@ -108,7 +108,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L41) +[medusa/src/services/fulfillment.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L38) ___ @@ -116,13 +116,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/fulfillment.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L37) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L48) +[medusa/src/services/fulfillment.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L45) ___ @@ -142,7 +142,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L42) +[medusa/src/services/fulfillment.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L39) ___ @@ -152,17 +152,17 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L40) +[medusa/src/services/fulfillment.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L37) ___ ### trackingLinkRepository\_ -• `Protected` `Readonly` **trackingLinkRepository\_**: typeof `TrackingLinkRepository` +• `Protected` `Readonly` **trackingLinkRepository\_**: `Repository`<`TrackingLink`\> #### Defined in -[packages/medusa/src/services/fulfillment.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L45) +[medusa/src/services/fulfillment.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L42) ___ @@ -170,13 +170,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/fulfillment.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L38) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -215,7 +233,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -241,13 +259,13 @@ the result of the save operation #### Defined in -[packages/medusa/src/services/fulfillment.ts:269](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L269) +[medusa/src/services/fulfillment.ts:260](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L260) ___ ### createFulfillment -▸ **createFulfillment**(`order`, `itemsToFulfill`, `custom?`, `context?`): `Promise`<`Fulfillment`[]\> +▸ **createFulfillment**(`order`, `itemsToFulfill`, `custom?`): `Promise`<`Fulfillment`[]\> Creates an order fulfillment If items needs to be fulfilled by different provider, we make @@ -261,8 +279,6 @@ those partitions. | `order` | `CreateFulfillmentOrder` | order to create fulfillment for | | `itemsToFulfill` | `FulFillmentItemType`[] | the items in the order to fulfill | | `custom` | `Partial`<`Fulfillment`\> | potential custom values to add | -| `context` | `Object` | - | -| `context.locationId?` | `string` | - | #### Returns @@ -272,7 +288,7 @@ the created fulfillments #### Defined in -[packages/medusa/src/services/fulfillment.ts:211](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L211) +[medusa/src/services/fulfillment.ts:205](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L205) ___ @@ -299,7 +315,7 @@ the shipped fulfillment #### Defined in -[packages/medusa/src/services/fulfillment.ts:321](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L321) +[medusa/src/services/fulfillment.ts:312](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L312) ___ @@ -324,7 +340,7 @@ the line items generated by the transformer. #### Defined in -[packages/medusa/src/services/fulfillment.ts:115](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L115) +[medusa/src/services/fulfillment.ts:109](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L109) ___ @@ -345,7 +361,7 @@ ___ #### Defined in -[packages/medusa/src/services/fulfillment.ts:76](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L76) +[medusa/src/services/fulfillment.ts:70](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L70) ___ @@ -370,7 +386,7 @@ the fulfillment #### Defined in -[packages/medusa/src/services/fulfillment.ts:172](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L172) +[medusa/src/services/fulfillment.ts:167](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L167) ___ @@ -394,7 +410,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -423,7 +439,7 @@ a line item that has the requested fulfillment quantity #### Defined in -[packages/medusa/src/services/fulfillment.ts:140](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/fulfillment.ts#L140) +[medusa/src/services/fulfillment.ts:134](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/fulfillment.ts#L134) ___ @@ -447,4 +463,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/GiftCardService.md b/docs/content/references/services/classes/GiftCardService.md index 08f6c17d6d..cbc7356f0e 100644 --- a/docs/content/references/services/classes/GiftCardService.md +++ b/docs/content/references/services/classes/GiftCardService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/gift-card.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L47) +[medusa/src/services/gift-card.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L39) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,27 +78,27 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L38) +[medusa/src/services/gift-card.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L33) ___ ### giftCardRepository\_ -• `Protected` `Readonly` **giftCardRepository\_**: typeof `GiftCardRepository` +• `Protected` `Readonly` **giftCardRepository\_**: `Repository`<`GiftCard`\> & { `listGiftCardsAndCount`: (`query`: `ExtendedFindConfig`<`GiftCard`\>, `q?`: `string`) => `Promise`<[`GiftCard`[], `number`]\> } #### Defined in -[packages/medusa/src/services/gift-card.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L34) +[medusa/src/services/gift-card.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L29) ___ ### giftCardTransactionRepo\_ -• `Protected` `Readonly` **giftCardTransactionRepo\_**: typeof `GiftCardTransactionRepository` +• `Protected` `Readonly` **giftCardTransactionRepo\_**: `Repository`<`GiftCardTransaction`\> #### Defined in -[packages/medusa/src/services/gift-card.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L36) +[medusa/src/services/gift-card.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L31) ___ @@ -106,13 +106,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/gift-card.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L40) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L37) +[medusa/src/services/gift-card.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L32) ___ @@ -130,13 +130,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/gift-card.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L41) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -152,7 +152,25 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L43) +[medusa/src/services/gift-card.ts:35](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L35) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -191,7 +209,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -215,7 +233,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/gift-card.ts:153](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L153) +[medusa/src/services/gift-card.ts:122](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L122) ___ @@ -235,7 +253,7 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:138](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L138) +[medusa/src/services/gift-card.ts:106](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L106) ___ @@ -259,7 +277,7 @@ the result of the delete operation #### Defined in -[packages/medusa/src/services/gift-card.ts:322](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L322) +[medusa/src/services/gift-card.ts:295](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L295) ___ @@ -282,7 +300,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/gift-card.ts:114](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L114) +[medusa/src/services/gift-card.ts:98](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L98) ___ @@ -305,7 +323,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/gift-card.ts:85](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L85) +[medusa/src/services/gift-card.ts:74](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L74) ___ @@ -330,7 +348,7 @@ the gift card #### Defined in -[packages/medusa/src/services/gift-card.ts:242](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L242) +[medusa/src/services/gift-card.ts:215](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L215) ___ @@ -351,7 +369,7 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:256](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L256) +[medusa/src/services/gift-card.ts:229](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L229) ___ @@ -372,7 +390,7 @@ ___ #### Defined in -[packages/medusa/src/services/gift-card.ts:208](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L208) +[medusa/src/services/gift-card.ts:182](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L182) ___ @@ -396,7 +414,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -421,7 +439,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/gift-card.ts:276](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L276) +[medusa/src/services/gift-card.ts:249](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L249) ___ @@ -445,7 +463,7 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) ___ @@ -463,7 +481,7 @@ the generated gift card code #### Defined in -[packages/medusa/src/services/gift-card.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L69) +[medusa/src/services/gift-card.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L58) ___ @@ -489,4 +507,4 @@ the tax rate for the gift card #### Defined in -[packages/medusa/src/services/gift-card.ts:189](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/gift-card.ts#L189) +[medusa/src/services/gift-card.ts:161](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/gift-card.ts#L161) diff --git a/docs/content/references/services/classes/IdempotencyKeyService.md b/docs/content/references/services/classes/IdempotencyKeyService.md index 481435cd78..5ae6db6a7a 100644 --- a/docs/content/references/services/classes/IdempotencyKeyService.md +++ b/docs/content/references/services/classes/IdempotencyKeyService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/idempotency-key.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L25) +[medusa/src/services/idempotency-key.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L25) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### idempotencyKeyRepository\_ -• `Protected` `Readonly` **idempotencyKeyRepository\_**: typeof `IdempotencyKeyRepository` +• `Protected` `Readonly` **idempotencyKeyRepository\_**: `Repository`<`IdempotencyKey`\> #### Defined in -[packages/medusa/src/services/idempotency-key.ts:23](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L23) +[medusa/src/services/idempotency-key.ts:23](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L23) ___ @@ -84,13 +84,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/idempotency-key.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L20) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -98,13 +98,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/idempotency-key.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L21) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -169,7 +187,7 @@ the created idempotency key #### Defined in -[packages/medusa/src/services/idempotency-key.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L67) +[medusa/src/services/idempotency-key.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L68) ___ @@ -196,7 +214,7 @@ the existing or created idempotency key #### Defined in -[packages/medusa/src/services/idempotency-key.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L41) +[medusa/src/services/idempotency-key.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L40) ___ @@ -220,13 +238,13 @@ result of the update operation #### Defined in -[packages/medusa/src/services/idempotency-key.ts:116](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L116) +[medusa/src/services/idempotency-key.ts:138](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L138) ___ ### retrieve -▸ **retrieve**(`idempotencyKey`): `Promise`<`IdempotencyKey`\> +▸ **retrieve**(`idempotencyKeyOrSelector`): `Promise`<`IdempotencyKey`\> Retrieves an idempotency key @@ -234,7 +252,7 @@ Retrieves an idempotency key | Name | Type | Description | | :------ | :------ | :------ | -| `idempotencyKey` | `string` | key to retrieve | +| `idempotencyKeyOrSelector` | `string` \| `Selector`<`IdempotencyKey`\> | key or selector to retrieve | #### Returns @@ -244,7 +262,7 @@ idempotency key #### Defined in -[packages/medusa/src/services/idempotency-key.ts:85](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L85) +[medusa/src/services/idempotency-key.ts:86](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L86) ___ @@ -268,7 +286,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -283,17 +301,7 @@ Locks an idempotency. | Name | Type | Description | | :------ | :------ | :------ | | `idempotencyKey` | `string` | key to update | -| `update` | `Object` | update object | -| `update.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `update.id?` | `string` | - | -| `update.idempotency_key?` | `string` | - | -| `update.locked_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `update.recovery_point?` | `string` | - | -| `update.request_method?` | `string` | - | -| `update.request_params?` | { [x: string]: unknown; } | - | -| `update.request_path?` | `string` | - | -| `update.response_body?` | { [x: string]: unknown; } | - | -| `update.response_code?` | `number` | - | +| `update` | `DeepPartial`<`IdempotencyKey`\> | update object | #### Returns @@ -303,7 +311,7 @@ result of the update operation #### Defined in -[packages/medusa/src/services/idempotency-key.ts:145](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L145) +[medusa/src/services/idempotency-key.ts:167](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L167) ___ @@ -327,7 +335,7 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) ___ @@ -356,4 +364,4 @@ new updated idempotency key #### Defined in -[packages/medusa/src/services/idempotency-key.ts:174](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/idempotency-key.ts#L174) +[medusa/src/services/idempotency-key.ts:196](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/idempotency-key.ts#L196) diff --git a/docs/content/references/services/classes/LineItemAdjustmentService.md b/docs/content/references/services/classes/LineItemAdjustmentService.md index fa0b5d5fef..30c43d6865 100644 --- a/docs/content/references/services/classes/LineItemAdjustmentService.md +++ b/docs/content/references/services/classes/LineItemAdjustmentService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L39) +[medusa/src/services/line-item-adjustment.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L36) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,31 +78,31 @@ ___ #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L37) +[medusa/src/services/line-item-adjustment.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L34) ___ ### lineItemAdjustmentRepo\_ -• `Private` `Readonly` **lineItemAdjustmentRepo\_**: typeof `LineItemAdjustmentRepository` +• `Private` `Readonly` **lineItemAdjustmentRepo\_**: `Repository`<`LineItemAdjustment`\> #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L36) +[medusa/src/services/line-item-adjustment.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L33) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L33) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -110,13 +110,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L34) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -155,7 +173,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -179,7 +197,7 @@ line item adjustment #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:90](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L90) +[medusa/src/services/line-item-adjustment.ts:86](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L86) ___ @@ -204,7 +222,7 @@ a line item adjustment or undefined if no adjustment was created #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:263](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L263) +[medusa/src/services/line-item-adjustment.ts:262](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L262) ___ @@ -230,7 +248,7 @@ otherwise returns an array of line item adjustments for each line item in the ca #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:291](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L291) +[medusa/src/services/line-item-adjustment.ts:290](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L290) ___ @@ -254,7 +272,7 @@ the result of the delete operation #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:155](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L155) +[medusa/src/services/line-item-adjustment.ts:153](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L153) ___ @@ -280,7 +298,7 @@ a line item adjustment or undefined if no adjustment was created #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:189](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L189) +[medusa/src/services/line-item-adjustment.ts:188](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L188) ___ @@ -305,7 +323,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:138](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L138) +[medusa/src/services/line-item-adjustment.ts:136](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L136) ___ @@ -330,7 +348,7 @@ the line item adjustment. #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L58) +[medusa/src/services/line-item-adjustment.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L53) ___ @@ -354,7 +372,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -379,7 +397,7 @@ line item adjustment #### Defined in -[packages/medusa/src/services/line-item-adjustment.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item-adjustment.ts#L107) +[medusa/src/services/line-item-adjustment.ts:104](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item-adjustment.ts#L104) ___ @@ -403,4 +421,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/LineItemService.md b/docs/content/references/services/classes/LineItemService.md index c0facaf683..c26aaf84c1 100644 --- a/docs/content/references/services/classes/LineItemService.md +++ b/docs/content/references/services/classes/LineItemService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/line-item.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L59) +[medusa/src/services/line-item.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L56) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### cartRepository\_ -• `Protected` `Readonly` **cartRepository\_**: typeof `CartRepository` +• `Protected` `Readonly` **cartRepository\_**: `Repository`<`Cart`\> #### Defined in -[packages/medusa/src/services/line-item.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L50) +[medusa/src/services/line-item.ts:47](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L47) ___ @@ -86,17 +86,17 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L55) +[medusa/src/services/line-item.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L52) ___ ### itemTaxLineRepo\_ -• `Protected` `Readonly` **itemTaxLineRepo\_**: typeof `LineItemTaxLineRepository` +• `Protected` `Readonly` **itemTaxLineRepo\_**: `Repository`<`LineItemTaxLine`\> & { `deleteForCart`: (`cartId`: `string`) => `Promise`<`void`\> ; `upsertLines`: (`lines`: `LineItemTaxLine`[]) => `Promise`<`LineItemTaxLine`[]\> } #### Defined in -[packages/medusa/src/services/line-item.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L49) +[medusa/src/services/line-item.ts:46](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L46) ___ @@ -106,17 +106,17 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L56) +[medusa/src/services/line-item.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L53) ___ ### lineItemRepository\_ -• `Protected` `Readonly` **lineItemRepository\_**: typeof `LineItemRepository` +• `Protected` `Readonly` **lineItemRepository\_**: `Repository`<`LineItem`\> & { `findByReturn`: (`returnId`: `string`) => `Promise`<`LineItem` & { `return_item`: `ReturnItem` }[]\> } #### Defined in -[packages/medusa/src/services/line-item.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L48) +[medusa/src/services/line-item.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L45) ___ @@ -124,13 +124,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/line-item.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L45) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -140,7 +140,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L53) +[medusa/src/services/line-item.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L50) ___ @@ -150,7 +150,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L52) +[medusa/src/services/line-item.ts:49](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L49) ___ @@ -160,7 +160,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L51) +[medusa/src/services/line-item.ts:48](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L48) ___ @@ -170,7 +170,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L54) +[medusa/src/services/line-item.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L51) ___ @@ -180,7 +180,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L57) +[medusa/src/services/line-item.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L54) ___ @@ -188,13 +188,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/line-item.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L46) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -233,7 +251,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -246,48 +264,7 @@ ___ | Name | Type | | :------ | :------ | | `ids` | `string` \| `string`[] | -| `data` | `Object` | -| `data.adjustments?` | (`undefined` \| { id?: string \| undefined; item\_id?: string \| undefined; item?: { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; ... 37 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 38 more ...; updated\_at?: { ...; }...)[] | -| `data.allow_discounts?` | `boolean` | -| `data.cart?` | { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; billing\_address?: { customer\_id?: string \| null \| undefined; customer?: { ...; } \| ... 1 more ... \| undefined; ... 15 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 36 more ...; updated\_at?: ... | -| `data.cart_id?` | `string` | -| `data.claim_order?` | { payment\_status?: ClaimPaymentStatus \| undefined; fulfillment\_status?: ClaimFulfillmentStatus \| undefined; claim\_items?: ({ images?: ({ ...; } \| undefined)[] \| undefined; ... 14 more ...; updated\_at?: { ...; } \| undefined; } \| undefined)[] \| undefined; ... 17 more ...; id?: string \| undefined; } | -| `data.claim_order_id?` | `string` | -| `data.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.description?` | ``null`` \| `string` | -| `data.discount_total?` | ``null`` \| `number` | -| `data.fulfilled_quantity?` | ``null`` \| `number` | -| `data.gift_card_total?` | ``null`` \| `number` | -| `data.has_shipping?` | ``null`` \| `boolean` | -| `data.id?` | `string` | -| `data.includes_tax?` | `boolean` | -| `data.is_giftcard?` | `boolean` | -| `data.is_return?` | `boolean` | -| `data.metadata?` | { [x: string]: unknown; } | -| `data.order?` | { readonly object?: "order" \| undefined; status?: OrderStatus \| undefined; fulfillment\_status?: FulfillmentStatus \| undefined; payment\_status?: PaymentStatus \| undefined; ... 49 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.order_edit?` | ``null`` \| { order\_id?: string \| undefined; order?: { readonly object?: "order" \| undefined; status?: OrderStatus \| undefined; fulfillment\_status?: FulfillmentStatus \| undefined; ... 50 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 27 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.order_edit_id?` | ``null`` \| `string` | -| `data.order_id?` | ``null`` \| `string` | -| `data.original_item_id?` | ``null`` \| `string` | -| `data.original_tax_total?` | ``null`` \| `number` | -| `data.original_total?` | ``null`` \| `number` | -| `data.quantity?` | `number` | -| `data.refundable?` | ``null`` \| `number` | -| `data.returned_quantity?` | ``null`` \| `number` | -| `data.shipped_quantity?` | ``null`` \| `number` | -| `data.should_merge?` | `boolean` | -| `data.subtotal?` | ``null`` \| `number` | -| `data.swap?` | { fulfillment\_status?: SwapFulfillmentStatus \| undefined; payment\_status?: SwapPaymentStatus \| undefined; order\_id?: string \| undefined; ... 20 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.swap_id?` | `string` | -| `data.tax_lines?` | (`undefined` \| { item\_id?: string \| undefined; item?: { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; ... 37 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 38 more ...; updated\_at?: { ...; } \| undefined; } \| undefin...)[] | -| `data.tax_total?` | ``null`` \| `number` | -| `data.thumbnail?` | ``null`` \| `string` | -| `data.title?` | `string` | -| `data.total?` | ``null`` \| `number` | -| `data.unit_price?` | `number` | -| `data.updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.variant?` | { title?: string \| undefined; product\_id?: string \| undefined; product?: { title?: string \| undefined; subtitle?: string \| null \| undefined; description?: string \| null \| undefined; ... 30 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 23 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.variant_id?` | ``null`` \| `string` | +| `data` | `DeepPartial`<`LineItem`\> | | `options` | `Object` | | `options.setOriginalLineItemId?` | `boolean` | @@ -297,7 +274,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:496](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L496) +[medusa/src/services/line-item.ts:494](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L494) ___ @@ -328,7 +305,7 @@ the created line item #### Defined in -[packages/medusa/src/services/line-item.ts:377](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L377) +[medusa/src/services/line-item.ts:373](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L373) ___ @@ -354,7 +331,7 @@ the created line items #### Defined in -[packages/medusa/src/services/line-item.ts:135](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L135) +[medusa/src/services/line-item.ts:130](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L130) ___ @@ -368,16 +345,7 @@ Create a line item tax line. | Name | Type | Description | | :------ | :------ | :------ | -| `args` | `Object` | tax line partial passed to the repo create method | -| `args.code?` | ``null`` \| `string` | - | -| `args.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `args.id?` | `string` | - | -| `args.item?` | { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; billing\_address?: { customer\_id?: string \| ... 1 more ... \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 36 more ...; updated\_at?: {... | - | -| `args.item_id?` | `string` | - | -| `args.metadata?` | { [x: string]: unknown; } | - | -| `args.name?` | `string` | - | -| `args.rate?` | `number` | - | -| `args.updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | +| `args` | `DeepPartial`<`LineItemTaxLine`\> | tax line partial passed to the repo create method | #### Returns @@ -387,13 +355,13 @@ a new line item tax line #### Defined in -[packages/medusa/src/services/line-item.ts:488](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L488) +[medusa/src/services/line-item.ts:486](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L486) ___ ### delete -▸ **delete**(`id`): `Promise`<`undefined` \| `LineItem`\> +▸ **delete**(`id`): `Promise`<`undefined` \| ``null`` \| `LineItem`\> Deletes a line item. @@ -405,19 +373,19 @@ Deletes a line item. #### Returns -`Promise`<`undefined` \| `LineItem`\> +`Promise`<`undefined` \| ``null`` \| `LineItem`\> the result of the delete operation #### Defined in -[packages/medusa/src/services/line-item.ts:448](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L448) +[medusa/src/services/line-item.ts:446](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L446) ___ ### deleteWithTaxLines -▸ **deleteWithTaxLines**(`id`): `Promise`<`undefined` \| `LineItem`\> +▸ **deleteWithTaxLines**(`id`): `Promise`<`undefined` \| ``null`` \| `LineItem`\> Deletes a line item with the tax lines. @@ -429,13 +397,13 @@ Deletes a line item with the tax lines. #### Returns -`Promise`<`undefined` \| `LineItem`\> +`Promise`<`undefined` \| ``null`` \| `LineItem`\> the result of the delete operation #### Defined in -[packages/medusa/src/services/line-item.ts:467](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L467) +[medusa/src/services/line-item.ts:465](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L465) ___ @@ -467,7 +435,7 @@ Generate a single or multiple line item without persisting the data into the db #### Defined in -[packages/medusa/src/services/line-item.ts:196](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L196) +[medusa/src/services/line-item.ts:191](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L191) ___ @@ -497,7 +465,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:311](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L311) +[medusa/src/services/line-item.ts:306](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L306) ___ @@ -518,7 +486,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:88](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L88) +[medusa/src/services/line-item.ts:83](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L83) ___ @@ -543,7 +511,7 @@ the line item #### Defined in -[packages/medusa/src/services/line-item.ts:108](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L108) +[medusa/src/services/line-item.ts:104](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L104) ___ @@ -567,7 +535,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -592,7 +560,7 @@ the updated line item(s) #### Defined in -[packages/medusa/src/services/line-item.ts:405](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L405) +[medusa/src/services/line-item.ts:403](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L403) ___ @@ -621,7 +589,7 @@ ___ #### Defined in -[packages/medusa/src/services/line-item.ts:567](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/line-item.ts#L567) +[medusa/src/services/line-item.ts:565](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/line-item.ts#L565) ___ @@ -645,4 +613,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/MiddlewareService.md b/docs/content/references/services/classes/MiddlewareService.md index 3e92b7dfc6..1db57d07d6 100644 --- a/docs/content/references/services/classes/MiddlewareService.md +++ b/docs/content/references/services/classes/MiddlewareService.md @@ -10,7 +10,7 @@ Orchestrates dynamic middleware registered through the Medusa Middleware API #### Defined in -[packages/medusa/src/services/middleware.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L22) +[medusa/src/services/middleware.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L22) ## Properties @@ -20,7 +20,7 @@ Orchestrates dynamic middleware registered through the Medusa Middleware API #### Defined in -[packages/medusa/src/services/middleware.ts:17](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L17) +[medusa/src/services/middleware.ts:17](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L17) ___ @@ -30,7 +30,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L18) +[medusa/src/services/middleware.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L18) ___ @@ -40,7 +40,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L19) +[medusa/src/services/middleware.ts:19](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L19) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L20) +[medusa/src/services/middleware.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L20) ## Methods @@ -75,7 +75,7 @@ void #### Defined in -[packages/medusa/src/services/middleware.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L60) +[medusa/src/services/middleware.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L60) ___ @@ -100,7 +100,7 @@ void #### Defined in -[packages/medusa/src/services/middleware.ts:79](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L79) +[medusa/src/services/middleware.ts:79](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L79) ___ @@ -122,7 +122,7 @@ Adds a middleware function to be called before cart creation #### Defined in -[packages/medusa/src/services/middleware.ts:96](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L96) +[medusa/src/services/middleware.ts:96](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L96) ___ @@ -143,7 +143,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L29) +[medusa/src/services/middleware.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L29) ___ @@ -163,7 +163,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L34) +[medusa/src/services/middleware.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L34) ___ @@ -185,7 +185,7 @@ Adds post authentication middleware to an express app. #### Defined in -[packages/medusa/src/services/middleware.ts:106](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L106) +[medusa/src/services/middleware.ts:106](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L106) ___ @@ -207,7 +207,7 @@ Adds pre authentication middleware to an express app. #### Defined in -[packages/medusa/src/services/middleware.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L117) +[medusa/src/services/middleware.ts:117](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L117) ___ @@ -221,7 +221,7 @@ ___ #### Defined in -[packages/medusa/src/services/middleware.ts:123](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L123) +[medusa/src/services/middleware.ts:123](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L123) ___ @@ -245,4 +245,4 @@ nothing if the middleware is a function #### Defined in -[packages/medusa/src/services/middleware.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/middleware.ts#L43) +[medusa/src/services/middleware.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/middleware.ts#L43) diff --git a/docs/content/references/services/classes/NewTotalsService.md b/docs/content/references/services/classes/NewTotalsService.md index a475db7e9d..7c22ba8222 100644 --- a/docs/content/references/services/classes/NewTotalsService.md +++ b/docs/content/references/services/classes/NewTotalsService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/new-totals.ts:68](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L68) +[medusa/src/services/new-totals.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L67) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,21 +76,21 @@ ___ #### Defined in -[packages/medusa/src/services/new-totals.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L65) +[medusa/src/services/new-totals.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L64) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/new-totals.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L61) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[packages/medusa/src/services/new-totals.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L66) +[medusa/src/services/new-totals.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L65) ___ @@ -110,21 +110,39 @@ ___ #### Defined in -[packages/medusa/src/services/new-totals.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L64) +[medusa/src/services/new-totals.ts:63](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L63) ___ ### transactionManager\_ -• `Protected` `Readonly` **transactionManager\_**: `undefined` \| `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/new-totals.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L62) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -163,7 +181,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -189,7 +207,7 @@ Calculate and return the gift cards totals #### Defined in -[packages/medusa/src/services/new-totals.ts:445](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L445) +[medusa/src/services/new-totals.ts:447](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L447) ___ @@ -220,7 +238,7 @@ Calculate and return the gift cards totals based on their transactions #### Defined in -[packages/medusa/src/services/new-totals.ts:524](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L524) +[medusa/src/services/new-totals.ts:526](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L526) ___ @@ -250,7 +268,7 @@ Return the amount that can be refund on a line item #### Defined in -[packages/medusa/src/services/new-totals.ts:331](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L331) +[medusa/src/services/new-totals.ts:333](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L333) ___ @@ -277,7 +295,7 @@ ___ #### Defined in -[packages/medusa/src/services/new-totals.ts:401](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L401) +[medusa/src/services/new-totals.ts:403](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L403) ___ @@ -303,7 +321,7 @@ Calculate and return the items totals for either the legacy calculation or the n #### Defined in -[packages/medusa/src/services/new-totals.ts:90](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L90) +[medusa/src/services/new-totals.ts:87](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L87) ___ @@ -331,7 +349,7 @@ Calculate and return the legacy calculated totals using the tax rate #### Defined in -[packages/medusa/src/services/new-totals.ts:255](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L255) +[medusa/src/services/new-totals.ts:254](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L254) ___ @@ -360,7 +378,7 @@ Calculate and return the totals for an item #### Defined in -[packages/medusa/src/services/new-totals.ts:151](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L151) +[medusa/src/services/new-totals.ts:147](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L147) ___ @@ -387,7 +405,7 @@ Calculate and return the shipping methods totals for either the legacy calculati #### Defined in -[packages/medusa/src/services/new-totals.ts:570](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L570) +[medusa/src/services/new-totals.ts:572](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L572) ___ @@ -413,7 +431,7 @@ Calculate and return the shipping method totals legacy using teh tax rate #### Defined in -[packages/medusa/src/services/new-totals.ts:728](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L728) +[medusa/src/services/new-totals.ts:729](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L729) ___ @@ -440,7 +458,7 @@ Calculate and return the shipping method totals #### Defined in -[packages/medusa/src/services/new-totals.ts:645](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/new-totals.ts#L645) +[medusa/src/services/new-totals.ts:646](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/new-totals.ts#L646) ___ @@ -464,7 +482,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -488,4 +506,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/NoteService.md b/docs/content/references/services/classes/NoteService.md index cd35ef4c28..1e0814bd99 100644 --- a/docs/content/references/services/classes/NoteService.md +++ b/docs/content/references/services/classes/NoteService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/note.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L29) +[medusa/src/services/note.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L27) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/note.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L27) +[medusa/src/services/note.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L25) ___ @@ -84,23 +84,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/note.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L24) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### noteRepository\_ -• `Protected` `Readonly` **noteRepository\_**: typeof `NoteRepository` +• `Protected` `Readonly` **noteRepository\_**: `Repository`<`Note`\> #### Defined in -[packages/medusa/src/services/note.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L26) +[medusa/src/services/note.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L24) ___ @@ -108,13 +108,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/note.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L25) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -132,7 +132,25 @@ ___ #### Defined in -[packages/medusa/src/services/note.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L18) +[medusa/src/services/note.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L18) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -171,7 +189,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -197,7 +215,7 @@ resolves to the creation result #### Defined in -[packages/medusa/src/services/note.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L103) +[medusa/src/services/note.ts:97](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L97) ___ @@ -219,7 +237,7 @@ Deletes a given note #### Defined in -[packages/medusa/src/services/note.ts:161](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L161) +[medusa/src/services/note.ts:155](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L155) ___ @@ -244,7 +262,7 @@ notes related to the given search. #### Defined in -[packages/medusa/src/services/note.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L82) +[medusa/src/services/note.ts:76](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L76) ___ @@ -269,7 +287,7 @@ which resolves to the requested note. #### Defined in -[packages/medusa/src/services/note.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L47) +[medusa/src/services/note.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L41) ___ @@ -293,7 +311,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -318,7 +336,7 @@ resolves to the updated element #### Defined in -[packages/medusa/src/services/note.ts:139](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/note.ts#L139) +[medusa/src/services/note.ts:133](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/note.ts#L133) ___ @@ -342,4 +360,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/NotificationService.md b/docs/content/references/services/classes/NotificationService.md index 4f75fbe0b1..67a6a90ab4 100644 --- a/docs/content/references/services/classes/NotificationService.md +++ b/docs/content/references/services/classes/NotificationService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/notification.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L36) +[medusa/src/services/notification.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L33) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/notification.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L27) +[medusa/src/services/notification.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L24) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/notification.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L28) +[medusa/src/services/notification.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L25) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/notification.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L31) +[medusa/src/services/notification.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L28) ___ @@ -104,33 +104,33 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/notification.ts:23](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L23) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### notificationProviderRepository\_ -• `Protected` `Readonly` **notificationProviderRepository\_**: typeof `NotificationProviderRepository` +• `Protected` `Readonly` **notificationProviderRepository\_**: `Repository`<`NotificationProvider`\> #### Defined in -[packages/medusa/src/services/notification.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L34) +[medusa/src/services/notification.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L31) ___ ### notificationRepository\_ -• `Protected` `Readonly` **notificationRepository\_**: typeof `NotificationRepository` +• `Protected` `Readonly` **notificationRepository\_**: `Repository`<`Notification`\> #### Defined in -[packages/medusa/src/services/notification.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L32) +[medusa/src/services/notification.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L29) ___ @@ -140,7 +140,7 @@ ___ #### Defined in -[packages/medusa/src/services/notification.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L26) +[medusa/src/services/notification.ts:23](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L23) ___ @@ -148,13 +148,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/notification.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L24) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -193,7 +211,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -220,7 +238,7 @@ the result of notification subscribed #### Defined in -[packages/medusa/src/services/notification.ts:174](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L174) +[medusa/src/services/notification.ts:165](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L165) ___ @@ -245,7 +263,7 @@ the notifications that satisfy the query. #### Defined in -[packages/medusa/src/services/notification.ts:86](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L86) +[medusa/src/services/notification.ts:77](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L77) ___ @@ -268,7 +286,7 @@ used to generate on demand invoices or other documents. #### Defined in -[packages/medusa/src/services/notification.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L62) +[medusa/src/services/notification.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L51) ___ @@ -290,7 +308,7 @@ Takes a list of notification provider ids and persists them in the database. #### Defined in -[packages/medusa/src/services/notification.ts:70](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L70) +[medusa/src/services/notification.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L59) ___ @@ -316,7 +334,7 @@ the newly created notification #### Defined in -[packages/medusa/src/services/notification.ts:254](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L254) +[medusa/src/services/notification.ts:245](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L245) ___ @@ -341,7 +359,7 @@ the notification #### Defined in -[packages/medusa/src/services/notification.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L107) +[medusa/src/services/notification.ts:98](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L98) ___ @@ -366,7 +384,7 @@ the notification provider #### Defined in -[packages/medusa/src/services/notification.ts:155](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L155) +[medusa/src/services/notification.ts:146](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L146) ___ @@ -393,7 +411,7 @@ the created notification #### Defined in -[packages/medusa/src/services/notification.ts:206](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L206) +[medusa/src/services/notification.ts:197](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L197) ___ @@ -417,7 +435,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -440,7 +458,7 @@ Subscribes a given provider to an event. #### Defined in -[packages/medusa/src/services/notification.ts:134](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/notification.ts#L134) +[medusa/src/services/notification.ts:125](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/notification.ts#L125) ___ @@ -464,4 +482,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/OauthService.md b/docs/content/references/services/classes/OauthService.md index 19d52cb625..4fb2d698e6 100644 --- a/docs/content/references/services/classes/OauthService.md +++ b/docs/content/references/services/classes/OauthService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/oauth.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L31) +[medusa/src/services/oauth.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L28) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L27) +[medusa/src/services/oauth.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L24) ___ @@ -86,17 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L29) - -___ - -### manager - -• `Protected` **manager**: `EntityManager` - -#### Defined in - -[packages/medusa/src/services/oauth.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L26) +[medusa/src/services/oauth.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L26) ___ @@ -104,23 +94,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/oauth.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L19) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### oauthRepository\_ -• `Protected` **oauthRepository\_**: typeof `OauthRepository` +• `Protected` **oauthRepository\_**: `Repository`<`Oauth`\> #### Defined in -[packages/medusa/src/services/oauth.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L28) +[medusa/src/services/oauth.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L25) ___ @@ -128,13 +118,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/oauth.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L20) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -151,7 +141,25 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L21) +[medusa/src/services/oauth.ts:19](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L19) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -190,7 +198,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -210,7 +218,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:88](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L88) +[medusa/src/services/oauth.ts:87](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L87) ___ @@ -232,7 +240,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:122](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L122) +[medusa/src/services/oauth.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L121) ___ @@ -252,7 +260,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:80](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L80) +[medusa/src/services/oauth.ts:79](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L79) ___ @@ -272,7 +280,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:156](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L156) +[medusa/src/services/oauth.ts:155](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L155) ___ @@ -292,7 +300,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:112](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L112) +[medusa/src/services/oauth.ts:111](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L111) ___ @@ -312,7 +320,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L57) +[medusa/src/services/oauth.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L54) ___ @@ -332,7 +340,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L41) +[medusa/src/services/oauth.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L36) ___ @@ -356,7 +364,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -377,7 +385,7 @@ ___ #### Defined in -[packages/medusa/src/services/oauth.ts:101](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/oauth.ts#L101) +[medusa/src/services/oauth.ts:100](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/oauth.ts#L100) ___ @@ -401,4 +409,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/OrderEditItemChangeService.md b/docs/content/references/services/classes/OrderEditItemChangeService.md index 867ea2d942..52ca738e1e 100644 --- a/docs/content/references/services/classes/OrderEditItemChangeService.md +++ b/docs/content/references/services/classes/OrderEditItemChangeService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L34) +[medusa/src/services/order-edit-item-change.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L33) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### eventBus\_ -• `Protected` `Readonly` **eventBus\_**: [`EventBusService`](EventBusService.md) +• `Protected` `Readonly` **eventBus\_**: `IEventBusService` #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L30) +[medusa/src/services/order-edit-item-change.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L29) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L31) +[medusa/src/services/order-edit-item-change.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L30) ___ @@ -94,23 +94,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### orderItemChangeRepository\_ -• `Protected` `Readonly` **orderItemChangeRepository\_**: typeof `OrderItemChangeRepository` +• `Protected` `Readonly` **orderItemChangeRepository\_**: `Repository`<`OrderItemChange`\> #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L29) +[medusa/src/services/order-edit-item-change.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L28) ___ @@ -120,7 +120,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L32) +[medusa/src/services/order-edit-item-change.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L31) ___ @@ -128,13 +128,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L27) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -151,7 +151,25 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L21) +[medusa/src/services/order-edit-item-change.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L22) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -190,7 +208,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -210,7 +228,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:86](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L86) +[medusa/src/services/order-edit-item-change.ts:81](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L81) ___ @@ -230,7 +248,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:102](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L102) +[medusa/src/services/order-edit-item-change.ts:97](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L97) ___ @@ -251,7 +269,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:73](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L73) +[medusa/src/services/order-edit-item-change.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L69) ___ @@ -272,7 +290,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit-item-change.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit-item-change.ts#L51) +[medusa/src/services/order-edit-item-change.ts:48](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit-item-change.ts#L48) ___ @@ -296,7 +314,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -320,4 +338,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/OrderEditService.md b/docs/content/references/services/classes/OrderEditService.md index 2b5554b0ba..4f688da64e 100644 --- a/docs/content/references/services/classes/OrderEditService.md +++ b/docs/content/references/services/classes/OrderEditService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/order-edit.ts:68](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L68) +[medusa/src/services/order-edit.ts:75](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L75) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,17 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L63) +[medusa/src/services/order-edit.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L69) + +___ + +### inventoryService\_ + +• `Protected` `Readonly` **inventoryService\_**: `undefined` \| `IInventoryService` + +#### Defined in + +[medusa/src/services/order-edit.ts:73](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L73) ___ @@ -86,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L65) +[medusa/src/services/order-edit.ts:71](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L71) ___ @@ -96,21 +106,21 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L62) +[medusa/src/services/order-edit.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L68) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/order-edit.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L54) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -120,7 +130,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L61) +[medusa/src/services/order-edit.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L67) ___ @@ -130,17 +140,17 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L66) +[medusa/src/services/order-edit.ts:72](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L72) ___ ### orderEditRepository\_ -• `Protected` `Readonly` **orderEditRepository\_**: typeof `OrderEditRepository` +• `Protected` `Readonly` **orderEditRepository\_**: `Repository`<`OrderEdit`\> #### Defined in -[packages/medusa/src/services/order-edit.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L57) +[medusa/src/services/order-edit.ts:63](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L63) ___ @@ -150,7 +160,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L59) +[medusa/src/services/order-edit.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L65) ___ @@ -160,7 +170,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L64) +[medusa/src/services/order-edit.ts:70](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L70) ___ @@ -170,7 +180,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L60) +[medusa/src/services/order-edit.ts:66](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L66) ___ @@ -178,13 +188,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/order-edit.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L55) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -205,7 +215,25 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L45) +[medusa/src/services/order-edit.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L54) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -226,7 +254,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:534](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L534) +[medusa/src/services/order-edit.ts:540](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L540) ___ @@ -265,7 +293,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -287,7 +315,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:678](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L678) +[medusa/src/services/order-edit.ts:686](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L686) ___ @@ -309,7 +337,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:717](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L717) +[medusa/src/services/order-edit.ts:725](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L725) ___ @@ -331,7 +359,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:156](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L156) +[medusa/src/services/order-edit.ts:162](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L162) ___ @@ -354,7 +382,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:258](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L258) +[medusa/src/services/order-edit.ts:260](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L260) ___ @@ -374,7 +402,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:491](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L491) +[medusa/src/services/order-edit.ts:490](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L490) ___ @@ -394,7 +422,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:234](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L234) +[medusa/src/services/order-edit.ts:238](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L238) ___ @@ -414,7 +442,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:790](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L790) +[medusa/src/services/order-edit.ts:808](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L808) ___ @@ -435,7 +463,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:606](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L606) +[medusa/src/services/order-edit.ts:612](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L612) ___ @@ -456,7 +484,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:148](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L148) +[medusa/src/services/order-edit.ts:154](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L154) ___ @@ -477,7 +505,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:124](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L124) +[medusa/src/services/order-edit.ts:130](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L130) ___ @@ -499,7 +527,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:439](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L439) +[medusa/src/services/order-edit.ts:439](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L439) ___ @@ -520,7 +548,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:382](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L382) +[medusa/src/services/order-edit.ts:382](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L382) ___ @@ -542,7 +570,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:638](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L638) +[medusa/src/services/order-edit.ts:644](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L644) ___ @@ -563,13 +591,13 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:95](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L95) +[medusa/src/services/order-edit.ts:102](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L102) ___ ### retrieveActive -▸ `Protected` **retrieveActive**(`orderId`, `config?`): `Promise`<`undefined` \| `OrderEdit`\> +▸ `Protected` **retrieveActive**(`orderId`, `config?`): `Promise`<`undefined` \| ``null`` \| `OrderEdit`\> #### Parameters @@ -580,11 +608,11 @@ ___ #### Returns -`Promise`<`undefined` \| `OrderEdit`\> +`Promise`<`undefined` \| ``null`` \| `OrderEdit`\> #### Defined in -[packages/medusa/src/services/order-edit.ts:769](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L769) +[medusa/src/services/order-edit.ts:788](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L788) ___ @@ -608,7 +636,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -621,37 +649,7 @@ ___ | Name | Type | | :------ | :------ | | `orderEditId` | `string` | -| `data` | `Object` | -| `data.canceled_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.canceled_by?` | `string` | -| `data.changes?` | (`undefined` \| { type?: OrderEditItemChangeType \| undefined; order\_edit\_id?: string \| undefined; order\_edit?: { order\_id?: string \| undefined; order?: { readonly object?: "order" \| undefined; ... 52 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 27 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 7 ...)[] | -| `data.confirmed_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.confirmed_by?` | `string` | -| `data.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.created_by?` | `string` | -| `data.declined_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.declined_by?` | `string` | -| `data.declined_reason?` | `string` | -| `data.difference_due?` | `number` | -| `data.discount_total?` | `number` | -| `data.gift_card_tax_total?` | `number` | -| `data.gift_card_total?` | `number` | -| `data.id?` | `string` | -| `data.internal_note?` | `string` | -| `data.items?` | (`undefined` \| { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; billing\_address?: { customer\_id?: string \| ... 1 more ... \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 36 more ...; updated\_at?: {...)[] | -| `data.order?` | { readonly object?: "order" \| undefined; status?: OrderStatus \| undefined; fulfillment\_status?: FulfillmentStatus \| undefined; payment\_status?: PaymentStatus \| undefined; ... 49 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.order_id?` | `string` | -| `data.payment_collection?` | { type?: PaymentCollectionType \| undefined; status?: PaymentCollectionStatus \| undefined; description?: string \| null \| undefined; ... 13 more ...; updated\_at?: { ...; } \| undefined; } | -| `data.payment_collection_id?` | `string` | -| `data.requested_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.requested_by?` | `string` | -| `data.shipping_total?` | `number` | -| `data.status?` | `OrderEditStatus` | -| `data.subtotal?` | `number` | -| `data.tax_total?` | ``null`` \| `number` | -| `data.total?` | `number` | -| `data.updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `data.loadStatus?` | | +| `data` | `DeepPartial`<`OrderEdit`\> | #### Returns @@ -659,7 +657,7 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:205](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L205) +[medusa/src/services/order-edit.ts:211](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L211) ___ @@ -686,7 +684,7 @@ Create or update order edit item change line item and apply the quantity #### Defined in -[packages/medusa/src/services/order-edit.ts:309](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L309) +[medusa/src/services/order-edit.ts:309](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L309) ___ @@ -710,7 +708,7 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) ___ @@ -730,4 +728,4 @@ ___ #### Defined in -[packages/medusa/src/services/order-edit.ts:836](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order-edit.ts#L836) +[medusa/src/services/order-edit.ts:860](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order-edit.ts#L860) diff --git a/docs/content/references/services/classes/OrderService.md b/docs/content/references/services/classes/OrderService.md index 2294fcc0e2..5c9ecaacfe 100644 --- a/docs/content/references/services/classes/OrderService.md +++ b/docs/content/references/services/classes/OrderService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/order.ts:125](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L125) +[medusa/src/services/order.ts:137](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L137) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +utils/dist/common/transaction-base-service.d.ts:5 ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +utils/dist/common/transaction-base-service.d.ts:4 ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +utils/dist/common/transaction-base-service.d.ts:6 ___ ### addressRepository\_ -• `Protected` `Readonly` **addressRepository\_**: typeof `AddressRepository` +• `Protected` `Readonly` **addressRepository\_**: `Repository`<`Address`\> #### Defined in -[packages/medusa/src/services/order.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L117) +[medusa/src/services/order.ts:128](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L128) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:116](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L116) +[medusa/src/services/order.ts:127](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L127) ___ @@ -96,7 +96,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:104](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L104) +[medusa/src/services/order.ts:115](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L115) ___ @@ -106,7 +106,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:108](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L108) +[medusa/src/services/order.ts:119](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L119) ___ @@ -116,7 +116,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:119](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L119) +[medusa/src/services/order.ts:130](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L130) ___ @@ -126,7 +126,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:120](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L120) +[medusa/src/services/order.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L132) ___ @@ -136,7 +136,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:121](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L121) +[medusa/src/services/order.ts:133](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L133) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:109](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L109) +[medusa/src/services/order.ts:120](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L120) ___ @@ -156,7 +156,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:110](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L110) +[medusa/src/services/order.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L121) ___ @@ -166,7 +166,17 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:118](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L118) +[medusa/src/services/order.ts:129](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L129) + +___ + +### inventoryService\_ + +• `Protected` `Readonly` **inventoryService\_**: `IInventoryService` + +#### Defined in + +[medusa/src/services/order.ts:131](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L131) ___ @@ -176,7 +186,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:111](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L111) +[medusa/src/services/order.ts:122](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L122) ___ @@ -184,13 +194,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/order.ts:100](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L100) +utils/dist/common/transaction-base-service.d.ts:7 ___ @@ -200,17 +210,17 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:113](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L113) +[medusa/src/services/order.ts:124](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L124) ___ ### orderRepository\_ -• `Protected` `Readonly` **orderRepository\_**: typeof `OrderRepository` +• `Protected` `Readonly` **orderRepository\_**: `Repository`<`Order`\> & { `findOneWithRelations`: (`relations`: `FindOptionsRelations`<`Order`\>, `optionsWithoutRelations`: `Omit`<`FindManyOptions`<`Order`\>, ``"relations"``\>) => `Promise`<`Order`\> ; `findWithRelations`: (`relations`: `FindOptionsRelations`<`Order`\>, `optionsWithoutRelations`: `Omit`<`FindManyOptions`<`Order`\>, ``"relations"``\>) => `Promise`<`Order`[]\> } #### Defined in -[packages/medusa/src/services/order.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L103) +[medusa/src/services/order.ts:114](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L114) ___ @@ -220,7 +230,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:105](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L105) +[medusa/src/services/order.ts:116](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L116) ___ @@ -230,7 +240,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:123](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L123) +[medusa/src/services/order.ts:135](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L135) ___ @@ -240,7 +250,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:115](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L115) +[medusa/src/services/order.ts:126](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L126) ___ @@ -250,7 +260,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:106](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L106) +[medusa/src/services/order.ts:117](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L117) ___ @@ -260,7 +270,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L107) +[medusa/src/services/order.ts:118](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L118) ___ @@ -270,7 +280,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:114](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L114) +[medusa/src/services/order.ts:125](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L125) ___ @@ -280,21 +290,21 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:112](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L112) +[medusa/src/services/order.ts:123](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L123) ___ ### transactionManager\_ -• `Protected` **transactionManager\_**: `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/order.ts:101](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L101) +utils/dist/common/transaction-base-service.d.ts:8 ___ @@ -325,7 +335,25 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:81](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L81) +[medusa/src/services/order.ts:95](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L95) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:9 ## Methods @@ -348,7 +376,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:945](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L945) +[medusa/src/services/order.ts:1011](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1011) ___ @@ -373,7 +401,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/order.ts:1483](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1483) +[medusa/src/services/order.ts:1547](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1547) ___ @@ -412,7 +440,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +utils/dist/common/transaction-base-service.d.ts:24 ___ @@ -438,7 +466,7 @@ result of the update operation. #### Defined in -[packages/medusa/src/services/order.ts:1097](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1097) +[medusa/src/services/order.ts:1163](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1163) ___ @@ -462,7 +490,7 @@ updated order #### Defined in -[packages/medusa/src/services/order.ts:1420](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1420) +[medusa/src/services/order.ts:1484](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1484) ___ @@ -486,7 +514,7 @@ result of the update operation. #### Defined in -[packages/medusa/src/services/order.ts:1186](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1186) +[medusa/src/services/order.ts:1252](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1252) ___ @@ -508,7 +536,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/order.ts:513](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L513) +[medusa/src/services/order.ts:571](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L571) ___ @@ -532,7 +560,7 @@ resolves to the creation result. #### Defined in -[packages/medusa/src/services/order.ts:543](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L543) +[medusa/src/services/order.ts:601](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L601) ___ @@ -564,7 +592,7 @@ result of the update operation. #### Defined in -[packages/medusa/src/services/order.ts:1291](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1291) +[medusa/src/services/order.ts:1357](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1357) ___ @@ -586,7 +614,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:733](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L733) +[medusa/src/services/order.ts:791](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L791) ___ @@ -615,7 +643,7 @@ the result of the refund operation. #### Defined in -[packages/medusa/src/services/order.ts:1509](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1509) +[medusa/src/services/order.ts:1573](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1573) ___ @@ -646,7 +674,7 @@ the resulting order following the update. #### Defined in -[packages/medusa/src/services/order.ts:787](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L787) +[medusa/src/services/order.ts:845](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L845) ___ @@ -669,7 +697,7 @@ Calculate and attach the different total fields on the object #### Defined in -[packages/medusa/src/services/order.ts:1706](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1706) +[medusa/src/services/order.ts:1770](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1770) ▸ **decorateTotals**(`order`, `context?`): `Promise`<`Order`\> @@ -688,7 +716,7 @@ Calculate and attach the different total fields on the object #### Defined in -[packages/medusa/src/services/order.ts:1708](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1708) +[medusa/src/services/order.ts:1772](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1772) ___ @@ -709,7 +737,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:1577](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1577) +[medusa/src/services/order.ts:1641](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1641) ___ @@ -735,7 +763,7 @@ the line items generated by the transformer. #### Defined in -[packages/medusa/src/services/order.ts:1462](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1462) +[medusa/src/services/order.ts:1526](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1526) ___ @@ -755,7 +783,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:1966](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1966) +[medusa/src/services/order.ts:2035](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L2035) ___ @@ -778,7 +806,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/order.ts:179](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L179) +[medusa/src/services/order.ts:189](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L189) ___ @@ -801,7 +829,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/order.ts:196](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L196) +[medusa/src/services/order.ts:206](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L206) ___ @@ -833,7 +861,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/order.ts:1891](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1891) +[medusa/src/services/order.ts:1960](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1960) ___ @@ -858,7 +886,7 @@ the order document #### Defined in -[packages/medusa/src/services/order.ts:339](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L339) +[medusa/src/services/order.ts:390](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L390) ___ @@ -883,7 +911,7 @@ the order document #### Defined in -[packages/medusa/src/services/order.ts:435](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L435) +[medusa/src/services/order.ts:486](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L486) ___ @@ -908,7 +936,7 @@ the order document #### Defined in -[packages/medusa/src/services/order.ts:476](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L476) +[medusa/src/services/order.ts:527](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L527) ___ @@ -929,7 +957,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:380](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L380) +[medusa/src/services/order.ts:430](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L430) ___ @@ -951,7 +979,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:418](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L418) +[medusa/src/services/order.ts:469](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L469) ___ @@ -975,7 +1003,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +utils/dist/common/transaction-base-service.d.ts:12 ___ @@ -1001,7 +1029,7 @@ ___ #### Defined in -[packages/medusa/src/services/order.ts:263](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L263) +[medusa/src/services/order.ts:312](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L312) ___ @@ -1028,7 +1056,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/order.ts:1008](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1008) +[medusa/src/services/order.ts:1074](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1074) ___ @@ -1053,7 +1081,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/order.ts:875](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L875) +[medusa/src/services/order.ts:933](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L933) ___ @@ -1078,7 +1106,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/order.ts:914](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L914) +[medusa/src/services/order.ts:980](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L980) ___ @@ -1107,7 +1135,7 @@ a line item that has the requested fulfillment quantity #### Defined in -[packages/medusa/src/services/order.ts:1258](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/order.ts#L1258) +[medusa/src/services/order.ts:1324](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/order.ts#L1324) ___ @@ -1131,4 +1159,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +utils/dist/common/transaction-base-service.d.ts:11 diff --git a/docs/content/references/services/classes/PaymentCollectionService.md b/docs/content/references/services/classes/PaymentCollectionService.md index 8ec161737e..9726cbd9b3 100644 --- a/docs/content/references/services/classes/PaymentCollectionService.md +++ b/docs/content/references/services/classes/PaymentCollectionService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/payment-collection.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L51) +[medusa/src/services/payment-collection.ts:46](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L46) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-collection.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L47) +[medusa/src/services/payment-collection.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L42) ___ @@ -86,31 +86,31 @@ ___ #### Defined in -[packages/medusa/src/services/payment-collection.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L45) +[medusa/src/services/payment-collection.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L40) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/payment-collection.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L43) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### paymentCollectionRepository\_ -• `Protected` `Readonly` **paymentCollectionRepository\_**: typeof `PaymentCollectionRepository` +• `Protected` `Readonly` **paymentCollectionRepository\_**: `Repository`<`PaymentCollection`\> & { `getPaymentCollectionIdByPaymentId`: (`paymentId`: `string`, `config`: `FindConfig`<`PaymentCollection`\>) => `Promise`<`PaymentCollection`\> ; `getPaymentCollectionIdBySessionId`: (`sessionId`: `string`, `config`: `FindConfig`<`PaymentCollection`\>) => `Promise`<`PaymentCollection`\> } #### Defined in -[packages/medusa/src/services/payment-collection.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L49) +[medusa/src/services/payment-collection.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L44) ___ @@ -120,7 +120,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-collection.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L46) +[medusa/src/services/payment-collection.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L41) ___ @@ -128,13 +128,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/payment-collection.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L44) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -153,7 +153,25 @@ ___ #### Defined in -[packages/medusa/src/services/payment-collection.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L36) +[medusa/src/services/payment-collection.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L33) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -192,7 +210,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -218,7 +236,7 @@ the payment collection and its payment session. #### Defined in -[packages/medusa/src/services/payment-collection.ts:535](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L535) +[medusa/src/services/payment-collection.ts:527](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L527) ___ @@ -242,7 +260,7 @@ the payment collection created. #### Defined in -[packages/medusa/src/services/payment-collection.ts:111](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L111) +[medusa/src/services/payment-collection.ts:103](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L103) ___ @@ -266,7 +284,7 @@ the payment collection removed. #### Defined in -[packages/medusa/src/services/payment-collection.ts:180](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L180) +[medusa/src/services/payment-collection.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L172) ___ @@ -287,7 +305,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-collection.ts:218](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L218) +[medusa/src/services/payment-collection.ts:210](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L210) ___ @@ -311,7 +329,7 @@ the payment session authorized. #### Defined in -[packages/medusa/src/services/payment-collection.ts:506](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L506) +[medusa/src/services/payment-collection.ts:498](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L498) ___ @@ -337,7 +355,7 @@ the new payment session created. #### Defined in -[packages/medusa/src/services/payment-collection.ts:414](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L414) +[medusa/src/services/payment-collection.ts:406](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L406) ___ @@ -362,7 +380,7 @@ the payment collection. #### Defined in -[packages/medusa/src/services/payment-collection.ts:74](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L74) +[medusa/src/services/payment-collection.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L67) ___ @@ -388,7 +406,7 @@ the payment collection and its payment session. #### Defined in -[packages/medusa/src/services/payment-collection.ts:368](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L368) +[medusa/src/services/payment-collection.ts:360](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L360) ___ @@ -414,7 +432,7 @@ the payment collection and its payment sessions. #### Defined in -[packages/medusa/src/services/payment-collection.ts:233](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L233) +[medusa/src/services/payment-collection.ts:225](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L225) ___ @@ -438,7 +456,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -453,24 +471,7 @@ Updates a payment collection. | Name | Type | Description | | :------ | :------ | :------ | | `paymentCollectionId` | `string` | the id of the payment collection to update | -| `data` | `Object` | info to be updated | -| `data.amount?` | `number` | - | -| `data.authorized_amount?` | ``null`` \| `number` | - | -| `data.created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `data.created_by?` | `string` | - | -| `data.currency?` | { code?: string \| undefined; symbol?: string \| undefined; symbol\_native?: string \| undefined; name?: string \| undefined; includes\_tax?: boolean \| undefined; } | - | -| `data.currency_code?` | `string` | - | -| `data.deleted_at?` | ``null`` \| { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | -| `data.description?` | ``null`` \| `string` | - | -| `data.id?` | `string` | - | -| `data.metadata?` | { [x: string]: unknown; } | - | -| `data.payment_sessions?` | (`undefined` \| { cart\_id?: string \| null \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; billing\_address?: { customer\_id?: string \| ... 1 more ... \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 36 more ...; updated...)[] | - | -| `data.payments?` | (`undefined` \| { swap\_id?: string \| undefined; swap?: { fulfillment\_status?: SwapFulfillmentStatus \| undefined; payment\_status?: SwapPaymentStatus \| undefined; ... 21 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; })[] | - | -| `data.region?` | { name?: string \| undefined; currency\_code?: string \| undefined; currency?: { code?: string \| undefined; symbol?: string \| undefined; symbol\_native?: string \| undefined; name?: string \| undefined; includes\_tax?: boolean \| undefined; } \| undefined; ... 15 more ...; updated\_at?: { ...; } \| undefined; } | - | -| `data.region_id?` | `string` | - | -| `data.status?` | `PaymentCollectionStatus` | - | -| `data.type?` | `ORDER_EDIT` | - | -| `data.updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | - | +| `data` | `DeepPartial`<`PaymentCollection`\> | info to be updated | #### Returns @@ -480,7 +481,7 @@ the payment collection updated. #### Defined in -[packages/medusa/src/services/payment-collection.ts:146](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-collection.ts#L146) +[medusa/src/services/payment-collection.ts:138](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-collection.ts#L138) ___ @@ -504,4 +505,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/PaymentProviderService.md b/docs/content/references/services/classes/PaymentProviderService.md index e6c7c71580..5e11c03694 100644 --- a/docs/content/references/services/classes/PaymentProviderService.md +++ b/docs/content/references/services/classes/PaymentProviderService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/payment-provider.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L64) +[medusa/src/services/payment-provider.ts:70](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L70) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L53) +[medusa/src/services/payment-provider.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L55) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L59) +[medusa/src/services/payment-provider.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L65) ___ @@ -98,7 +98,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L62) +[medusa/src/services/payment-provider.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L68) ___ @@ -108,7 +108,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L60) +[medusa/src/services/payment-provider.ts:66](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L66) ___ @@ -116,53 +116,53 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/payment-provider.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L51) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### paymentProviderRepository\_ -• `Protected` `Readonly` **paymentProviderRepository\_**: typeof `PaymentProviderRepository` +• `Protected` `Readonly` **paymentProviderRepository\_**: `Repository`<`PaymentProvider`\> #### Defined in -[packages/medusa/src/services/payment-provider.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L56) +[medusa/src/services/payment-provider.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L58) ___ ### paymentRepository\_ -• `Protected` `Readonly` **paymentRepository\_**: typeof `PaymentRepository` +• `Protected` `Readonly` **paymentRepository\_**: `Repository`<`Payment`\> #### Defined in -[packages/medusa/src/services/payment-provider.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L57) +[medusa/src/services/payment-provider.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L59) ___ ### paymentSessionRepository\_ -• `Protected` `Readonly` **paymentSessionRepository\_**: typeof `PaymentSessionRepository` +• `Protected` `Readonly` **paymentSessionRepository\_**: `Repository`<`PaymentSession`\> #### Defined in -[packages/medusa/src/services/payment-provider.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L54) +[medusa/src/services/payment-provider.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L56) ___ ### refundRepository\_ -• `Protected` `Readonly` **refundRepository\_**: typeof `RefundRepository` +• `Protected` `Readonly` **refundRepository\_**: `Repository`<`Refund`\> #### Defined in -[packages/medusa/src/services/payment-provider.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L58) +[medusa/src/services/payment-provider.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L64) ___ @@ -170,13 +170,45 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/payment-provider.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L52) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) + +___ + +### paymentService\_ + +• `Protected` `get` **paymentService_**(): [`PaymentService`](PaymentService.md) + +#### Returns + +[`PaymentService`](PaymentService.md) + +#### Defined in + +[medusa/src/services/payment-provider.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L60) ## Methods @@ -215,7 +247,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -236,7 +268,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:395](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L395) +[medusa/src/services/payment-provider.ts:523](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L523) ___ @@ -258,7 +290,7 @@ Build the create session context for both legacy and new API #### Defined in -[packages/medusa/src/services/payment-provider.ts:641](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L641) +[medusa/src/services/payment-provider.ts:840](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L840) ___ @@ -278,7 +310,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:448](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L448) +[medusa/src/services/payment-provider.ts:597](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L597) ___ @@ -298,7 +330,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:473](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L473) +[medusa/src/services/payment-provider.ts:636](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L636) ___ @@ -318,38 +350,48 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:357](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L357) +[medusa/src/services/payment-provider.ts:471](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L471) ___ ### createSession -▸ **createSession**<`TInput`\>(`providerIdOrSessionInput`, ...`cart`): `Promise`<`PaymentSession`\> +▸ **createSession**(`providerId`, `cart`): `Promise`<`PaymentSession`\> -Creates a payment session with the given provider. - -#### Type parameters - -| Name | Type | -| :------ | :------ | -| `TInput` | extends `string` \| `PaymentSessionInput` = `string` \| `PaymentSessionInput` | +**`Deprecated`** #### Parameters -| Name | Type | Description | -| :------ | :------ | :------ | -| `providerIdOrSessionInput` | `TInput` | the id of the provider to create payment with or the input data | -| `...cart` | `TInput` extends `string` ? [`Cart`] : [undefined?] | a cart object used to calculate the amount, etc. from | +| Name | Type | +| :------ | :------ | +| `providerId` | `string` | +| `cart` | `Cart` | #### Returns `Promise`<`PaymentSession`\> -the payment session +#### Defined in + +[medusa/src/services/payment-provider.ts:205](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L205) + +▸ **createSession**(`sessionInput`): `Promise`<`PaymentSession`\> + +Creates a payment session with the given provider. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `sessionInput` | `PaymentSessionInput` | + +#### Returns + +`Promise`<`PaymentSession`\> #### Defined in -[packages/medusa/src/services/payment-provider.ts:180](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L180) +[medusa/src/services/payment-provider.ts:211](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L211) ___ @@ -369,7 +411,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:303](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L303) +[medusa/src/services/payment-provider.ts:402](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L402) ___ @@ -389,7 +431,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:468](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L468) +[medusa/src/services/payment-provider.ts:625](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L625) ___ @@ -403,7 +445,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:97](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L97) +[medusa/src/services/payment-provider.ts:102](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L102) ___ @@ -411,6 +453,8 @@ ___ ▸ **listPayments**(`selector`, `config?`): `Promise`<`Payment`[]\> +List all the payments according to the given selector and config. + #### Parameters | Name | Type | @@ -424,7 +468,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:132](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L132) +[medusa/src/services/payment-provider.ts:154](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L154) ___ @@ -449,7 +493,7 @@ Process the collected data. Can be used every time we need to process some colle #### Defined in -[packages/medusa/src/services/payment-provider.ts:731](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L731) +[medusa/src/services/payment-provider.ts:930](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L930) ___ @@ -478,7 +522,7 @@ the payment session #### Defined in -[packages/medusa/src/services/payment-provider.ts:238](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L238) +[medusa/src/services/payment-provider.ts:301](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L301) ___ @@ -501,7 +545,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:578](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L578) +[medusa/src/services/payment-provider.ts:766](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L766) ___ @@ -524,7 +568,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:493](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L493) +[medusa/src/services/payment-provider.ts:667](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L667) ___ @@ -544,19 +588,21 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L78) +[medusa/src/services/payment-provider.ts:83](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L83) ___ ### retrievePayment -▸ **retrievePayment**(`id`, `relations?`): `Promise`<`Payment`\> +▸ **retrievePayment**(`paymentId`, `relations?`): `Promise`<`Payment`\> + +Retrieve a payment entity with the given id. #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | -| `id` | `string` | `undefined` | +| `paymentId` | `string` | `undefined` | | `relations` | `string`[] | `[]` | #### Returns @@ -565,13 +611,13 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:104](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L104) +[medusa/src/services/payment-provider.ts:114](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L114) ___ ### retrieveProvider -▸ **retrieveProvider**<`TProvider`\>(`providerId`): `TProvider` extends `AbstractPaymentService` ? `AbstractPaymentService` : `any` +▸ **retrieveProvider**<`TProvider`\>(`providerId`): `TProvider` extends `AbstractPaymentService` ? `AbstractPaymentService` : `TProvider` extends `AbstractPaymentProcessor` ? `AbstractPaymentProcessor` : `any` Finds a provider given an id @@ -589,13 +635,13 @@ Finds a provider given an id #### Returns -`TProvider` extends `AbstractPaymentService` ? `AbstractPaymentService` : `any` +`TProvider` extends `AbstractPaymentService` ? `AbstractPaymentService` : `TProvider` extends `AbstractPaymentProcessor` ? `AbstractPaymentProcessor` : `any` the payment provider #### Defined in -[packages/medusa/src/services/payment-provider.ts:333](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L333) +[medusa/src/services/payment-provider.ts:442](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L442) ___ @@ -616,19 +662,21 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:618](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L618) +[medusa/src/services/payment-provider.ts:817](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L817) ___ ### retrieveSession -▸ **retrieveSession**(`id`, `relations?`): `Promise`<`PaymentSession`\> +▸ **retrieveSession**(`paymentSessionId`, `relations?`): `Promise`<`PaymentSession`\> + +Return the payment session for the given id. #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | -| `id` | `string` | `undefined` | +| `paymentSessionId` | `string` | `undefined` | | `relations` | `string`[] | `[]` | #### Returns @@ -637,7 +685,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:145](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L145) +[medusa/src/services/payment-provider.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L172) ___ @@ -667,7 +715,7 @@ Create or update a Payment session data. #### Defined in -[packages/medusa/src/services/payment-provider.ts:681](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L681) +[medusa/src/services/payment-provider.ts:882](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L882) ___ @@ -691,7 +739,27 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) + +___ + +### throwFromPaymentProcessorError + +▸ `Private` **throwFromPaymentProcessorError**(`errObj`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `errObj` | `PaymentProcessorError` | + +#### Returns + +`void` + +#### Defined in + +[medusa/src/services/payment-provider.ts:949](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L949) ___ @@ -714,7 +782,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:383](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L383) +[medusa/src/services/payment-provider.ts:512](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L512) ___ @@ -742,7 +810,7 @@ the payment session #### Defined in -[packages/medusa/src/services/payment-provider.ts:268](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L268) +[medusa/src/services/payment-provider.ts:342](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L342) ___ @@ -763,7 +831,7 @@ ___ #### Defined in -[packages/medusa/src/services/payment-provider.ts:427](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment-provider.ts#L427) +[medusa/src/services/payment-provider.ts:569](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment-provider.ts#L569) ___ @@ -787,4 +855,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/PaymentService.md b/docs/content/references/services/classes/PaymentService.md index b6d5bb1399..4762a5d5a7 100644 --- a/docs/content/references/services/classes/PaymentService.md +++ b/docs/content/references/services/classes/PaymentService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/payment.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L40) +[medusa/src/services/payment.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L39) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,21 +76,21 @@ ___ #### Defined in -[packages/medusa/src/services/payment.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L28) +[medusa/src/services/payment.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L27) ___ ### manager\_ -• `Protected` `Readonly` **manager\_**: `EntityManager` +• `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/payment.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -100,17 +100,17 @@ ___ #### Defined in -[packages/medusa/src/services/payment.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L29) +[medusa/src/services/payment.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L28) ___ ### paymentRepository\_ -• `Protected` `Readonly` **paymentRepository\_**: typeof `PaymentRepository` +• `Protected` `Readonly` **paymentRepository\_**: `Repository`<`Payment`\> #### Defined in -[packages/medusa/src/services/payment.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L30) +[medusa/src/services/payment.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L29) ___ @@ -118,13 +118,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/payment.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L27) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -145,7 +145,25 @@ ___ #### Defined in -[packages/medusa/src/services/payment.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L31) +[medusa/src/services/payment.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L30) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -184,7 +202,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -208,7 +226,7 @@ the payment captured. #### Defined in -[packages/medusa/src/services/payment.ts:161](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L161) +[medusa/src/services/payment.ts:153](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L153) ___ @@ -232,7 +250,7 @@ the payment created. #### Defined in -[packages/medusa/src/services/payment.ts:96](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L96) +[medusa/src/services/payment.ts:92](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L92) ___ @@ -259,7 +277,7 @@ the refund created. #### Defined in -[packages/medusa/src/services/payment.ts:210](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L210) +[medusa/src/services/payment.ts:202](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L202) ___ @@ -284,7 +302,7 @@ the payment. #### Defined in -[packages/medusa/src/services/payment.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L61) +[medusa/src/services/payment.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L58) ___ @@ -308,7 +326,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -335,7 +353,7 @@ the payment updated. #### Defined in -[packages/medusa/src/services/payment.ts:127](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/payment.ts#L127) +[medusa/src/services/payment.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/payment.ts#L121) ___ @@ -359,4 +377,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/PriceListService.md b/docs/content/references/services/classes/PriceListService.md index 2e6be7c02b..7341e69205 100644 --- a/docs/content/references/services/classes/PriceListService.md +++ b/docs/content/references/services/classes/PriceListService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/price-list.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L57) +[medusa/src/services/price-list.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L59) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L48) +[medusa/src/services/price-list.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L50) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L55) +[medusa/src/services/price-list.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L57) ___ @@ -96,33 +96,33 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/price-list.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L45) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### moneyAmountRepo\_ -• `Protected` `Readonly` **moneyAmountRepo\_**: typeof `MoneyAmountRepository` +• `Protected` `Readonly` **moneyAmountRepo\_**: `Repository`<`MoneyAmount`\> & { `addPriceListPrices`: (`priceListId`: `string`, `prices`: `PriceListPriceCreateInput`[], `overrideExisting`: `boolean`) => `Promise`<`MoneyAmount`[]\> ; `deletePriceListPrices`: (`priceListId`: `string`, `moneyAmountIds`: `string`[]) => `Promise`<`void`\> ; `deleteVariantPricesNotIn`: (`variantIdOrData`: `string` \| { `prices`: `ProductVariantPrice`[] ; `variantId`: `string` }[], `prices?`: `Price`[]) => `Promise`<`void`\> ; `findManyForVariantInPriceList`: (`variant_id`: `string`, `price_list_id`: `string`, `requiresPriceList`: `boolean`) => `Promise`<[`MoneyAmount`[], `number`]\> ; `findManyForVariantInRegion`: (`variant_id`: `string`, `region_id?`: `string`, `currency_code?`: `string`, `customer_id?`: `string`, `include_discount_prices?`: `boolean`, `include_tax_inclusive_pricing`: `boolean`) => `Promise`<[`MoneyAmount`[], `number`]\> ; `findVariantPricesNotIn`: (`variantId`: `string`, `prices`: `Price`[]) => `Promise`<`MoneyAmount`[]\> ; `insertBulk`: (`data`: `_QueryDeepPartialEntity`<`MoneyAmount`\>[]) => `Promise`<`MoneyAmount`[]\> ; `updatePriceListPrices`: (`priceListId`: `string`, `updates`: `PriceListPriceUpdateInput`[]) => `Promise`<`MoneyAmount`[]\> ; `upsertVariantCurrencyPrice`: (`variantId`: `string`, `price`: `Price`) => `Promise`<`MoneyAmount`\> } #### Defined in -[packages/medusa/src/services/price-list.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L53) +[medusa/src/services/price-list.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L55) ___ ### priceListRepo\_ -• `Protected` `Readonly` **priceListRepo\_**: typeof `PriceListRepository` +• `Protected` `Readonly` **priceListRepo\_**: `Repository`<`PriceList`\> & { `listAndCount`: (`query`: `ExtendedFindConfig`<`PriceList`\>, `q?`: `string`) => `Promise`<[`PriceList`[], `number`]\> } #### Defined in -[packages/medusa/src/services/price-list.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L52) +[medusa/src/services/price-list.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L54) ___ @@ -132,17 +132,17 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L50) +[medusa/src/services/price-list.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L52) ___ ### productVariantRepo\_ -• `Protected` `Readonly` **productVariantRepo\_**: typeof `ProductVariantRepository` +• `Protected` `Readonly` **productVariantRepo\_**: `Repository`<`ProductVariant`\> #### Defined in -[packages/medusa/src/services/price-list.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L54) +[medusa/src/services/price-list.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L56) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L49) +[medusa/src/services/price-list.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L51) ___ @@ -160,13 +160,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/price-list.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L46) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -176,7 +176,25 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L51) +[medusa/src/services/price-list.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L53) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -190,7 +208,7 @@ Add `currency_code` to an MA record if `region_id`is passed. | Name | Type | | :------ | :------ | -| `T` | extends `PriceListPriceCreateInput` \| `PriceListPriceUpdateInput` | +| `T` | extends `PriceListPriceUpdateInput` \| `PriceListPriceCreateInput` | #### Parameters @@ -206,7 +224,7 @@ updated `prices` list #### Defined in -[packages/medusa/src/services/price-list.ts:519](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L519) +[medusa/src/services/price-list.ts:563](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L563) ___ @@ -232,7 +250,7 @@ updated Price List #### Defined in -[packages/medusa/src/services/price-list.ts:218](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L218) +[medusa/src/services/price-list.ts:220](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L220) ___ @@ -271,7 +289,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -295,7 +313,7 @@ updated Price List #### Defined in -[packages/medusa/src/services/price-list.ts:258](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L258) +[medusa/src/services/price-list.ts:260](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L260) ___ @@ -319,7 +337,7 @@ created Price List #### Defined in -[packages/medusa/src/services/price-list.ts:119](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L119) +[medusa/src/services/price-list.ts:121](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L121) ___ @@ -344,7 +362,7 @@ empty promise #### Defined in -[packages/medusa/src/services/price-list.ts:272](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L272) +[medusa/src/services/price-list.ts:274](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L274) ___ @@ -369,7 +387,7 @@ updated Price List #### Defined in -[packages/medusa/src/services/price-list.ts:243](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L243) +[medusa/src/services/price-list.ts:245](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L245) ___ @@ -390,7 +408,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:446](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L446) +[medusa/src/services/price-list.ts:490](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L490) ___ @@ -411,7 +429,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:483](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L483) +[medusa/src/services/price-list.ts:527](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L527) ___ @@ -436,7 +454,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/price-list.ts:292](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L292) +[medusa/src/services/price-list.ts:294](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L294) ___ @@ -451,7 +469,7 @@ Lists Price Lists and adds count | Name | Type | Description | | :------ | :------ | :------ | | `selector` | `FilterablePriceListProps` | the query object for find | -| `config` | `FindConfig`<`FilterablePriceListProps`\> | the config to be used for find | +| `config` | `FindConfig`<`PriceList`\> | the config to be used for find | #### Returns @@ -461,7 +479,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/price-list.ts:316](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L316) +[medusa/src/services/price-list.ts:324](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L324) ___ @@ -474,7 +492,7 @@ ___ | Name | Type | Default value | | :------ | :------ | :------ | | `priceListId` | `string` | `undefined` | -| `selector` | `Selector`<`Product`\> \| `FilterableProductProps` | `{}` | +| `selector` | `FilterableProductProps` \| `Selector`<`Product`\> | `{}` | | `config` | `FindConfig`<`Product`\> | `undefined` | | `requiresPriceList` | `boolean` | `false` | @@ -484,7 +502,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:364](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L364) +[medusa/src/services/price-list.ts:408](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L408) ___ @@ -507,7 +525,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:412](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L412) +[medusa/src/services/price-list.ts:456](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L456) ___ @@ -532,7 +550,7 @@ the collection. #### Defined in -[packages/medusa/src/services/price-list.ts:88](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L88) +[medusa/src/services/price-list.ts:88](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L88) ___ @@ -556,7 +574,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -581,7 +599,7 @@ updated Price List #### Defined in -[packages/medusa/src/services/price-list.ts:167](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L167) +[medusa/src/services/price-list.ts:169](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L169) ___ @@ -602,7 +620,7 @@ ___ #### Defined in -[packages/medusa/src/services/price-list.ts:345](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/price-list.ts#L345) +[medusa/src/services/price-list.ts:387](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/price-list.ts#L387) ___ @@ -626,4 +644,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/PricingService.md b/docs/content/references/services/classes/PricingService.md index eaa7eea4b7..1ea15b1d99 100644 --- a/docs/content/references/services/classes/PricingService.md +++ b/docs/content/references/services/classes/PricingService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/pricing.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L44) +[medusa/src/services/pricing.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L42) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L42) +[medusa/src/services/pricing.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L40) ___ @@ -86,13 +86,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/pricing.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L36) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -102,7 +102,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L40) +[medusa/src/services/pricing.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L38) ___ @@ -112,7 +112,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L41) +[medusa/src/services/pricing.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L39) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L38) +[medusa/src/services/pricing.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L36) ___ @@ -132,7 +132,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L39) +[medusa/src/services/pricing.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L37) ___ @@ -140,13 +140,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/pricing.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L37) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -185,13 +203,13 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ ### calculateTaxes -▸ **calculateTaxes**(`variantPricing`, `productRates`): `Promise`<`TaxedPricing`\> +▸ **calculateTaxes**(`variantPricing`, `productRates`): `TaxedPricing` Gets the prices for a product variant @@ -204,13 +222,13 @@ Gets the prices for a product variant #### Returns -`Promise`<`TaxedPricing`\> +`TaxedPricing` The tax related variant prices. #### Defined in -[packages/medusa/src/services/pricing.ts:105](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L105) +[medusa/src/services/pricing.ts:101](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L101) ___ @@ -218,7 +236,7 @@ ___ ▸ **collectPricingContext**(`context`): `Promise`<`PricingContext`\> -Collects additional information neccessary for completing the price +Collects additional information necessary for completing the price selection. #### Parameters @@ -235,7 +253,7 @@ The pricing context #### Defined in -[packages/medusa/src/services/pricing.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L69) +[medusa/src/services/pricing.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L65) ___ @@ -261,7 +279,7 @@ A map of variant ids to their corresponding prices #### Defined in -[packages/medusa/src/services/pricing.ts:389](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L389) +[medusa/src/services/pricing.ts:388](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L388) ___ @@ -286,7 +304,7 @@ A map of variant ids to their corresponding prices #### Defined in -[packages/medusa/src/services/pricing.ts:407](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L407) +[medusa/src/services/pricing.ts:406](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L406) ___ @@ -308,7 +326,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:351](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L351) +[medusa/src/services/pricing.ts:349](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L349) ___ @@ -333,7 +351,7 @@ The product variant prices #### Defined in -[packages/medusa/src/services/pricing.ts:214](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L214) +[medusa/src/services/pricing.ts:212](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L212) ___ @@ -362,7 +380,7 @@ The product variant prices #### Defined in -[packages/medusa/src/services/pricing.ts:253](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L253) +[medusa/src/services/pricing.ts:251](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L251) ___ @@ -384,7 +402,7 @@ ___ #### Defined in -[packages/medusa/src/services/pricing.ts:167](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L167) +[medusa/src/services/pricing.ts:163](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L163) ___ @@ -416,7 +434,7 @@ The product variant prices #### Defined in -[packages/medusa/src/services/pricing.ts:294](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L294) +[medusa/src/services/pricing.ts:292](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L292) ___ @@ -441,7 +459,7 @@ The shipping option prices #### Defined in -[packages/medusa/src/services/pricing.ts:493](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L493) +[medusa/src/services/pricing.ts:486](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L486) ___ @@ -466,7 +484,7 @@ A list of products with variants decorated with prices #### Defined in -[packages/medusa/src/services/pricing.ts:450](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L450) +[medusa/src/services/pricing.ts:450](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L450) ___ @@ -491,13 +509,13 @@ A list of shipping options with prices #### Defined in -[packages/medusa/src/services/pricing.ts:555](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L555) +[medusa/src/services/pricing.ts:548](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L548) ___ ### setVariantPrices -▸ **setVariantPrices**(`variants`, `context`): `Promise`<`PricedVariant`[]\> +▸ **setVariantPrices**(`variants`, `context?`): `Promise`<`PricedVariant`[]\> Set additional prices on a list of product variants. @@ -516,7 +534,7 @@ A list of products with variants decorated with prices #### Defined in -[packages/medusa/src/services/pricing.ts:425](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/pricing.ts#L425) +[medusa/src/services/pricing.ts:424](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/pricing.ts#L424) ___ @@ -540,7 +558,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -564,4 +582,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ProductCategoryService.md b/docs/content/references/services/classes/ProductCategoryService.md index 89d0aaaf9f..1629961404 100644 --- a/docs/content/references/services/classes/ProductCategoryService.md +++ b/docs/content/references/services/classes/ProductCategoryService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product-category.ts:35](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L35) +[medusa/src/services/product-category.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L40) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-category.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L25) +[medusa/src/services/product-category.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L32) ___ @@ -86,23 +86,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product-category.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L27) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### productCategoryRepo\_ -• `Protected` `Readonly` **productCategoryRepo\_**: typeof `ProductCategoryRepository` +• `Protected` `Readonly` **productCategoryRepo\_**: `TreeRepository`<`ProductCategory`\> & { `addProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`void`\> ; `findOneWithDescendants`: (`query`: `FindOneOptions`<`ProductCategory`\>, `treeScope`: `QuerySelector`<`ProductCategory`\>) => `Promise`<``null`` \| `ProductCategory`\> ; `getFreeTextSearchResultsAndCount`: (`options`: `ExtendedFindConfig`<`ProductCategory`\>, `q?`: `string`, `treeScope`: `QuerySelector`<`ProductCategory`\>, `includeTree`: `boolean`) => `Promise`<[`ProductCategory`[], `number`]\> ; `removeProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> } #### Defined in -[packages/medusa/src/services/product-category.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L24) +[medusa/src/services/product-category.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L31) ___ @@ -110,13 +110,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-category.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -134,7 +134,25 @@ ___ #### Defined in -[packages/medusa/src/services/product-category.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L29) +[medusa/src/services/product-category.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L34) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -159,7 +177,7 @@ the product category on which the products have been added #### Defined in -[packages/medusa/src/services/product-category.ts:227](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L227) +[medusa/src/services/product-category.ts:266](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L266) ___ @@ -198,7 +216,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -210,9 +228,9 @@ Creates a product category #### Parameters -| Name | Type | -| :------ | :------ | -| `productCategoryInput` | `CreateProductCategoryInput` | +| Name | Type | Description | +| :------ | :------ | :------ | +| `productCategoryInput` | `CreateProductCategoryInput` | parameters to create a product category | #### Returns @@ -222,7 +240,7 @@ created product category #### Defined in -[packages/medusa/src/services/product-category.ts:132](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L132) +[medusa/src/services/product-category.ts:139](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L139) ___ @@ -246,7 +264,29 @@ a promise #### Defined in -[packages/medusa/src/services/product-category.ts:191](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L191) +[medusa/src/services/product-category.ts:220](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L220) + +___ + +### fetchReorderConditions + +▸ `Protected` **fetchReorderConditions**(`productCategory`, `input`, `shouldDeleteElement?`): `ReorderConditions` + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `productCategory` | `ProductCategory` | `undefined` | +| `input` | `UpdateProductCategoryInput` | `undefined` | +| `shouldDeleteElement` | `boolean` | `false` | + +#### Returns + +`ReorderConditions` + +#### Defined in + +[medusa/src/services/product-category.ts:301](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L301) ___ @@ -259,11 +299,11 @@ product category that match the query. #### Parameters -| Name | Type | -| :------ | :------ | -| `selector` | `QuerySelector`<`ProductCategory`\> | -| `config` | `FindConfig`<`ProductCategory`\> | -| `treeSelector` | `QuerySelector`<`ProductCategory`\> | +| Name | Type | Description | +| :------ | :------ | :------ | +| `selector` | `TreeQuerySelector`<`ProductCategory`\> | Filter options for product category. | +| `config` | `FindConfig`<`ProductCategory`\> | Configuration for query. | +| `treeSelector` | `QuerySelector`<`ProductCategory`\> | Filter options for product category tree relations | #### Returns @@ -275,7 +315,28 @@ an array containing the product category as #### Defined in -[packages/medusa/src/services/product-category.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L55) +[medusa/src/services/product-category.ts:61](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L61) + +___ + +### performReordering + +▸ `Protected` **performReordering**(`repository`, `conditions`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `repository` | `TreeRepository`<`ProductCategory`\> & { `addProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`void`\> ; `findOneWithDescendants`: (`query`: `FindOneOptions`<`ProductCategory`\>, `treeScope`: `QuerySelector`<`ProductCategory`\>) => `Promise`<``null`` \| `ProductCategory`\> ; `getFreeTextSearchResultsAndCount`: (`options`: `ExtendedFindConfig`<`ProductCategory`\>, `q?`: `string`, `treeScope`: `QuerySelector`<`ProductCategory`\>, `includeTree`: `boolean`) => `Promise`<[`ProductCategory`[], `number`]\> ; `removeProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> } | +| `conditions` | `ReorderConditions` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[medusa/src/services/product-category.ts:329](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L329) ___ @@ -300,13 +361,13 @@ the product category on which the products have been removed #### Defined in -[packages/medusa/src/services/product-category.ts:245](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L245) +[medusa/src/services/product-category.ts:285](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L285) ___ ### retrieve -▸ **retrieve**(`productCategoryId`, `config?`, `selector?`): `Promise`<`ProductCategory`\> +▸ **retrieve**(`productCategoryId`, `config?`, `selector?`, `treeSelector?`): `Promise`<`ProductCategory`\> Retrieves a product category by id. @@ -317,6 +378,7 @@ Retrieves a product category by id. | `productCategoryId` | `string` | the id of the product category to retrieve. | | `config` | `FindConfig`<`ProductCategory`\> | the config of the product category to retrieve. | | `selector` | `Selector`<`ProductCategory`\> | - | +| `treeSelector` | `QuerySelector`<`ProductCategory`\> | - | #### Returns @@ -326,7 +388,28 @@ the product category. #### Defined in -[packages/medusa/src/services/product-category.ts:92](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L92) +[medusa/src/services/product-category.ts:100](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L100) + +___ + +### shiftSiblings + +▸ `Protected` **shiftSiblings**(`repository`, `conditions`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `repository` | `TreeRepository`<`ProductCategory`\> & { `addProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`void`\> ; `findOneWithDescendants`: (`query`: `FindOneOptions`<`ProductCategory`\>, `treeScope`: `QuerySelector`<`ProductCategory`\>) => `Promise`<``null`` \| `ProductCategory`\> ; `getFreeTextSearchResultsAndCount`: (`options`: `ExtendedFindConfig`<`ProductCategory`\>, `q?`: `string`, `treeScope`: `QuerySelector`<`ProductCategory`\>, `includeTree`: `boolean`) => `Promise`<[`ProductCategory`[], `number`]\> ; `removeProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> } | +| `conditions` | `ReorderConditions` | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[medusa/src/services/product-category.ts:367](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L367) ___ @@ -350,7 +433,32 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) + +___ + +### transformParentIdToEntity + +▸ `Protected` **transformParentIdToEntity**(`productCategoryInput`): `Promise`<`CreateProductCategoryInput` \| `UpdateProductCategoryInput`\> + +Accepts an input object and transforms product_category_id +into product_category entity. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `productCategoryInput` | `CreateProductCategoryInput` \| `UpdateProductCategoryInput` | params used to create/update | + +#### Returns + +`Promise`<`CreateProductCategoryInput` \| `UpdateProductCategoryInput`\> + +transformed productCategoryInput + +#### Defined in + +[medusa/src/services/product-category.ts:465](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L465) ___ @@ -375,7 +483,7 @@ updated product category #### Defined in -[packages/medusa/src/services/product-category.ts:156](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-category.ts#L156) +[medusa/src/services/product-category.ts:173](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-category.ts#L173) ___ @@ -399,4 +507,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ProductCollectionService.md b/docs/content/references/services/classes/ProductCollectionService.md index 614a8e3294..dad5d64b39 100644 --- a/docs/content/references/services/classes/ProductCollectionService.md +++ b/docs/content/references/services/classes/ProductCollectionService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product-collection.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L34) +[medusa/src/services/product-collection.ts:49](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L49) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-collection.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L29) +[medusa/src/services/product-collection.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L36) ___ @@ -86,33 +86,33 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product-collection.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### productCollectionRepository\_ -• `Protected` `Readonly` **productCollectionRepository\_**: typeof `ProductCollectionRepository` +• `Protected` `Readonly` **productCollectionRepository\_**: `Repository`<`ProductCollection`\> & { `findAndCountByDiscountConditionId`: (`conditionId`: `string`, `query`: `ExtendedFindConfig`<`ProductCollection`\>) => `Promise`<[`ProductCollection`[], `number`]\> } #### Defined in -[packages/medusa/src/services/product-collection.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L31) +[medusa/src/services/product-collection.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L38) ___ ### productRepository\_ -• `Protected` `Readonly` **productRepository\_**: typeof `ProductRepository` +• `Protected` `Readonly` **productRepository\_**: `Repository`<`Product`\> & { `bulkAddToCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `bulkRemoveFromCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `findAndCount`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<[`Product`[], `number`]\> ; `findOne`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>) => `Promise`<``null`` \| `Product`\> ; `isProductInSalesChannels`: (`id`: `string`, `salesChannelIds`: `string`[]) => `Promise`<`boolean`\> ; `prepareQueryBuilder_`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<`SelectQueryBuilder`<`Product`\>\> ; `upsertShippingProfile`: (`productIds`: `string`[], `shippingProfileId`: `string`) => `Promise`<`Product`[]\> } #### Defined in -[packages/medusa/src/services/product-collection.ts:32](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L32) +[medusa/src/services/product-collection.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L39) ___ @@ -120,13 +120,51 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-collection.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L27) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +___ + +### Events + +▪ `Static` `Readonly` **Events**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `CREATED` | `string` | +| `DELETED` | `string` | +| `PRODUCTS_ADDED` | `string` | +| `PRODUCTS_REMOVED` | `string` | +| `UPDATED` | `string` | + +#### Defined in + +[medusa/src/services/product-collection.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L41) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -147,7 +185,7 @@ TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-collection.ts:181](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L181) +[medusa/src/services/product-collection.ts:216](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L216) ___ @@ -186,7 +224,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -210,7 +248,7 @@ created collection #### Defined in -[packages/medusa/src/services/product-collection.ts:114](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L114) +[medusa/src/services/product-collection.ts:128](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L128) ___ @@ -234,7 +272,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product-collection.ts:163](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L163) +[medusa/src/services/product-collection.ts:192](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L192) ___ @@ -261,7 +299,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-collection.ts:219](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L219) +[medusa/src/services/product-collection.ts:274](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L274) ___ @@ -275,7 +313,7 @@ Lists product collections and add count. | Name | Type | Description | | :------ | :------ | :------ | -| `selector` | `Selector`<`ProductCollection`\> & { `discount_condition_id?`: `string` ; `q?`: `string` } | the query object for find | +| `selector` | `ListAndCountSelector` | the query object for find | | `config` | `FindConfig`<`ProductCollection`\> | the config to be used for find | #### Returns @@ -286,7 +324,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-collection.ts:236](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L236) +[medusa/src/services/product-collection.ts:291](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L291) ___ @@ -307,7 +345,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-collection.ts:198](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L198) +[medusa/src/services/product-collection.ts:242](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L242) ___ @@ -332,7 +370,7 @@ the collection. #### Defined in -[packages/medusa/src/services/product-collection.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L54) +[medusa/src/services/product-collection.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L68) ___ @@ -357,7 +395,7 @@ the collection. #### Defined in -[packages/medusa/src/services/product-collection.ts:88](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L88) +[medusa/src/services/product-collection.ts:102](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L102) ___ @@ -381,7 +419,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -406,7 +444,7 @@ update collection #### Defined in -[packages/medusa/src/services/product-collection.ts:133](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-collection.ts#L133) +[medusa/src/services/product-collection.ts:154](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-collection.ts#L154) ___ @@ -430,4 +468,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ProductService.md b/docs/content/references/services/classes/ProductService.md index 617a13f542..afcad8316d 100644 --- a/docs/content/references/services/classes/ProductService.md +++ b/docs/content/references/services/classes/ProductService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L78) +[medusa/src/services/product.ts:71](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L71) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:68](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L68) +[medusa/src/services/product.ts:61](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L61) ___ @@ -86,17 +86,17 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L69) +[medusa/src/services/product.ts:62](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L62) ___ ### imageRepository\_ -• `Protected` `Readonly` **imageRepository\_**: typeof `ImageRepository` +• `Protected` `Readonly` **imageRepository\_**: `Repository`<`Image`\> & { `insertBulk`: (`data`: `_QueryDeepPartialEntity`<`Image`\>[]) => `Promise`<`Image`[]\> ; `upsertImages`: (`imageUrls`: `string`[]) => `Promise`<`Image`[]\> } #### Defined in -[packages/medusa/src/services/product.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L63) +[medusa/src/services/product.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L56) ___ @@ -104,73 +104,73 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L55) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### productCategoryRepository\_ -• `Protected` `Readonly` **productCategoryRepository\_**: typeof `ProductCategoryRepository` +• `Protected` `Readonly` **productCategoryRepository\_**: `TreeRepository`<`ProductCategory`\> & { `addProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`void`\> ; `findOneWithDescendants`: (`query`: `FindOneOptions`<`ProductCategory`\>, `treeScope`: `QuerySelector`<`ProductCategory`\>) => `Promise`<``null`` \| `ProductCategory`\> ; `getFreeTextSearchResultsAndCount`: (`options`: `ExtendedFindConfig`<`ProductCategory`\>, `q?`: `string`, `treeScope`: `QuerySelector`<`ProductCategory`\>, `includeTree`: `boolean`) => `Promise`<[`ProductCategory`[], `number`]\> ; `removeProducts`: (`productCategoryId`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> } #### Defined in -[packages/medusa/src/services/product.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L65) +[medusa/src/services/product.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L58) ___ ### productOptionRepository\_ -• `Protected` `Readonly` **productOptionRepository\_**: typeof `ProductOptionRepository` +• `Protected` `Readonly` **productOptionRepository\_**: `Repository`<`ProductOption`\> #### Defined in -[packages/medusa/src/services/product.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L58) +[medusa/src/services/product.ts:51](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L51) ___ ### productRepository\_ -• `Protected` `Readonly` **productRepository\_**: typeof `ProductRepository` +• `Protected` `Readonly` **productRepository\_**: `Repository`<`Product`\> & { `bulkAddToCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `bulkRemoveFromCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `findAndCount`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<[`Product`[], `number`]\> ; `findOne`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>) => `Promise`<``null`` \| `Product`\> ; `isProductInSalesChannels`: (`id`: `string`, `salesChannelIds`: `string`[]) => `Promise`<`boolean`\> ; `prepareQueryBuilder_`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<`SelectQueryBuilder`<`Product`\>\> ; `upsertShippingProfile`: (`productIds`: `string`[], `shippingProfileId`: `string`) => `Promise`<`Product`[]\> } #### Defined in -[packages/medusa/src/services/product.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L59) +[medusa/src/services/product.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L52) ___ ### productTagRepository\_ -• `Protected` `Readonly` **productTagRepository\_**: typeof `ProductTagRepository` +• `Protected` `Readonly` **productTagRepository\_**: `Repository`<`ProductTag`\> & { `findAndCountByDiscountConditionId`: (`conditionId`: `string`, `query`: `ExtendedFindConfig`<`ProductTag`\>) => `Promise`<[`ProductTag`[], `number`]\> ; `listTagsByUsage`: (`count`: `number`) => `Promise`<`ProductTag`[]\> ; `upsertTags`: (`tags`: `UpsertTagsInput`) => `Promise`<`ProductTag`[]\> } #### Defined in -[packages/medusa/src/services/product.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L62) +[medusa/src/services/product.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L55) ___ ### productTypeRepository\_ -• `Protected` `Readonly` **productTypeRepository\_**: typeof `ProductTypeRepository` +• `Protected` `Readonly` **productTypeRepository\_**: `Repository`<`ProductType`\> & { `findAndCountByDiscountConditionId`: (`conditionId`: `string`, `query`: `ExtendedFindConfig`<`ProductType`\>) => `Promise`<[`ProductType`[], `number`]\> ; `upsertType`: (`type?`: `UpsertTypeInput`) => `Promise`<``null`` \| `ProductType`\> } #### Defined in -[packages/medusa/src/services/product.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L61) +[medusa/src/services/product.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L54) ___ ### productVariantRepository\_ -• `Protected` `Readonly` **productVariantRepository\_**: typeof `ProductVariantRepository` +• `Protected` `Readonly` **productVariantRepository\_**: `Repository`<`ProductVariant`\> #### Defined in -[packages/medusa/src/services/product.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L60) +[medusa/src/services/product.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L53) ___ @@ -180,7 +180,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L66) +[medusa/src/services/product.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L59) ___ @@ -190,7 +190,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L67) +[medusa/src/services/product.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L60) ___ @@ -198,13 +198,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L56) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -222,7 +222,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L72) +[medusa/src/services/product.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L65) ___ @@ -232,7 +232,25 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:71](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L71) +[medusa/src/services/product.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L64) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -259,7 +277,7 @@ the result of the model update operation #### Defined in -[packages/medusa/src/services/product.ts:656](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L656) +[medusa/src/services/product.ts:637](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L637) ___ @@ -298,7 +316,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -322,7 +340,7 @@ the result of the count operation #### Defined in -[packages/medusa/src/services/product.ts:171](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L171) +[medusa/src/services/product.ts:158](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L158) ___ @@ -346,7 +364,7 @@ resolves to the creation result. #### Defined in -[packages/medusa/src/services/product.ts:383](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L383) +[medusa/src/services/product.ts:365](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L365) ___ @@ -371,7 +389,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product.ts:622](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L622) +[medusa/src/services/product.ts:598](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L598) ___ @@ -396,7 +414,7 @@ the updated product #### Defined in -[packages/medusa/src/services/product.ts:821](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L821) +[medusa/src/services/product.ts:802](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L802) ___ @@ -418,7 +436,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:306](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L306) +[medusa/src/services/product.ts:290](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L290) ___ @@ -441,7 +459,7 @@ Check if the product is assigned to at least one of the provided sales channels. #### Defined in -[packages/medusa/src/services/product.ts:361](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L361) +[medusa/src/services/product.ts:343](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L343) ___ @@ -466,7 +484,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L117) +[medusa/src/services/product.ts:108](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L108) ___ @@ -494,7 +512,7 @@ an array containing the products as #### Defined in -[packages/medusa/src/services/product.ts:141](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L141) +[medusa/src/services/product.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L132) ___ @@ -514,7 +532,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:346](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L346) +[medusa/src/services/product.ts:329](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L329) ___ @@ -528,39 +546,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:337](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L337) - -___ - -### prepareListQuery\_ - -▸ `Protected` **prepareListQuery_**(`selector`, `config`): `Object` - -Creates a query object to be used for list queries. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `selector` | `Selector`<`Product`\> \| `FilterableProductProps` | the selector to create the query from | -| `config` | `FindProductConfig` | the config to use for the query | - -#### Returns - -`Object` - -an object containing the query, relations and free-text - search param. - -| Name | Type | -| :------ | :------ | -| `q` | `string` | -| `query` | `FindWithoutRelationsOptions` | -| `relations` | keyof `Product`[] | - -#### Defined in - -[packages/medusa/src/services/product.ts:918](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L918) +[medusa/src/services/product.ts:321](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L321) ___ @@ -581,7 +567,7 @@ ___ #### Defined in -[packages/medusa/src/services/product.ts:699](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L699) +[medusa/src/services/product.ts:680](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L680) ___ @@ -607,7 +593,7 @@ the result of the find one operation. #### Defined in -[packages/medusa/src/services/product.ts:186](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L186) +[medusa/src/services/product.ts:174](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L174) ___ @@ -633,7 +619,7 @@ the result of the find one operation. #### Defined in -[packages/medusa/src/services/product.ts:230](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L230) +[medusa/src/services/product.ts:218](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L218) ___ @@ -659,13 +645,13 @@ the result of the find one operation. #### Defined in -[packages/medusa/src/services/product.ts:209](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L209) +[medusa/src/services/product.ts:197](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L197) ___ ### retrieveOptionByTitle -▸ **retrieveOptionByTitle**(`title`, `productId`): `Promise`<`undefined` \| `ProductOption`\> +▸ **retrieveOptionByTitle**(`title`, `productId`): `Promise`<``null`` \| `ProductOption`\> Retrieve product's option by title. @@ -678,13 +664,13 @@ Retrieve product's option by title. #### Returns -`Promise`<`undefined` \| `ProductOption`\> +`Promise`<``null`` \| `ProductOption`\> product option #### Defined in -[packages/medusa/src/services/product.ts:802](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L802) +[medusa/src/services/product.ts:783](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L783) ___ @@ -709,7 +695,7 @@ an array of variants #### Defined in -[packages/medusa/src/services/product.ts:288](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L288) +[medusa/src/services/product.ts:272](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L272) ___ @@ -735,7 +721,7 @@ the result of the find one operation. #### Defined in -[packages/medusa/src/services/product.ts:252](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L252) +[medusa/src/services/product.ts:240](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L240) ___ @@ -759,7 +745,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -786,7 +772,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/product.ts:492](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L492) +[medusa/src/services/product.ts:470](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L470) ___ @@ -813,7 +799,7 @@ the updated product #### Defined in -[packages/medusa/src/services/product.ts:745](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L745) +[medusa/src/services/product.ts:726](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L726) ___ @@ -836,7 +822,7 @@ updated shipping options #### Defined in -[packages/medusa/src/services/product.ts:892](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product.ts#L892) +[medusa/src/services/product.ts:873](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product.ts#L873) ___ @@ -860,4 +846,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ProductTypeService.md b/docs/content/references/services/classes/ProductTypeService.md index cf1c8a6771..a8c670a9d5 100644 --- a/docs/content/references/services/classes/ProductTypeService.md +++ b/docs/content/references/services/classes/ProductTypeService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product-type.ts:15](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L15) +[medusa/src/services/product-type.ts:12](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-type.ts#L12) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -74,13 +74,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product-type.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -88,23 +88,41 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-type.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ ### typeRepository\_ -• `Protected` `Readonly` **typeRepository\_**: typeof `ProductTypeRepository` +• `Protected` `Readonly` **typeRepository\_**: `Repository`<`ProductType`\> & { `findAndCountByDiscountConditionId`: (`conditionId`: `string`, `query`: `ExtendedFindConfig`<`ProductType`\>) => `Promise`<[`ProductType`[], `number`]\> ; `upsertType`: (`type?`: `UpsertTypeInput`) => `Promise`<``null`` \| `ProductType`\> } #### Defined in -[packages/medusa/src/services/product-type.ts:13](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L13) +[medusa/src/services/product-type.ts:10](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-type.ts#L10) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -168,7 +186,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-type.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L55) +[medusa/src/services/product-type.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-type.ts#L52) ___ @@ -193,7 +211,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-type.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L72) +[medusa/src/services/product-type.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-type.ts#L69) ___ @@ -219,7 +237,7 @@ the result of the find one operation. #### Defined in -[packages/medusa/src/services/product-type.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-type.ts#L30) +[medusa/src/services/product-type.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-type.ts#L27) ___ @@ -243,7 +261,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -267,4 +285,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ProductVariantInventoryService.md b/docs/content/references/services/classes/ProductVariantInventoryService.md index 47df9b895c..3066c4ca2b 100644 --- a/docs/content/references/services/classes/ProductVariantInventoryService.md +++ b/docs/content/references/services/classes/ProductVariantInventoryService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L43) +[medusa/src/services/product-variant-inventory.ts:36](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L36) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +utils/dist/common/transaction-base-service.d.ts:5 ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +utils/dist/common/transaction-base-service.d.ts:4 ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +utils/dist/common/transaction-base-service.d.ts:6 ___ ### cacheService\_ -• `Protected` `Readonly` **cacheService\_**: [`CacheService`](CacheService.md) +• `Protected` `Readonly` **cacheService\_**: `ICacheService` #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L41) +[medusa/src/services/product-variant-inventory.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L34) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L40) +[medusa/src/services/product-variant-inventory.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L33) ___ @@ -94,13 +94,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L33) +utils/dist/common/transaction-base-service.d.ts:7 ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L38) +[medusa/src/services/product-variant-inventory.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L31) ___ @@ -120,7 +120,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L37) +[medusa/src/services/product-variant-inventory.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L30) ___ @@ -130,7 +130,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:36](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L36) +[medusa/src/services/product-variant-inventory.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L29) ___ @@ -140,7 +140,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L39) +[medusa/src/services/product-variant-inventory.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L32) ___ @@ -148,13 +148,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L34) +utils/dist/common/transaction-base-service.d.ts:8 + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:9 ## Methods @@ -178,7 +196,7 @@ Adjusts inventory of a variant on a location #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:573](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L573) +[medusa/src/services/product-variant-inventory.ts:598](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L598) ___ @@ -203,7 +221,7 @@ Adjusts the quantity of reservations for a line item by a given amount. #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:419](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L419) +[medusa/src/services/product-variant-inventory.ts:408](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L408) ___ @@ -242,7 +260,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +utils/dist/common/transaction-base-service.d.ts:24 ___ @@ -268,7 +286,7 @@ the variant inventory item #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:255](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L255) +[medusa/src/services/product-variant-inventory.ts:237](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L237) ___ @@ -295,7 +313,7 @@ boolean indicating if inventory is available #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L69) +[medusa/src/services/product-variant-inventory.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L60) ___ @@ -319,7 +337,7 @@ delete a reservation of variant quantity #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:538](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L538) +[medusa/src/services/product-variant-inventory.ts:566](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L566) ___ @@ -342,7 +360,35 @@ Remove a variant from an inventory item #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:317](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L317) +[medusa/src/services/product-variant-inventory.ts:299](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L299) + +___ + +### getVariantQuantityFromVariantInventoryItems + +▸ **getVariantQuantityFromVariantInventoryItems**(`variantInventoryItems`, `channelId`): `Promise`<`number`\> + +Get the quantity of a variant from a list of variantInventoryItems +The inventory quantity of the variant should be equal to the inventory +item with the smallest stock, adjusted for quantity required to fulfill +the given variant. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `variantInventoryItems` | `ProductVariantInventoryItem`[] | List of inventoryItems for a given variant, These must all be for the same variant | +| `channelId` | `string` | Sales channel id to fetch availability for | + +#### Returns + +`Promise`<`number`\> + +The available quantity of the variant from the inventoryItems + +#### Defined in + +[medusa/src/services/product-variant-inventory.ts:716](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L716) ___ @@ -366,13 +412,13 @@ list of inventory items #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:173](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L173) +[medusa/src/services/product-variant-inventory.ts:159](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L159) ___ ### listByVariant -▸ `Private` **listByVariant**(`variantId`): `Promise`<`ProductVariantInventoryItem`[]\> +▸ **listByVariant**(`variantId`): `Promise`<`ProductVariantInventoryItem`[]\> List inventory items for a specific variant @@ -390,7 +436,7 @@ variant inventory items for the variant id #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:192](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L192) +[medusa/src/services/product-variant-inventory.ts:176](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L176) ___ @@ -414,7 +460,7 @@ lidt of inventory items for the variant #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:233](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L233) +[medusa/src/services/product-variant-inventory.ts:215](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L215) ___ @@ -438,7 +484,7 @@ a list of product variants that are associated with the item id #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:215](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L215) +[medusa/src/services/product-variant-inventory.ts:197](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L197) ___ @@ -462,7 +508,7 @@ Reserves a quantity of a variant #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:349](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L349) +[medusa/src/services/product-variant-inventory.ts:329](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L329) ___ @@ -487,7 +533,7 @@ A promise that resolves with the product variant inventory item. #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:144](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L144) +[medusa/src/services/product-variant-inventory.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L132) ___ @@ -500,7 +546,7 @@ ___ | Name | Type | | :------ | :------ | | `products` | (`Product` \| `PricedProduct`)[] | -| `salesChannelId` | `undefined` \| `string` | +| `salesChannelId` | `undefined` \| `string` \| `string`[] | #### Returns @@ -508,7 +554,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:665](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L665) +[medusa/src/services/product-variant-inventory.ts:686](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L686) ___ @@ -521,7 +567,7 @@ ___ | Name | Type | | :------ | :------ | | `variants` | `ProductVariant`[] \| `PricedVariant`[] | -| `salesChannelId` | `undefined` \| `string` | +| `salesChannelId` | `undefined` \| `string` \| `string`[] | #### Returns @@ -529,7 +575,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:617](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L617) +[medusa/src/services/product-variant-inventory.ts:639](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L639) ___ @@ -553,7 +599,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +utils/dist/common/transaction-base-service.d.ts:12 ___ @@ -578,7 +624,7 @@ nothing if successful, throws error if not #### Defined in -[packages/medusa/src/services/product-variant-inventory.ts:492](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant-inventory.ts#L492) +[medusa/src/services/product-variant-inventory.ts:509](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant-inventory.ts#L509) ___ @@ -602,4 +648,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +utils/dist/common/transaction-base-service.d.ts:11 diff --git a/docs/content/references/services/classes/ProductVariantService.md b/docs/content/references/services/classes/ProductVariantService.md index dbcb70e1b4..ace6b672f5 100644 --- a/docs/content/references/services/classes/ProductVariantService.md +++ b/docs/content/references/services/classes/ProductVariantService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/product-variant.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L72) +[medusa/src/services/product-variant.ts:75](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L75) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,17 +66,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### cartRepository\_ -• `Protected` `Readonly` **cartRepository\_**: typeof `CartRepository` +• `Protected` `Readonly` **cartRepository\_**: `Repository`<`Cart`\> #### Defined in -[packages/medusa/src/services/product-variant.ts:70](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L70) +[medusa/src/services/product-variant.ts:73](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L73) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L64) +[medusa/src/services/product-variant.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L67) ___ @@ -94,23 +94,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/product-variant.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L59) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### moneyAmountRepository\_ -• `Protected` `Readonly` **moneyAmountRepository\_**: typeof `MoneyAmountRepository` +• `Protected` `Readonly` **moneyAmountRepository\_**: `Repository`<`MoneyAmount`\> & { `addPriceListPrices`: (`priceListId`: `string`, `prices`: `PriceListPriceCreateInput`[], `overrideExisting`: `boolean`) => `Promise`<`MoneyAmount`[]\> ; `deletePriceListPrices`: (`priceListId`: `string`, `moneyAmountIds`: `string`[]) => `Promise`<`void`\> ; `deleteVariantPricesNotIn`: (`variantIdOrData`: `string` \| { `prices`: `ProductVariantPrice`[] ; `variantId`: `string` }[], `prices?`: `Price`[]) => `Promise`<`void`\> ; `findManyForVariantInPriceList`: (`variant_id`: `string`, `price_list_id`: `string`, `requiresPriceList`: `boolean`) => `Promise`<[`MoneyAmount`[], `number`]\> ; `findManyForVariantInRegion`: (`variant_id`: `string`, `region_id?`: `string`, `currency_code?`: `string`, `customer_id?`: `string`, `include_discount_prices?`: `boolean`, `include_tax_inclusive_pricing`: `boolean`) => `Promise`<[`MoneyAmount`[], `number`]\> ; `findVariantPricesNotIn`: (`variantId`: `string`, `prices`: `Price`[]) => `Promise`<`MoneyAmount`[]\> ; `insertBulk`: (`data`: `_QueryDeepPartialEntity`<`MoneyAmount`\>[]) => `Promise`<`MoneyAmount`[]\> ; `updatePriceListPrices`: (`priceListId`: `string`, `updates`: `PriceListPriceUpdateInput`[]) => `Promise`<`MoneyAmount`[]\> ; `upsertVariantCurrencyPrice`: (`variantId`: `string`, `price`: `Price`) => `Promise`<`MoneyAmount`\> } #### Defined in -[packages/medusa/src/services/product-variant.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L67) +[medusa/src/services/product-variant.ts:70](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L70) ___ @@ -120,37 +120,37 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:66](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L66) +[medusa/src/services/product-variant.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L69) ___ ### productOptionValueRepository\_ -• `Protected` `Readonly` **productOptionValueRepository\_**: typeof `ProductOptionValueRepository` +• `Protected` `Readonly` **productOptionValueRepository\_**: `Repository`<`ProductOptionValue`\> #### Defined in -[packages/medusa/src/services/product-variant.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L69) +[medusa/src/services/product-variant.ts:72](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L72) ___ ### productRepository\_ -• `Protected` `Readonly` **productRepository\_**: typeof `ProductRepository` +• `Protected` `Readonly` **productRepository\_**: `Repository`<`Product`\> & { `bulkAddToCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `bulkRemoveFromCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `findAndCount`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<[`Product`[], `number`]\> ; `findOne`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>) => `Promise`<``null`` \| `Product`\> ; `isProductInSalesChannels`: (`id`: `string`, `salesChannelIds`: `string`[]) => `Promise`<`boolean`\> ; `prepareQueryBuilder_`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<`SelectQueryBuilder`<`Product`\>\> ; `upsertShippingProfile`: (`productIds`: `string`[], `shippingProfileId`: `string`) => `Promise`<`Product`[]\> } #### Defined in -[packages/medusa/src/services/product-variant.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L63) +[medusa/src/services/product-variant.ts:66](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L66) ___ ### productVariantRepository\_ -• `Protected` `Readonly` **productVariantRepository\_**: typeof `ProductVariantRepository` +• `Protected` `Readonly` **productVariantRepository\_**: `Repository`<`ProductVariant`\> #### Defined in -[packages/medusa/src/services/product-variant.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L62) +[medusa/src/services/product-variant.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L65) ___ @@ -160,7 +160,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L65) +[medusa/src/services/product-variant.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L68) ___ @@ -168,13 +168,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/product-variant.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L60) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -192,7 +192,25 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L53) +[medusa/src/services/product-variant.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L59) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -222,47 +240,7 @@ the result of the update operation. #### Defined in -[packages/medusa/src/services/product-variant.ts:823](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L823) - -___ - -### addOrUpdateCurrencyPrices - -▸ **addOrUpdateCurrencyPrices**(`data`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `data` | { `price`: `WithRequiredProperty`<`ProductVariantPrice`, ``"currency_code"``\> ; `variantId`: `string` }[] | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[packages/medusa/src/services/product-variant.ts:613](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L613) - -___ - -### addOrUpdateRegionPrices - -▸ **addOrUpdateRegionPrices**(`data`): `Promise`<`void`\> - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `data` | `UpdateVariantRegionPriceData`[] | - -#### Returns - -`Promise`<`void`\> - -#### Defined in - -[packages/medusa/src/services/product-variant.ts:542](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L542) +[medusa/src/services/product-variant.ts:840](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L840) ___ @@ -301,7 +279,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -327,7 +305,7 @@ resolves to the creation result. #### Defined in -[packages/medusa/src/services/product-variant.ts:167](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L167) +[medusa/src/services/product-variant.ts:168](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L168) ___ @@ -352,7 +330,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product-variant.ts:976](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L976) +[medusa/src/services/product-variant.ts:1010](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L1010) ___ @@ -378,7 +356,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product-variant.ts:850](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L850) +[medusa/src/services/product-variant.ts:867](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L867) ___ @@ -393,7 +371,7 @@ variants that match the query. | Name | Type | Description | | :------ | :------ | :------ | -| `variantRepo` | `ProductVariantRepository` | the variant repository | +| `variantRepo` | `Repository`<`ProductVariant`\> | the variant repository | | `query` | `FindWithRelationsOptions` | object that defines the scope for what should be returned | | `q?` | `string` | free text query | @@ -406,7 +384,7 @@ an array containing the products as the first element and the total #### Defined in -[packages/medusa/src/services/product-variant.ts:1078](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L1078) +[medusa/src/services/product-variant.ts:1073](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L1073) ___ @@ -433,7 +411,7 @@ the price specific to the region #### Defined in -[packages/medusa/src/services/product-variant.ts:697](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L697) +[medusa/src/services/product-variant.ts:714](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L714) ___ @@ -456,7 +434,7 @@ Check if the variant is assigned to at least one of the provided sales channels. #### Defined in -[packages/medusa/src/services/product-variant.ts:1016](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L1016) +[medusa/src/services/product-variant.ts:1048](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L1048) ___ @@ -479,7 +457,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-variant.ts:918](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L918) +[medusa/src/services/product-variant.ts:956](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L956) ___ @@ -502,39 +480,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/product-variant.ts:877](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L877) - -___ - -### prepareListQuery\_ - -▸ **prepareListQuery_**(`selector`, `config`): `Object` - -Creates a query object to be used for list queries. - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `selector` | `FilterableProductVariantProps` | the selector to create the query from | -| `config` | `FindConfig`<`ProductVariant`\> | the config to use for the query | - -#### Returns - -`Object` - -an object containing the query, relations and free-text - search param. - -| Name | Type | -| :------ | :------ | -| `q?` | `string` | -| `query` | `FindWithRelationsOptions` | -| `relations` | `string`[] | - -#### Defined in - -[packages/medusa/src/services/product-variant.ts:1039](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L1039) +[medusa/src/services/product-variant.ts:895](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L895) ___ @@ -559,7 +505,7 @@ the product document. #### Defined in -[packages/medusa/src/services/product-variant.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L103) +[medusa/src/services/product-variant.ts:104](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L104) ___ @@ -584,7 +530,7 @@ the product document. #### Defined in -[packages/medusa/src/services/product-variant.ts:131](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L131) +[medusa/src/services/product-variant.ts:132](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L132) ___ @@ -612,7 +558,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/product-variant.ts:764](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L764) +[medusa/src/services/product-variant.ts:781](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L781) ___ @@ -640,7 +586,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/product-variant.ts:727](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L727) +[medusa/src/services/product-variant.ts:744](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L744) ___ @@ -664,7 +610,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -688,7 +634,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/product-variant.ts:264](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L264) +[medusa/src/services/product-variant.ts:269](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L269) ▸ **update**(`variantOrVariantId`, `update`): `Promise`<`ProductVariant`\> @@ -711,7 +657,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/product-variant.ts:279](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L279) +[medusa/src/services/product-variant.ts:284](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L284) ▸ **update**(`variantOrVariantId`, `update`): `Promise`<`ProductVariant`\> @@ -728,7 +674,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/product-variant.ts:284](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L284) +[medusa/src/services/product-variant.ts:289](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L289) ___ @@ -748,7 +694,7 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:340](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L340) +[medusa/src/services/product-variant.ts:343](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L343) ___ @@ -775,7 +721,7 @@ the result of the update operation. #### Defined in -[packages/medusa/src/services/product-variant.ts:785](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L785) +[medusa/src/services/product-variant.ts:802](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L802) ___ @@ -800,7 +746,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product-variant.ts:440](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L440) +[medusa/src/services/product-variant.ts:441](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L441) ▸ **updateVariantPrices**(`variantId`, `prices`): `Promise`<`void`\> @@ -822,7 +768,7 @@ empty promise #### Defined in -[packages/medusa/src/services/product-variant.ts:449](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L449) +[medusa/src/services/product-variant.ts:450](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L450) ___ @@ -842,7 +788,47 @@ ___ #### Defined in -[packages/medusa/src/services/product-variant.ts:469](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/product-variant.ts#L469) +[medusa/src/services/product-variant.ts:470](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L470) + +___ + +### upsertCurrencyPrices + +▸ **upsertCurrencyPrices**(`data`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | { `price`: `WithRequiredProperty`<`ProductVariantPrice`, ``"currency_code"``\> ; `variantId`: `string` }[] | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[medusa/src/services/product-variant.ts:622](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L622) + +___ + +### upsertRegionPrices + +▸ **upsertRegionPrices**(`data`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | `UpdateVariantRegionPriceData`[] | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[medusa/src/services/product-variant.ts:543](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/product-variant.ts#L543) ___ @@ -866,4 +852,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/RegionService.md b/docs/content/references/services/classes/RegionService.md index 99b0b41d48..91d4ff6104 100644 --- a/docs/content/references/services/classes/RegionService.md +++ b/docs/content/references/services/classes/RegionService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/region.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L67) +[medusa/src/services/region.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L65) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,27 +68,27 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### countryRepository\_ -• `Protected` `Readonly` **countryRepository\_**: typeof `CountryRepository` +• `Protected` `Readonly` **countryRepository\_**: `Repository`<`Country`\> #### Defined in -[packages/medusa/src/services/region.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L59) +[medusa/src/services/region.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L57) ___ ### currencyRepository\_ -• `Protected` `Readonly` **currencyRepository\_**: typeof `CurrencyRepository` +• `Protected` `Readonly` **currencyRepository\_**: `Repository`<`Currency`\> #### Defined in -[packages/medusa/src/services/region.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L60) +[medusa/src/services/region.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L58) ___ @@ -98,7 +98,7 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:54](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L54) +[medusa/src/services/region.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L52) ___ @@ -108,17 +108,17 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L52) +[medusa/src/services/region.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L50) ___ ### fulfillmentProviderRepository\_ -• `Protected` `Readonly` **fulfillmentProviderRepository\_**: typeof `FulfillmentProviderRepository` +• `Protected` `Readonly` **fulfillmentProviderRepository\_**: `Repository`<`FulfillmentProvider`\> #### Defined in -[packages/medusa/src/services/region.ts:64](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L64) +[medusa/src/services/region.ts:62](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L62) ___ @@ -128,7 +128,7 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L57) +[medusa/src/services/region.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L55) ___ @@ -136,23 +136,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/region.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### paymentProviderRepository\_ -• `Protected` `Readonly` **paymentProviderRepository\_**: typeof `PaymentProviderRepository` +• `Protected` `Readonly` **paymentProviderRepository\_**: `Repository`<`PaymentProvider`\> #### Defined in -[packages/medusa/src/services/region.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L62) +[medusa/src/services/region.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L60) ___ @@ -162,17 +162,17 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L56) +[medusa/src/services/region.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L54) ___ ### regionRepository\_ -• `Protected` `Readonly` **regionRepository\_**: typeof `RegionRepository` +• `Protected` `Readonly` **regionRepository\_**: `Repository`<`Region`\> #### Defined in -[packages/medusa/src/services/region.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L58) +[medusa/src/services/region.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L56) ___ @@ -182,17 +182,17 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L55) +[medusa/src/services/region.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L53) ___ ### taxProviderRepository\_ -• `Protected` `Readonly` **taxProviderRepository\_**: typeof `TaxProviderRepository` +• `Protected` `Readonly` **taxProviderRepository\_**: `Repository`<`TaxProvider`\> #### Defined in -[packages/medusa/src/services/region.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L65) +[medusa/src/services/region.ts:63](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L63) ___ @@ -200,13 +200,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/region.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L51) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -224,7 +224,25 @@ ___ #### Defined in -[packages/medusa/src/services/region.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L44) +[medusa/src/services/region.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L44) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -249,7 +267,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:580](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L580) +[medusa/src/services/region.ts:559](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L559) ___ @@ -275,7 +293,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:710](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L710) +[medusa/src/services/region.ts:687](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L687) ___ @@ -301,7 +319,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:659](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L659) +[medusa/src/services/region.ts:638](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L638) ___ @@ -340,7 +358,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -364,7 +382,7 @@ the newly created region #### Defined in -[packages/medusa/src/services/region.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L117) +[medusa/src/services/region.ts:101](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L101) ___ @@ -388,7 +406,7 @@ the result of the delete operation #### Defined in -[packages/medusa/src/services/region.ts:549](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L549) +[medusa/src/services/region.ts:528](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L528) ___ @@ -413,7 +431,7 @@ result of the find operation #### Defined in -[packages/medusa/src/services/region.ts:529](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L529) +[medusa/src/services/region.ts:506](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L506) ___ @@ -438,7 +456,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:618](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L618) +[medusa/src/services/region.ts:597](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L597) ___ @@ -463,7 +481,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:798](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L798) +[medusa/src/services/region.ts:773](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L773) ___ @@ -488,7 +506,7 @@ the updated Region #### Defined in -[packages/medusa/src/services/region.ts:759](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L759) +[medusa/src/services/region.ts:734](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L734) ___ @@ -513,7 +531,7 @@ the region #### Defined in -[packages/medusa/src/services/region.ts:494](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L494) +[medusa/src/services/region.ts:471](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L471) ___ @@ -538,7 +556,7 @@ a Region with country code #### Defined in -[packages/medusa/src/services/region.ts:437](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L437) +[medusa/src/services/region.ts:417](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L417) ___ @@ -562,7 +580,7 @@ region with the matching name #### Defined in -[packages/medusa/src/services/region.ts:474](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L474) +[medusa/src/services/region.ts:451](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L451) ___ @@ -586,7 +604,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -611,7 +629,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/region.ts:190](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L190) +[medusa/src/services/region.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L172) ___ @@ -637,7 +655,7 @@ the validated Country #### Defined in -[packages/medusa/src/services/region.ts:388](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L388) +[medusa/src/services/region.ts:368](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L368) ___ @@ -665,13 +683,13 @@ void #### Defined in -[packages/medusa/src/services/region.ts:363](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L363) +[medusa/src/services/region.ts:343](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L343) ___ ### validateFields -▸ `Protected` **validateFields**<`T`\>(`regionData`, `id?`): `Promise`<{ `automatic_taxes?`: `boolean` ; `countries?`: (`undefined` \| { id?: number \| undefined; iso\_2?: string \| undefined; iso\_3?: string \| undefined; num\_code?: number \| undefined; name?: string \| undefined; display\_name?: string \| undefined; region\_id?: string \| ... 1 more ... \| undefined; region?: { ...; } \| undefined; })[] ; `created_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `currency?`: { code?: string \| undefined; symbol?: string \| undefined; symbol\_native?: string \| undefined; name?: string \| undefined; includes\_tax?: boolean \| undefined; } ; `currency_code?`: `string` ; `deleted_at?`: ``null`` \| { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `fulfillment_providers?`: (`undefined` \| { id?: string \| undefined; is\_installed?: boolean \| undefined; })[] ; `gift_cards_taxable?`: `boolean` ; `id?`: `string` ; `includes_tax?`: `boolean` ; `metadata?`: { [x: string]: unknown; } ; `name?`: `string` ; `payment_providers?`: (`undefined` \| { id?: string \| undefined; is\_installed?: boolean \| undefined; })[] ; `tax_code?`: `string` ; `tax_provider?`: { id?: string \| undefined; is\_installed?: boolean \| undefined; } ; `tax_provider_id?`: ``null`` \| `string` ; `tax_rate?`: `number` ; `tax_rates?`: ``null`` \| (`undefined` \| { rate?: number \| null \| undefined; code?: string \| null \| undefined; name?: string \| undefined; region\_id?: string \| undefined; region?: { name?: string \| undefined; currency\_code?: string \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 9 more ...; updated\_at?: { ...; } \| undefin...)[] ; `updated_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } }\> +▸ `Protected` **validateFields**<`T`\>(`regionData`, `id?`): `Promise`<`DeepPartial`<`Region`\>\> Validates fields for creation and updates. If the region already exists the id can be passed to check that country updates are allowed. @@ -691,13 +709,13 @@ the id can be passed to check that country updates are allowed. #### Returns -`Promise`<{ `automatic_taxes?`: `boolean` ; `countries?`: (`undefined` \| { id?: number \| undefined; iso\_2?: string \| undefined; iso\_3?: string \| undefined; num\_code?: number \| undefined; name?: string \| undefined; display\_name?: string \| undefined; region\_id?: string \| ... 1 more ... \| undefined; region?: { ...; } \| undefined; })[] ; `created_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `currency?`: { code?: string \| undefined; symbol?: string \| undefined; symbol\_native?: string \| undefined; name?: string \| undefined; includes\_tax?: boolean \| undefined; } ; `currency_code?`: `string` ; `deleted_at?`: ``null`` \| { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } ; `fulfillment_providers?`: (`undefined` \| { id?: string \| undefined; is\_installed?: boolean \| undefined; })[] ; `gift_cards_taxable?`: `boolean` ; `id?`: `string` ; `includes_tax?`: `boolean` ; `metadata?`: { [x: string]: unknown; } ; `name?`: `string` ; `payment_providers?`: (`undefined` \| { id?: string \| undefined; is\_installed?: boolean \| undefined; })[] ; `tax_code?`: `string` ; `tax_provider?`: { id?: string \| undefined; is\_installed?: boolean \| undefined; } ; `tax_provider_id?`: ``null`` \| `string` ; `tax_rate?`: `number` ; `tax_rates?`: ``null`` \| (`undefined` \| { rate?: number \| null \| undefined; code?: string \| null \| undefined; name?: string \| undefined; region\_id?: string \| undefined; region?: { name?: string \| undefined; currency\_code?: string \| undefined; ... 16 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 9 more ...; updated\_at?: { ...; } \| undefin...)[] ; `updated_at?`: { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } }\> +`Promise`<`DeepPartial`<`Region`\>\> the validated region data #### Defined in -[packages/medusa/src/services/region.ts:261](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L261) +[medusa/src/services/region.ts:241](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L241) ___ @@ -725,7 +743,7 @@ void #### Defined in -[packages/medusa/src/services/region.ts:347](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/region.ts#L347) +[medusa/src/services/region.ts:327](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/region.ts#L327) ___ @@ -749,4 +767,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ReturnReasonService.md b/docs/content/references/services/classes/ReturnReasonService.md index 5f360831c2..099f863ce5 100644 --- a/docs/content/references/services/classes/ReturnReasonService.md +++ b/docs/content/references/services/classes/ReturnReasonService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/return-reason.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L21) +[medusa/src/services/return-reason.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L18) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -74,23 +74,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/return-reason.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L18) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### retReasonRepo\_ -• `Protected` `Readonly` **retReasonRepo\_**: typeof `ReturnReasonRepository` +• `Protected` `Readonly` **retReasonRepo\_**: `Repository`<`ReturnReason`\> #### Defined in -[packages/medusa/src/services/return-reason.ts:16](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L16) +[medusa/src/services/return-reason.ts:16](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L16) ___ @@ -98,13 +98,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/return-reason.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L19) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -163,7 +181,7 @@ ___ #### Defined in -[packages/medusa/src/services/return-reason.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L29) +[medusa/src/services/return-reason.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L25) ___ @@ -183,7 +201,7 @@ ___ #### Defined in -[packages/medusa/src/services/return-reason.ts:117](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L117) +[medusa/src/services/return-reason.ts:113](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L113) ___ @@ -206,7 +224,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/return-reason.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L72) +[medusa/src/services/return-reason.ts:68](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L68) ___ @@ -231,7 +249,7 @@ the order document #### Defined in -[packages/medusa/src/services/return-reason.ts:91](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L91) +[medusa/src/services/return-reason.ts:87](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L87) ___ @@ -255,7 +273,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -276,7 +294,7 @@ ___ #### Defined in -[packages/medusa/src/services/return-reason.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return-reason.ts#L50) +[medusa/src/services/return-reason.ts:46](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return-reason.ts#L46) ___ @@ -300,4 +318,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ReturnService.md b/docs/content/references/services/classes/ReturnService.md index 873bb42314..e1db98ce1b 100644 --- a/docs/content/references/services/classes/ReturnService.md +++ b/docs/content/references/services/classes/ReturnService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/return.ts:67](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L67) +[medusa/src/services/return.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L64) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:61](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L61) +[medusa/src/services/return.ts:58](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L58) ___ @@ -86,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:58](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L58) +[medusa/src/services/return.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L55) ___ @@ -94,13 +94,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/return.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L52) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L63) +[medusa/src/services/return.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L60) ___ @@ -120,17 +120,17 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L65) +[medusa/src/services/return.ts:62](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L62) ___ ### returnItemRepository\_ -• `Protected` `Readonly` **returnItemRepository\_**: typeof `ReturnItemRepository` +• `Protected` `Readonly` **returnItemRepository\_**: `Repository`<`ReturnItem`\> #### Defined in -[packages/medusa/src/services/return.ts:57](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L57) +[medusa/src/services/return.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L54) ___ @@ -140,17 +140,17 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:62](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L62) +[medusa/src/services/return.ts:59](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L59) ___ ### returnRepository\_ -• `Protected` `Readonly` **returnRepository\_**: typeof `ReturnRepository` +• `Protected` `Readonly` **returnRepository\_**: `Repository`<`Return`\> #### Defined in -[packages/medusa/src/services/return.ts:56](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L56) +[medusa/src/services/return.ts:53](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L53) ___ @@ -160,7 +160,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L60) +[medusa/src/services/return.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L57) ___ @@ -170,7 +170,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:59](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L59) +[medusa/src/services/return.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L56) ___ @@ -180,7 +180,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L55) +[medusa/src/services/return.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L52) ___ @@ -188,13 +188,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/return.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L53) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -233,7 +251,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -257,7 +275,7 @@ the updated Return #### Defined in -[packages/medusa/src/services/return.ts:164](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L164) +[medusa/src/services/return.ts:161](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L161) ___ @@ -283,7 +301,7 @@ the created return #### Defined in -[packages/medusa/src/services/return.ts:349](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L349) +[medusa/src/services/return.ts:346](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L346) ___ @@ -303,7 +321,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:495](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L495) +[medusa/src/services/return.ts:490](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L490) ___ @@ -329,7 +347,7 @@ the line items generated by the transformer. #### Defined in -[packages/medusa/src/services/return.ts:106](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L106) +[medusa/src/services/return.ts:101](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L101) ___ @@ -352,7 +370,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/return.ts:146](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L146) +[medusa/src/services/return.ts:141](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L141) ___ @@ -387,7 +405,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/return.ts:566](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L566) +[medusa/src/services/return.ts:561](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L561) ___ @@ -412,7 +430,7 @@ the return #### Defined in -[packages/medusa/src/services/return.ts:262](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L262) +[medusa/src/services/return.ts:259](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L259) ___ @@ -433,7 +451,7 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:290](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L290) +[medusa/src/services/return.ts:287](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L287) ___ @@ -457,7 +475,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -478,13 +496,13 @@ ___ #### Defined in -[packages/medusa/src/services/return.ts:315](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L315) +[medusa/src/services/return.ts:312](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L312) ___ ### validateReturnLineItem -▸ `Protected` **validateReturnLineItem**(`item?`, `quantity?`, `additional?`): `Object` +▸ `Protected` **validateReturnLineItem**(`item?`, `quantity?`, `additional?`): `DeepPartial`<`LineItem`\> Checks that a given quantity of a line item can be returned. Fails if the item is undefined or if the returnable quantity of the item is lower, than @@ -502,58 +520,14 @@ the quantity that is requested to be returned. #### Returns -`Object` +`DeepPartial`<`LineItem`\> a line item where the quantity is set to the requested return quantity. -| Name | Type | -| :------ | :------ | -| `adjustments?` | (`undefined` \| { id?: string \| undefined; item\_id?: string \| undefined; item?: { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; ... 37 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 38 more ...; updated\_at?: { ...; }...)[] | -| `allow_discounts?` | `boolean` | -| `cart?` | { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; billing\_address?: { customer\_id?: string \| null \| undefined; customer?: { ...; } \| ... 1 more ... \| undefined; ... 15 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 36 more ...; updated\_at?: ... | -| `cart_id?` | `string` | -| `claim_order?` | { payment\_status?: ClaimPaymentStatus \| undefined; fulfillment\_status?: ClaimFulfillmentStatus \| undefined; claim\_items?: ({ images?: ({ ...; } \| undefined)[] \| undefined; ... 14 more ...; updated\_at?: { ...; } \| undefined; } \| undefined)[] \| undefined; ... 17 more ...; id?: string \| undefined; } | -| `claim_order_id?` | `string` | -| `created_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `description?` | ``null`` \| `string` | -| `discount_total?` | ``null`` \| `number` | -| `fulfilled_quantity?` | ``null`` \| `number` | -| `gift_card_total?` | ``null`` \| `number` | -| `has_shipping?` | ``null`` \| `boolean` | -| `id?` | `string` | -| `includes_tax?` | `boolean` | -| `is_giftcard?` | `boolean` | -| `is_return?` | `boolean` | -| `metadata?` | { [x: string]: unknown; } | -| `order?` | { readonly object?: "order" \| undefined; status?: OrderStatus \| undefined; fulfillment\_status?: FulfillmentStatus \| undefined; payment\_status?: PaymentStatus \| undefined; ... 49 more ...; updated\_at?: { ...; } \| undefined; } | -| `order_edit?` | ``null`` \| { order\_id?: string \| undefined; order?: { readonly object?: "order" \| undefined; status?: OrderStatus \| undefined; fulfillment\_status?: FulfillmentStatus \| undefined; ... 50 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 27 more ...; updated\_at?: { ...; } \| undefined; } | -| `order_edit_id?` | ``null`` \| `string` | -| `order_id?` | ``null`` \| `string` | -| `original_item_id?` | ``null`` \| `string` | -| `original_tax_total?` | ``null`` \| `number` | -| `original_total?` | ``null`` \| `number` | -| `quantity?` | `number` | -| `refundable?` | ``null`` \| `number` | -| `returned_quantity?` | ``null`` \| `number` | -| `shipped_quantity?` | ``null`` \| `number` | -| `should_merge?` | `boolean` | -| `subtotal?` | ``null`` \| `number` | -| `swap?` | { fulfillment\_status?: SwapFulfillmentStatus \| undefined; payment\_status?: SwapPaymentStatus \| undefined; order\_id?: string \| undefined; ... 20 more ...; updated\_at?: { ...; } \| undefined; } | -| `swap_id?` | `string` | -| `tax_lines?` | (`undefined` \| { item\_id?: string \| undefined; item?: { cart\_id?: string \| undefined; cart?: { readonly object?: "cart" \| undefined; email?: string \| undefined; billing\_address\_id?: string \| undefined; ... 37 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 38 more ...; updated\_at?: { ...; } \| undefined; } \| undefin...)[] | -| `tax_total?` | ``null`` \| `number` | -| `thumbnail?` | ``null`` \| `string` | -| `title?` | `string` | -| `total?` | ``null`` \| `number` | -| `unit_price?` | `number` | -| `updated_at?` | { toString?: {} \| undefined; toDateString?: {} \| undefined; toTimeString?: {} \| undefined; toLocaleString?: {} \| undefined; toLocaleDateString?: {} \| undefined; toLocaleTimeString?: {} \| undefined; ... 37 more ...; [Symbol.toPrimitive]?: {} \| undefined; } | -| `variant?` | { title?: string \| undefined; product\_id?: string \| undefined; product?: { title?: string \| undefined; subtitle?: string \| null \| undefined; description?: string \| null \| undefined; ... 30 more ...; updated\_at?: { ...; } \| undefined; } \| undefined; ... 23 more ...; updated\_at?: { ...; } \| undefined; } | -| `variant_id?` | ``null`` \| `string` | - #### Defined in -[packages/medusa/src/services/return.ts:220](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L220) +[medusa/src/services/return.ts:217](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L217) ___ @@ -581,7 +555,7 @@ when statuses are not sufficient for returns. #### Defined in -[packages/medusa/src/services/return.ts:190](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/return.ts#L190) +[medusa/src/services/return.ts:187](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/return.ts#L187) ___ @@ -605,4 +579,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/SalesChannelInventoryService.md b/docs/content/references/services/classes/SalesChannelInventoryService.md index 1bb93cec37..bfec681bfe 100644 --- a/docs/content/references/services/classes/SalesChannelInventoryService.md +++ b/docs/content/references/services/classes/SalesChannelInventoryService.md @@ -1,5 +1,11 @@ # Class: SalesChannelInventoryService +## Hierarchy + +- `TransactionBaseService` + + ↳ **`SalesChannelInventoryService`** + ## Constructors ### constructor @@ -12,19 +18,65 @@ | :------ | :------ | | `__namedParameters` | `InjectedDependencies` | +#### Overrides + +TransactionBaseService.constructor + #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:21](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L21) +[medusa/src/services/sales-channel-inventory.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-inventory.ts#L18) ## Properties -### eventBusService\_ +### \_\_configModule\_\_ -• `Protected` `Readonly` **eventBusService\_**: [`EventBusService`](EventBusService.md) +• `Protected` `Optional` `Readonly` **\_\_configModule\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L18) +utils/dist/common/transaction-base-service.d.ts:5 + +___ + +### \_\_container\_\_ + +• `Protected` `Readonly` **\_\_container\_\_**: `any` + +#### Inherited from + +TransactionBaseService.\_\_container\_\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:4 + +___ + +### \_\_moduleDeclaration\_\_ + +• `Protected` `Optional` `Readonly` **\_\_moduleDeclaration\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_moduleDeclaration\_\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:6 + +___ + +### eventBusService\_ + +• `Protected` `Readonly` **eventBusService\_**: `IEventBusService` + +#### Defined in + +[medusa/src/services/sales-channel-inventory.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-inventory.ts#L15) ___ @@ -34,7 +86,7 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L19) +[medusa/src/services/sales-channel-inventory.ts:16](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-inventory.ts#L16) ___ @@ -42,9 +94,13 @@ ___ • `Protected` **manager\_**: `EntityManager` +#### Inherited from + +TransactionBaseService.manager\_ + #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:15](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L15) +utils/dist/common/transaction-base-service.d.ts:7 ___ @@ -54,10 +110,81 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:17](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L17) +[medusa/src/services/sales-channel-inventory.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-inventory.ts#L14) + +___ + +### transactionManager\_ + +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` + +#### Inherited from + +TransactionBaseService.transactionManager\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:8 + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:9 ## Methods +### atomicPhase\_ + +▸ `Protected` **atomicPhase_**<`TResult`, `TError`\>(`work`, `isolationOrErrorHandler?`, `maybeErrorHandlerOrDontFail?`): `Promise`<`TResult`\> + +Wraps some work within a transactional block. If the service already has +a transaction manager attached this will be reused, otherwise a new +transaction manager is created. + +#### Type parameters + +| Name | +| :------ | +| `TResult` | +| `TError` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `work` | (`transactionManager`: `EntityManager`) => `Promise`<`TResult`\> | the transactional work to be done | +| `isolationOrErrorHandler?` | `IsolationLevel` \| (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | the isolation level to be used for the work. | +| `maybeErrorHandlerOrDontFail?` | (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | Potential error handler | + +#### Returns + +`Promise`<`TResult`\> + +the result of the transactional work + +#### Inherited from + +TransactionBaseService.atomicPhase\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:24 + +___ + ### retrieveAvailableItemQuantity ▸ **retrieveAvailableItemQuantity**(`salesChannelId`, `inventoryItemId`): `Promise`<`number`\> @@ -79,4 +206,52 @@ available quantity of item across all sales channel locations #### Defined in -[packages/medusa/src/services/sales-channel-inventory.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-inventory.ts#L39) +[medusa/src/services/sales-channel-inventory.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-inventory.ts#L37) + +___ + +### shouldRetryTransaction\_ + +▸ `Protected` **shouldRetryTransaction_**(`err`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Record`<`string`, `unknown`\> \| { `code`: `string` } | + +#### Returns + +`boolean` + +#### Inherited from + +TransactionBaseService.shouldRetryTransaction\_ + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:12 + +___ + +### withTransaction + +▸ **withTransaction**(`transactionManager?`): [`SalesChannelInventoryService`](SalesChannelInventoryService.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `transactionManager?` | `EntityManager` | + +#### Returns + +[`SalesChannelInventoryService`](SalesChannelInventoryService.md) + +#### Inherited from + +TransactionBaseService.withTransaction + +#### Defined in + +utils/dist/common/transaction-base-service.d.ts:11 diff --git a/docs/content/references/services/classes/SalesChannelLocationService.md b/docs/content/references/services/classes/SalesChannelLocationService.md index 8babfe3352..106d5ce3af 100644 --- a/docs/content/references/services/classes/SalesChannelLocationService.md +++ b/docs/content/references/services/classes/SalesChannelLocationService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L26) +[medusa/src/services/sales-channel-location.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L25) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,17 +68,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ -### eventBusService +### eventBusService\_ -• `Protected` `Readonly` **eventBusService**: [`EventBusService`](EventBusService.md) +• `Protected` `Readonly` **eventBusService\_**: `IEventBusService` #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:23](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L23) +[medusa/src/services/sales-channel-location.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L22) ___ @@ -86,13 +86,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L19) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -102,17 +102,17 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L22) +[medusa/src/services/sales-channel-location.ts:21](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L21) ___ -### stockLocationService +### stockLocationService\_ -• `Protected` `Readonly` **stockLocationService**: `IStockLocationService` +• `Protected` `Readonly` **stockLocationService\_**: `IStockLocationService` #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L24) +[medusa/src/services/sales-channel-location.ts:23](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L23) ___ @@ -120,13 +120,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L20) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -151,7 +169,7 @@ A promise that resolves when the association has been created. #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:77](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L77) +[medusa/src/services/sales-channel-location.ts:73](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L73) ___ @@ -190,13 +208,13 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ -### listLocations +### listLocationIds -▸ **listLocations**(`salesChannelId`): `Promise`<`string`[]\> +▸ **listLocationIds**(`salesChannelId`): `Promise`<`string`[]\> Lists the stock locations associated with a sales channel. @@ -204,7 +222,7 @@ Lists the stock locations associated with a sales channel. | Name | Type | Description | | :------ | :------ | :------ | -| `salesChannelId` | `string` | The ID of the sales channel. | +| `salesChannelId` | `string` \| `string`[] | The ID of the sales channel. | #### Returns @@ -214,7 +232,31 @@ A promise that resolves with an array of location IDs. #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:104](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L104) +[medusa/src/services/sales-channel-location.ts:102](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L102) + +___ + +### listSalesChannelIds + +▸ **listSalesChannelIds**(`locationId`): `Promise`<`string`[]\> + +Lists the sales channels associated with a stock location. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `locationId` | `string` | + +#### Returns + +`Promise`<`string`[]\> + +A promise that resolves with an array of sales channel IDs. + +#### Defined in + +[medusa/src/services/sales-channel-location.ts:131](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L131) ___ @@ -239,7 +281,7 @@ A promise that resolves when the association has been removed. #### Defined in -[packages/medusa/src/services/sales-channel-location.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel-location.ts#L47) +[medusa/src/services/sales-channel-location.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel-location.ts#L44) ___ @@ -263,7 +305,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -287,4 +329,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/SalesChannelService.md b/docs/content/references/services/classes/SalesChannelService.md index dfc1cab73b..779f159ee4 100644 --- a/docs/content/references/services/classes/SalesChannelService.md +++ b/docs/content/references/services/classes/SalesChannelService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/sales-channel.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L37) +[medusa/src/services/sales-channel.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L34) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L34) +[medusa/src/services/sales-channel.ts:31](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L31) ___ @@ -84,23 +84,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/sales-channel.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L30) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### salesChannelRepository\_ -• `Protected` `Readonly` **salesChannelRepository\_**: typeof `SalesChannelRepository` +• `Protected` `Readonly` **salesChannelRepository\_**: `Repository`<`SalesChannel`\> & { `addProducts`: (`salesChannelId`: `string`, `productIds`: `string`[]) => `Promise`<`void`\> ; `getFreeTextSearchResultsAndCount`: (`q`: `string`, `options`: `ExtendedFindConfig`<`SalesChannel`\>) => `Promise`<[`SalesChannel`[], `number`]\> ; `removeProducts`: (`salesChannelId`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> } #### Defined in -[packages/medusa/src/services/sales-channel.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L33) +[medusa/src/services/sales-channel.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L30) ___ @@ -110,7 +110,7 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel.ts:35](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L35) +[medusa/src/services/sales-channel.ts:32](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L32) ___ @@ -118,13 +118,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/sales-channel.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -142,7 +142,25 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L24) +[medusa/src/services/sales-channel.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L24) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -167,7 +185,7 @@ the sales channel on which the products have been added #### Defined in -[packages/medusa/src/services/sales-channel.ts:344](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L344) +[medusa/src/services/sales-channel.ts:332](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L332) ___ @@ -206,7 +224,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -233,7 +251,7 @@ the created channel #### Defined in -[packages/medusa/src/services/sales-channel.ts:180](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L180) +[medusa/src/services/sales-channel.ts:168](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L168) ___ @@ -251,7 +269,7 @@ the sales channel #### Defined in -[packages/medusa/src/services/sales-channel.ts:270](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L270) +[medusa/src/services/sales-channel.ts:258](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L258) ___ @@ -275,21 +293,7 @@ To use this feature please enable the corresponding feature flag in your medusa #### Defined in -[packages/medusa/src/services/sales-channel.ts:231](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L231) - -___ - -### getManager - -▸ `Private` **getManager**(): `EntityManager` - -#### Returns - -`EntityManager` - -#### Defined in - -[packages/medusa/src/services/sales-channel.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L52) +[medusa/src/services/sales-channel.ts:219](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L219) ___ @@ -317,7 +321,7 @@ an array containing the sales channels as #### Defined in -[packages/medusa/src/services/sales-channel.ts:145](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L145) +[medusa/src/services/sales-channel.ts:134](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L134) ___ @@ -342,7 +346,7 @@ the sales channel on which the products have been removed #### Defined in -[packages/medusa/src/services/sales-channel.ts:323](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L323) +[medusa/src/services/sales-channel.ts:311](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L311) ___ @@ -367,7 +371,7 @@ a sales channel #### Defined in -[packages/medusa/src/services/sales-channel.ts:103](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L103) +[medusa/src/services/sales-channel.ts:92](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L92) ___ @@ -392,7 +396,7 @@ a sales channel with matching name #### Defined in -[packages/medusa/src/services/sales-channel.ts:124](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L124) +[medusa/src/services/sales-channel.ts:113](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L113) ___ @@ -410,7 +414,7 @@ the sales channel #### Defined in -[packages/medusa/src/services/sales-channel.ts:300](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L300) +[medusa/src/services/sales-channel.ts:288](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L288) ___ @@ -435,7 +439,7 @@ a single SC matching the query or throws #### Defined in -[packages/medusa/src/services/sales-channel.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L63) +[medusa/src/services/sales-channel.ts:54](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L54) ___ @@ -459,7 +463,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -480,7 +484,7 @@ ___ #### Defined in -[packages/medusa/src/services/sales-channel.ts:197](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/sales-channel.ts#L197) +[medusa/src/services/sales-channel.ts:185](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/sales-channel.ts#L185) ___ @@ -504,4 +508,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/SearchService.md b/docs/content/references/services/classes/SearchService.md index 33ba998b86..d456324032 100644 --- a/docs/content/references/services/classes/SearchService.md +++ b/docs/content/references/services/classes/SearchService.md @@ -25,52 +25,10 @@ AbstractSearchService.constructor #### Defined in -[packages/medusa/src/services/search.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L18) +[medusa/src/services/search.ts:16](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L16) ## Properties -### \_\_configModule\_\_ - -• `Protected` `Optional` `Readonly` **\_\_configModule\_\_**: `Record`<`string`, `unknown`\> - -#### Inherited from - -AbstractSearchService.\_\_configModule\_\_ - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) - -___ - -### \_\_container\_\_ - -• `Protected` `Readonly` **\_\_container\_\_**: `any` - -#### Inherited from - -AbstractSearchService.\_\_container\_\_ - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) - -___ - -### \_\_moduleDeclaration\_\_ - -• `Protected` `Optional` `Readonly` **\_\_moduleDeclaration\_\_**: `Record`<`string`, `unknown`\> - -#### Inherited from - -AbstractSearchService.\_\_moduleDeclaration\_\_ - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) - -___ - ### isDefault • **isDefault**: `boolean` = `true` @@ -81,7 +39,7 @@ AbstractSearchService.isDefault #### Defined in -[packages/medusa/src/services/search.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L11) +[medusa/src/services/search.ts:11](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L11) ___ @@ -91,21 +49,7 @@ ___ #### Defined in -[packages/medusa/src/services/search.ts:15](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L15) - -___ - -### manager\_ - -• `Protected` **manager\_**: `EntityManager` - -#### Overrides - -AbstractSearchService.manager\_ - -#### Defined in - -[packages/medusa/src/services/search.ts:13](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L13) +[medusa/src/services/search.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L13) ___ @@ -119,21 +63,7 @@ AbstractSearchService.options\_ #### Defined in -[packages/medusa/src/services/search.ts:16](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L16) - -___ - -### transactionManager\_ - -• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` - -#### Overrides - -AbstractSearchService.transactionManager\_ - -#### Defined in - -[packages/medusa/src/services/search.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L14) +[medusa/src/services/search.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L14) ## Accessors @@ -151,7 +81,7 @@ AbstractSearchService.options #### Defined in -[packages/medusa/src/interfaces/search-service.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/search-service.ts#L82) +utils/dist/search/abstract-service.d.ts:5 ## Methods @@ -177,46 +107,7 @@ AbstractSearchService.addDocuments #### Defined in -[packages/medusa/src/services/search.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L43) - -___ - -### atomicPhase\_ - -▸ `Protected` **atomicPhase_**<`TResult`, `TError`\>(`work`, `isolationOrErrorHandler?`, `maybeErrorHandlerOrDontFail?`): `Promise`<`TResult`\> - -Wraps some work within a transactional block. If the service already has -a transaction manager attached this will be reused, otherwise a new -transaction manager is created. - -#### Type parameters - -| Name | -| :------ | -| `TResult` | -| `TError` | - -#### Parameters - -| Name | Type | Description | -| :------ | :------ | :------ | -| `work` | (`transactionManager`: `EntityManager`) => `Promise`<`TResult`\> | the transactional work to be done | -| `isolationOrErrorHandler?` | `IsolationLevel` \| (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | the isolation level to be used for the work. | -| `maybeErrorHandlerOrDontFail?` | (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | Potential error handler | - -#### Returns - -`Promise`<`TResult`\> - -the result of the transactional work - -#### Inherited from - -AbstractSearchService.atomicPhase\_ - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/services/search.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L40) ___ @@ -241,7 +132,7 @@ AbstractSearchService.createIndex #### Defined in -[packages/medusa/src/services/search.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L31) +[medusa/src/services/search.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L28) ___ @@ -265,7 +156,7 @@ AbstractSearchService.deleteAllDocuments #### Defined in -[packages/medusa/src/services/search.ts:72](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L72) +[medusa/src/services/search.ts:69](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L69) ___ @@ -290,7 +181,7 @@ AbstractSearchService.deleteDocument #### Defined in -[packages/medusa/src/services/search.ts:63](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L63) +[medusa/src/services/search.ts:60](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L60) ___ @@ -314,7 +205,7 @@ AbstractSearchService.getIndex #### Defined in -[packages/medusa/src/services/search.ts:37](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L37) +[medusa/src/services/search.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L34) ___ @@ -340,7 +231,7 @@ AbstractSearchService.replaceDocuments #### Defined in -[packages/medusa/src/services/search.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L53) +[medusa/src/services/search.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L50) ___ @@ -366,31 +257,7 @@ AbstractSearchService.search #### Defined in -[packages/medusa/src/services/search.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L78) - -___ - -### shouldRetryTransaction\_ - -▸ `Protected` **shouldRetryTransaction_**(`err`): `boolean` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `err` | `Record`<`string`, `unknown`\> \| { `code`: `string` } | - -#### Returns - -`boolean` - -#### Inherited from - -AbstractSearchService.shouldRetryTransaction\_ - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/services/search.ts:75](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L75) ___ @@ -415,28 +282,4 @@ AbstractSearchService.updateSettings #### Defined in -[packages/medusa/src/services/search.ts:89](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/search.ts#L89) - -___ - -### withTransaction - -▸ **withTransaction**(`transactionManager?`): [`SearchService`](SearchService.md) - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `transactionManager?` | `EntityManager` | - -#### Returns - -[`SearchService`](SearchService.md) - -#### Inherited from - -AbstractSearchService.withTransaction - -#### Defined in - -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/services/search.ts:86](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/search.ts#L86) diff --git a/docs/content/references/services/classes/ShippingOptionService.md b/docs/content/references/services/classes/ShippingOptionService.md index d5851e16a0..92d978e976 100644 --- a/docs/content/references/services/classes/ShippingOptionService.md +++ b/docs/content/references/services/classes/ShippingOptionService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/shipping-option.ts:55](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L55) +[medusa/src/services/shipping-option.ts:52](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L52) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-option.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L50) +[medusa/src/services/shipping-option.ts:50](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L50) ___ @@ -86,33 +86,33 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/shipping-option.ts:52](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L52) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### methodRepository\_ -• `Protected` `Readonly` **methodRepository\_**: typeof `ShippingMethodRepository` +• `Protected` `Readonly` **methodRepository\_**: `Repository`<`ShippingMethod`\> #### Defined in -[packages/medusa/src/services/shipping-option.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L49) +[medusa/src/services/shipping-option.ts:49](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L49) ___ ### optionRepository\_ -• `Protected` `Readonly` **optionRepository\_**: typeof `ShippingOptionRepository` +• `Protected` `Readonly` **optionRepository\_**: `Repository`<`ShippingOption`\> & { `upsertShippingProfile`: (`shippingOptionIds`: `string`[], `shippingProfileId`: `string`) => `Promise`<`ShippingOption`[]\> } #### Defined in -[packages/medusa/src/services/shipping-option.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L48) +[medusa/src/services/shipping-option.ts:48](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L48) ___ @@ -122,7 +122,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-option.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L44) +[medusa/src/services/shipping-option.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L44) ___ @@ -132,17 +132,17 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-option.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L45) +[medusa/src/services/shipping-option.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L45) ___ ### requirementRepository\_ -• `Protected` `Readonly` **requirementRepository\_**: typeof `ShippingOptionRequirementRepository` +• `Protected` `Readonly` **requirementRepository\_**: `Repository`<`ShippingOptionRequirement`\> #### Defined in -[packages/medusa/src/services/shipping-option.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L47) +[medusa/src/services/shipping-option.ts:47](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L47) ___ @@ -150,13 +150,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/shipping-option.ts:53](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L53) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -182,7 +200,7 @@ the result of update #### Defined in -[packages/medusa/src/services/shipping-option.ts:713](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L713) +[medusa/src/services/shipping-option.ts:693](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L693) ___ @@ -221,7 +239,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -247,7 +265,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/shipping-option.ts:451](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L451) +[medusa/src/services/shipping-option.ts:431](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L431) ___ @@ -273,7 +291,7 @@ the resulting shipping method. #### Defined in -[packages/medusa/src/services/shipping-option.ts:278](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L278) +[medusa/src/services/shipping-option.ts:258](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L258) ___ @@ -297,7 +315,7 @@ the result of the delete operation. #### Defined in -[packages/medusa/src/services/shipping-option.ts:691](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L691) +[medusa/src/services/shipping-option.ts:671](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L671) ___ @@ -321,7 +339,7 @@ removed shipping methods #### Defined in -[packages/medusa/src/services/shipping-option.ts:258](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L258) +[medusa/src/services/shipping-option.ts:238](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L238) ___ @@ -339,7 +357,7 @@ price type "calculated". | :------ | :------ | :------ | | `option` | `ShippingOption` | the shipping option to retrieve the price for. | | `data` | `Record`<`string`, `unknown`\> | the shipping data to retrieve the price. | -| `cart` | `undefined` \| `Cart` \| `Order` | the context in which the price should be retrieved. | +| `cart` | `undefined` \| `Order` \| `Cart` | the context in which the price should be retrieved. | #### Returns @@ -349,7 +367,7 @@ the price of the shipping option. #### Defined in -[packages/medusa/src/services/shipping-option.ts:791](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L791) +[medusa/src/services/shipping-option.ts:771](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L771) ___ @@ -372,7 +390,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/shipping-option.ts:148](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L148) +[medusa/src/services/shipping-option.ts:145](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L145) ___ @@ -395,7 +413,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/shipping-option.ts:164](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L164) +[medusa/src/services/shipping-option.ts:160](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L160) ___ @@ -419,7 +437,7 @@ the result of update #### Defined in -[packages/medusa/src/services/shipping-option.ts:742](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L742) +[medusa/src/services/shipping-option.ts:722](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L722) ___ @@ -435,9 +453,7 @@ Throws in case of DB Error and if profile was not found. | Name | Type | Description | | :------ | :------ | :------ | | `optionId` | `any` | the id of the profile to get. | -| `options` | `Object` | the options to get a profile | -| `options.relations?` | `string`[] | - | -| `options.select?` | keyof `ShippingOption`[] | - | +| `options` | `FindConfig`<`ShippingOption`\> | the options to get a profile | #### Returns @@ -447,7 +463,7 @@ the profile document. #### Defined in -[packages/medusa/src/services/shipping-option.ts:182](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L182) +[medusa/src/services/shipping-option.ts:177](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L177) ___ @@ -471,7 +487,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -498,7 +514,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/shipping-option.ts:579](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L579) +[medusa/src/services/shipping-option.ts:559](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L559) ___ @@ -524,7 +540,7 @@ the resulting shipping method #### Defined in -[packages/medusa/src/services/shipping-option.ts:229](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L229) +[medusa/src/services/shipping-option.ts:211](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L211) ___ @@ -547,7 +563,7 @@ updated shipping options #### Defined in -[packages/medusa/src/services/shipping-option.ts:767](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L767) +[medusa/src/services/shipping-option.ts:747](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L747) ___ @@ -568,7 +584,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-option.ts:408](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L408) +[medusa/src/services/shipping-option.ts:388](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L388) ___ @@ -595,7 +611,7 @@ the validated shipping option #### Defined in -[packages/medusa/src/services/shipping-option.ts:366](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L366) +[medusa/src/services/shipping-option.ts:346](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L346) ___ @@ -620,7 +636,7 @@ the validated price #### Defined in -[packages/medusa/src/services/shipping-option.ts:539](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L539) +[medusa/src/services/shipping-option.ts:519](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L519) ___ @@ -645,7 +661,7 @@ a validated shipping requirement #### Defined in -[packages/medusa/src/services/shipping-option.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-option.ts#L82) +[medusa/src/services/shipping-option.ts:77](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-option.ts#L77) ___ @@ -669,4 +685,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/ShippingProfileService.md b/docs/content/references/services/classes/ShippingProfileService.md index debc542770..72ef91e25d 100644 --- a/docs/content/references/services/classes/ShippingProfileService.md +++ b/docs/content/references/services/classes/ShippingProfileService.md @@ -28,7 +28,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/shipping-profile.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L48) +[medusa/src/services/shipping-profile.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L45) ## Properties @@ -42,7 +42,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -56,7 +56,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -70,7 +70,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L40) +[medusa/src/services/shipping-profile.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L40) ___ @@ -88,23 +88,23 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L45) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### productRepository\_ -• `Protected` `Readonly` **productRepository\_**: typeof `ProductRepository` +• `Protected` `Readonly` **productRepository\_**: `Repository`<`Product`\> & { `bulkAddToCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `bulkRemoveFromCollection`: (`productIds`: `string`[], `collectionId`: `string`) => `Promise`<`Product`[]\> ; `findAndCount`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<[`Product`[], `number`]\> ; `findOne`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>) => `Promise`<``null`` \| `Product`\> ; `isProductInSalesChannels`: (`id`: `string`, `salesChannelIds`: `string`[]) => `Promise`<`boolean`\> ; `prepareQueryBuilder_`: (`options`: `ExtendedFindConfig`<`Product` & `ProductFilterOptions`\>, `q?`: `string`) => `Promise`<`SelectQueryBuilder`<`Product`\>\> ; `upsertShippingProfile`: (`productIds`: `string`[], `shippingProfileId`: `string`) => `Promise`<`Product`[]\> } #### Defined in -[packages/medusa/src/services/shipping-profile.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L43) +[medusa/src/services/shipping-profile.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L43) ___ @@ -114,7 +114,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L38) +[medusa/src/services/shipping-profile.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L38) ___ @@ -124,17 +124,17 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:39](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L39) +[medusa/src/services/shipping-profile.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L39) ___ ### shippingProfileRepository\_ -• `Protected` `Readonly` **shippingProfileRepository\_**: typeof `ShippingProfileRepository` +• `Protected` `Readonly` **shippingProfileRepository\_**: `Repository`<`ShippingProfile`\> #### Defined in -[packages/medusa/src/services/shipping-profile.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L42) +[medusa/src/services/shipping-profile.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L42) ___ @@ -142,13 +142,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L46) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -173,7 +191,7 @@ the result of update #### Defined in -[packages/medusa/src/services/shipping-profile.ts:356](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L356) +[medusa/src/services/shipping-profile.ts:355](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L355) ___ @@ -199,7 +217,7 @@ the result of the model update operation #### Defined in -[packages/medusa/src/services/shipping-profile.ts:386](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L386) +[medusa/src/services/shipping-profile.ts:385](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L385) ___ @@ -238,7 +256,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -262,7 +280,7 @@ the result of the create operation #### Defined in -[packages/medusa/src/services/shipping-profile.ts:250](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L250) +[medusa/src/services/shipping-profile.ts:249](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L249) ___ @@ -280,7 +298,7 @@ the shipping profile #### Defined in -[packages/medusa/src/services/shipping-profile.ts:180](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L180) +[medusa/src/services/shipping-profile.ts:179](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L179) ___ @@ -299,7 +317,7 @@ the shipping profile #### Defined in -[packages/medusa/src/services/shipping-profile.ts:224](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L224) +[medusa/src/services/shipping-profile.ts:223](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L223) ___ @@ -323,7 +341,7 @@ the result of the delete operation. #### Defined in -[packages/medusa/src/services/shipping-profile.ts:331](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L331) +[medusa/src/services/shipping-profile.ts:330](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L330) ___ @@ -348,7 +366,7 @@ a list of the available shipping options #### Defined in -[packages/medusa/src/services/shipping-profile.ts:416](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L416) +[medusa/src/services/shipping-profile.ts:415](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L415) ___ @@ -369,7 +387,7 @@ ___ #### Defined in -[packages/medusa/src/services/shipping-profile.ts:83](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L83) +[medusa/src/services/shipping-profile.ts:82](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L82) ___ @@ -393,7 +411,7 @@ a list of product ids #### Defined in -[packages/medusa/src/services/shipping-profile.ts:482](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L482) +[medusa/src/services/shipping-profile.ts:481](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L481) ___ @@ -416,7 +434,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/shipping-profile.ts:71](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L71) +[medusa/src/services/shipping-profile.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L67) ___ @@ -442,39 +460,39 @@ the profile document. #### Defined in -[packages/medusa/src/services/shipping-profile.ts:135](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L135) +[medusa/src/services/shipping-profile.ts:134](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L134) ___ ### retrieveDefault -▸ **retrieveDefault**(): `Promise`<`undefined` \| `ShippingProfile`\> +▸ **retrieveDefault**(): `Promise`<``null`` \| `ShippingProfile`\> #### Returns -`Promise`<`undefined` \| `ShippingProfile`\> +`Promise`<``null`` \| `ShippingProfile`\> #### Defined in -[packages/medusa/src/services/shipping-profile.ts:164](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L164) +[medusa/src/services/shipping-profile.ts:163](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L163) ___ ### retrieveGiftCardDefault -▸ **retrieveGiftCardDefault**(): `Promise`<`undefined` \| `ShippingProfile`\> +▸ **retrieveGiftCardDefault**(): `Promise`<``null`` \| `ShippingProfile`\> Retrieves the default gift card profile #### Returns -`Promise`<`undefined` \| `ShippingProfile`\> +`Promise`<``null`` \| `ShippingProfile`\> the shipping profile for gift cards #### Defined in -[packages/medusa/src/services/shipping-profile.ts:207](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L207) +[medusa/src/services/shipping-profile.ts:206](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L206) ___ @@ -498,7 +516,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -525,7 +543,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/shipping-profile.ts:285](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/shipping-profile.ts#L285) +[medusa/src/services/shipping-profile.ts:284](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/shipping-profile.ts#L284) ___ @@ -549,4 +567,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/StagedJobService.md b/docs/content/references/services/classes/StagedJobService.md new file mode 100644 index 0000000000..5824bd989e --- /dev/null +++ b/docs/content/references/services/classes/StagedJobService.md @@ -0,0 +1,274 @@ +# Class: StagedJobService + +Provides layer to manipulate users. + +## Hierarchy + +- `TransactionBaseService` + + ↳ **`StagedJobService`** + +## Constructors + +### constructor + +• **new StagedJobService**(`__namedParameters`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `__namedParameters` | `StagedJobServiceProps` | + +#### Overrides + +TransactionBaseService.constructor + +#### Defined in + +[medusa/src/services/staged-job.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/staged-job.ts#L22) + +## Properties + +### \_\_configModule\_\_ + +• `Protected` `Optional` `Readonly` **\_\_configModule\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_configModule\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) + +___ + +### \_\_container\_\_ + +• `Protected` `Readonly` **\_\_container\_\_**: `any` + +#### Inherited from + +TransactionBaseService.\_\_container\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) + +___ + +### \_\_moduleDeclaration\_\_ + +• `Protected` `Optional` `Readonly` **\_\_moduleDeclaration\_\_**: `Record`<`string`, `unknown`\> + +#### Inherited from + +TransactionBaseService.\_\_moduleDeclaration\_\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) + +___ + +### manager\_ + +• `Protected` **manager\_**: `EntityManager` + +#### Inherited from + +TransactionBaseService.manager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) + +___ + +### stagedJobRepository\_ + +• `Protected` **stagedJobRepository\_**: `Repository`<`StagedJob`\> & { `insertBulk`: (`jobToCreates`: `_QueryDeepPartialEntity`<`StagedJob`\>[]) => `Promise`<`StagedJob`[]\> } + +#### Defined in + +[medusa/src/services/staged-job.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/staged-job.ts#L20) + +___ + +### transactionManager\_ + +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` + +#### Inherited from + +TransactionBaseService.transactionManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) + +## Methods + +### atomicPhase\_ + +▸ `Protected` **atomicPhase_**<`TResult`, `TError`\>(`work`, `isolationOrErrorHandler?`, `maybeErrorHandlerOrDontFail?`): `Promise`<`TResult`\> + +Wraps some work within a transactional block. If the service already has +a transaction manager attached this will be reused, otherwise a new +transaction manager is created. + +#### Type parameters + +| Name | +| :------ | +| `TResult` | +| `TError` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `work` | (`transactionManager`: `EntityManager`) => `Promise`<`TResult`\> | the transactional work to be done | +| `isolationOrErrorHandler?` | `IsolationLevel` \| (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | the isolation level to be used for the work. | +| `maybeErrorHandlerOrDontFail?` | (`error`: `TError`) => `Promise`<`void` \| `TResult`\> | Potential error handler | + +#### Returns + +`Promise`<`TResult`\> + +the result of the transactional work + +#### Inherited from + +TransactionBaseService.atomicPhase\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) + +___ + +### create + +▸ **create**(`data`): `Promise`<`StagedJob`[]\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | `EmitData`<`unknown`\> \| `EmitData`<`unknown`\>[] | + +#### Returns + +`Promise`<`StagedJob`[]\> + +#### Defined in + +[medusa/src/services/staged-job.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/staged-job.ts#L45) + +___ + +### delete + +▸ **delete**(`stagedJobIds`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `stagedJobIds` | `string` \| `string`[] | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[medusa/src/services/staged-job.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/staged-job.ts#L37) + +___ + +### list + +▸ **list**(`config`): `Promise`<`StagedJob`[]\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `config` | `FindConfig`<`StagedJob`\> | + +#### Returns + +`Promise`<`StagedJob`[]\> + +#### Defined in + +[medusa/src/services/staged-job.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/staged-job.ts#L29) + +___ + +### shouldRetryTransaction\_ + +▸ `Protected` **shouldRetryTransaction_**(`err`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Record`<`string`, `unknown`\> \| { `code`: `string` } | + +#### Returns + +`boolean` + +#### Inherited from + +TransactionBaseService.shouldRetryTransaction\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) + +___ + +### withTransaction + +▸ **withTransaction**(`transactionManager?`): [`StagedJobService`](StagedJobService.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `transactionManager?` | `EntityManager` | + +#### Returns + +[`StagedJobService`](StagedJobService.md) + +#### Inherited from + +TransactionBaseService.withTransaction + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/StoreService.md b/docs/content/references/services/classes/StoreService.md index 11cce1367b..6eae7ade9f 100644 --- a/docs/content/references/services/classes/StoreService.md +++ b/docs/content/references/services/classes/StoreService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/store.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L31) +[medusa/src/services/store.ts:28](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L28) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,17 +68,17 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ ### currencyRepository\_ -• `Protected` `Readonly` **currencyRepository\_**: typeof `CurrencyRepository` +• `Protected` `Readonly` **currencyRepository\_**: `Repository`<`Currency`\> #### Defined in -[packages/medusa/src/services/store.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L28) +[medusa/src/services/store.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L25) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[packages/medusa/src/services/store.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L29) +[medusa/src/services/store.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L26) ___ @@ -96,37 +96,55 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/store.ts:24](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L24) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### storeRepository\_ -• `Protected` `Readonly` **storeRepository\_**: typeof `StoreRepository` +• `Protected` `Readonly` **storeRepository\_**: `Repository`<`Store`\> #### Defined in -[packages/medusa/src/services/store.ts:27](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L27) +[medusa/src/services/store.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L24) ___ ### transactionManager\_ -• `Protected` **transactionManager\_**: `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/store.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L25) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -150,7 +168,7 @@ result after update #### Defined in -[packages/medusa/src/services/store.ts:204](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L204) +[medusa/src/services/store.ts:208](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L208) ___ @@ -189,7 +207,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -207,7 +225,7 @@ The store. #### Defined in -[packages/medusa/src/services/store.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L49) +[medusa/src/services/store.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L45) ___ @@ -227,7 +245,7 @@ ___ #### Defined in -[packages/medusa/src/services/store.ts:98](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L98) +[medusa/src/services/store.ts:100](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L100) ___ @@ -251,7 +269,7 @@ result after update #### Defined in -[packages/medusa/src/services/store.ts:248](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L248) +[medusa/src/services/store.ts:252](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L252) ___ @@ -275,7 +293,7 @@ the store #### Defined in -[packages/medusa/src/services/store.ts:85](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L85) +[medusa/src/services/store.ts:83](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L83) ___ @@ -299,7 +317,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -323,7 +341,7 @@ resolves to the update result. #### Defined in -[packages/medusa/src/services/store.ts:114](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/store.ts#L114) +[medusa/src/services/store.ts:116](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/store.ts#L116) ___ @@ -347,4 +365,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/StrategyResolverService.md b/docs/content/references/services/classes/StrategyResolverService.md index a67ec40dac..4f065d80d6 100644 --- a/docs/content/references/services/classes/StrategyResolverService.md +++ b/docs/content/references/services/classes/StrategyResolverService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/strategy-resolver.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/strategy-resolver.ts#L14) +[medusa/src/services/strategy-resolver.ts:11](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/strategy-resolver.ts#L11) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[packages/medusa/src/services/strategy-resolver.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/strategy-resolver.ts#L14) +[medusa/src/services/strategy-resolver.ts:11](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/strategy-resolver.ts#L11) ___ @@ -84,13 +84,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/strategy-resolver.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/strategy-resolver.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -98,13 +98,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/strategy-resolver.ts:12](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/strategy-resolver.ts#L12) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -163,7 +181,7 @@ ___ #### Defined in -[packages/medusa/src/services/strategy-resolver.ts:19](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/strategy-resolver.ts#L19) +[medusa/src/services/strategy-resolver.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/strategy-resolver.ts#L15) ___ @@ -187,7 +205,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -211,4 +229,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/SwapService.md b/docs/content/references/services/classes/SwapService.md index a1dcd398ae..967947c745 100644 --- a/docs/content/references/services/classes/SwapService.md +++ b/docs/content/references/services/classes/SwapService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/swap.ts:96](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L96) +[medusa/src/services/swap.ts:92](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L92) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L82) +[medusa/src/services/swap.ts:78](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L78) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:92](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L92) +[medusa/src/services/swap.ts:88](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L88) ___ @@ -98,7 +98,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:83](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L83) +[medusa/src/services/swap.ts:79](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L79) ___ @@ -108,7 +108,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:88](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L88) +[medusa/src/services/swap.ts:84](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L84) ___ @@ -118,7 +118,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:91](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L91) +[medusa/src/services/swap.ts:87](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L87) ___ @@ -128,7 +128,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:87](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L87) +[medusa/src/services/swap.ts:83](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L83) ___ @@ -136,13 +136,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/swap.ts:77](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L77) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -152,7 +152,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:84](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L84) +[medusa/src/services/swap.ts:80](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L80) ___ @@ -162,7 +162,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:90](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L90) +[medusa/src/services/swap.ts:86](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L86) ___ @@ -172,7 +172,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:94](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L94) +[medusa/src/services/swap.ts:90](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L90) ___ @@ -182,7 +182,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:85](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L85) +[medusa/src/services/swap.ts:81](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L81) ___ @@ -192,17 +192,17 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:89](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L89) +[medusa/src/services/swap.ts:85](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L85) ___ ### swapRepository\_ -• `Protected` `Readonly` **swapRepository\_**: typeof `SwapRepository` +• `Protected` `Readonly` **swapRepository\_**: `Repository`<`Swap`\> #### Defined in -[packages/medusa/src/services/swap.ts:80](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L80) +[medusa/src/services/swap.ts:76](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L76) ___ @@ -212,7 +212,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:86](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L86) +[medusa/src/services/swap.ts:82](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L82) ___ @@ -220,13 +220,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/swap.ts:78](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L78) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -250,7 +250,25 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L65) +[medusa/src/services/swap.ts:64](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L64) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -270,7 +288,7 @@ ___ #### Defined in -[packages/medusa/src/services/swap.ts:1226](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L1226) +[medusa/src/services/swap.ts:1219](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L1219) ___ @@ -309,7 +327,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -335,7 +353,7 @@ the canceled swap. #### Defined in -[packages/medusa/src/services/swap.ts:842](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L842) +[medusa/src/services/swap.ts:837](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L837) ___ @@ -359,7 +377,7 @@ updated swap #### Defined in -[packages/medusa/src/services/swap.ts:1043](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L1043) +[medusa/src/services/swap.ts:1038](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L1038) ___ @@ -383,6 +401,7 @@ and an optional return shipping method. | `custom` | `Object` | contains relevant custom information. This object may include no_notification which will disable sending notification when creating swap. If set, it overrules the attribute inherited from the order | | `custom.allow_backorder?` | `boolean` | - | | `custom.idempotency_key?` | `string` | - | +| `custom.location_id?` | `string` | - | | `custom.no_notification?` | `boolean` | - | #### Returns @@ -393,7 +412,7 @@ the newly created swap #### Defined in -[packages/medusa/src/services/swap.ts:317](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L317) +[medusa/src/services/swap.ts:302](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L302) ___ @@ -421,7 +440,7 @@ the swap with its cart_id prop set to the id of the new cart. #### Defined in -[packages/medusa/src/services/swap.ts:571](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L571) +[medusa/src/services/swap.ts:558](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L558) ___ @@ -447,7 +466,7 @@ the updated swap with new status and fulfillments. #### Defined in -[packages/medusa/src/services/swap.ts:904](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L904) +[medusa/src/services/swap.ts:899](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L899) ___ @@ -474,7 +493,7 @@ the updated swap with new fulfillments and status. #### Defined in -[packages/medusa/src/services/swap.ts:1074](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L1074) +[medusa/src/services/swap.ts:1069](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L1069) ___ @@ -499,7 +518,7 @@ resolves to the updated result. #### Defined in -[packages/medusa/src/services/swap.ts:1152](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L1152) +[medusa/src/services/swap.ts:1147](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L1147) ___ @@ -524,7 +543,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/swap.ts:287](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L287) +[medusa/src/services/swap.ts:274](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L274) ___ @@ -548,7 +567,7 @@ processed swap #### Defined in -[packages/medusa/src/services/swap.ts:415](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L415) +[medusa/src/services/swap.ts:402](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L402) ___ @@ -572,7 +591,7 @@ swap related to the cart #### Defined in -[packages/medusa/src/services/swap.ts:709](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L709) +[medusa/src/services/swap.ts:704](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L704) ___ @@ -597,7 +616,7 @@ the resulting order #### Defined in -[packages/medusa/src/services/swap.ts:1192](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L1192) +[medusa/src/services/swap.ts:1185](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L1185) ___ @@ -622,7 +641,7 @@ the swap #### Defined in -[packages/medusa/src/services/swap.ts:211](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L211) +[medusa/src/services/swap.ts:204](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L204) ___ @@ -647,7 +666,7 @@ the swap #### Defined in -[packages/medusa/src/services/swap.ts:260](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L260) +[medusa/src/services/swap.ts:247](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L247) ___ @@ -671,7 +690,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -695,7 +714,7 @@ transformed find swap config #### Defined in -[packages/medusa/src/services/swap.ts:138](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L138) +[medusa/src/services/swap.ts:131](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L131) ___ @@ -720,7 +739,7 @@ updated swap record #### Defined in -[packages/medusa/src/services/swap.ts:538](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/swap.ts#L538) +[medusa/src/services/swap.ts:525](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/swap.ts#L525) ___ @@ -744,4 +763,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/SystemPaymentProviderService.md b/docs/content/references/services/classes/SystemPaymentProviderService.md index deaaa0fbed..9f51ad56bc 100644 --- a/docs/content/references/services/classes/SystemPaymentProviderService.md +++ b/docs/content/references/services/classes/SystemPaymentProviderService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L10) +[medusa/src/services/system-payment-provider.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L6) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -74,13 +74,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:5](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L5) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -88,13 +88,13 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:6](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L6) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ @@ -104,7 +104,25 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:8](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L8) +[medusa/src/services/system-payment-provider.ts:4](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L4) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -143,7 +161,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -163,7 +181,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L26) +[medusa/src/services/system-payment-provider.ts:22](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L22) ___ @@ -183,7 +201,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L50) +[medusa/src/services/system-payment-provider.ts:46](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L46) ___ @@ -203,7 +221,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L42) +[medusa/src/services/system-payment-provider.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L38) ___ @@ -223,7 +241,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L14) +[medusa/src/services/system-payment-provider.ts:10](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L10) ___ @@ -243,7 +261,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:38](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L38) +[medusa/src/services/system-payment-provider.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L34) ___ @@ -263,7 +281,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:22](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L22) +[medusa/src/services/system-payment-provider.ts:18](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L18) ___ @@ -283,7 +301,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:18](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L18) +[medusa/src/services/system-payment-provider.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L14) ___ @@ -303,7 +321,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L46) +[medusa/src/services/system-payment-provider.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L42) ___ @@ -327,7 +345,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -347,7 +365,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L34) +[medusa/src/services/system-payment-provider.ts:30](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L30) ___ @@ -367,7 +385,7 @@ ___ #### Defined in -[packages/medusa/src/services/system-payment-provider.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/system-payment-provider.ts#L30) +[medusa/src/services/system-payment-provider.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/system-payment-provider.ts#L26) ___ @@ -391,4 +409,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/TaxProviderService.md b/docs/content/references/services/classes/TaxProviderService.md index f7a9f2a72a..d0273adb12 100644 --- a/docs/content/references/services/classes/TaxProviderService.md +++ b/docs/content/references/services/classes/TaxProviderService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/tax-provider.ts:51](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L51) +[medusa/src/services/tax-provider.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L45) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L44) +[medusa/src/services/tax-provider.ts:38](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L38) ___ @@ -88,17 +88,17 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L43) +[medusa/src/services/tax-provider.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L37) ___ ### eventBus\_ -• `Protected` `Readonly` **eventBus\_**: [`EventBusService`](EventBusService.md) +• `Protected` `Readonly` **eventBus\_**: `IEventBusService` #### Defined in -[packages/medusa/src/services/tax-provider.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L49) +[medusa/src/services/tax-provider.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L43) ___ @@ -106,43 +106,43 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/tax-provider.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L40) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### smTaxLineRepo\_ -• `Protected` `Readonly` **smTaxLineRepo\_**: typeof `ShippingMethodTaxLineRepository` +• `Protected` `Readonly` **smTaxLineRepo\_**: `Repository`<`ShippingMethodTaxLine`\> & { `deleteForCart`: (`cartId`: `string`) => `Promise`<`void`\> ; `upsertLines`: (`lines`: `ShippingMethodTaxLine`[]) => `Promise`<`ShippingMethodTaxLine`[]\> } #### Defined in -[packages/medusa/src/services/tax-provider.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L47) +[medusa/src/services/tax-provider.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L41) ___ ### taxLineRepo\_ -• `Protected` `Readonly` **taxLineRepo\_**: typeof `LineItemTaxLineRepository` +• `Protected` `Readonly` **taxLineRepo\_**: `Repository`<`LineItemTaxLine`\> & { `deleteForCart`: (`cartId`: `string`) => `Promise`<`void`\> ; `upsertLines`: (`lines`: `LineItemTaxLine`[]) => `Promise`<`LineItemTaxLine`[]\> } #### Defined in -[packages/medusa/src/services/tax-provider.ts:46](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L46) +[medusa/src/services/tax-provider.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L40) ___ ### taxProviderRepo\_ -• `Protected` `Readonly` **taxProviderRepo\_**: typeof `TaxProviderRepository` +• `Protected` `Readonly` **taxProviderRepo\_**: `Repository`<`TaxProvider`\> #### Defined in -[packages/medusa/src/services/tax-provider.ts:48](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L48) +[medusa/src/services/tax-provider.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L42) ___ @@ -152,21 +152,39 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L45) +[medusa/src/services/tax-provider.ts:39](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L39) ___ ### transactionManager\_ -• `Protected` **transactionManager\_**: `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/tax-provider.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L41) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -205,7 +223,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -225,7 +243,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:97](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L97) +[medusa/src/services/tax-provider.ts:89](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L89) ___ @@ -245,7 +263,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:107](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L107) +[medusa/src/services/tax-provider.ts:97](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L97) ___ @@ -271,7 +289,7 @@ the newly created tax lines #### Defined in -[packages/medusa/src/services/tax-provider.ts:183](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L183) +[medusa/src/services/tax-provider.ts:171](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L171) ___ @@ -296,7 +314,7 @@ the newly created tax lines #### Defined in -[packages/medusa/src/services/tax-provider.ts:129](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L129) +[medusa/src/services/tax-provider.ts:117](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L117) ___ @@ -321,7 +339,7 @@ the cache key to use for the id set #### Defined in -[packages/medusa/src/services/tax-provider.ts:484](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L484) +[medusa/src/services/tax-provider.ts:476](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L476) ___ @@ -347,7 +365,7 @@ the tax rates configured for the shipping option. #### Defined in -[packages/medusa/src/services/tax-provider.ts:436](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L436) +[medusa/src/services/tax-provider.ts:428](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L428) ___ @@ -373,7 +391,7 @@ the tax rates configured for the shipping option. #### Defined in -[packages/medusa/src/services/tax-provider.ts:389](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L389) +[medusa/src/services/tax-provider.ts:381](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L381) ___ @@ -400,7 +418,7 @@ the computed tax lines #### Defined in -[packages/medusa/src/services/tax-provider.ts:204](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L204) +[medusa/src/services/tax-provider.ts:192](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L192) ___ @@ -429,7 +447,7 @@ the computed tax lines #### Defined in -[packages/medusa/src/services/tax-provider.ts:256](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L256) +[medusa/src/services/tax-provider.ts:246](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L246) ___ @@ -452,7 +470,7 @@ Return a map of tax lines for line items and shipping methods #### Defined in -[packages/medusa/src/services/tax-provider.ts:352](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L352) +[medusa/src/services/tax-provider.ts:344](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L344) ___ @@ -466,7 +484,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:65](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L65) +[medusa/src/services/tax-provider.ts:57](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L57) ___ @@ -486,7 +504,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-provider.ts:488](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L488) +[medusa/src/services/tax-provider.ts:480](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L480) ___ @@ -510,7 +528,7 @@ the region specific tax provider #### Defined in -[packages/medusa/src/services/tax-provider.ts:75](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-provider.ts#L75) +[medusa/src/services/tax-provider.ts:67](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-provider.ts#L67) ___ @@ -534,7 +552,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -558,4 +576,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/TaxRateService.md b/docs/content/references/services/classes/TaxRateService.md index 97b7c14786..695b94a379 100644 --- a/docs/content/references/services/classes/TaxRateService.md +++ b/docs/content/references/services/classes/TaxRateService.md @@ -24,7 +24,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/tax-rate.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L33) +[medusa/src/services/tax-rate.ts:29](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L29) ## Properties @@ -38,7 +38,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -52,7 +52,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -66,7 +66,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -74,13 +74,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/tax-rate.ts:25](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L25) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -90,7 +90,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:28](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L28) +[medusa/src/services/tax-rate.ts:24](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L24) ___ @@ -100,7 +100,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:29](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L29) +[medusa/src/services/tax-rate.ts:25](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L25) ___ @@ -110,17 +110,17 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:30](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L30) +[medusa/src/services/tax-rate.ts:26](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L26) ___ ### taxRateRepository\_ -• `Protected` `Readonly` **taxRateRepository\_**: typeof `TaxRateRepository` +• `Protected` `Readonly` **taxRateRepository\_**: `Repository`<`TaxRate`\> & { `addToProduct`: (`id`: `string`, `productIds`: `string`[], `overrideExisting`: `boolean`) => `Promise`<`ProductTaxRate`[]\> ; `addToProductType`: (`id`: `string`, `productTypeIds`: `string`[], `overrideExisting`: `boolean`) => `Promise`<`ProductTypeTaxRate`[]\> ; `addToShippingOption`: (`id`: `string`, `optionIds`: `string`[], `overrideExisting`: `boolean`) => `Promise`<`ShippingTaxRate`[]\> ; `applyResolutionsToQueryBuilder`: (`qb`: `SelectQueryBuilder`<`TaxRate`\>, `resolverFields`: `string`[]) => `SelectQueryBuilder`<`TaxRate`\> ; `findAndCountWithResolution`: (`findOptions`: `FindManyOptions`<`TaxRate`\>) => `Promise`<[`TaxRate`[], `number`]\> ; `findOneWithResolution`: (`findOptions`: `FindManyOptions`<`TaxRate`\>) => `Promise`<``null`` \| `TaxRate`\> ; `findWithResolution`: (`findOptions`: `FindManyOptions`<`TaxRate`\>) => `Promise`<`TaxRate`[]\> ; `getFindQueryBuilder`: (`findOptions`: `FindManyOptions`<`TaxRate`\>) => `SelectQueryBuilder`<`TaxRate`\> ; `listByProduct`: (`productId`: `string`, `config`: `TaxRateListByConfig`) => `Promise`<`TaxRate`[]\> ; `listByShippingOption`: (`optionId`: `string`) => `Promise`<`TaxRate`[]\> ; `removeFromProduct`: (`id`: `string`, `productIds`: `string`[]) => `Promise`<`DeleteResult`\> ; `removeFromProductType`: (`id`: `string`, `productTypeIds`: `string`[]) => `Promise`<`DeleteResult`\> ; `removeFromShippingOption`: (`id`: `string`, `optionIds`: `string`[]) => `Promise`<`DeleteResult`\> } #### Defined in -[packages/medusa/src/services/tax-rate.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L31) +[medusa/src/services/tax-rate.ts:27](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L27) ___ @@ -128,13 +128,31 @@ ___ • `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/tax-rate.ts:26](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L26) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -156,7 +174,7 @@ TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/tax-rate.ts:190](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L190) +[medusa/src/services/tax-rate.ts:190](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L190) ___ @@ -178,7 +196,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:226](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L226) +[medusa/src/services/tax-rate.ts:226](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L226) ___ @@ -200,7 +218,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:266](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L266) +[medusa/src/services/tax-rate.ts:266](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L266) ___ @@ -239,7 +257,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -259,7 +277,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:97](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L97) +[medusa/src/services/tax-rate.ts:93](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L93) ___ @@ -279,7 +297,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:128](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L128) +[medusa/src/services/tax-rate.ts:124](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L124) ___ @@ -300,7 +318,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:49](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L49) +[medusa/src/services/tax-rate.ts:44](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L44) ___ @@ -321,7 +339,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:60](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L60) +[medusa/src/services/tax-rate.ts:55](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L55) ___ @@ -342,7 +360,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:314](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L314) +[medusa/src/services/tax-rate.ts:314](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L314) ___ @@ -362,7 +380,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:324](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L324) +[medusa/src/services/tax-rate.ts:325](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L325) ___ @@ -383,7 +401,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:136](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L136) +[medusa/src/services/tax-rate.ts:136](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L136) ___ @@ -404,7 +422,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:154](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L154) +[medusa/src/services/tax-rate.ts:154](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L154) ___ @@ -425,7 +443,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:172](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L172) +[medusa/src/services/tax-rate.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L172) ___ @@ -446,7 +464,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:71](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L71) +[medusa/src/services/tax-rate.ts:66](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L66) ___ @@ -470,7 +488,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -491,7 +509,7 @@ ___ #### Defined in -[packages/medusa/src/services/tax-rate.ts:113](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/tax-rate.ts#L113) +[medusa/src/services/tax-rate.ts:109](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/tax-rate.ts#L109) ___ @@ -515,4 +533,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/TokenService.md b/docs/content/references/services/classes/TokenService.md index 631bc7fa3c..af46f86003 100644 --- a/docs/content/references/services/classes/TokenService.md +++ b/docs/content/references/services/classes/TokenService.md @@ -14,7 +14,7 @@ #### Defined in -[packages/medusa/src/services/token.ts:16](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/token.ts#L16) +[medusa/src/services/token.ts:16](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/token.ts#L16) ## Properties @@ -24,7 +24,7 @@ #### Defined in -[packages/medusa/src/services/token.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/token.ts#L14) +[medusa/src/services/token.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/token.ts#L14) ___ @@ -34,7 +34,7 @@ ___ #### Defined in -[packages/medusa/src/services/token.ts:12](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/token.ts#L12) +[medusa/src/services/token.ts:12](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/token.ts#L12) ## Methods @@ -55,7 +55,7 @@ ___ #### Defined in -[packages/medusa/src/services/token.ts:34](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/token.ts#L34) +[medusa/src/services/token.ts:34](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/token.ts#L34) ___ @@ -76,4 +76,4 @@ ___ #### Defined in -[packages/medusa/src/services/token.ts:20](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/token.ts#L20) +[medusa/src/services/token.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/token.ts#L20) diff --git a/docs/content/references/services/classes/TotalsService.md b/docs/content/references/services/classes/TotalsService.md index 4d338b0ed3..b39d50ef71 100644 --- a/docs/content/references/services/classes/TotalsService.md +++ b/docs/content/references/services/classes/TotalsService.md @@ -28,7 +28,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/totals.ts:113](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L113) +[medusa/src/services/totals.ts:112](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L112) ## Properties @@ -42,7 +42,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -56,7 +56,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -70,7 +70,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -80,7 +80,7 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:111](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L111) +[medusa/src/services/totals.ts:110](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L110) ___ @@ -88,13 +88,13 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/totals.ts:105](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L105) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ @@ -104,7 +104,7 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:109](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L109) +[medusa/src/services/totals.ts:108](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L108) ___ @@ -114,7 +114,7 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:110](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L110) +[medusa/src/services/totals.ts:109](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L109) ___ @@ -124,21 +124,39 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:108](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L108) +[medusa/src/services/totals.ts:107](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L107) ___ ### transactionManager\_ -• `Protected` **transactionManager\_**: `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/totals.ts:106](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L106) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -177,7 +195,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -205,7 +223,7 @@ triples of lineitem, variant and applied discount #### Defined in -[packages/medusa/src/services/totals.ts:629](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L629) +[medusa/src/services/totals.ts:626](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L626) ___ @@ -224,7 +242,7 @@ alongside the variant on which the discount was applied. | Name | Type | Description | | :------ | :------ | :------ | | `discount` | `Discount` | the discount to which we do the calculation | -| `cart` | `Cart` \| `Order` | the cart to calculate discounts for | +| `cart` | `Order` \| `Cart` | the cart to calculate discounts for | #### Returns @@ -234,7 +252,7 @@ array of triples of lineitem, variant and applied discount #### Defined in -[packages/medusa/src/services/totals.ts:671](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L671) +[medusa/src/services/totals.ts:668](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L668) ___ @@ -265,7 +283,7 @@ the allocation map for the line items in the cart or order. #### Defined in -[packages/medusa/src/services/totals.ts:438](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L438) +[medusa/src/services/totals.ts:435](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L435) ___ @@ -290,7 +308,7 @@ the tax calculation context #### Defined in -[packages/medusa/src/services/totals.ts:1025](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L1025) +[medusa/src/services/totals.ts:1027](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L1027) ___ @@ -305,7 +323,7 @@ discount types. If discounts aren't present or invalid returns 0. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to calculate discounts for | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to calculate discounts for | #### Returns @@ -315,7 +333,7 @@ the total discounts amount #### Defined in -[packages/medusa/src/services/totals.ts:1005](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L1005) +[medusa/src/services/totals.ts:1005](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L1005) ___ @@ -329,7 +347,7 @@ Gets the gift card amount on a cart or order. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to get gift card amount for | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to get gift card amount for | | `opts` | `Object` | - | | `opts.gift_cardable?` | `number` | - | @@ -341,7 +359,7 @@ the gift card amount applied to the cart or order #### Defined in -[packages/medusa/src/services/totals.ts:974](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L974) +[medusa/src/services/totals.ts:974](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L974) ___ @@ -356,7 +374,7 @@ cards are taxable this amount should exclude taxes. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to get gift card amount for | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to get gift card amount for | #### Returns @@ -366,7 +384,7 @@ the gift card amount applied to the cart or order #### Defined in -[packages/medusa/src/services/totals.ts:957](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L957) +[medusa/src/services/totals.ts:957](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L957) ___ @@ -395,7 +413,7 @@ the allocations that the discount has on the items in the cart or #### Defined in -[packages/medusa/src/services/totals.ts:722](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L722) +[medusa/src/services/totals.ts:719](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L719) ___ @@ -407,7 +425,7 @@ ___ | Name | Type | | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | +| `cartOrOrder` | `Order` \| `Cart` | #### Returns @@ -415,7 +433,7 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:699](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L699) +[medusa/src/services/totals.ts:696](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L696) ___ @@ -436,7 +454,7 @@ ___ #### Defined in -[packages/medusa/src/services/totals.ts:684](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L684) +[medusa/src/services/totals.ts:681](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L681) ___ @@ -461,7 +479,7 @@ the line item refund amount. #### Defined in -[packages/medusa/src/services/totals.ts:507](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L507) +[medusa/src/services/totals.ts:504](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L504) ___ @@ -477,7 +495,7 @@ taxes into account. This can be controlled through the options. | Name | Type | Description | | :------ | :------ | :------ | | `lineItem` | `LineItem` | the line item to calculate a total for | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to use as context for the calculation | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to use as context for the calculation | | `options` | `GetLineItemTotalOptions` | the options to use for the calculation | #### Returns @@ -488,7 +506,7 @@ the line item total #### Defined in -[packages/medusa/src/services/totals.ts:930](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L930) +[medusa/src/services/totals.ts:930](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L930) ___ @@ -505,7 +523,7 @@ applied to a line item and the amount of tax applied to a line item. | Name | Type | Description | | :------ | :------ | :------ | | `lineItem` | `LineItem` | the line item to calculate totals for | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to use as context for the calculation | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to use as context for the calculation | | `options` | `LineItemTotalsOptions` | the options to evaluate the line item totals for | #### Returns @@ -516,7 +534,7 @@ the breakdown of the line item totals #### Defined in -[packages/medusa/src/services/totals.ts:778](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L778) +[medusa/src/services/totals.ts:775](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L775) ___ @@ -540,7 +558,7 @@ the total paid amount #### Defined in -[packages/medusa/src/services/totals.ts:160](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L160) +[medusa/src/services/totals.ts:157](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L157) ___ @@ -567,7 +585,7 @@ the calculated subtotal #### Defined in -[packages/medusa/src/services/totals.ts:586](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L586) +[medusa/src/services/totals.ts:583](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L583) ___ @@ -591,7 +609,7 @@ the total refunded amount for an order. #### Defined in -[packages/medusa/src/services/totals.ts:492](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L492) +[medusa/src/services/totals.ts:489](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L489) ___ @@ -607,7 +625,7 @@ already provided. | Name | Type | Description | | :------ | :------ | :------ | | `shippingMethod` | `ShippingMethod` | the shipping method to get totals breakdown for. | -| `cartOrOrder` | `Cart` \| `Order` | the cart or order to use as context for the breakdown | +| `cartOrOrder` | `Order` \| `Cart` | the cart or order to use as context for the breakdown | | `opts` | `GetShippingMethodTotalsOptions` | options for what should be included | #### Returns @@ -618,7 +636,7 @@ An object that breaks down the totals for the shipping method #### Defined in -[packages/medusa/src/services/totals.ts:194](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L194) +[medusa/src/services/totals.ts:191](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L191) ___ @@ -632,7 +650,7 @@ Calculates shipping total | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | cart or order to calculate subtotal for | +| `cartOrOrder` | `Order` \| `Cart` | cart or order to calculate subtotal for | #### Returns @@ -642,7 +660,7 @@ shipping total #### Defined in -[packages/medusa/src/services/totals.ts:322](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L322) +[medusa/src/services/totals.ts:319](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L319) ___ @@ -656,7 +674,7 @@ Calculates subtotal of a given cart or order. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | cart or order to calculate subtotal for | +| `cartOrOrder` | `Order` \| `Cart` | cart or order to calculate subtotal for | | `opts` | `SubtotalOptions` | options | #### Returns @@ -667,7 +685,7 @@ the calculated subtotal #### Defined in -[packages/medusa/src/services/totals.ts:286](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L286) +[medusa/src/services/totals.ts:283](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L283) ___ @@ -692,7 +710,7 @@ the swap total #### Defined in -[packages/medusa/src/services/totals.ts:175](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L175) +[medusa/src/services/totals.ts:172](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L172) ___ @@ -707,7 +725,7 @@ Currently based on the Danish tax system | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | `undefined` | cart or order to calculate tax total for | +| `cartOrOrder` | `Order` \| `Cart` | `undefined` | cart or order to calculate tax total for | | `forceTaxes` | `boolean` | `false` | whether taxes should be calculated regardless of region settings | #### Returns @@ -718,7 +736,7 @@ tax total #### Defined in -[packages/medusa/src/services/totals.ts:349](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L349) +[medusa/src/services/totals.ts:346](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L346) ___ @@ -732,7 +750,7 @@ Calculates total of a given cart or order. | Name | Type | Description | | :------ | :------ | :------ | -| `cartOrOrder` | `Cart` \| `Order` | object to calculate total for | +| `cartOrOrder` | `Order` \| `Cart` | object to calculate total for | | `options` | `GetTotalsOptions` | options to calculate by | #### Returns @@ -743,7 +761,7 @@ the calculated subtotal #### Defined in -[packages/medusa/src/services/totals.ts:137](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L137) +[medusa/src/services/totals.ts:134](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L134) ___ @@ -767,7 +785,7 @@ the rounded value #### Defined in -[packages/medusa/src/services/totals.ts:1055](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/totals.ts#L1055) +[medusa/src/services/totals.ts:1057](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/totals.ts#L1057) ___ @@ -791,7 +809,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -815,4 +833,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/classes/UserService.md b/docs/content/references/services/classes/UserService.md index f66b00345f..66a130dc83 100644 --- a/docs/content/references/services/classes/UserService.md +++ b/docs/content/references/services/classes/UserService.md @@ -26,7 +26,7 @@ TransactionBaseService.constructor #### Defined in -[packages/medusa/src/services/user.ts:47](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L47) +[medusa/src/services/user.ts:45](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L45) ## Properties @@ -40,7 +40,7 @@ TransactionBaseService.\_\_configModule\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:10](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L10) +[medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L14) ___ @@ -54,7 +54,7 @@ TransactionBaseService.\_\_container\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:9](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L9) +[medusa/src/interfaces/transaction-base-service.ts:13](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L13) ___ @@ -68,7 +68,7 @@ TransactionBaseService.\_\_moduleDeclaration\_\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:11](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L11) +[medusa/src/interfaces/transaction-base-service.ts:15](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L15) ___ @@ -78,7 +78,7 @@ ___ #### Defined in -[packages/medusa/src/services/user.ts:42](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L42) +[medusa/src/services/user.ts:40](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L40) ___ @@ -88,7 +88,7 @@ ___ #### Defined in -[packages/medusa/src/services/user.ts:44](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L44) +[medusa/src/services/user.ts:42](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L42) ___ @@ -98,7 +98,7 @@ ___ #### Defined in -[packages/medusa/src/services/user.ts:45](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L45) +[medusa/src/services/user.ts:43](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L43) ___ @@ -106,37 +106,37 @@ ___ • `Protected` **manager\_**: `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.manager\_ #### Defined in -[packages/medusa/src/services/user.ts:40](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L40) +[medusa/src/interfaces/transaction-base-service.ts:5](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L5) ___ ### transactionManager\_ -• `Protected` **transactionManager\_**: `EntityManager` +• `Protected` **transactionManager\_**: `undefined` \| `EntityManager` -#### Overrides +#### Inherited from TransactionBaseService.transactionManager\_ #### Defined in -[packages/medusa/src/services/user.ts:41](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L41) +[medusa/src/interfaces/transaction-base-service.ts:6](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L6) ___ ### userRepository\_ -• `Protected` `Readonly` **userRepository\_**: typeof `UserRepository` +• `Protected` `Readonly` **userRepository\_**: `Repository`<`User`\> #### Defined in -[packages/medusa/src/services/user.ts:43](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L43) +[medusa/src/services/user.ts:41](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L41) ___ @@ -155,7 +155,25 @@ ___ #### Defined in -[packages/medusa/src/services/user.ts:33](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L33) +[medusa/src/services/user.ts:33](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L33) + +## Accessors + +### activeManager\_ + +• `Protected` `get` **activeManager_**(): `EntityManager` + +#### Returns + +`EntityManager` + +#### Inherited from + +TransactionBaseService.activeManager\_ + +#### Defined in + +[medusa/src/interfaces/transaction-base-service.ts:8](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L8) ## Methods @@ -194,7 +212,7 @@ TransactionBaseService.atomicPhase\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:50](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L50) +[medusa/src/interfaces/transaction-base-service.ts:56](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L56) ___ @@ -220,7 +238,7 @@ the result of create #### Defined in -[packages/medusa/src/services/user.ts:179](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L179) +[medusa/src/services/user.ts:171](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L171) ___ @@ -244,7 +262,7 @@ the result of the delete operation. #### Defined in -[packages/medusa/src/services/user.ts:259](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L259) +[medusa/src/services/user.ts:251](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L251) ___ @@ -272,7 +290,7 @@ the generated JSON web token #### Defined in -[packages/medusa/src/services/user.ts:323](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L323) +[medusa/src/services/user.ts:315](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L315) ___ @@ -296,7 +314,7 @@ hashed password #### Defined in -[packages/medusa/src/services/user.ts:167](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L167) +[medusa/src/services/user.ts:159](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L159) ___ @@ -319,7 +337,7 @@ the result of the find operation #### Defined in -[packages/medusa/src/services/user.ts:69](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L69) +[medusa/src/services/user.ts:65](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L65) ___ @@ -345,7 +363,7 @@ the user document. #### Defined in -[packages/medusa/src/services/user.ts:82](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L82) +[medusa/src/services/user.ts:77](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L77) ___ @@ -371,7 +389,7 @@ the user document. #### Defined in -[packages/medusa/src/services/user.ts:113](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L113) +[medusa/src/services/user.ts:107](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L107) ___ @@ -397,7 +415,7 @@ the user document. #### Defined in -[packages/medusa/src/services/user.ts:142](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L142) +[medusa/src/services/user.ts:135](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L135) ___ @@ -424,7 +442,7 @@ the result of the update operation #### Defined in -[packages/medusa/src/services/user.ts:294](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L294) +[medusa/src/services/user.ts:286](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L286) ___ @@ -448,7 +466,7 @@ TransactionBaseService.shouldRetryTransaction\_ #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:31](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L31) +[medusa/src/interfaces/transaction-base-service.ts:37](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L37) ___ @@ -473,7 +491,7 @@ the result of create #### Defined in -[packages/medusa/src/services/user.ts:213](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/services/user.ts#L213) +[medusa/src/services/user.ts:205](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/services/user.ts#L205) ___ @@ -497,4 +515,4 @@ TransactionBaseService.withTransaction #### Defined in -[packages/medusa/src/interfaces/transaction-base-service.ts:14](https://github.com/medusajs/medusa/blob/a4575c391/packages/medusa/src/interfaces/transaction-base-service.ts#L14) +[medusa/src/interfaces/transaction-base-service.ts:20](https://github.com/medusajs/medusa/blob/66c59d54f/packages/medusa/src/interfaces/transaction-base-service.ts#L20) diff --git a/docs/content/references/services/index.md b/docs/content/references/services/index.md index d29c12a237..c8e21f0d85 100644 --- a/docs/content/references/services/index.md +++ b/docs/content/references/services/index.md @@ -5,7 +5,6 @@ - [AnalyticsConfigService](classes/AnalyticsConfigService.md) - [AuthService](classes/AuthService.md) - [BatchJobService](classes/BatchJobService.md) -- [CacheService](classes/CacheService.md) - [CartService](classes/CartService.md) - [ClaimItemService](classes/ClaimItemService.md) - [ClaimService](classes/ClaimService.md) @@ -51,6 +50,7 @@ - [SearchService](classes/SearchService.md) - [ShippingOptionService](classes/ShippingOptionService.md) - [ShippingProfileService](classes/ShippingProfileService.md) +- [StagedJobService](classes/StagedJobService.md) - [StoreService](classes/StoreService.md) - [StrategyResolverService](classes/StrategyResolverService.md) - [SwapService](classes/SwapService.md) From 51d0b884044c370fc274e3e327fe8ced9126418e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 21:02:20 +0300 Subject: [PATCH 10/12] chore(docs): Generated Docs Announcement Bar (automated) (#3717) Co-authored-by: olivermrbl --- www/docs/announcement.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/announcement.json b/www/docs/announcement.json index f5f95e2dc7..7bef67f4b6 100644 --- a/www/docs/announcement.json +++ b/www/docs/announcement.json @@ -1 +1 @@ -{"id":"https://github.com/medusajs/medusa/releases/tag/v1.7.15","content":"v1.7.15 is out","isCloseable":true} +{"id":"https://github.com/medusajs/medusa/releases/tag/v1.8.0","content":"v1.8.0 is out","isCloseable":true} \ No newline at end of file From 70435d563171d1a000ed1cb1b4ddb15a505dbeb9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 21:02:44 +0300 Subject: [PATCH 11/12] chore(docs): Generated API Reference (#3718) Co-authored-by: olivermrbl --- docs/api/admin.oas.json | 39955 ++++++++++++++++ docs/api/admin.oas.yaml | 30611 ++++++++++++ .../JavaScript/{auth => admin_auth}/delete.js | 0 .../JavaScript/{auth => admin_auth}/get.js | 0 .../JavaScript/{auth => admin_auth}/post.js | 0 .../{batch-jobs => admin_batch-jobs}/get.js | 0 .../{batch-jobs => admin_batch-jobs}/post.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../{collections => admin_collections}/get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../{currencies => admin_currencies}/get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../delete.js | 0 .../post.js | 0 .../{customers => admin_customers}/get.js | 0 .../{customers => admin_customers}/post.js | 0 .../get.js | 0 .../post.js | 0 .../{discounts => admin_discounts}/get.js | 0 .../{discounts => admin_discounts}/post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../{gift-cards => admin_gift-cards}/get.js | 0 .../{gift-cards => admin_gift-cards}/post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../JavaScript/admin_inventory-items/post.js | 10 + .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../{invites => admin_invites}/get.js | 0 .../{invites => admin_invites}/post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../JavaScript/{notes => admin_notes}/get.js | 0 .../JavaScript/{notes => admin_notes}/post.js | 0 .../delete.js | 0 .../{notes_{id} => admin_notes_{id}}/get.js | 0 .../{notes_{id} => admin_notes_{id}}/post.js | 0 .../get.js | 0 .../post.js | 0 .../{order-edits => admin_order-edits}/get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../{orders => admin_orders}/get.js | 0 .../{orders_{id} => admin_orders_{id}}/get.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../{price-lists => admin_price-lists}/get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../delete.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../get.js | 0 .../{products => admin_products}/get.js | 0 .../{products => admin_products}/post.js | 0 .../get.js | 0 .../get.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../delete.js | 0 .../post.js | 0 .../{regions => admin_regions}/get.js | 0 .../{regions => admin_regions}/post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../{returns => admin_returns}/get.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../JavaScript/{store => admin_store}/get.js | 0 .../JavaScript/{store => admin_store}/post.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../get.js | 0 .../JavaScript/{swaps => admin_swaps}/get.js | 0 .../{swaps_{id} => admin_swaps_{id}}/get.js | 0 .../{tax-rates => admin_tax-rates}/get.js | 0 .../{tax-rates => admin_tax-rates}/post.js | 0 .../delete.js | 0 .../get.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../{uploads => admin_uploads}/delete.js | 0 .../{uploads => admin_uploads}/post.js | 0 .../post.js | 0 .../post.js | 0 .../JavaScript/{users => admin_users}/get.js | 0 .../JavaScript/{users => admin_users}/post.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../{users_{id} => admin_users_{id}}/get.js | 0 .../{users_{id} => admin_users_{id}}/post.js | 0 .../{variants => admin_variants}/get.js | 0 .../JavaScript/admin_variants_{id}/get.js | 7 + .../get.js | 0 .../Shell/{apps => admin_apps}/get.sh | 0 .../post.sh | 0 .../Shell/{auth => admin_auth}/delete.sh | 0 .../Shell/{auth => admin_auth}/get.sh | 0 .../Shell/{auth => admin_auth}/post.sh | 0 .../{batch-jobs => admin_batch-jobs}/get.sh | 0 .../{batch-jobs => admin_batch-jobs}/post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../{collections => admin_collections}/get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../{currencies => admin_currencies}/get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../{customers => admin_customers}/get.sh | 0 .../{customers => admin_customers}/post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../{discounts => admin_discounts}/get.sh | 0 .../{discounts => admin_discounts}/post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../{gift-cards => admin_gift-cards}/get.sh | 0 .../{gift-cards => admin_gift-cards}/post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../Shell/admin_inventory-items/post.sh | 7 + .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../Shell/{invites => admin_invites}/get.sh | 0 .../Shell/{invites => admin_invites}/post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../Shell/{notes => admin_notes}/get.sh | 0 .../Shell/{notes => admin_notes}/post.sh | 0 .../delete.sh | 0 .../{notes_{id} => admin_notes_{id}}/get.sh | 0 .../{notes_{id} => admin_notes_{id}}/post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../{order-edits => admin_order-edits}/get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../Shell/{orders => admin_orders}/get.sh | 0 .../{orders_{id} => admin_orders_{id}}/get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../{price-lists => admin_price-lists}/get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../delete.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../Shell/{products => admin_products}/get.sh | 0 .../{products => admin_products}/post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../Shell/{regions => admin_regions}/get.sh | 0 .../Shell/{regions => admin_regions}/post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../Shell/{returns => admin_returns}/get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../Shell/{store => admin_store}/get.sh | 0 .../Shell/{store => admin_store}/post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../Shell/{swaps => admin_swaps}/get.sh | 0 .../{swaps_{id} => admin_swaps_{id}}/get.sh | 0 .../{tax-rates => admin_tax-rates}/get.sh | 0 .../{tax-rates => admin_tax-rates}/post.sh | 0 .../delete.sh | 0 .../get.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../{uploads => admin_uploads}/delete.sh | 0 .../Shell/{uploads => admin_uploads}/post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../Shell/{users => admin_users}/get.sh | 0 .../Shell/{users => admin_users}/post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../{users_{id} => admin_users_{id}}/get.sh | 0 .../{users_{id} => admin_users_{id}}/post.sh | 0 .../Shell/{variants => admin_variants}/get.sh | 0 .../Shell/admin_variants_{id}/get.sh | 2 + .../get.sh | 0 .../schemas/AddressCreatePayload.yaml | 57 + ...AddressFields.yaml => AddressPayload.yaml} | 37 +- .../components/schemas/AdminAppsListRes.yaml | 2 + .../components/schemas/AdminAppsRes.yaml | 2 + .../components/schemas/AdminAuthRes.yaml | 2 + .../schemas/AdminBatchJobListRes.yaml | 5 + .../components/schemas/AdminBatchJobRes.yaml | 2 + .../schemas/AdminCollectionsDeleteRes.yaml | 4 + .../schemas/AdminCollectionsListRes.yaml | 5 + .../schemas/AdminCollectionsRes.yaml | 6 + .../schemas/AdminCurrenciesListRes.yaml | 5 + .../schemas/AdminCurrenciesRes.yaml | 2 + .../schemas/AdminCustomerGroupsDeleteRes.yaml | 4 + .../schemas/AdminCustomerGroupsListRes.yaml | 5 + .../schemas/AdminCustomerGroupsRes.yaml | 2 + .../schemas/AdminCustomersListRes.yaml | 5 + .../components/schemas/AdminCustomersRes.yaml | 7 + .../AdminDeleteProductsFromCollectionRes.yaml | 4 + .../AdminDeleteShippingProfileRes.yaml | 4 + .../schemas/AdminDeleteUploadsRes.yaml | 4 + .../schemas/AdminDeleteUserRes.yaml | 4 + .../AdminDiscountConditionsDeleteRes.yaml | 5 + .../schemas/AdminDiscountConditionsRes.yaml | 6 + .../schemas/AdminDiscountsDeleteRes.yaml | 4 + .../schemas/AdminDiscountsListRes.yaml | 12 + .../components/schemas/AdminDiscountsRes.yaml | 12 + .../schemas/AdminDraftOrdersDeleteRes.yaml | 4 + .../schemas/AdminDraftOrdersListRes.yaml | 12 + .../schemas/AdminDraftOrdersRes.yaml | 60 + .../schemas/AdminExtendedStoresRes.yaml | 11 + ...GetRegionsRegionFulfillmentOptionsRes.yaml | 19 +- .../AdminGetVariantsVariantInventoryRes.yaml | 20 +- .../schemas/AdminGiftCardsDeleteRes.yaml | 4 + .../schemas/AdminGiftCardsListRes.yaml | 13 + .../components/schemas/AdminGiftCardsRes.yaml | 10 + .../schemas/AdminInventoryItemsDeleteRes.yaml | 4 + .../schemas/AdminInventoryItemsListRes.yaml | 5 + ...sListWithVariantsAndLocationLevelsRes.yaml | 5 + .../AdminInventoryItemsLocationLevelsRes.yaml | 22 +- .../schemas/AdminInventoryItemsRes.yaml | 2 + .../schemas/AdminInviteDeleteRes.yaml | 4 + .../schemas/AdminListInvitesRes.yaml | 2 + .../schemas/AdminNotesDeleteRes.yaml | 4 + .../components/schemas/AdminNotesListRes.yaml | 5 + .../components/schemas/AdminNotesRes.yaml | 2 + .../schemas/AdminNotificationsListRes.yaml | 6 + .../schemas/AdminNotificationsRes.yaml | 6 + .../schemas/AdminOrderEditDeleteRes.yaml | 4 + .../AdminOrderEditItemChangeDeleteRes.yaml | 4 + .../schemas/AdminOrderEditsListRes.yaml | 40 + .../schemas/AdminOrderEditsRes.yaml | 37 + .../schemas/AdminOrdersListRes.yaml | 108 + .../components/schemas/AdminOrdersRes.yaml | 105 + .../AdminPaymentCollectionDeleteRes.yaml | 4 + .../schemas/AdminPaymentCollectionsRes.yaml | 11 + .../schemas/AdminPaymentProvidersList.yaml | 2 + .../components/schemas/AdminPaymentRes.yaml | 2 + ...aftOrdersDraftOrderRegisterPaymentRes.yaml | 2 + .../AdminPostDraftOrdersDraftOrderReq.yaml | 4 +- .../schemas/AdminPostDraftOrdersReq.yaml | 4 +- .../schemas/AdminPostInventoryItemsReq.yaml | 54 + .../AdminPostOrdersOrderClaimsReq.yaml | 3 +- .../schemas/AdminPostOrdersOrderReq.yaml | 6 +- ...AdminPostProductCategoriesCategoryReq.yaml | 3 + .../schemas/AdminPostReservationsReq.yaml | 21 +- .../schemas/AdminPriceListDeleteBatchRes.yaml | 4 + .../AdminPriceListDeleteProductPricesRes.yaml | 4 + .../schemas/AdminPriceListDeleteRes.yaml | 4 + .../AdminPriceListDeleteVariantPricesRes.yaml | 4 + .../components/schemas/AdminPriceListRes.yaml | 7 + .../schemas/AdminPriceListsListRes.yaml | 5 + .../AdminPriceListsProductsListRes.yaml | 16 + ...minProductCategoriesCategoryDeleteRes.yaml | 4 + .../AdminProductCategoriesCategoryRes.yaml | 7 + .../AdminProductCategoriesListRes.yaml | 10 + .../schemas/AdminProductTagsListRes.yaml | 5 + .../schemas/AdminProductTypesListRes.yaml | 5 + .../schemas/AdminProductsDeleteOptionRes.yaml | 18 +- .../schemas/AdminProductsDeleteRes.yaml | 4 + .../AdminProductsDeleteVariantRes.yaml | 18 +- .../schemas/AdminProductsListRes.yaml | 20 +- .../schemas/AdminProductsListTagsRes.yaml | 6 + .../schemas/AdminProductsListTypesRes.yaml | 2 + .../schemas/AdminProductsListVariantsRes.yaml | 5 + .../components/schemas/AdminProductsRes.yaml | 15 +- .../AdminPublishableApiKeyDeleteRes.yaml | 4 + .../AdminPublishableApiKeysListRes.yaml | 5 + ...ublishableApiKeysListSalesChannelsRes.yaml | 2 + .../schemas/AdminPublishableApiKeysRes.yaml | 2 + .../components/schemas/AdminRefundRes.yaml | 2 + .../schemas/AdminRegionsDeleteRes.yaml | 4 + .../schemas/AdminRegionsListRes.yaml | 14 + .../components/schemas/AdminRegionsRes.yaml | 11 + .../schemas/AdminReservationsDeleteRes.yaml | 17 + ...Req.yaml => AdminReservationsListRes.yaml} | 5 + .../schemas/AdminReservationsRes.yaml | 6 + .../schemas/AdminReturnReasonsDeleteRes.yaml | 4 + .../schemas/AdminReturnReasonsListRes.yaml | 7 + .../schemas/AdminReturnReasonsRes.yaml | 7 + .../schemas/AdminReturnsCancelRes.yaml | 50 + .../schemas/AdminReturnsListRes.yaml | 10 + .../components/schemas/AdminReturnsRes.yaml | 6 + .../AdminSalesChannelsDeleteLocationRes.yaml | 4 + .../schemas/AdminSalesChannelsDeleteRes.yaml | 4 + .../schemas/AdminSalesChannelsListRes.yaml | 5 + .../schemas/AdminSalesChannelsRes.yaml | 2 + .../AdminShippingOptionsDeleteRes.yaml | 4 + .../schemas/AdminShippingOptionsListRes.yaml | 20 + .../schemas/AdminShippingOptionsRes.yaml | 11 + .../schemas/AdminShippingProfilesListRes.yaml | 2 + .../schemas/AdminShippingProfilesRes.yaml | 7 + .../schemas/AdminStockLocationsDeleteRes.yaml | 4 + .../schemas/AdminStockLocationsListRes.yaml | 7 +- .../schemas/AdminStockLocationsRes.yaml | 4 +- .../components/schemas/AdminStoresRes.yaml | 2 + .../components/schemas/AdminSwapsListRes.yaml | 5 + .../components/schemas/AdminSwapsRes.yaml | 20 + .../schemas/AdminTaxProvidersList.yaml | 2 + .../schemas/AdminTaxRatesDeleteRes.yaml | 4 + .../schemas/AdminTaxRatesListRes.yaml | 5 + .../components/schemas/AdminTaxRatesRes.yaml | 2 + .../schemas/AdminUploadsDownloadUrlRes.yaml | 4 +- .../components/schemas/AdminUploadsRes.yaml | 6 +- .../components/schemas/AdminUserRes.yaml | 2 + .../components/schemas/AdminUsersListRes.yaml | 2 + .../schemas/AdminVariantsListRes.yaml | 13 +- .../components/schemas/AdminVariantsRes.yaml | 12 + docs/api/admin/components/schemas/Cart.yaml | 4 + .../components/schemas/ExtendedStoreDTO.yaml | 17 + .../schemas/FeatureFlagsResponse.yaml | 13 + .../admin/components/schemas/LineItem.yaml | 4 + .../schemas/LineItemAdjustment.yaml | 2 +- .../components/schemas/ModulesResponse.yaml | 13 + docs/api/admin/components/schemas/Order.yaml | 6 +- .../schemas/PricedShippingOption.yaml | 27 + .../components/schemas/ProductCategory.yaml | 10 +- .../schemas/ResponseInventoryItem.yaml | 8 + .../schemas/StockLocationExpandedDTO.yaml | 6 + .../components/schemas/VariantInventory.yaml | 21 + docs/api/admin/openapi.yaml | 692 +- .../paths/{apps.yaml => admin_apps.yaml} | 4 +- ...ns.yaml => admin_apps_authorizations.yaml} | 4 +- .../paths/{auth.yaml => admin_auth.yaml} | 88 +- ...{batch-jobs.yaml => admin_batch-jobs.yaml} | 96 +- ...s_{id}.yaml => admin_batch-jobs_{id}.yaml} | 6 +- ...yaml => admin_batch-jobs_{id}_cancel.yaml} | 6 +- ...aml => admin_batch-jobs_{id}_confirm.yaml} | 6 +- ...ollections.yaml => admin_collections.yaml} | 96 +- ..._{id}.yaml => admin_collections_{id}.yaml} | 106 +- ...dmin_collections_{id}_products_batch.yaml} | 8 +- ...{currencies.yaml => admin_currencies.yaml} | 6 +- ...ode}.yaml => admin_currencies_{code}.yaml} | 6 +- ...groups.yaml => admin_customer-groups.yaml} | 96 +- ...}.yaml => admin_customer-groups_{id}.yaml} | 106 +- ...admin_customer-groups_{id}_customers.yaml} | 6 +- ...customer-groups_{id}_customers_batch.yaml} | 14 +- .../{customers.yaml => admin_customers.yaml} | 96 +- ...rs_{id}.yaml => admin_customers_{id}.yaml} | 12 +- .../{discounts.yaml => admin_discounts.yaml} | 124 +- ....yaml => admin_discounts_code_{code}.yaml} | 6 +- ...n_discounts_{discount_id}_conditions.yaml} | 7 +- ...scount_id}_conditions_{condition_id}.yaml} | 144 +- ..._id}_conditions_{condition_id}_batch.yaml} | 12 +- ...ts_{id}.yaml => admin_discounts_{id}.yaml} | 106 +- ...> admin_discounts_{id}_dynamic-codes.yaml} | 6 +- ..._discounts_{id}_dynamic-codes_{code}.yaml} | 7 +- ...n_discounts_{id}_regions_{region_id}.yaml} | 14 +- ...ft-orders.yaml => admin_draft-orders.yaml} | 96 +- .../admin/paths/admin_draft-orders_{id}.yaml | 96 +- ...> admin_draft-orders_{id}_line-items.yaml} | 6 +- ...aft-orders_{id}_line-items_{line_id}.yaml} | 116 +- ....yaml => admin_draft-orders_{id}_pay.yaml} | 6 +- ...{gift-cards.yaml => admin_gift-cards.yaml} | 100 +- ...s_{id}.yaml => admin_gift-cards_{id}.yaml} | 106 +- ...-items.yaml => admin_inventory-items.yaml} | 64 +- ...}.yaml => admin_inventory-items_{id}.yaml} | 86 +- ...inventory-items_{id}_location-levels.yaml} | 137 +- ...s_{id}_location-levels_{location_id}.yaml} | 125 +- .../{invites.yaml => admin_invites.yaml} | 88 +- ..._accept.yaml => admin_invites_accept.yaml} | 6 +- ...d}.yaml => admin_invites_{invite_id}.yaml} | 6 +- ... => admin_invites_{invite_id}_resend.yaml} | 6 +- .../paths/{notes.yaml => admin_notes.yaml} | 96 +- ...{notes_{id}.yaml => admin_notes_{id}.yaml} | 106 +- ...ications.yaml => admin_notifications.yaml} | 6 +- ...l => admin_notifications_{id}_resend.yaml} | 6 +- ...rder-edits.yaml => admin_order-edits.yaml} | 96 +- ..._{id}.yaml => admin_order-edits_{id}.yaml} | 86 +- ...aml => admin_order-edits_{id}_cancel.yaml} | 6 +- ...order-edits_{id}_changes_{change_id}.yaml} | 7 +- ...ml => admin_order-edits_{id}_confirm.yaml} | 6 +- ...yaml => admin_order-edits_{id}_items.yaml} | 6 +- ...min_order-edits_{id}_items_{item_id}.yaml} | 114 +- ...ml => admin_order-edits_{id}_request.yaml} | 6 +- .../paths/{orders.yaml => admin_orders.yaml} | 6 +- ...rders_{id}.yaml => admin_orders_{id}.yaml} | 12 +- ...ve.yaml => admin_orders_{id}_archive.yaml} | 6 +- ...cel.yaml => admin_orders_{id}_cancel.yaml} | 6 +- ...re.yaml => admin_orders_{id}_capture.yaml} | 6 +- ...ims.yaml => admin_orders_{id}_claims.yaml} | 6 +- ... admin_orders_{id}_claims_{claim_id}.yaml} | 6 +- ...orders_{id}_claims_{claim_id}_cancel.yaml} | 7 +- ..._{id}_claims_{claim_id}_fulfillments.yaml} | 6 +- ...fulfillments_{fulfillment_id}_cancel.yaml} | 6 +- ...ers_{id}_claims_{claim_id}_shipments.yaml} | 7 +- ...e.yaml => admin_orders_{id}_complete.yaml} | 6 +- ...aml => admin_orders_{id}_fulfillment.yaml} | 6 +- ...fulfillments_{fulfillment_id}_cancel.yaml} | 6 +- ...d}_line-items_{line_item_id}_reserve.yaml} | 6 +- ...und.yaml => admin_orders_{id}_refund.yaml} | 6 +- ...ml => admin_orders_{id}_reservations.yaml} | 8 +- ...urn.yaml => admin_orders_{id}_return.yaml} | 7 +- ...t.yaml => admin_orders_{id}_shipment.yaml} | 6 +- ...> admin_orders_{id}_shipping-methods.yaml} | 6 +- ...waps.yaml => admin_orders_{id}_swaps.yaml} | 6 +- ...n_orders_{id}_swaps_{swap_id}_cancel.yaml} | 7 +- ...rs_{id}_swaps_{swap_id}_fulfillments.yaml} | 7 +- ...fulfillments_{fulfillment_id}_cancel.yaml} | 6 +- ...{id}_swaps_{swap_id}_process-payment.yaml} | 6 +- ...rders_{id}_swaps_{swap_id}_shipments.yaml} | 7 +- ...ml => admin_payment-collections_{id}.yaml} | 92 +- ...n_payment-collections_{id}_authorize.yaml} | 7 +- ...nts_{id}.yaml => admin_payments_{id}.yaml} | 6 +- ....yaml => admin_payments_{id}_capture.yaml} | 6 +- ...d.yaml => admin_payments_{id}_refund.yaml} | 6 +- ...rice-lists.yaml => admin_price-lists.yaml} | 96 +- ..._{id}.yaml => admin_price-lists_{id}.yaml} | 106 +- ... admin_price-lists_{id}_prices_batch.yaml} | 13 +- ...l => admin_price-lists_{id}_products.yaml} | 6 +- ...ts_{id}_products_{product_id}_prices.yaml} | 6 +- ...ts_{id}_variants_{variant_id}_prices.yaml} | 6 +- ...ies.yaml => admin_product-categories.yaml} | 125 +- ...aml => admin_product-categories_{id}.yaml} | 106 +- ...oduct-categories_{id}_products_batch.yaml} | 14 +- ...duct-tags.yaml => admin_product-tags.yaml} | 6 +- ...ct-types.yaml => admin_product-types.yaml} | 6 +- .../{products.yaml => admin_products.yaml} | 96 +- ...age.yaml => admin_products_tag-usage.yaml} | 6 +- ...s_types.yaml => admin_products_types.yaml} | 6 +- ...cts_{id}.yaml => admin_products_{id}.yaml} | 106 +- ...yaml => admin_products_{id}_metadata.yaml} | 6 +- ....yaml => admin_products_{id}_options.yaml} | 6 +- ...in_products_{id}_options_{option_id}.yaml} | 121 +- ...yaml => admin_products_{id}_variants.yaml} | 112 +- ..._products_{id}_variants_{variant_id}.yaml} | 117 +- ...ml => admin_publishable-api-key_{id}.yaml} | 6 +- ...s.yaml => admin_publishable-api-keys.yaml} | 96 +- ...l => admin_publishable-api-keys_{id}.yaml} | 80 +- ...min_publishable-api-keys_{id}_revoke.yaml} | 7 +- ...ishable-api-keys_{id}_sales-channels.yaml} | 7 +- ...e-api-keys_{id}_sales-channels_batch.yaml} | 12 +- .../{regions.yaml => admin_regions.yaml} | 96 +- ...ions_{id}.yaml => admin_regions_{id}.yaml} | 106 +- ...yaml => admin_regions_{id}_countries.yaml} | 6 +- ...egions_{id}_countries_{country_code}.yaml} | 7 +- ...min_regions_{id}_fulfillment-options.yaml} | 7 +- ...n_regions_{id}_fulfillment-providers.yaml} | 7 +- ..._fulfillment-providers_{provider_id}.yaml} | 6 +- ...admin_regions_{id}_payment-providers.yaml} | 7 +- ...{id}_payment-providers_{provider_id}.yaml} | 6 +- ...ervations.yaml => admin_reservations.yaml} | 95 +- ...{id}.yaml => admin_reservations_{id}.yaml} | 120 +- ...reasons.yaml => admin_return-reasons.yaml} | 96 +- ...d}.yaml => admin_return-reasons_{id}.yaml} | 106 +- .../{returns.yaml => admin_returns.yaml} | 6 +- ...el.yaml => admin_returns_{id}_cancel.yaml} | 6 +- ...e.yaml => admin_returns_{id}_receive.yaml} | 6 +- ...hannels.yaml => admin_sales-channels.yaml} | 96 +- ...d}.yaml => admin_sales-channels_{id}.yaml} | 106 +- ...n_sales-channels_{id}_products_batch.yaml} | 14 +- ..._sales-channels_{id}_stock-locations.yaml} | 15 +- ...tions.yaml => admin_shipping-options.yaml} | 96 +- ....yaml => admin_shipping-options_{id}.yaml} | 106 +- ...iles.yaml => admin_shipping-profiles.yaml} | 96 +- ...yaml => admin_shipping-profiles_{id}.yaml} | 106 +- ...ations.yaml => admin_stock-locations.yaml} | 118 +- ...}.yaml => admin_stock-locations_{id}.yaml} | 106 +- .../paths/{store.yaml => admin_store.yaml} | 10 +- ...aml => admin_store_currencies_{code}.yaml} | 8 +- ...aml => admin_store_payment-providers.yaml} | 4 +- ...rs.yaml => admin_store_tax-providers.yaml} | 4 +- .../paths/{swaps.yaml => admin_swaps.yaml} | 6 +- ...{swaps_{id}.yaml => admin_swaps_{id}.yaml} | 6 +- .../{tax-rates.yaml => admin_tax-rates.yaml} | 136 +- ...es_{id}.yaml => admin_tax-rates_{id}.yaml} | 106 +- ...n_tax-rates_{id}_product-types_batch.yaml} | 14 +- ... admin_tax-rates_{id}_products_batch.yaml} | 13 +- ...ax-rates_{id}_shipping-options_batch.yaml} | 14 +- .../{uploads.yaml => admin_uploads.yaml} | 14 +- ...l.yaml => admin_uploads_download-url.yaml} | 6 +- ...cted.yaml => admin_uploads_protected.yaml} | 6 +- .../paths/{users.yaml => admin_users.yaml} | 96 +- ...n.yaml => admin_users_password-token.yaml} | 6 +- ...d.yaml => admin_users_reset-password.yaml} | 6 +- ...{users_{id}.yaml => admin_users_{id}.yaml} | 106 +- .../{variants.yaml => admin_variants.yaml} | 6 +- docs/api/admin/paths/admin_variants_{id}.yaml | 62 + ...aml => admin_variants_{id}_inventory.yaml} | 6 +- docs/api/admin/paths/draft-orders_{id}.yaml | 94 - docs/api/store.oas.json | 15557 ++++++ docs/api/store.oas.yaml | 12229 +++++ .../JavaScript/{auth => store_auth}/get.js | 0 .../JavaScript/{auth => store_auth}/post.js | 0 .../get.js | 0 .../JavaScript/{carts => store_carts}/post.js | 0 .../{carts_{id} => store_carts_{id}}/get.js | 0 .../{carts_{id} => store_carts_{id}}/post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 1 + .../post.js | 0 .../post.js | 0 .../{collections => store_collections}/get.js | 0 .../get.js | 0 .../{customers => store_customers}/post.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../delete.js | 0 .../post.js | 0 .../get.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../get.js | 0 .../post.js | 0 .../post.js | 0 .../{orders => store_orders}/get.js | 0 .../post.js | 0 .../get.js | 0 .../post.js | 0 .../{orders_{id} => store_orders_{id}}/get.js | 0 .../get.js | 0 .../post.js | 2 + .../post.js | 3 + .../post.js | 0 .../post.js | 0 .../post.js | 0 .../get.js | 0 .../get.js | 0 .../get.js | 0 .../get.js | 0 .../{products => store_products}/get.js | 0 .../post.js | 0 .../get.js | 0 .../{regions => store_regions}/get.js | 0 .../get.js | 0 .../get.js | 0 .../get.js | 0 .../{returns => store_returns}/post.js | 0 .../get.js | 0 .../get.js | 0 .../JavaScript/{swaps => store_swaps}/post.js | 0 .../get.js | 0 .../Shell/{auth => store_auth}/delete.sh | 0 .../Shell/{auth => store_auth}/get.sh | 0 .../Shell/{auth => store_auth}/post.sh | 0 .../get.sh | 0 .../Shell/{carts => store_carts}/post.sh | 0 .../{carts_{id} => store_carts_{id}}/get.sh | 0 .../{carts_{id} => store_carts_{id}}/post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../{collections => store_collections}/get.sh | 0 .../get.sh | 0 .../{customers => store_customers}/post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../delete.sh | 0 .../post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../Shell/{orders => store_orders}/get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../post.sh | 0 .../{orders_{id} => store_orders_{id}}/get.sh | 0 .../get.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../get.sh | 0 .../get.sh | 0 .../Shell/{products => store_products}/get.sh | 0 .../post.sh | 0 .../get.sh | 0 .../Shell/{regions => store_regions}/get.sh | 0 .../get.sh | 0 .../get.sh | 0 .../get.sh | 0 .../Shell/{returns => store_returns}/post.sh | 0 .../get.sh | 0 .../get.sh | 0 .../Shell/{swaps => store_swaps}/post.sh | 0 .../get.sh | 0 .../Shell/{variants => store_variants}/get.sh | 0 .../get.sh | 0 .../schemas/AddressCreatePayload.yaml | 57 + ...AddressFields.yaml => AddressPayload.yaml} | 37 +- docs/api/store/components/schemas/Cart.yaml | 4 + .../components/schemas/ExtendedStoreDTO.yaml | 17 + .../schemas/FeatureFlagsResponse.yaml | 13 + .../store/components/schemas/LineItem.yaml | 4 + .../schemas/LineItemAdjustment.yaml | 2 +- .../components/schemas/ModulesResponse.yaml | 13 + docs/api/store/components/schemas/Order.yaml | 6 +- .../schemas/PricedShippingOption.yaml | 27 + .../components/schemas/ProductCategory.yaml | 10 +- .../schemas/StockLocationExpandedDTO.yaml | 6 + .../components/schemas/StoreAuthRes.yaml | 8 + .../StoreCartShippingOptionsListRes.yaml | 13 + .../components/schemas/StoreCartsRes.yaml | 57 + .../schemas/StoreCollectionsListRes.yaml | 5 + .../schemas/StoreCollectionsRes.yaml | 2 + .../schemas/StoreCompleteCartRes.yaml | 3 + .../schemas/StoreCustomersListOrdersRes.yaml | 92 +- .../StoreCustomersListPaymentMethodsRes.yaml | 9 +- .../components/schemas/StoreCustomersRes.yaml | 7 + .../StoreCustomersResetPasswordRes.yaml | 6 + .../schemas/StoreGetAuthEmailRes.yaml | 4 +- .../StoreGetProductCategoriesCategoryRes.yaml | 7 + .../schemas/StoreGetProductCategoriesRes.yaml | 25 + .../components/schemas/StoreGiftCardsRes.yaml | 2 + .../schemas/StoreOrderEditsRes.yaml | 37 + .../components/schemas/StoreOrdersRes.yaml | 82 + .../schemas/StorePaymentCollectionsRes.yaml | 10 + .../StorePaymentCollectionsSessionRes.yaml | 2 + .../schemas/StorePostCartsCartReq.yaml | 4 +- ...tCustomersCustomerAddressesAddressReq.yaml | 2 +- ...torePostCustomersCustomerAddressesReq.yaml | 11 +- .../StorePostCustomersCustomerReq.yaml | 2 +- .../schemas/StorePostSearchRes.yaml | 18 +- ...tRes.yaml => StoreProductTagsListRes.yaml} | 9 +- .../schemas/StoreProductTypesListRes.yaml | 5 + .../schemas/StoreProductsListRes.yaml | 17 + .../components/schemas/StoreProductsRes.yaml | 14 + .../schemas/StoreRegionsListRes.yaml | 11 + .../components/schemas/StoreRegionsRes.yaml | 11 + .../schemas/StoreReturnReasonsListRes.yaml | 7 + .../schemas/StoreReturnReasonsRes.yaml | 7 + .../components/schemas/StoreReturnsRes.yaml | 9 + .../schemas/StoreShippingOptionsListRes.yaml | 8 +- .../components/schemas/StoreSwapsRes.yaml | 17 + .../schemas/StoreVariantsListRes.yaml | 8 + .../components/schemas/StoreVariantsRes.yaml | 8 + docs/api/store/openapi.yaml | 254 +- .../paths/{auth.yaml => store_auth.yaml} | 84 +- ...h_{email}.yaml => store_auth_{email}.yaml} | 4 +- .../paths/{carts.yaml => store_carts.yaml} | 6 +- ...{carts_{id}.yaml => store_carts_{id}.yaml} | 12 +- ...te.yaml => store_carts_{id}_complete.yaml} | 6 +- ...=> store_carts_{id}_discounts_{code}.yaml} | 6 +- ....yaml => store_carts_{id}_line-items.yaml} | 6 +- ...tore_carts_{id}_line-items_{line_id}.yaml} | 102 +- ... => store_carts_{id}_payment-session.yaml} | 6 +- ...=> store_carts_{id}_payment-sessions.yaml} | 6 +- ..._{id}_payment-sessions_{provider_id}.yaml} | 108 +- ...yment-sessions_{provider_id}_refresh.yaml} | 6 +- ...=> store_carts_{id}_shipping-methods.yaml} | 6 +- ...taxes.yaml => store_carts_{id}_taxes.yaml} | 4 +- ...ollections.yaml => store_collections.yaml} | 15 +- ..._{id}.yaml => store_collections_{id}.yaml} | 6 +- .../{customers.yaml => store_customers.yaml} | 6 +- ...tomers_me.yaml => store_customers_me.yaml} | 12 +- ...yaml => store_customers_me_addresses.yaml} | 6 +- ..._customers_me_addresses_{address_id}.yaml} | 103 +- ...rs.yaml => store_customers_me_orders.yaml} | 6 +- ...> store_customers_me_payment-methods.yaml} | 6 +- ...ml => store_customers_password-reset.yaml} | 8 +- ...ml => store_customers_password-token.yaml} | 6 +- ...ode}.yaml => store_gift-cards_{code}.yaml} | 6 +- ..._{id}.yaml => store_order-edits_{id}.yaml} | 6 +- ...l => store_order-edits_{id}_complete.yaml} | 6 +- ...ml => store_order-edits_{id}_decline.yaml} | 6 +- .../paths/{orders.yaml => store_orders.yaml} | 6 +- ...=> store_orders_batch_customer_token.yaml} | 6 +- ....yaml => store_orders_cart_{cart_id}.yaml} | 6 +- ...aml => store_orders_customer_confirm.yaml} | 6 +- ...rders_{id}.yaml => store_orders_{id}.yaml} | 6 +- ...ml => store_payment-collections_{id}.yaml} | 8 +- ...re_payment-collections_{id}_sessions.yaml} | 7 +- ...ment-collections_{id}_sessions_batch.yaml} | 7 +- ...ctions_{id}_sessions_batch_authorize.yaml} | 6 +- ...llections_{id}_sessions_{session_id}.yaml} | 6 +- ...{id}_sessions_{session_id}_authorize.yaml} | 6 +- ...ies.yaml => store_product-categories.yaml} | 15 +- ...aml => store_product-categories_{id}.yaml} | 8 +- ...duct-tags.yaml => store_product-tags.yaml} | 23 +- ...ct-types.yaml => store_product-types.yaml} | 6 +- .../{products.yaml => store_products.yaml} | 6 +- ...search.yaml => store_products_search.yaml} | 6 +- ...cts_{id}.yaml => store_products_{id}.yaml} | 6 +- .../{regions.yaml => store_regions.yaml} | 6 +- ...ions_{id}.yaml => store_regions_{id}.yaml} | 6 +- ...reasons.yaml => store_return-reasons.yaml} | 6 +- ...d}.yaml => store_return-reasons_{id}.yaml} | 6 +- .../{returns.yaml => store_returns.yaml} | 6 +- ...tions.yaml => store_shipping-options.yaml} | 6 +- ... => store_shipping-options_{cart_id}.yaml} | 8 +- .../paths/{swaps.yaml => store_swaps.yaml} | 6 +- ...rt_id}.yaml => store_swaps_{cart_id}.yaml} | 6 +- .../{variants.yaml => store_variants.yaml} | 4 +- ....yaml => store_variants_{variant_id}.yaml} | 4 +- 1031 files changed, 104669 insertions(+), 4209 deletions(-) create mode 100644 docs/api/admin.oas.json create mode 100644 docs/api/admin.oas.yaml rename docs/api/admin/code_samples/JavaScript/{auth => admin_auth}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{auth => admin_auth}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{auth => admin_auth}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{batch-jobs => admin_batch-jobs}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{batch-jobs => admin_batch-jobs}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{batch-jobs_{id} => admin_batch-jobs_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{batch-jobs_{id}_cancel => admin_batch-jobs_{id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{batch-jobs_{id}_confirm => admin_batch-jobs_{id}_confirm}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{collections => admin_collections}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{collections => admin_collections}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{collections_{id} => admin_collections_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{collections_{id} => admin_collections_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{collections_{id} => admin_collections_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{currencies => admin_currencies}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{currencies_{code} => admin_currencies_{code}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups => admin_customer-groups}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups => admin_customer-groups}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id} => admin_customer-groups_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id} => admin_customer-groups_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id} => admin_customer-groups_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id}_customers => admin_customer-groups_{id}_customers}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id}_customers_batch => admin_customer-groups_{id}_customers_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{customer-groups_{id}_customers_batch => admin_customer-groups_{id}_customers_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{customers => admin_customers}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{customers => admin_customers}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{customers_{id} => admin_customers_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{customers_{id} => admin_customers_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts => admin_discounts}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts => admin_discounts}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_code_{code} => admin_discounts_code_{code}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions => admin_discounts_{discount_id}_conditions}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions_{condition_id}_batch => admin_discounts_{discount_id}_conditions_{condition_id}_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{discount_id}_conditions_{condition_id}_batch => admin_discounts_{discount_id}_conditions_{condition_id}_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id} => admin_discounts_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id} => admin_discounts_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id} => admin_discounts_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id}_dynamic-codes => admin_discounts_{id}_dynamic-codes}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id}_dynamic-codes_{code} => admin_discounts_{id}_dynamic-codes_{code}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id}_regions_{region_id} => admin_discounts_{id}_regions_{region_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{discounts_{id}_regions_{region_id} => admin_discounts_{id}_regions_{region_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders => admin_draft-orders}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders => admin_draft-orders}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id} => admin_draft-orders_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id} => admin_draft-orders_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id}_line-items => admin_draft-orders_{id}_line-items}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id}_line-items_{line_id} => admin_draft-orders_{id}_line-items_{line_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id}_line-items_{line_id} => admin_draft-orders_{id}_line-items_{line_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{draft-orders_{id}_pay => admin_draft-orders_{id}_pay}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{gift-cards => admin_gift-cards}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{gift-cards => admin_gift-cards}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{gift-cards_{id} => admin_gift-cards_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{gift-cards_{id} => admin_gift-cards_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{gift-cards_{id} => admin_gift-cards_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items => admin_inventory-items}/get.js (100%) create mode 100644 docs/api/admin/code_samples/JavaScript/admin_inventory-items/post.js rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id} => admin_inventory-items_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id} => admin_inventory-items_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id} => admin_inventory-items_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id}_location-levels => admin_inventory-items_{id}_location-levels}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id}_location-levels => admin_inventory-items_{id}_location-levels}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id}_location-levels_{location_id} => admin_inventory-items_{id}_location-levels_{location_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{inventory-items_{id}_location-levels_{location_id} => admin_inventory-items_{id}_location-levels_{location_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{invites => admin_invites}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{invites => admin_invites}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{invites_accept => admin_invites_accept}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{invites_{invite_id} => admin_invites_{invite_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{invites_{invite_id}_resend => admin_invites_{invite_id}_resend}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{notes => admin_notes}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{notes => admin_notes}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{notes_{id} => admin_notes_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{notes_{id} => admin_notes_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{notes_{id} => admin_notes_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{notifications => admin_notifications}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{notifications_{id}_resend => admin_notifications_{id}_resend}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits => admin_order-edits}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits => admin_order-edits}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id} => admin_order-edits_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id} => admin_order-edits_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id} => admin_order-edits_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_cancel => admin_order-edits_{id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_changes_{change_id} => admin_order-edits_{id}_changes_{change_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_confirm => admin_order-edits_{id}_confirm}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_items => admin_order-edits_{id}_items}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_items_{item_id} => admin_order-edits_{id}_items_{item_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_items_{item_id} => admin_order-edits_{id}_items_{item_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order-edits_{id}_request => admin_order-edits_{id}_request}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders => admin_orders}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id} => admin_orders_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id} => admin_orders_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_archive => admin_orders_{id}_archive}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_cancel => admin_orders_{id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_capture => admin_orders_{id}_capture}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order_{id}_claims => admin_orders_{id}_claims}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order_{id}_claims_{claim_id} => admin_orders_{id}_claims_{claim_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_claims_{claim_id}_cancel => admin_orders_{id}_claims_{claim_id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_claims_{claim_id}_fulfillments => admin_orders_{id}_claims_{claim_id}_fulfillments}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_claims_{claim_id}_shipments => admin_orders_{id}_claims_{claim_id}_shipments}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_complete => admin_orders_{id}_complete}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_fulfillment => admin_orders_{id}_fulfillment}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_fulfillments_{fulfillment_id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_line-items_{line_item_id}_reserve => admin_orders_{id}_line-items_{line_item_id}_reserve}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_refund => admin_orders_{id}_refund}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_reservations => admin_orders_{id}_reservations}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_return => admin_orders_{id}_return}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_shipment => admin_orders_{id}_shipment}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_shipping-methods => admin_orders_{id}_shipping-methods}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{order_{id}_swaps => admin_orders_{id}_swaps}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_swaps_{swap_id}_cancel => admin_orders_{id}_swaps_{swap_id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_swaps_{swap_id}_fulfillments => admin_orders_{id}_swaps_{swap_id}_fulfillments}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_swaps_{swap_id}_process-payment => admin_orders_{id}_swaps_{swap_id}_process-payment}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{orders_{id}_swaps_{swap_id}_shipments => admin_orders_{id}_swaps_{swap_id}_shipments}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{payment-collections_{id} => admin_payment-collections_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{payment-collections_{id} => admin_payment-collections_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{payment-collections_{id} => admin_payment-collections_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{payment-collections_{id}_authorize => admin_payment-collections_{id}_authorize}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{payments_{id} => admin_payments_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{payments_{id}_capture => admin_payments_{id}_capture}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{payments_{id}_refund => admin_payments_{id}_refund}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists => admin_price-lists}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists => admin_price-lists}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id} => admin_price-lists_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id} => admin_price-lists_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id} => admin_price-lists_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id}_prices_batch => admin_price-lists_{id}_prices_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id}_prices_batch => admin_price-lists_{id}_prices_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id}_products => admin_price-lists_{id}_products}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id}_products_{product_id}_prices => admin_price-lists_{id}_products_{product_id}_prices}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{price-lists_{id}_variants_{variant_id}_prices => admin_price-lists_{id}_variants_{variant_id}_prices}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories => admin_product-categories}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories => admin_product-categories}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories_{id} => admin_product-categories_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories_{id} => admin_product-categories_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories_{id} => admin_product-categories_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories_{id}_products_batch => admin_product-categories_{id}_products_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-categories_{id}_products_batch => admin_product-categories_{id}_products_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-tags => admin_product-tags}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{product-types => admin_product-types}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{products => admin_products}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{products => admin_products}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_tag-usage => admin_products_tag-usage}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_types => admin_products_types}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id} => admin_products_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id} => admin_products_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id} => admin_products_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_metadata => admin_products_{id}_metadata}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_options => admin_products_{id}_options}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_options_{option_id} => admin_products_{id}_options_{option_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_options_{option_id} => admin_products_{id}_options_{option_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_variants => admin_products_{id}_variants}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_variants_{variant_id} => admin_products_{id}_variants_{variant_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{products_{id}_variants_{variant_id} => admin_products_{id}_variants_{variant_id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-key_{id} => admin_publishable-api-key_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys => admin_publishable-api-keys}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys => admin_publishable-api-keys}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id} => admin_publishable-api-keys_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id} => admin_publishable-api-keys_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id}_revoke => admin_publishable-api-keys_{id}_revoke}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id}_sales-channels => admin_publishable-api-keys_{id}_sales-channels}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id}_sales-channels_batch => admin_publishable-api-keys_{id}_sales-channels_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{publishable-api-keys_{id}_sales-channels_batch => admin_publishable-api-keys_{id}_sales-channels_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions => admin_regions}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions => admin_regions}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id} => admin_regions_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id} => admin_regions_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id} => admin_regions_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_countries => admin_regions_{id}_countries}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_countries_{country_code} => admin_regions_{id}_countries_{country_code}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_fulfillment-options => admin_regions_{id}_fulfillment-options}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_fulfillment-providers => admin_regions_{id}_fulfillment-providers}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_fulfillment-providers_{provider_id} => admin_regions_{id}_fulfillment-providers_{provider_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_payment-providers => admin_regions_{id}_payment-providers}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{regions_{id}_payment-providers_{provider_id} => admin_regions_{id}_payment-providers_{provider_id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{reservations => admin_reservations}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{reservations_{id} => admin_reservations_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{reservations_{id} => admin_reservations_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{reservations_{id} => admin_reservations_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{return-reasons => admin_return-reasons}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{return-reasons => admin_return-reasons}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{return-reasons_{id} => admin_return-reasons_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{return-reasons_{id} => admin_return-reasons_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{return-reasons_{id} => admin_return-reasons_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{returns => admin_returns}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{returns_{id}_cancel => admin_returns_{id}_cancel}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{returns_{id}_receive => admin_returns_{id}_receive}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels => admin_sales-channels}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels => admin_sales-channels}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id} => admin_sales-channels_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id} => admin_sales-channels_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id} => admin_sales-channels_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id}_products_batch => admin_sales-channels_{id}_products_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id}_products_batch => admin_sales-channels_{id}_products_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id}_stock-locations => admin_sales-channels_{id}_stock-locations}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{sales-channels_{id}_stock-locations => admin_sales-channels_{id}_stock-locations}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-options => admin_shipping-options}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-options => admin_shipping-options}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-options_{id} => admin_shipping-options_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-options_{id} => admin_shipping-options_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-options_{id} => admin_shipping-options_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-profiles => admin_shipping-profiles}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-profiles => admin_shipping-profiles}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{stock-locations => admin_stock-locations}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{stock-locations => admin_stock-locations}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{stock-locations_{id} => admin_stock-locations_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{stock-locations_{id} => admin_stock-locations_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{stock-locations_{id} => admin_stock-locations_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{store => admin_store}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{store => admin_store}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{store_currencies_{code} => admin_store_currencies_{code}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{store_currencies_{code} => admin_store_currencies_{code}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{store_payment-providers => admin_store_payment-providers}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{store_tax-providers => admin_store_tax-providers}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{swaps => admin_swaps}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{swaps_{id} => admin_swaps_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates => admin_tax-rates}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates => admin_tax-rates}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id} => admin_tax-rates_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id} => admin_tax-rates_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id} => admin_tax-rates_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_product-types_batch => admin_tax-rates_{id}_product-types_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_product-types_batch => admin_tax-rates_{id}_product-types_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_products_batch => admin_tax-rates_{id}_products_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_products_batch => admin_tax-rates_{id}_products_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_shipping-options_batch => admin_tax-rates_{id}_shipping-options_batch}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{tax-rates_{id}_shipping-options_batch => admin_tax-rates_{id}_shipping-options_batch}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{uploads => admin_uploads}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{uploads => admin_uploads}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{uploads_download-url => admin_uploads_download-url}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{uploads_protected => admin_uploads_protected}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{users => admin_users}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{users => admin_users}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{users_password-token => admin_users_password-token}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{users_reset-password => admin_users_reset-password}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{users_{id} => admin_users_{id}}/delete.js (100%) rename docs/api/admin/code_samples/JavaScript/{users_{id} => admin_users_{id}}/get.js (100%) rename docs/api/admin/code_samples/JavaScript/{users_{id} => admin_users_{id}}/post.js (100%) rename docs/api/admin/code_samples/JavaScript/{variants => admin_variants}/get.js (100%) create mode 100644 docs/api/admin/code_samples/JavaScript/admin_variants_{id}/get.js rename docs/api/admin/code_samples/JavaScript/{variants_{id}_inventory => admin_variants_{id}_inventory}/get.js (100%) rename docs/api/admin/code_samples/Shell/{apps => admin_apps}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{apps_authorizations => admin_apps_authorizations}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{auth => admin_auth}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{auth => admin_auth}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{auth => admin_auth}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{batch-jobs => admin_batch-jobs}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{batch-jobs => admin_batch-jobs}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{batch-jobs_{id} => admin_batch-jobs_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{batch-jobs_{id}_cancel => admin_batch-jobs_{id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{batch-jobs_{id}_confirm => admin_batch-jobs_{id}_confirm}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{collections => admin_collections}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{collections => admin_collections}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{collections_{id} => admin_collections_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{collections_{id} => admin_collections_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{collections_{id} => admin_collections_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{collections_{id}_products_batch => admin_collections_{id}_products_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{collections_{id}_products_batch => admin_collections_{id}_products_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{currencies => admin_currencies}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{currencies_{code} => admin_currencies_{code}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups => admin_customer-groups}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups => admin_customer-groups}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id} => admin_customer-groups_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id} => admin_customer-groups_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id} => admin_customer-groups_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id}_customers => admin_customer-groups_{id}_customers}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id}_customers_batch => admin_customer-groups_{id}_customers_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{customer-groups_{id}_customers_batch => admin_customer-groups_{id}_customers_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{customers => admin_customers}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{customers => admin_customers}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{customers_{id} => admin_customers_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{customers_{id} => admin_customers_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts => admin_discounts}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts => admin_discounts}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_code_{code} => admin_discounts_code_{code}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions => admin_discounts_{discount_id}_conditions}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions_{condition_id} => admin_discounts_{discount_id}_conditions_{condition_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions_{condition_id}_batch => admin_discounts_{discount_id}_conditions_{condition_id}_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{discount_id}_conditions_{condition_id}_batch => admin_discounts_{discount_id}_conditions_{condition_id}_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id} => admin_discounts_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id} => admin_discounts_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id} => admin_discounts_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id}_dynamic-codes => admin_discounts_{id}_dynamic-codes}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id}_dynamic-codes_{code} => admin_discounts_{id}_dynamic-codes_{code}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id}_regions_{region_id} => admin_discounts_{id}_regions_{region_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{discounts_{id}_regions_{region_id} => admin_discounts_{id}_regions_{region_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders => admin_draft-orders}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders => admin_draft-orders}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id} => admin_draft-orders_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id} => admin_draft-orders_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id}_line-items => admin_draft-orders_{id}_line-items}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id}_line-items_{line_id} => admin_draft-orders_{id}_line-items_{line_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id}_line-items_{line_id} => admin_draft-orders_{id}_line-items_{line_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{draft-orders_{id}_pay => admin_draft-orders_{id}_pay}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{gift-cards => admin_gift-cards}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{gift-cards => admin_gift-cards}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{gift-cards_{id} => admin_gift-cards_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{gift-cards_{id} => admin_gift-cards_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{gift-cards_{id} => admin_gift-cards_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items => admin_inventory-items}/get.sh (100%) create mode 100644 docs/api/admin/code_samples/Shell/admin_inventory-items/post.sh rename docs/api/admin/code_samples/Shell/{inventory-items_{id} => admin_inventory-items_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id} => admin_inventory-items_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id} => admin_inventory-items_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id}_location-levels => admin_inventory-items_{id}_location-levels}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id}_location-levels => admin_inventory-items_{id}_location-levels}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id}_location-levels_{location_id} => admin_inventory-items_{id}_location-levels_{location_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{inventory-items_{id}_location-levels_{location_id} => admin_inventory-items_{id}_location-levels_{location_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{invites => admin_invites}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{invites => admin_invites}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{invites_accept => admin_invites_accept}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{invites_{invite_id} => admin_invites_{invite_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{invites_{invite_id}_resend => admin_invites_{invite_id}_resend}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{notes => admin_notes}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{notes => admin_notes}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{notes_{id} => admin_notes_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{notes_{id} => admin_notes_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{notes_{id} => admin_notes_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{notifications => admin_notifications}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{notifications_{id}_resend => admin_notifications_{id}_resend}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits => admin_order-edits}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits => admin_order-edits}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id} => admin_order-edits_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id} => admin_order-edits_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id} => admin_order-edits_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_cancel => admin_order-edits_{id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_changes_{change_id} => admin_order-edits_{id}_changes_{change_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_confirm => admin_order-edits_{id}_confirm}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_items => admin_order-edits_{id}_items}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_items_{item_id} => admin_order-edits_{id}_items_{item_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_items_{item_id} => admin_order-edits_{id}_items_{item_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order-edits_{id}_request => admin_order-edits_{id}_request}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders => admin_orders}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id} => admin_orders_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id} => admin_orders_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_archive => admin_orders_{id}_archive}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_cancel => admin_orders_{id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_capture => admin_orders_{id}_capture}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order_{id}_claims => admin_orders_{id}_claims}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order_{id}_claims_{claim_id} => admin_orders_{id}_claims_{claim_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_claims_{claim_id}_cancel => admin_orders_{id}_claims_{claim_id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_claims_{claim_id}_fulfillments => admin_orders_{id}_claims_{claim_id}_fulfillments}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_claims_{claim_id}_shipments => admin_orders_{id}_claims_{claim_id}_shipments}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_complete => admin_orders_{id}_complete}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_fulfillment => admin_orders_{id}_fulfillment}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_fulfillments_{fulfillment_id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_line-items_{line_item_id}_reserve => admin_orders_{id}_line-items_{line_item_id}_reserve}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_refund => admin_orders_{id}_refund}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_reservations => admin_orders_{id}_reservations}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_return => admin_orders_{id}_return}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_shipment => admin_orders_{id}_shipment}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_shipping-methods => admin_orders_{id}_shipping-methods}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{order_{id}_swaps => admin_orders_{id}_swaps}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_swaps_{swap_id}_cancel => admin_orders_{id}_swaps_{swap_id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_swaps_{swap_id}_fulfillments => admin_orders_{id}_swaps_{swap_id}_fulfillments}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel => admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_swaps_{swap_id}_process-payment => admin_orders_{id}_swaps_{swap_id}_process-payment}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{orders_{id}_swaps_{swap_id}_shipments => admin_orders_{id}_swaps_{swap_id}_shipments}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{payment-collections_{id} => admin_payment-collections_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{payment-collections_{id} => admin_payment-collections_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{payment-collections_{id} => admin_payment-collections_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{payment-collections_{id}_authorize => admin_payment-collections_{id}_authorize}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{payments_{id} => admin_payments_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{payments_{id}_capture => admin_payments_{id}_capture}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{payments_{id}_refund => admin_payments_{id}_refund}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists => admin_price-lists}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists => admin_price-lists}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id} => admin_price-lists_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id} => admin_price-lists_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id} => admin_price-lists_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id}_prices_batch => admin_price-lists_{id}_prices_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id}_prices_batch => admin_price-lists_{id}_prices_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id}_products => admin_price-lists_{id}_products}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id}_products_{product_id}_prices => admin_price-lists_{id}_products_{product_id}_prices}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{price-lists_{id}_variants_{variant_id}_prices => admin_price-lists_{id}_variants_{variant_id}_prices}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories => admin_product-categories}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories => admin_product-categories}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories_{id} => admin_product-categories_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories_{id} => admin_product-categories_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories_{id} => admin_product-categories_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories_{id}_products_batch => admin_product-categories_{id}_products_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{product-categories_{id}_products_batch => admin_product-categories_{id}_products_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{product-tags => admin_product-tags}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{product-types => admin_product-types}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products => admin_products}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products => admin_products}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_tag-usage => admin_products_tag-usage}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products_types => admin_products_types}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id} => admin_products_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id} => admin_products_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id} => admin_products_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_metadata => admin_products_{id}_metadata}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_options => admin_products_{id}_options}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_options_{option_id} => admin_products_{id}_options_{option_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_options_{option_id} => admin_products_{id}_options_{option_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_variants => admin_products_{id}_variants}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_variants => admin_products_{id}_variants}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_variants_{variant_id} => admin_products_{id}_variants_{variant_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{products_{id}_variants_{variant_id} => admin_products_{id}_variants_{variant_id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-key_{id} => admin_publishable-api-key_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys => admin_publishable-api-keys}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys => admin_publishable-api-keys}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id} => admin_publishable-api-keys_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id} => admin_publishable-api-keys_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id}_revoke => admin_publishable-api-keys_{id}_revoke}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id}_sales-channels => admin_publishable-api-keys_{id}_sales-channels}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id}_sales-channels_batch => admin_publishable-api-keys_{id}_sales-channels_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{publishable-api-keys_{id}_sales-channels_batch => admin_publishable-api-keys_{id}_sales-channels_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions => admin_regions}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{regions => admin_regions}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id} => admin_regions_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id} => admin_regions_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id} => admin_regions_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_countries => admin_regions_{id}_countries}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_countries_{country_code} => admin_regions_{id}_countries_{country_code}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_fulfillment-options => admin_regions_{id}_fulfillment-options}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_fulfillment-providers => admin_regions_{id}_fulfillment-providers}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_fulfillment-providers_{provider_id} => admin_regions_{id}_fulfillment-providers_{provider_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_payment-providers => admin_regions_{id}_payment-providers}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{regions_{id}_payment-providers_{provider_id} => admin_regions_{id}_payment-providers_{provider_id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{reservations => admin_reservations}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{reservations => admin_reservations}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{reservations_{id} => admin_reservations_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{reservations_{id} => admin_reservations_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{reservations_{id} => admin_reservations_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{return-reasons => admin_return-reasons}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{return-reasons => admin_return-reasons}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{return-reasons_{id} => admin_return-reasons_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{return-reasons_{id} => admin_return-reasons_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{return-reasons_{id} => admin_return-reasons_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{returns => admin_returns}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{returns_{id}_cancel => admin_returns_{id}_cancel}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{returns_{id}_receive => admin_returns_{id}_receive}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels => admin_sales-channels}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels => admin_sales-channels}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id} => admin_sales-channels_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id} => admin_sales-channels_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id} => admin_sales-channels_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id}_products_batch => admin_sales-channels_{id}_products_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id}_products_batch => admin_sales-channels_{id}_products_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id}_stock-locations => admin_sales-channels_{id}_stock-locations}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{sales-channels_{id}_stock-locations => admin_sales-channels_{id}_stock-locations}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-options => admin_shipping-options}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-options => admin_shipping-options}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-options_{id} => admin_shipping-options_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-options_{id} => admin_shipping-options_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-options_{id} => admin_shipping-options_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-profiles => admin_shipping-profiles}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-profiles => admin_shipping-profiles}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{shipping-profiles_{id} => admin_shipping-profiles_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{stock-locations => admin_stock-locations}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{stock-locations => admin_stock-locations}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{stock-locations_{id} => admin_stock-locations_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{stock-locations_{id} => admin_stock-locations_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{stock-locations_{id} => admin_stock-locations_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{store => admin_store}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{store => admin_store}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{store_currencies_{code} => admin_store_currencies_{code}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{store_currencies_{code} => admin_store_currencies_{code}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{store_payment-providers => admin_store_payment-providers}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{store_tax-providers => admin_store_tax-providers}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{swaps => admin_swaps}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{swaps_{id} => admin_swaps_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates => admin_tax-rates}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates => admin_tax-rates}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id} => admin_tax-rates_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id} => admin_tax-rates_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id} => admin_tax-rates_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_product-types_batch => admin_tax-rates_{id}_product-types_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_product-types_batch => admin_tax-rates_{id}_product-types_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_products_batch => admin_tax-rates_{id}_products_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_products_batch => admin_tax-rates_{id}_products_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_shipping-options_batch => admin_tax-rates_{id}_shipping-options_batch}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{tax-rates_{id}_shipping-options_batch => admin_tax-rates_{id}_shipping-options_batch}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{uploads => admin_uploads}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{uploads => admin_uploads}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{uploads_download-url => admin_uploads_download-url}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{uploads_protected => admin_uploads_protected}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{users => admin_users}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{users => admin_users}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{users_password-token => admin_users_password-token}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{users_reset-password => admin_users_reset-password}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{users_{id} => admin_users_{id}}/delete.sh (100%) rename docs/api/admin/code_samples/Shell/{users_{id} => admin_users_{id}}/get.sh (100%) rename docs/api/admin/code_samples/Shell/{users_{id} => admin_users_{id}}/post.sh (100%) rename docs/api/admin/code_samples/Shell/{variants => admin_variants}/get.sh (100%) create mode 100644 docs/api/admin/code_samples/Shell/admin_variants_{id}/get.sh rename docs/api/admin/code_samples/Shell/{variants_{id}_inventory => admin_variants_{id}_inventory}/get.sh (100%) create mode 100644 docs/api/admin/components/schemas/AddressCreatePayload.yaml rename docs/api/admin/components/schemas/{AddressFields.yaml => AddressPayload.yaml} (94%) create mode 100644 docs/api/admin/components/schemas/AdminExtendedStoresRes.yaml create mode 100644 docs/api/admin/components/schemas/AdminPostInventoryItemsReq.yaml create mode 100644 docs/api/admin/components/schemas/AdminReservationsDeleteRes.yaml rename docs/api/admin/components/schemas/{AdminGetReservationReservationsReq.yaml => AdminReservationsListRes.yaml} (85%) create mode 100644 docs/api/admin/components/schemas/AdminReservationsRes.yaml create mode 100644 docs/api/admin/components/schemas/AdminVariantsRes.yaml create mode 100644 docs/api/admin/components/schemas/ExtendedStoreDTO.yaml create mode 100644 docs/api/admin/components/schemas/FeatureFlagsResponse.yaml create mode 100644 docs/api/admin/components/schemas/ModulesResponse.yaml create mode 100644 docs/api/admin/components/schemas/PricedShippingOption.yaml create mode 100644 docs/api/admin/components/schemas/ResponseInventoryItem.yaml create mode 100644 docs/api/admin/components/schemas/StockLocationExpandedDTO.yaml create mode 100644 docs/api/admin/components/schemas/VariantInventory.yaml rename docs/api/admin/paths/{apps.yaml => admin_apps.yaml} (92%) rename docs/api/admin/paths/{apps_authorizations.yaml => admin_apps_authorizations.yaml} (92%) rename docs/api/admin/paths/{auth.yaml => admin_auth.yaml} (89%) rename docs/api/admin/paths/{batch-jobs.yaml => admin_batch-jobs.yaml} (96%) rename docs/api/admin/paths/{batch-jobs_{id}.yaml => admin_batch-jobs_{id}.yaml} (87%) rename docs/api/admin/paths/{batch-jobs_{id}_cancel.yaml => admin_batch-jobs_{id}_cancel.yaml} (86%) rename docs/api/admin/paths/{batch-jobs_{id}_confirm.yaml => admin_batch-jobs_{id}_confirm.yaml} (86%) rename docs/api/admin/paths/{collections.yaml => admin_collections.yaml} (94%) rename docs/api/admin/paths/{collections_{id}.yaml => admin_collections_{id}.yaml} (87%) rename docs/api/admin/paths/{collections_{id}_products_batch.yaml => admin_collections_{id}_products_batch.yaml} (92%) rename docs/api/admin/paths/{currencies.yaml => admin_currencies.yaml} (89%) rename docs/api/admin/paths/{currencies_{code}.yaml => admin_currencies_{code}.yaml} (82%) rename docs/api/admin/paths/{customer-groups.yaml => admin_customer-groups.yaml} (94%) rename docs/api/admin/paths/{customer-groups_{id}.yaml => admin_customer-groups_{id}.yaml} (88%) rename docs/api/admin/paths/{customer-groups_{id}_customers.yaml => admin_customer-groups_{id}_customers.yaml} (90%) rename docs/api/admin/paths/{customer-groups_{id}_customers_batch.yaml => admin_customer-groups_{id}_customers_batch.yaml} (86%) rename docs/api/admin/paths/{customers.yaml => admin_customers.yaml} (90%) rename docs/api/admin/paths/{customers_{id}.yaml => admin_customers_{id}.yaml} (90%) rename docs/api/admin/paths/{discounts.yaml => admin_discounts.yaml} (93%) rename docs/api/admin/paths/{discounts_code_{code}.yaml => admin_discounts_code_{code}.yaml} (89%) rename docs/api/admin/paths/{discounts_{discount_id}_conditions.yaml => admin_discounts_{discount_id}_conditions.yaml} (89%) rename docs/api/admin/paths/{discounts_{discount_id}_conditions_{condition_id}.yaml => admin_discounts_{discount_id}_conditions_{condition_id}.yaml} (89%) rename docs/api/admin/paths/{discounts_{discount_id}_conditions_{condition_id}_batch.yaml => admin_discounts_{discount_id}_conditions_{condition_id}_batch.yaml} (89%) rename docs/api/admin/paths/{discounts_{id}.yaml => admin_discounts_{id}.yaml} (90%) rename docs/api/admin/paths/{discounts_{id}_dynamic-codes.yaml => admin_discounts_{id}_dynamic-codes.yaml} (88%) rename docs/api/admin/paths/{discounts_{id}_dynamic-codes_{code}.yaml => admin_discounts_{id}_dynamic-codes_{code}.yaml} (86%) rename docs/api/admin/paths/{discounts_{id}_regions_{region_id}.yaml => admin_discounts_{id}_regions_{region_id}.yaml} (86%) rename docs/api/admin/paths/{draft-orders.yaml => admin_draft-orders.yaml} (89%) rename docs/api/admin/paths/{draft-orders_{id}_line-items.yaml => admin_draft-orders_{id}_line-items.yaml} (87%) rename docs/api/admin/paths/{draft-orders_{id}_line-items_{line_id}.yaml => admin_draft-orders_{id}_line-items_{line_id}.yaml} (86%) rename docs/api/admin/paths/{draft-orders_{id}_pay.yaml => admin_draft-orders_{id}_pay.yaml} (87%) rename docs/api/admin/paths/{gift-cards.yaml => admin_gift-cards.yaml} (89%) rename docs/api/admin/paths/{gift-cards_{id}.yaml => admin_gift-cards_{id}.yaml} (88%) rename docs/api/admin/paths/{inventory-items.yaml => admin_inventory-items.yaml} (63%) rename docs/api/admin/paths/{inventory-items_{id}.yaml => admin_inventory-items_{id}.yaml} (84%) rename docs/api/admin/paths/{inventory-items_{id}_location-levels.yaml => admin_inventory-items_{id}_location-levels.yaml} (84%) rename docs/api/admin/paths/{inventory-items_{id}_location-levels_{location_id}.yaml => admin_inventory-items_{id}_location-levels_{location_id}.yaml} (82%) rename docs/api/admin/paths/{invites.yaml => admin_invites.yaml} (87%) rename docs/api/admin/paths/{invites_accept.yaml => admin_invites_accept.yaml} (86%) rename docs/api/admin/paths/{invites_{invite_id}.yaml => admin_invites_{invite_id}.yaml} (86%) rename docs/api/admin/paths/{invites_{invite_id}_resend.yaml => admin_invites_{invite_id}_resend.yaml} (85%) rename docs/api/admin/paths/{notes.yaml => admin_notes.yaml} (90%) rename docs/api/admin/paths/{notes_{id}.yaml => admin_notes_{id}.yaml} (88%) rename docs/api/admin/paths/{notifications.yaml => admin_notifications.yaml} (94%) rename docs/api/admin/paths/{notifications_{id}_resend.yaml => admin_notifications_{id}_resend.yaml} (88%) rename docs/api/admin/paths/{order-edits.yaml => admin_order-edits.yaml} (90%) rename docs/api/admin/paths/{order-edits_{id}.yaml => admin_order-edits_{id}.yaml} (87%) rename docs/api/admin/paths/{order-edits_{id}_cancel.yaml => admin_order-edits_{id}_cancel.yaml} (84%) rename docs/api/admin/paths/{order-edits_{id}_changes_{change_id}.yaml => admin_order-edits_{id}_changes_{change_id}.yaml} (82%) rename docs/api/admin/paths/{order-edits_{id}_confirm.yaml => admin_order-edits_{id}_confirm.yaml} (84%) rename docs/api/admin/paths/{order-edits_{id}_items.yaml => admin_order-edits_{id}_items.yaml} (87%) rename docs/api/admin/paths/{order-edits_{id}_items_{item_id}.yaml => admin_order-edits_{id}_items_{item_id}.yaml} (87%) rename docs/api/admin/paths/{order-edits_{id}_request.yaml => admin_order-edits_{id}_request.yaml} (85%) rename docs/api/admin/paths/{orders.yaml => admin_orders.yaml} (98%) rename docs/api/admin/paths/{orders_{id}.yaml => admin_orders_{id}.yaml} (91%) rename docs/api/admin/paths/{orders_{id}_archive.yaml => admin_orders_{id}_archive.yaml} (89%) rename docs/api/admin/paths/{orders_{id}_cancel.yaml => admin_orders_{id}_cancel.yaml} (91%) rename docs/api/admin/paths/{orders_{id}_capture.yaml => admin_orders_{id}_capture.yaml} (90%) rename docs/api/admin/paths/{order_{id}_claims.yaml => admin_orders_{id}_claims.yaml} (90%) rename docs/api/admin/paths/{order_{id}_claims_{claim_id}.yaml => admin_orders_{id}_claims_{claim_id}.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_claims_{claim_id}_cancel.yaml => admin_orders_{id}_claims_{claim_id}_cancel.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_claims_{claim_id}_fulfillments.yaml => admin_orders_{id}_claims_{claim_id}_fulfillments.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml => admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_claims_{claim_id}_shipments.yaml => admin_orders_{id}_claims_{claim_id}_shipments.yaml} (89%) rename docs/api/admin/paths/{orders_{id}_complete.yaml => admin_orders_{id}_complete.yaml} (89%) rename docs/api/admin/paths/{orders_{id}_fulfillment.yaml => admin_orders_{id}_fulfillment.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml => admin_orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_line-items_{line_item_id}_reserve.yaml => admin_orders_{id}_line-items_{line_item_id}_reserve.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_refund.yaml => admin_orders_{id}_refund.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_reservations.yaml => admin_orders_{id}_reservations.yaml} (84%) rename docs/api/admin/paths/{orders_{id}_return.yaml => admin_orders_{id}_return.yaml} (91%) rename docs/api/admin/paths/{orders_{id}_shipment.yaml => admin_orders_{id}_shipment.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_shipping-methods.yaml => admin_orders_{id}_shipping-methods.yaml} (90%) rename docs/api/admin/paths/{order_{id}_swaps.yaml => admin_orders_{id}_swaps.yaml} (91%) rename docs/api/admin/paths/{orders_{id}_swaps_{swap_id}_cancel.yaml => admin_orders_{id}_swaps_{swap_id}_cancel.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_swaps_{swap_id}_fulfillments.yaml => admin_orders_{id}_swaps_{swap_id}_fulfillments.yaml} (89%) rename docs/api/admin/paths/{orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml => admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml} (88%) rename docs/api/admin/paths/{orders_{id}_swaps_{swap_id}_process-payment.yaml => admin_orders_{id}_swaps_{swap_id}_process-payment.yaml} (90%) rename docs/api/admin/paths/{orders_{id}_swaps_{swap_id}_shipments.yaml => admin_orders_{id}_swaps_{swap_id}_shipments.yaml} (89%) rename docs/api/admin/paths/{payment-collections_{id}.yaml => admin_payment-collections_{id}.yaml} (85%) rename docs/api/admin/paths/{payment-collections_{id}_authorize.yaml => admin_payment-collections_{id}_authorize.yaml} (84%) rename docs/api/admin/paths/{payments_{id}.yaml => admin_payments_{id}.yaml} (88%) rename docs/api/admin/paths/{payments_{id}_capture.yaml => admin_payments_{id}_capture.yaml} (86%) rename docs/api/admin/paths/{payments_{id}_refund.yaml => admin_payments_{id}_refund.yaml} (88%) rename docs/api/admin/paths/{price-lists.yaml => admin_price-lists.yaml} (95%) rename docs/api/admin/paths/{price-lists_{id}.yaml => admin_price-lists_{id}.yaml} (87%) rename docs/api/admin/paths/{price-lists_{id}_prices_batch.yaml => admin_price-lists_{id}_prices_batch.yaml} (87%) rename docs/api/admin/paths/{price-lists_{id}_products.yaml => admin_price-lists_{id}_products.yaml} (97%) rename docs/api/admin/paths/{price-lists_{id}_products_{product_id}_prices.yaml => admin_price-lists_{id}_products_{product_id}_prices.yaml} (87%) rename docs/api/admin/paths/{price-lists_{id}_variants_{variant_id}_prices.yaml => admin_price-lists_{id}_variants_{variant_id}_prices.yaml} (87%) rename docs/api/admin/paths/{product-categories.yaml => admin_product-categories.yaml} (88%) rename docs/api/admin/paths/{product-categories_{id}.yaml => admin_product-categories_{id}.yaml} (88%) rename docs/api/admin/paths/{product-categories_{id}_products_batch.yaml => admin_product-categories_{id}_products_batch.yaml} (88%) rename docs/api/admin/paths/{product-tags.yaml => admin_product-tags.yaml} (95%) rename docs/api/admin/paths/{product-types.yaml => admin_product-types.yaml} (95%) rename docs/api/admin/paths/{products.yaml => admin_products.yaml} (96%) rename docs/api/admin/paths/{products_tag-usage.yaml => admin_products_tag-usage.yaml} (86%) rename docs/api/admin/paths/{products_types.yaml => admin_products_types.yaml} (86%) rename docs/api/admin/paths/{products_{id}.yaml => admin_products_{id}.yaml} (88%) rename docs/api/admin/paths/{products_{id}_metadata.yaml => admin_products_{id}_metadata.yaml} (88%) rename docs/api/admin/paths/{products_{id}_options.yaml => admin_products_{id}_options.yaml} (88%) rename docs/api/admin/paths/{products_{id}_options_{option_id}.yaml => admin_products_{id}_options_{option_id}.yaml} (87%) rename docs/api/admin/paths/{products_{id}_variants.yaml => admin_products_{id}_variants.yaml} (92%) rename docs/api/admin/paths/{products_{id}_variants_{variant_id}.yaml => admin_products_{id}_variants_{variant_id}.yaml} (86%) rename docs/api/admin/paths/{publishable-api-key_{id}.yaml => admin_publishable-api-key_{id}.yaml} (87%) rename docs/api/admin/paths/{publishable-api-keys.yaml => admin_publishable-api-keys.yaml} (89%) rename docs/api/admin/paths/{publishable-api-keys_{id}.yaml => admin_publishable-api-keys_{id}.yaml} (83%) rename docs/api/admin/paths/{publishable-api-keys_{id}_revoke.yaml => admin_publishable-api-keys_{id}_revoke.yaml} (84%) rename docs/api/admin/paths/{publishable-api-keys_{id}_sales-channels.yaml => admin_publishable-api-keys_{id}_sales-channels.yaml} (86%) rename docs/api/admin/paths/{publishable-api-keys_{id}_sales-channels_batch.yaml => admin_publishable-api-keys_{id}_sales-channels_batch.yaml} (86%) rename docs/api/admin/paths/{regions.yaml => admin_regions.yaml} (91%) rename docs/api/admin/paths/{regions_{id}.yaml => admin_regions_{id}.yaml} (88%) rename docs/api/admin/paths/{regions_{id}_countries.yaml => admin_regions_{id}_countries.yaml} (88%) rename docs/api/admin/paths/{regions_{id}_countries_{country_code}.yaml => admin_regions_{id}_countries_{country_code}.yaml} (87%) rename docs/api/admin/paths/{regions_{id}_fulfillment-options.yaml => admin_regions_{id}_fulfillment-options.yaml} (85%) rename docs/api/admin/paths/{regions_{id}_fulfillment-providers.yaml => admin_regions_{id}_fulfillment-providers.yaml} (86%) rename docs/api/admin/paths/{regions_{id}_fulfillment-providers_{provider_id}.yaml => admin_regions_{id}_fulfillment-providers_{provider_id}.yaml} (86%) rename docs/api/admin/paths/{regions_{id}_payment-providers.yaml => admin_regions_{id}_payment-providers.yaml} (86%) rename docs/api/admin/paths/{regions_{id}_payment-providers_{provider_id}.yaml => admin_regions_{id}_payment-providers_{provider_id}.yaml} (86%) rename docs/api/admin/paths/{reservations.yaml => admin_reservations.yaml} (89%) rename docs/api/admin/paths/{reservations_{id}.yaml => admin_reservations_{id}.yaml} (75%) rename docs/api/admin/paths/{return-reasons.yaml => admin_return-reasons.yaml} (86%) rename docs/api/admin/paths/{return-reasons_{id}.yaml => admin_return-reasons_{id}.yaml} (87%) rename docs/api/admin/paths/{returns.yaml => admin_returns.yaml} (90%) rename docs/api/admin/paths/{returns_{id}_cancel.yaml => admin_returns_{id}_cancel.yaml} (86%) rename docs/api/admin/paths/{returns_{id}_receive.yaml => admin_returns_{id}_receive.yaml} (88%) rename docs/api/admin/paths/{sales-channels.yaml => admin_sales-channels.yaml} (94%) rename docs/api/admin/paths/{sales-channels_{id}.yaml => admin_sales-channels_{id}.yaml} (87%) rename docs/api/admin/paths/{sales-channels_{id}_products_batch.yaml => admin_sales-channels_{id}_products_batch.yaml} (86%) rename docs/api/admin/paths/{sales-channels_{id}_stock-locations.yaml => admin_sales-channels_{id}_stock-locations.yaml} (86%) rename docs/api/admin/paths/{shipping-options.yaml => admin_shipping-options.yaml} (88%) rename docs/api/admin/paths/{shipping-options_{id}.yaml => admin_shipping-options_{id}.yaml} (86%) rename docs/api/admin/paths/{shipping-profiles.yaml => admin_shipping-profiles.yaml} (86%) rename docs/api/admin/paths/{shipping-profiles_{id}.yaml => admin_shipping-profiles_{id}.yaml} (86%) rename docs/api/admin/paths/{stock-locations.yaml => admin_stock-locations.yaml} (94%) rename docs/api/admin/paths/{stock-locations_{id}.yaml => admin_stock-locations_{id}.yaml} (88%) rename docs/api/admin/paths/{store.yaml => admin_store.yaml} (86%) rename docs/api/admin/paths/{store_currencies_{code}.yaml => admin_store_currencies_{code}.yaml} (89%) rename docs/api/admin/paths/{store_payment-providers.yaml => admin_store_payment-providers.yaml} (86%) rename docs/api/admin/paths/{store_tax-providers.yaml => admin_store_tax-providers.yaml} (87%) rename docs/api/admin/paths/{swaps.yaml => admin_swaps.yaml} (90%) rename docs/api/admin/paths/{swaps_{id}.yaml => admin_swaps_{id}.yaml} (88%) rename docs/api/admin/paths/{tax-rates.yaml => admin_tax-rates.yaml} (94%) rename docs/api/admin/paths/{tax-rates_{id}.yaml => admin_tax-rates_{id}.yaml} (90%) rename docs/api/admin/paths/{tax-rates_{id}_product-types_batch.yaml => admin_tax-rates_{id}_product-types_batch.yaml} (89%) rename docs/api/admin/paths/{tax-rates_{id}_products_batch.yaml => admin_tax-rates_{id}_products_batch.yaml} (90%) rename docs/api/admin/paths/{tax-rates_{id}_shipping-options_batch.yaml => admin_tax-rates_{id}_shipping-options_batch.yaml} (89%) rename docs/api/admin/paths/{uploads.yaml => admin_uploads.yaml} (87%) rename docs/api/admin/paths/{uploads_download-url.yaml => admin_uploads_download-url.yaml} (86%) rename docs/api/admin/paths/{uploads_protected.yaml => admin_uploads_protected.yaml} (88%) rename docs/api/admin/paths/{users.yaml => admin_users.yaml} (88%) rename docs/api/admin/paths/{users_password-token.yaml => admin_users_password-token.yaml} (86%) rename docs/api/admin/paths/{users_reset-password.yaml => admin_users_reset-password.yaml} (87%) rename docs/api/admin/paths/{users_{id}.yaml => admin_users_{id}.yaml} (88%) rename docs/api/admin/paths/{variants.yaml => admin_variants.yaml} (96%) create mode 100644 docs/api/admin/paths/admin_variants_{id}.yaml rename docs/api/admin/paths/{variants_{id}_inventory.yaml => admin_variants_{id}_inventory.yaml} (88%) delete mode 100644 docs/api/admin/paths/draft-orders_{id}.yaml create mode 100644 docs/api/store.oas.json create mode 100644 docs/api/store.oas.yaml rename docs/api/store/code_samples/JavaScript/{auth => store_auth}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{auth => store_auth}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{auth_{email} => store_auth_{email}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{carts => store_carts}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id} => store_carts_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id} => store_carts_{id}}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_complete => store_carts_{id}_complete}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_discounts_{code} => store_carts_{id}_discounts_{code}}/delete.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_line-items => store_carts_{id}_line-items}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_line-items_{line_id} => store_carts_{id}_line-items_{line_id}}/delete.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_line-items_{line_id} => store_carts_{id}_line-items_{line_id}}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_payment-session => store_carts_{id}_payment-session}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_payment-sessions => store_carts_{id}_payment-sessions}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_payment-sessions_{provider_id} => store_carts_{id}_payment-sessions_{provider_id}}/delete.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_payment-sessions_{provider_id} => store_carts_{id}_payment-sessions_{provider_id}}/post.js (99%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_payment-sessions_{provider_id}_refresh => store_carts_{id}_payment-sessions_{provider_id}_refresh}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{carts_{id}_shipping-methods => store_carts_{id}_shipping-methods}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{collections => store_collections}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{collections_{id} => store_collections_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{customers => store_customers}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me => store_customers_me}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me => store_customers_me}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me_addresses => store_customers_me_addresses}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me_addresses_{address_id} => store_customers_me_addresses_{address_id}}/delete.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me_addresses_{address_id} => store_customers_me_addresses_{address_id}}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me_orders => store_customers_me_orders}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_me_payment-methods => store_customers_me_payment-methods}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_password-reset => store_customers_password-reset}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{customers_password-token => store_customers_password-token}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{gift-cards_{code} => store_gift-cards_{code}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{order-edits_{id} => store_order-edits_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{order-edits_{id}_complete => store_order-edits_{id}_complete}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{order-edits_{id}_decline => store_order-edits_{id}_decline}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{orders => store_orders}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{orders_batch_customer_token => store_orders_batch_customer_token}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{orders_cart_{cart_id} => store_orders_cart_{cart_id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{orders_customer_confirm => store_orders_customer_confirm}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{orders_{id} => store_orders_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id} => store_payment-collections_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id}_sessions => store_payment-collections_{id}_sessions}/post.js (99%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id}_sessions_batch => store_payment-collections_{id}_sessions_batch}/post.js (99%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id}_sessions_batch_authorize => store_payment-collections_{id}_sessions_batch_authorize}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id}_sessions_{session_id} => store_payment-collections_{id}_sessions_{session_id}}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{payment-collections_{id}_sessions_{session_id}_authorize => store_payment-collections_{id}_sessions_{session_id}_authorize}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{product-categories => store_product-categories}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{product-categories_{id} => store_product-categories_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{product-tags => store_product-tags}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{product-types => store_product-types}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{products => store_products}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{products_search => store_products_search}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{products_{id} => store_products_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{regions => store_regions}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{regions_{id} => store_regions_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{return-reasons => store_return-reasons}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{return-reasons_{id} => store_return-reasons_{id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{returns => store_returns}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{shipping-options => store_shipping-options}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{shipping-options_{cart_id} => store_shipping-options_{cart_id}}/get.js (100%) rename docs/api/store/code_samples/JavaScript/{swaps => store_swaps}/post.js (100%) rename docs/api/store/code_samples/JavaScript/{swaps_{cart_id} => store_swaps_{cart_id}}/get.js (100%) rename docs/api/store/code_samples/Shell/{auth => store_auth}/delete.sh (100%) rename docs/api/store/code_samples/Shell/{auth => store_auth}/get.sh (100%) rename docs/api/store/code_samples/Shell/{auth => store_auth}/post.sh (100%) rename docs/api/store/code_samples/Shell/{auth_{email} => store_auth_{email}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{carts => store_carts}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id} => store_carts_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id} => store_carts_{id}}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_complete => store_carts_{id}_complete}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_discounts_{code} => store_carts_{id}_discounts_{code}}/delete.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_line-items => store_carts_{id}_line-items}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_line-items_{line_id} => store_carts_{id}_line-items_{line_id}}/delete.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_line-items_{line_id} => store_carts_{id}_line-items_{line_id}}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_payment-session => store_carts_{id}_payment-session}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_payment-sessions => store_carts_{id}_payment-sessions}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_payment-sessions_{provider_id} => store_carts_{id}_payment-sessions_{provider_id}}/delete.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_payment-sessions_{provider_id} => store_carts_{id}_payment-sessions_{provider_id}}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_payment-sessions_{provider_id}_refresh => store_carts_{id}_payment-sessions_{provider_id}_refresh}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_shipping-methods => store_carts_{id}_shipping-methods}/post.sh (100%) rename docs/api/store/code_samples/Shell/{carts_{id}_taxes => store_carts_{id}_taxes}/post.sh (100%) rename docs/api/store/code_samples/Shell/{collections => store_collections}/get.sh (100%) rename docs/api/store/code_samples/Shell/{collections_{id} => store_collections_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{customers => store_customers}/post.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me => store_customers_me}/get.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me => store_customers_me}/post.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me_addresses => store_customers_me_addresses}/post.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me_addresses_{address_id} => store_customers_me_addresses_{address_id}}/delete.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me_addresses_{address_id} => store_customers_me_addresses_{address_id}}/post.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me_orders => store_customers_me_orders}/get.sh (100%) rename docs/api/store/code_samples/Shell/{customers_me_payment-methods => store_customers_me_payment-methods}/get.sh (100%) rename docs/api/store/code_samples/Shell/{customers_password-reset => store_customers_password-reset}/post.sh (100%) rename docs/api/store/code_samples/Shell/{customers_password-token => store_customers_password-token}/post.sh (100%) rename docs/api/store/code_samples/Shell/{gift-cards_{code} => store_gift-cards_{code}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{order-edits_{id} => store_order-edits_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{order-edits_{id}_complete => store_order-edits_{id}_complete}/post.sh (100%) rename docs/api/store/code_samples/Shell/{order-edits_{id}_decline => store_order-edits_{id}_decline}/post.sh (100%) rename docs/api/store/code_samples/Shell/{orders => store_orders}/get.sh (100%) rename docs/api/store/code_samples/Shell/{orders_batch_customer_token => store_orders_batch_customer_token}/post.sh (100%) rename docs/api/store/code_samples/Shell/{orders_cart_{cart_id} => store_orders_cart_{cart_id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{orders_customer_confirm => store_orders_customer_confirm}/post.sh (100%) rename docs/api/store/code_samples/Shell/{orders_{id} => store_orders_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id} => store_payment-collections_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id}_sessions => store_payment-collections_{id}_sessions}/post.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id}_sessions_batch => store_payment-collections_{id}_sessions_batch}/post.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id}_sessions_batch_authorize => store_payment-collections_{id}_sessions_batch_authorize}/post.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id}_sessions_{session_id} => store_payment-collections_{id}_sessions_{session_id}}/post.sh (100%) rename docs/api/store/code_samples/Shell/{payment-collections_{id}_sessions_{session_id}_authorize => store_payment-collections_{id}_sessions_{session_id}_authorize}/post.sh (100%) rename docs/api/store/code_samples/Shell/{product-categories => store_product-categories}/get.sh (100%) rename docs/api/store/code_samples/Shell/{product-categories_{id} => store_product-categories_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{product-tags => store_product-tags}/get.sh (100%) rename docs/api/store/code_samples/Shell/{product-types => store_product-types}/get.sh (100%) rename docs/api/store/code_samples/Shell/{products => store_products}/get.sh (100%) rename docs/api/store/code_samples/Shell/{products_search => store_products_search}/post.sh (100%) rename docs/api/store/code_samples/Shell/{products_{id} => store_products_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{regions => store_regions}/get.sh (100%) rename docs/api/store/code_samples/Shell/{regions_{id} => store_regions_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{return-reasons => store_return-reasons}/get.sh (100%) rename docs/api/store/code_samples/Shell/{return-reasons_{id} => store_return-reasons_{id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{returns => store_returns}/post.sh (100%) rename docs/api/store/code_samples/Shell/{shipping-options => store_shipping-options}/get.sh (100%) rename docs/api/store/code_samples/Shell/{shipping-options_{cart_id} => store_shipping-options_{cart_id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{swaps => store_swaps}/post.sh (100%) rename docs/api/store/code_samples/Shell/{swaps_{cart_id} => store_swaps_{cart_id}}/get.sh (100%) rename docs/api/store/code_samples/Shell/{variants => store_variants}/get.sh (100%) rename docs/api/store/code_samples/Shell/{variants_{variant_id} => store_variants_{variant_id}}/get.sh (100%) create mode 100644 docs/api/store/components/schemas/AddressCreatePayload.yaml rename docs/api/store/components/schemas/{AddressFields.yaml => AddressPayload.yaml} (94%) create mode 100644 docs/api/store/components/schemas/ExtendedStoreDTO.yaml create mode 100644 docs/api/store/components/schemas/FeatureFlagsResponse.yaml create mode 100644 docs/api/store/components/schemas/ModulesResponse.yaml create mode 100644 docs/api/store/components/schemas/PricedShippingOption.yaml create mode 100644 docs/api/store/components/schemas/StockLocationExpandedDTO.yaml create mode 100644 docs/api/store/components/schemas/StoreCartShippingOptionsListRes.yaml create mode 100644 docs/api/store/components/schemas/StoreCustomersResetPasswordRes.yaml create mode 100644 docs/api/store/components/schemas/StoreGetProductCategoriesRes.yaml rename docs/api/store/components/schemas/{StoreProductCategoriesListRes.yaml => StoreProductTagsListRes.yaml} (74%) rename docs/api/store/paths/{auth.yaml => store_auth.yaml} (90%) rename docs/api/store/paths/{auth_{email}.yaml => store_auth_{email}.yaml} (88%) rename docs/api/store/paths/{carts.yaml => store_carts.yaml} (90%) rename docs/api/store/paths/{carts_{id}.yaml => store_carts_{id}.yaml} (87%) rename docs/api/store/paths/{carts_{id}_complete.yaml => store_carts_{id}_complete.yaml} (91%) rename docs/api/store/paths/{carts_{id}_discounts_{code}.yaml => store_carts_{id}_discounts_{code}.yaml} (85%) rename docs/api/store/paths/{carts_{id}_line-items.yaml => store_carts_{id}_line-items.yaml} (87%) rename docs/api/store/paths/{carts_{id}_line-items_{line_id}.yaml => store_carts_{id}_line-items_{line_id}.yaml} (85%) rename docs/api/store/paths/{carts_{id}_payment-session.yaml => store_carts_{id}_payment-session.yaml} (87%) rename docs/api/store/paths/{carts_{id}_payment-sessions.yaml => store_carts_{id}_payment-sessions.yaml} (85%) rename docs/api/store/paths/{carts_{id}_payment-sessions_{provider_id}.yaml => store_carts_{id}_payment-sessions_{provider_id}.yaml} (86%) rename docs/api/store/paths/{carts_{id}_payment-sessions_{provider_id}_refresh.yaml => store_carts_{id}_payment-sessions_{provider_id}_refresh.yaml} (86%) rename docs/api/store/paths/{carts_{id}_shipping-methods.yaml => store_carts_{id}_shipping-methods.yaml} (86%) rename docs/api/store/paths/{carts_{id}_taxes.yaml => store_carts_{id}_taxes.yaml} (92%) rename docs/api/store/paths/{collections.yaml => store_collections.yaml} (88%) rename docs/api/store/paths/{collections_{id}.yaml => store_collections_{id}.yaml} (85%) rename docs/api/store/paths/{customers.yaml => store_customers.yaml} (91%) rename docs/api/store/paths/{customers_me.yaml => store_customers_me.yaml} (87%) rename docs/api/store/paths/{customers_me_addresses.yaml => store_customers_me_addresses.yaml} (87%) rename docs/api/store/paths/{customers_me_addresses_{address_id}.yaml => store_customers_me_addresses_{address_id}.yaml} (85%) rename docs/api/store/paths/{customers_me_orders.yaml => store_customers_me_orders.yaml} (97%) rename docs/api/store/paths/{customers_me_payment-methods.yaml => store_customers_me_payment-methods.yaml} (86%) rename docs/api/store/paths/{customers_password-reset.yaml => store_customers_password-reset.yaml} (80%) rename docs/api/store/paths/{customers_password-token.yaml => store_customers_password-token.yaml} (86%) rename docs/api/store/paths/{gift-cards_{code}.yaml => store_gift-cards_{code}.yaml} (86%) rename docs/api/store/paths/{order-edits_{id}.yaml => store_order-edits_{id}.yaml} (86%) rename docs/api/store/paths/{order-edits_{id}_complete.yaml => store_order-edits_{id}_complete.yaml} (83%) rename docs/api/store/paths/{order-edits_{id}_decline.yaml => store_order-edits_{id}_decline.yaml} (85%) rename docs/api/store/paths/{orders.yaml => store_orders.yaml} (93%) rename docs/api/store/paths/{orders_batch_customer_token.yaml => store_orders_batch_customer_token.yaml} (85%) rename docs/api/store/paths/{orders_cart_{cart_id}.yaml => store_orders_cart_{cart_id}.yaml} (85%) rename docs/api/store/paths/{orders_customer_confirm.yaml => store_orders_customer_confirm.yaml} (86%) rename docs/api/store/paths/{orders_{id}.yaml => store_orders_{id}.yaml} (89%) rename docs/api/store/paths/{payment-collections_{id}.yaml => store_payment-collections_{id}.yaml} (86%) rename docs/api/store/paths/{payment-collections_{id}_sessions.yaml => store_payment-collections_{id}_sessions.yaml} (85%) rename docs/api/store/paths/{payment-collections_{id}_sessions_batch.yaml => store_payment-collections_{id}_sessions_batch.yaml} (86%) rename docs/api/store/paths/{payment-collections_{id}_sessions_batch_authorize.yaml => store_payment-collections_{id}_sessions_batch_authorize.yaml} (86%) rename docs/api/store/paths/{payment-collections_{id}_sessions_{session_id}.yaml => store_payment-collections_{id}_sessions_{session_id}.yaml} (85%) rename docs/api/store/paths/{payment-collections_{id}_sessions_{session_id}_authorize.yaml => store_payment-collections_{id}_sessions_{session_id}_authorize.yaml} (85%) rename docs/api/store/paths/{product-categories.yaml => store_product-categories.yaml} (79%) rename docs/api/store/paths/{product-categories_{id}.yaml => store_product-categories_{id}.yaml} (86%) rename docs/api/store/paths/{product-tags.yaml => store_product-tags.yaml} (84%) rename docs/api/store/paths/{product-types.yaml => store_product-types.yaml} (95%) rename docs/api/store/paths/{products.yaml => store_products.yaml} (97%) rename docs/api/store/paths/{products_search.yaml => store_products_search.yaml} (89%) rename docs/api/store/paths/{products_{id}.yaml => store_products_{id}.yaml} (93%) rename docs/api/store/paths/{regions.yaml => store_regions.yaml} (94%) rename docs/api/store/paths/{regions_{id}.yaml => store_regions_{id}.yaml} (86%) rename docs/api/store/paths/{return-reasons.yaml => store_return-reasons.yaml} (83%) rename docs/api/store/paths/{return-reasons_{id}.yaml => store_return-reasons_{id}.yaml} (85%) rename docs/api/store/paths/{returns.yaml => store_returns.yaml} (87%) rename docs/api/store/paths/{shipping-options.yaml => store_shipping-options.yaml} (89%) rename docs/api/store/paths/{shipping-options_{cart_id}.yaml => store_shipping-options_{cart_id}.yaml} (77%) rename docs/api/store/paths/{swaps.yaml => store_swaps.yaml} (88%) rename docs/api/store/paths/{swaps_{cart_id}.yaml => store_swaps_{cart_id}.yaml} (86%) rename docs/api/store/paths/{variants.yaml => store_variants.yaml} (97%) rename docs/api/store/paths/{variants_{variant_id}.yaml => store_variants_{variant_id}.yaml} (95%) diff --git a/docs/api/admin.oas.json b/docs/api/admin.oas.json new file mode 100644 index 0000000000..bc9b8d85b7 --- /dev/null +++ b/docs/api/admin.oas.json @@ -0,0 +1,39955 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "1.0.0", + "title": "Medusa Admin API", + "description": "API reference for Medusa's Admin endpoints. All endpoints are prefixed with `/admin`.\n\n## Authentication\n\nThere are two ways to send authenticated requests to the Medusa server: Using a user's API token, or using a Cookie Session ID.\n\n\n\n## Expanding Fields\n\nIn many endpoints you'll find an `expand` query parameter that can be passed to the endpoint. You can use the `expand` query parameter to unpack an entity's relations and return them in the response.\n\nPlease note that the relations you pass to `expand` replace any relations that are expanded by default in the request.\n\n### Expanding One Relation\n\nFor example, when you retrieve products, you can retrieve their collection by passing to the `expand` query parameter the value `collection`:\n\n```bash\ncurl \"http://localhost:9000/admin/products?expand=collection\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Expanding Multiple Relations\n\nYou can expand more than one relation by separating the relations in the `expand` query parameter with a comma.\n\nFor example, to retrieve both the variants and the collection of products, pass to the `expand` query parameter the value `variants,collection`:\n\n```bash\ncurl \"http://localhost:9000/admin/products?expand=variants,collection\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Prevent Expanding Relations\n\nSome requests expand relations by default. You can prevent that by passing an empty expand value to retrieve an entity without any extra relations.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?expand\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nThis would retrieve each product with only its properties, without any relations like `collection`.\n\n## Selecting Fields\n\nIn many endpoints you'll find a `fields` query parameter that can be passed to the endpoint. You can use the `fields` query parameter to specify which fields in the entity should be returned in the response.\n\nPlease note that if you pass a `fields` query parameter, only the fields you pass in the value along with the `id` of the entity will be returned in the response.\n\nAlso, the `fields` query parameter does not affect the expanded relations. You'll have to use the `expand` parameter instead.\n\n### Selecting One Field\n\nFor example, when you retrieve a list of products, you can retrieve only the titles of the products by passing `title` as a value to the `fields` query parameter:\n\n```bash\ncurl \"http://localhost:9000/admin/products?fields=title\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nAs mentioned above, the expanded relations such as `variants` will still be returned as they're not affected by the `fields` parameter.\n\nYou can ensure that only the `title` field is returned by passing an empty value to the `expand` query parameter. For example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?fields=title&expand\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Selecting Multiple Fields\n\nYou can pass more than one field by seperating the field names in the `fields` query parameter with a comma.\n\nFor example, to select the `title` and `handle` of products:\n\n```bash\ncurl \"http://localhost:9000/admin/products?fields=title,handle\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Retrieve Only the ID\n\nYou can pass an empty `fields` query parameter to return only the ID of an entity. For example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?fields\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nYou can also pair with an empty `expand` query parameter to ensure that the relations aren't retrieved as well. For example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?fields&expand\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n## Query Parameter Types\n\nThis section covers how to pass some common data types as query parameters. This is useful if you're sending requests to the API endpoints and not using our JS Client. For example, when using cURL or Postman.\n\n### Strings\n\nYou can pass a string value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?title=Shirt\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nIf the string has any characters other than letters and numbers, you must encode them.\n\nFor example, if the string has spaces, you can encode the space with `+` or `%20`:\n\n```bash\ncurl \"http://localhost:9000/admin/products?title=Blue%20Shirt\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nYou can use tools like [this one](https://www.urlencoder.org/) to learn how a value can be encoded.\n\n### Integers\n\nYou can pass an integer value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?offset=1\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Boolean\n\nYou can pass a boolean value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/admin/products?is_giftcard=true\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Date and DateTime\n\nYou can pass a date value in the form `=`. The date must be in the format `YYYY-MM-DD`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/admin/products?created_at[lt]=2023-02-17\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nYou can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please note that the `T` and `Z` here are fixed.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/admin/products?created_at[lt]=2023-02-17T07:22:30Z\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Array\n\nEach array value must be passed as a separate query parameter in the form `[]=`. You can also specify the index of each parameter in the brackets `[0]=`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/admin/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\nNote that the `-g` parameter passed to `curl` disables errors being thrown for using the brackets. Read more [here](https://curl.se/docs/manpage.html#-g).\n\n### Object\n\nObject parameters must be passed as separate query parameters in the form `[]=`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/admin/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n## Pagination\n\n### Query Parameters\n\nIn listing endpoints, such as list customers or list products, you can control the pagination using the query parameters `limit` and `offset`.\n\n`limit` is used to specify the maximum number of items that can be return in the response. `offset` is used to specify how many items to skip before returning the resulting entities.\n\nYou can use the `offset` query parameter to change between pages. For example, if the limit is 50, at page 1 the offset should be 0; at page 2 the offset should be 50, and so on.\n\nFor example, to limit the number of products returned in the List Products endpoint:\n\n```bash\ncurl \"http://localhost:9000/admin/products?limit=5\" \\\n-H 'Authorization: Bearer {api_token}'\n```\n\n### Response Fields\n\nIn the response of listing endpoints, aside from the entities retrieved, there are three pagination-related fields returned: `count`, `limit`, and `offset`.\n\nSimilar to the query parameters, `limit` is the maximum number of items that can be returned in the response, and `field` is the number of items that were skipped before the entities in the result.\n\n`count` is the total number of available items of this entity. It can be used to determine how many pages are there.\n\nFor example, if the `count` is 100 and the `limit` is 50, you can divide the `count` by the `limit` to get the number of pages: `100/50 = 2 pages`.\n", + "license": { + "name": "MIT", + "url": "https://github.com/medusajs/medusa/blob/master/LICENSE" + } + }, + "tags": [ + { + "name": "Auth", + "description": "Auth endpoints that allow authorization of admin Users and manages their sessions." + }, + { + "name": "Apps", + "description": "App endpoints that allow handling apps in Medusa." + }, + { + "name": "Batch Jobs", + "description": "Batch Job endpoints that allow handling batch jobs in Medusa." + }, + { + "name": "Collections", + "description": "Collection endpoints that allow handling collections in Medusa." + }, + { + "name": "Customers", + "description": "Customer endpoints that allow handling customers in Medusa." + }, + { + "name": "Customer Groups", + "description": "Customer Group endpoints that allow handling customer groups in Medusa." + }, + { + "name": "Discounts", + "description": "Discount endpoints that allow handling discounts in Medusa." + }, + { + "name": "Draft Orders", + "description": "Draft Order endpoints that allow handling draft orders in Medusa." + }, + { + "name": "Gift Cards", + "description": "Gift Card endpoints that allow handling gift cards in Medusa." + }, + { + "name": "Invites", + "description": "Invite endpoints that allow handling invites in Medusa." + }, + { + "name": "Notes", + "description": "Note endpoints that allow handling notes in Medusa." + }, + { + "name": "Notifications", + "description": "Notification endpoints that allow handling notifications in Medusa." + }, + { + "name": "Orders", + "description": "Order endpoints that allow handling orders in Medusa." + }, + { + "name": "Price Lists", + "description": "Price List endpoints that allow handling price lists in Medusa." + }, + { + "name": "Products", + "description": "Product endpoints that allow handling products in Medusa." + }, + { + "name": "Product Tags", + "description": "Product Tag endpoints that allow handling product tags in Medusa." + }, + { + "name": "Product Types", + "description": "Product Types endpoints that allow handling product types in Medusa." + }, + { + "name": "Regions", + "description": "Region endpoints that allow handling regions in Medusa." + }, + { + "name": "Return Reasons", + "description": "Return Reason endpoints that allow handling return reasons in Medusa." + }, + { + "name": "Returns", + "description": "Return endpoints that allow handling returns in Medusa." + }, + { + "name": "Sales Channels", + "description": "Sales Channel endpoints that allow handling sales channels in Medusa." + }, + { + "name": "Shipping Options", + "description": "Shipping Option endpoints that allow handling shipping options in Medusa." + }, + { + "name": "Shipping Profiles", + "description": "Shipping Profile endpoints that allow handling shipping profiles in Medusa." + }, + { + "name": "Store", + "description": "Store endpoints that allow handling stores in Medusa." + }, + { + "name": "Swaps", + "description": "Swap endpoints that allow handling swaps in Medusa." + }, + { + "name": "Tax Rates", + "description": "Tax Rate endpoints that allow handling tax rates in Medusa." + }, + { + "name": "Uploads", + "description": "Upload endpoints that allow handling uploads in Medusa." + }, + { + "name": "Users", + "description": "User endpoints that allow handling users in Medusa." + }, + { + "name": "Variants", + "description": "Product Variant endpoints that allow handling product variants in Medusa." + } + ], + "servers": [ + { + "url": "https://api.medusa-commerce.com" + } + ], + "paths": { + "/admin/apps": { + "get": { + "operationId": "GetApps", + "summary": "List Applications", + "description": "Retrieve a list of applications.", + "x-authenticated": true, + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/apps' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Apps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminAppsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/apps/authorizations": { + "post": { + "operationId": "PostApps", + "summary": "Generate Token for App", + "description": "Generates a token for an application.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostAppsReq" + } + } + } + }, + "x-codegen": { + "method": "authorize" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/apps/authorizations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"application_name\": \"example\",\n \"state\": \"ready\",\n \"code\": \"token\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Apps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminAppsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/auth": { + "get": { + "operationId": "GetAuth", + "summary": "Get Current User", + "x-authenticated": true, + "description": "Gets the currently logged in User.", + "x-codegen": { + "method": "getSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.auth.getSession()\n.then(({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/auth' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminAuthRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostAuth", + "summary": "User Login", + "x-authenticated": false, + "description": "Logs a User in and authorizes them to manage Store settings.", + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "type": "string", + "description": "The User's email." + }, + "password": { + "type": "string", + "description": "The User's password." + } + } + } + } + } + }, + "x-codegen": { + "method": "createSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.admin.auth.createSession({\n email: 'user@example.com',\n password: 'supersecret'\n}).then((({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/auth' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminAuthRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/incorrect_credentials" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteAuth", + "summary": "User Logout", + "x-authenticated": true, + "description": "Deletes the current session for the logged in user.", + "x-codegen": { + "method": "deleteSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.auth.deleteSession()\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/auth' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/batch-jobs": { + "get": { + "operationId": "GetBatchJobs", + "summary": "List Batch Jobs", + "description": "Retrieve a list of Batch Jobs.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of batch jobs to return.", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of batch jobs to skip before results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "Filter by the batch ID", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "batch job ID" + }, + { + "type": "array", + "description": "multiple batch job IDs", + "items": { + "type": "string" + } + } + ] + } + }, + { + "in": "query", + "name": "type", + "style": "form", + "explode": false, + "description": "Filter by the batch type", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "confirmed_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was confirmed, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "pre_processed_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was pre processed, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "completed_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was completed, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "failed_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was failed, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "canceled_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was canceled, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "order", + "description": "Field used to order retrieved batch jobs", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each order of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each order of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was created, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "style": "form", + "explode": false, + "description": "Date comparison for when resulting collections was updated, i.e. less than, greater than etc.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetBatchParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.batchJobs.list()\n.then(({ batch_jobs, limit, offset, count }) => {\n console.log(batch_jobs.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/batch-jobs' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Batch Jobs" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminBatchJobListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostBatchJobs", + "summary": "Create a Batch Job", + "description": "Creates a Batch Job.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostBatchesReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.batchJobs.create({\n type: 'product-export',\n context: {},\n dry_run: false\n}).then((({ batch_job }) => {\n console.log(batch_job.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/batch-jobs' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {api_token}' \\\n--data-raw '{\n \"type\": \"product-export\",\n \"context\": { }\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Batch Jobs" + ], + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminBatchJobRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/batch-jobs/{id}": { + "get": { + "operationId": "GetBatchJobsBatchJob", + "summary": "Get a Batch Job", + "description": "Retrieves a Batch Job.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Batch Job", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.batchJobs.retrieve(batch_job_id)\n.then(({ batch_job }) => {\n console.log(batch_job.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/batch-jobs/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Batch Jobs" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminBatchJobRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/batch-jobs/{id}/cancel": { + "post": { + "operationId": "PostBatchJobsBatchJobCancel", + "summary": "Cancel a Batch Job", + "description": "Marks a batch job as canceled", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the batch job.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.batchJobs.cancel(batch_job_id)\n.then(({ batch_job }) => {\n console.log(batch_job.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/batch-jobs/{id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Batch Jobs" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminBatchJobRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/batch-jobs/{id}/confirm": { + "post": { + "operationId": "PostBatchJobsBatchJobConfirmProcessing", + "summary": "Confirm a Batch Job", + "description": "Confirms that a previously requested batch job should be executed.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the batch job.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "confirm" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.batchJobs.confirm(batch_job_id)\n.then(({ batch_job }) => {\n console.log(batch_job.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/batch-jobs/{id}/confirm' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Batch Jobs" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminBatchJobRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/collections": { + "get": { + "operationId": "GetCollections", + "summary": "List Collections", + "description": "Retrieve a list of Product Collection.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of collections to return.", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of collections to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "title", + "description": "The title of collections to return.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "handle", + "description": "The handle of collections to return.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "a search term to search titles and handles.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the product collections.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting collections were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting collections were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting collections were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetCollectionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.collections.list()\n.then(({ collections, limit, offset, count }) => {\n console.log(collections.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/collections' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCollections", + "summary": "Create a Collection", + "description": "Creates a Product Collection.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCollectionsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.collections.create({\n title: 'New Collection'\n})\n.then(({ collection }) => {\n console.log(collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/collections' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"New Collection\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/collections/{id}": { + "get": { + "operationId": "GetCollectionsCollection", + "summary": "Get a Collection", + "description": "Retrieves a Product Collection.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Collection", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.collections.retrieve(collection_id)\n.then(({ collection }) => {\n console.log(collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/collections/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCollectionsCollection", + "summary": "Update a Collection", + "description": "Updates a Product Collection.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Collection.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCollectionsCollectionReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.collections.update(collection_id, {\n title: 'New Collection'\n})\n.then(({ collection }) => {\n console.log(collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/collections/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"New Collection\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCollectionsCollection", + "summary": "Delete a Collection", + "description": "Deletes a Product Collection.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Collection.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.collections.delete(collection_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/collections/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/collections/{id}/products/batch": { + "post": { + "operationId": "PostProductsToCollection", + "summary": "Update Products", + "description": "Updates products associated with a Product Collection", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Collection.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsToCollectionReq" + } + } + } + }, + "x-codegen": { + "method": "addProducts" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/collections/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n \"prod_01G1G5V2MBA328390B5AXJ610F\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductsFromCollection", + "summary": "Remove Product", + "description": "Removes products associated with a Product Collection", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Collection.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteProductsFromCollectionReq" + } + } + } + }, + "x-codegen": { + "method": "removeProducts" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/collections/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n \"prod_01G1G5V2MBA328390B5AXJ610F\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteProductsFromCollectionRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/currencies": { + "get": { + "operationId": "GetCurrencies", + "summary": "List Currency", + "description": "Retrieves a list of Currency", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "code", + "description": "Code of the currency to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "includes_tax", + "description": "Search for tax inclusive currencies.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "order", + "description": "order to retrieve products in.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many products to skip in the result.", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of products returned.", + "schema": { + "type": "number", + "default": "20" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetCurrenciesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.currencies.list()\n.then(({ currencies, count, offset, limit }) => {\n console.log(currencies.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/currencies' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "tags": [ + "Currencies" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCurrenciesListRes" + } + } + } + } + } + } + }, + "/admin/currencies/{code}": { + "post": { + "operationId": "PostCurrenciesCurrency", + "summary": "Update a Currency", + "description": "Update a Currency", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "description": "The code of the Currency.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCurrenciesCurrencyReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.currencies.update(code, {\n includes_tax: true\n})\n.then(({ currency }) => {\n console.log(currency.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/currencies/{code}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"includes_tax\": true\n}'\n" + } + ], + "tags": [ + "Currencies" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCurrenciesRes" + } + } + } + } + } + } + }, + "/admin/customer-groups": { + "get": { + "operationId": "GetCustomerGroups", + "summary": "List Customer Groups", + "description": "Retrieve a list of customer groups.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching customer group names.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many groups to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "order", + "description": "the field used to order the customer groups.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the customer groups.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "Filter by the customer group ID", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "customer group ID" + }, + { + "type": "array", + "description": "multiple customer group IDs", + "items": { + "type": "string" + } + }, + { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by IDs less than this ID" + }, + "gt": { + "type": "string", + "description": "filter by IDs greater than this ID" + }, + "lte": { + "type": "string", + "description": "filter by IDs less than or equal to this ID" + }, + "gte": { + "type": "string", + "description": "filter by IDs greater than or equal to this ID" + } + } + } + ] + } + }, + { + "in": "query", + "name": "name", + "style": "form", + "explode": false, + "description": "Filter by the customer group name", + "schema": { + "type": "array", + "description": "multiple customer group names", + "items": { + "type": "string", + "description": "customer group name" + } + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting customer groups were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting customer groups were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of customer groups returned.", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each customer groups of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetCustomerGroupsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.list()\n.then(({ customer_groups, limit, offset, count }) => {\n console.log(customer_groups.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/customer-groups' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCustomerGroups", + "summary": "Create a Customer Group", + "description": "Creates a CustomerGroup.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCustomerGroupsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.create({\n name: 'VIP'\n})\n.then(({ customer_group }) => {\n console.log(customer_group.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/customer-groups' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"VIP\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/customer-groups/{id}": { + "get": { + "operationId": "GetCustomerGroupsGroup", + "summary": "Get a Customer Group", + "description": "Retrieves a Customer Group.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Customer Group.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the customer group.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the customer group.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetCustomerGroupsGroupParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.retrieve(customer_group_id)\n.then(({ customer_group }) => {\n console.log(customer_group.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/customer-groups/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCustomerGroupsGroup", + "summary": "Update a Customer Group", + "description": "Update a CustomerGroup.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the customer group.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCustomerGroupsGroupReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.update(customer_group_id, {\n name: 'VIP'\n})\n.then(({ customer_group }) => {\n console.log(customer_group.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/customer-groups/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"VIP\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCustomerGroupsCustomerGroup", + "summary": "Delete a Customer Group", + "description": "Deletes a CustomerGroup.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Customer Group", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.delete(customer_group_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/customer-groups/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/customer-groups/{id}/customers": { + "get": { + "operationId": "GetCustomerGroupsGroupCustomers", + "summary": "List Customers", + "description": "Retrieves a list of customers in a customer group", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the customer group.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of items to return.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "offset", + "description": "The items to skip before result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "a search term to search email, first_name, and last_name.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listCustomers", + "queryParams": "AdminGetGroupsGroupCustomersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.listCustomers(customer_group_id)\n.then(({ customers }) => {\n console.log(customers.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/customer-groups/{id}/customers' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomersListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/customer-groups/{id}/customers/batch": { + "post": { + "operationId": "PostCustomerGroupsGroupCustomersBatch", + "summary": "Add Customers", + "description": "Adds a list of customers, represented by id's, to a customer group.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the customer group.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCustomerGroupsGroupCustomersBatchReq" + } + } + } + }, + "x-codegen": { + "method": "addCustomers" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.addCustomers(customer_group_id, {\n customer_ids: [\n {\n id: customer_id\n }\n ]\n})\n.then(({ customer_group }) => {\n console.log(customer_group.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/customer-groups/{id}/customers/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"customer_ids\": [\n {\n \"id\": \"cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCustomerGroupsGroupCustomerBatch", + "summary": "Remove Customers", + "description": "Removes a list of customers, represented by id's, from a customer group.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the customer group.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteCustomerGroupsGroupCustomerBatchReq" + } + } + } + }, + "x-codegen": { + "method": "removeCustomers" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customerGroups.removeCustomers(customer_group_id, {\n customer_ids: [\n {\n id: customer_id\n }\n ]\n})\n.then(({ customer_group }) => {\n console.log(customer_group.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/customer-groups/{id}/customers/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"customer_ids\": [\n {\n \"id\": \"cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customer Groups" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomerGroupsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/customers": { + "get": { + "operationId": "GetCustomers", + "summary": "List Customers", + "description": "Retrieves a list of Customers.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of items to return.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "offset", + "description": "The items to skip before result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "a search term to search email, first_name, and last_name.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetCustomersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customers.list()\n.then(({ customers, limit, offset, count }) => {\n console.log(customers.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/customers' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomersListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCustomers", + "summary": "Create a Customer", + "description": "Creates a Customer.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCustomersReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customers.create({\n email: 'user@example.com',\n first_name: 'Caterina',\n last_name: 'Yost',\n password: 'supersecret'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/customers' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"first_name\": \"Caterina\",\n \"last_name\": \"Yost\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/customers/{id}": { + "get": { + "operationId": "GetCustomersCustomer", + "summary": "Get a Customer", + "description": "Retrieves a Customer.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the customer.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customers.retrieve(customer_id)\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/customers/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCustomersCustomer", + "summary": "Update a Customer", + "description": "Updates a Customer.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each customer.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be retrieved in each customer.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostCustomersCustomerReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.customers.update(customer_id, {\n first_name: 'Dolly'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/customers/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"first_name\": \"Dolly\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts": { + "get": { + "operationId": "GetDiscounts", + "summary": "List Discounts", + "x-authenticated": true, + "description": "Retrieves a list of Discounts", + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Search query applied on the code field.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "rule", + "description": "Discount Rules filters to apply on the search", + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "fixed", + "percentage", + "free_shipping" + ], + "description": "The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers." + }, + "allocation": { + "type": "string", + "enum": [ + "total", + "item" + ], + "description": "The value that the discount represents; this will depend on the type of the discount" + } + } + } + }, + { + "in": "query", + "name": "is_dynamic", + "description": "Return only dynamic discounts.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "is_disabled", + "description": "Return only disabled discounts.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of items in the response", + "schema": { + "type": "number", + "default": "20" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset of items in response", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetDiscountsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.list()\n.then(({ discounts, limit, offset, count }) => {\n console.log(discounts.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/discounts' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostDiscounts", + "summary": "Creates a Discount", + "x-authenticated": true, + "description": "Creates a Discount with a given set of rules that define how the Discount behaves.", + "parameters": [ + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be retrieved in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsReq" + } + } + } + }, + "x-codegen": { + "method": "create", + "queryParams": "AdminPostDiscountsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nimport { AllocationType, DiscountRuleType } from \"@medusajs/medusa\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.create({\n code: 'TEST',\n rule: {\n type: DiscountRuleType.FIXED,\n value: 10,\n allocation: AllocationType.ITEM\n },\n regions: [\"reg_XXXXXXXX\"],\n is_dynamic: false,\n is_disabled: false\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"code\": \"TEST\",\n \"rule\": {\n \"type\": \"fixed\",\n \"value\": 10,\n \"allocation\": \"item\"\n },\n \"regions\": [\"reg_XXXXXXXX\"]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/code/{code}": { + "get": { + "operationId": "GetDiscountsDiscountCode", + "summary": "Get Discount by Code", + "description": "Retrieves a Discount by its discount code", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "description": "The code of the Discount", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieveByCode", + "queryParams": "AdminGetDiscountsDiscountCodeParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.retrieveByCode(code)\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/discounts/code/{code}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{discount_id}/conditions": { + "post": { + "operationId": "PostDiscountsDiscountConditions", + "summary": "Create a Condition", + "description": "Creates a DiscountCondition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each product of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsDiscountConditions" + } + } + } + }, + "x-codegen": { + "method": "createCondition", + "queryParams": "AdminPostDiscountsDiscountConditionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nimport { DiscountConditionOperator } from \"@medusajs/medusa\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.createCondition(discount_id, {\n operator: DiscountConditionOperator.IN\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"operator\": \"in\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{discount_id}/conditions/{condition_id}": { + "get": { + "operationId": "GetDiscountsDiscountConditionsCondition", + "summary": "Get a Condition", + "description": "Gets a DiscountCondition", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Discount.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "condition_id", + "required": true, + "description": "The ID of the DiscountCondition.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "getCondition", + "queryParams": "AdminGetDiscountsDiscountConditionsConditionParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.getCondition(discount_id, condition_id)\n.then(({ discount_condition }) => {\n console.log(discount_condition.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountConditionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostDiscountsDiscountConditionsCondition", + "summary": "Update a Condition", + "description": "Updates a DiscountCondition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "condition_id", + "required": true, + "description": "The ID of the DiscountCondition.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each item of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each item of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsDiscountConditionsCondition" + } + } + } + }, + "x-codegen": { + "method": "updateCondition", + "queryParams": "AdminPostDiscountsDiscountConditionsConditionParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.updateCondition(discount_id, condition_id, {\n products: [\n product_id\n ]\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"products\": [\n \"prod_01G1G5V2MBA328390B5AXJ610F\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDiscountsDiscountConditionsCondition", + "summary": "Delete a Condition", + "description": "Deletes a DiscountCondition", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Discount", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "condition_id", + "required": true, + "description": "The ID of the DiscountCondition", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteCondition", + "queryParams": "AdminDeleteDiscountsDiscountConditionsConditionParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.deleteCondition(discount_id, condition_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountConditionsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{discount_id}/conditions/{condition_id}/batch": { + "post": { + "operationId": "PostDiscountsDiscountConditionsConditionBatch", + "summary": "Add Batch Resources", + "description": "Add a batch of resources to a discount condition.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "condition_id", + "required": true, + "description": "The ID of the condition on which to add the item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which relations should be expanded in each discount of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each discount of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsDiscountConditionsConditionBatchReq" + } + } + } + }, + "x-codegen": { + "method": "addConditionResourceBatch", + "queryParams": "AdminPostDiscountsDiscountConditionsConditionBatchParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.addConditionResourceBatch(discount_id, condition_id, {\n resources: [{ id: item_id }]\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"resources\": [{ \"id\": \"item_id\" }]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDiscountsDiscountConditionsConditionBatch", + "summary": "Delete Batch Resources", + "description": "Delete a batch of resources from a discount condition.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "discount_id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "condition_id", + "required": true, + "description": "The ID of the condition on which to add the item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which relations should be expanded in each discount of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each discount of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteDiscountsDiscountConditionsConditionBatchReq" + } + } + } + }, + "x-codegen": { + "method": "deleteConditionResourceBatch" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.deleteConditionResourceBatch(discount_id, condition_id, {\n resources: [{ id: item_id }]\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"resources\": [{ \"id\": \"item_id\" }]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{id}": { + "get": { + "operationId": "GetDiscountsDiscount", + "summary": "Get a Discount", + "description": "Retrieves a Discount", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetDiscountParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.retrieve(discount_id)\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/discounts/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostDiscountsDiscount", + "summary": "Update a Discount", + "description": "Updates a Discount with a given set of rules that define how the Discount behaves.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each item of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each item of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsDiscountReq" + } + } + } + }, + "x-codegen": { + "method": "update", + "queryParams": "AdminPostDiscountsDiscountParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.update(discount_id, {\n code: 'TEST'\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"code\": \"TEST\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDiscountsDiscount", + "summary": "Delete a Discount", + "description": "Deletes a Discount.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.delete(discount_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{id}/dynamic-codes": { + "post": { + "operationId": "PostDiscountsDiscountDynamicCodes", + "summary": "Create a Dynamic Code", + "description": "Creates a dynamic unique code that can map to a parent Discount. This is useful if you want to automatically generate codes with the same behaviour.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount to create the dynamic code from.\"", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDiscountsDiscountDynamicCodesReq" + } + } + } + }, + "x-codegen": { + "method": "createDynamicCode" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.createDynamicCode(discount_id, {\n code: 'TEST',\n usage_limit: 1\n})\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/dynamic-codes' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"code\": \"TEST\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{id}/dynamic-codes/{code}": { + "delete": { + "operationId": "DeleteDiscountsDiscountDynamicCodesCode", + "summary": "Delete a Dynamic Code", + "description": "Deletes a dynamic code from a Discount.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "code", + "required": true, + "description": "The ID of the Discount", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteDynamicCode" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.deleteDynamicCode(discount_id, code)\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/dynamic-codes/{code}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/discounts/{id}/regions/{region_id}": { + "post": { + "operationId": "PostDiscountsDiscountRegionsRegion", + "summary": "Add Region", + "description": "Adds a Region to the list of Regions that a Discount can be used in.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "region_id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "addRegion" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.addRegion(discount_id, region_id)\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/regions/{region_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDiscountsDiscountRegionsRegion", + "summary": "Remove Region", + "x-authenticated": true, + "description": "Removes a Region from the list of Regions that a Discount can be used in.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Discount.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "region_id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "removeRegion" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.discounts.removeRegion(discount_id, region_id)\n.then(({ discount }) => {\n console.log(discount.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/regions/{region_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Discounts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDiscountsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/draft-orders": { + "get": { + "operationId": "GetDraftOrders", + "summary": "List Draft Orders", + "description": "Retrieves an list of Draft Orders", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of items returned.", + "schema": { + "type": "number", + "default": "50" + } + }, + { + "in": "query", + "name": "q", + "description": "a search term to search emails in carts associated with draft orders and display IDs of draft orders", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetDraftOrdersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.list()\n.then(({ draft_orders, limit, offset, count }) => {\n console.log(draft_orders.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/draft-orders' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostDraftOrders", + "summary": "Create a Draft Order", + "description": "Creates a Draft Order", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDraftOrdersReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.create({\n email: 'user@example.com',\n region_id,\n items: [\n {\n quantity: 1\n }\n ],\n shipping_methods: [\n {\n option_id\n }\n ],\n})\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/draft-orders' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"region_id\": \"{region_id}\"\n \"items\": [\n {\n \"quantity\": 1\n }\n ],\n \"shipping_methods\": [\n {\n \"option_id\": \"{option_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/draft-orders/{id}": { + "get": { + "operationId": "GetDraftOrdersDraftOrder", + "summary": "Get a Draft Order", + "description": "Retrieves a Draft Order.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.retrieve(draft_order_id)\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/draft-orders/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostDraftOrdersDraftOrder", + "summary": "Update a Draft Order", + "description": "Updates a Draft Order.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDraftOrdersDraftOrderReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.update(draft_order_id, {\n email: \"user@example.com\"\n})\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDraftOrdersDraftOrder", + "summary": "Delete a Draft Order", + "description": "Deletes a Draft Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.delete(draft_order_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/draft-orders/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/draft-orders/{id}/line-items": { + "post": { + "operationId": "PostDraftOrdersDraftOrderLineItems", + "summary": "Create a Line Item", + "description": "Creates a Line Item for the Draft Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsReq" + } + } + } + }, + "x-codegen": { + "method": "addLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.addLineItem(draft_order_id, {\n quantity: 1\n})\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/line-items' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"quantity\": 1\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/draft-orders/{id}/line-items/{line_id}": { + "post": { + "operationId": "PostDraftOrdersDraftOrderLineItemsItem", + "summary": "Update a Line Item", + "description": "Updates a Line Item for a Draft Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "line_id", + "required": true, + "description": "The ID of the Line Item.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsItemReq" + } + } + } + }, + "x-codegen": { + "method": "updateLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.updateLineItem(draft_order_id, line_id, {\n quantity: 1\n})\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/line-items/{line_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"quantity\": 1\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteDraftOrdersDraftOrderLineItemsItem", + "summary": "Delete a Line Item", + "description": "Removes a Line Item from a Draft Order.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "line_id", + "required": true, + "description": "The ID of the Draft Order.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "removeLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.removeLineItem(draft_order_id, item_id)\n.then(({ draft_order }) => {\n console.log(draft_order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/draft-orders/{id}/line-items/{line_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDraftOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/draft-orders/{id}/pay": { + "post": { + "summary": "Registers a Payment", + "operationId": "PostDraftOrdersDraftOrderRegisterPayment", + "description": "Registers a payment for a Draft Order.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The Draft Order id.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "markPaid" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.draftOrders.markPaid(draft_order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/pay' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Draft Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/gift-cards": { + "get": { + "operationId": "GetGiftCards", + "summary": "List Gift Cards", + "description": "Retrieves a list of Gift Cards.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of items returned.", + "schema": { + "type": "number", + "default": "50" + } + }, + { + "in": "query", + "name": "q", + "description": "a search term to search by code or display ID", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetGiftCardsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.giftCards.list()\n.then(({ gift_cards, limit, offset, count }) => {\n console.log(gift_cards.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/gift-cards' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGiftCardsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostGiftCards", + "summary": "Create a Gift Card", + "description": "Creates a Gift Card that can redeemed by its unique code. The Gift Card is only valid within 1 region.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostGiftCardsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.giftCards.create({\n region_id\n})\n.then(({ gift_card }) => {\n console.log(gift_card.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/gift-cards' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"region_id\": \"{region_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGiftCardsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/gift-cards/{id}": { + "get": { + "operationId": "GetGiftCardsGiftCard", + "summary": "Get a Gift Card", + "description": "Retrieves a Gift Card.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Gift Card.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.giftCards.retrieve(gift_card_id)\n.then(({ gift_card }) => {\n console.log(gift_card.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/gift-cards/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGiftCardsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostGiftCardsGiftCard", + "summary": "Update a Gift Card", + "description": "Update a Gift Card that can redeemed by its unique code. The Gift Card is only valid within 1 region.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Gift Card.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostGiftCardsGiftCardReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.giftCards.update(gift_card_id, {\n region_id\n})\n.then(({ gift_card }) => {\n console.log(gift_card.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/gift-cards/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"region_id\": \"{region_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGiftCardsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteGiftCardsGiftCard", + "summary": "Delete a Gift Card", + "description": "Deletes a Gift Card", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Gift Card to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.giftCards.delete(gift_card_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/gift-cards/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGiftCardsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/inventory-items": { + "get": { + "operationId": "GetInventoryItems", + "summary": "List inventory items.", + "description": "Lists inventory items.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "How many inventory items to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of inventory items returned.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "Query used for searching product inventory items and their properties.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "location_id", + "style": "form", + "explode": false, + "description": "Locations ids to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "id", + "description": "id to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sku", + "description": "sku to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "origin_country", + "description": "origin_country to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "mid_code", + "description": "mid_code to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "material", + "description": "material to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "hs_code", + "description": "hs_code to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "weight", + "description": "weight to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "length", + "description": "length to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "height", + "description": "height to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "width", + "description": "width to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "requires_shipping", + "description": "requires_shipping to search for.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetInventoryItemsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.list()\n.then(({ inventory_items }) => {\n console.log(inventory_items.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/inventory-items' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostInventoryItems", + "summary": "Create an Inventory Item.", + "description": "Creates an Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInventoryItemsReq" + } + } + } + }, + "x-codegen": { + "method": "create", + "queryParams": "AdminPostInventoryItemsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.create(inventoryItemId, {\n variant_id: 'variant_123',\n sku: \"sku-123\",\n})\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/inventory-items' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"variant_id\": \"variant_123\",\n \"sku\": \"sku-123\",\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/inventory-items/{id}": { + "get": { + "operationId": "GetInventoryItemsInventoryItem", + "summary": "Retrive an Inventory Item.", + "description": "Retrives an Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetInventoryItemsItemParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.retrieve(inventoryItemId)\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/inventory-items/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostInventoryItemsInventoryItem", + "summary": "Update an Inventory Item.", + "description": "Updates an Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInventoryItemsInventoryItemReq" + } + } + } + }, + "x-codegen": { + "method": "update", + "queryParams": "AdminPostInventoryItemsInventoryItemParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.update(inventoryItemId, {\n origin_country: \"US\",\n})\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"origin_country\": \"US\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteInventoryItemsInventoryItem", + "summary": "Delete an Inventory Item", + "description": "Delete an Inventory Item", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.delete(inventoryItemId)\n .then(({ id, object, deleted }) => {\n console.log(id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/inventory-items/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + } + } + } + }, + "/admin/inventory-items/{id}/location-levels": { + "get": { + "operationId": "GetInventoryItemsInventoryItemLocationLevels", + "summary": "List stock levels of a given location.", + "description": "Lists stock levels of a given location.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many stock locations levels to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of stock locations levels returned.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listLocationLevels", + "queryParams": "AdminGetInventoryItemsItemLocationLevelsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.listLocationLevels(inventoryItemId)\n.then(({ inventory_item }) => {\n console.log(inventory_item.location_levels);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/inventory-items/{id}/location-levels' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsLocationLevelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostInventoryItemsInventoryItemLocationLevels", + "summary": "Create an Inventory Location Level for a given Inventory Item.", + "description": "Creates an Inventory Location Level for a given Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInventoryItemsItemLocationLevelsReq" + } + } + } + }, + "x-codegen": { + "method": "createLocationLevel", + "queryParams": "AdminPostInventoryItemsItemLocationLevelsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.createLocationLevel(inventoryItemId, {\n location_id: 'sloc',\n stocked_quantity: 10,\n})\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}/location-levels' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"location_id\": \"sloc\",\n \"stocked_quantity\": 10\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/inventory-items/{id}/location-levels/{location_id}": { + "post": { + "operationId": "PostInventoryItemsInventoryItemLocationLevelsLocationLevel", + "summary": "Update an Inventory Location Level for a given Inventory Item.", + "description": "Updates an Inventory Location Level for a given Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "location_id", + "required": true, + "description": "The ID of the Location.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInventoryItemsItemLocationLevelsLevelReq" + } + } + } + }, + "x-codegen": { + "method": "updateLocationLevel", + "queryParams": "AdminPostInventoryItemsItemLocationLevelsLevelParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.updateLocationLevel(inventoryItemId, locationId, {\n stocked_quantity: 15,\n})\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}/location-levels/{location_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"stocked_quantity\": 15\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteInventoryItemsInventoryIteLocationLevelsLocation", + "summary": "Delete a location level of an Inventory Item.", + "description": "Delete a location level of an Inventory Item.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Inventory Item.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "location_id", + "required": true, + "description": "The ID of the location.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteLocationLevel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.inventoryItems.deleteLocationLevel(inventoryItemId, locationId)\n.then(({ inventory_item }) => {\n console.log(inventory_item.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/inventory-items/{id}/location-levels/{location_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Inventory Items" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInventoryItemsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/invites": { + "get": { + "operationId": "GetInvites", + "summary": "Lists Invites", + "description": "Lists all Invites", + "x-authenticated": true, + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.invites.list()\n.then(({ invites }) => {\n console.log(invites.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/invites' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Invites" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminListInvitesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostInvites", + "summary": "Create an Invite", + "description": "Creates an Invite and triggers an 'invite' created event", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInvitesReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.invites.create({\n user: \"user@example.com\",\n role: \"admin\"\n})\n.then(() => {\n // successful\n})\n.catch(() => {\n // an error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/invites' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"user\": \"user@example.com\",\n \"role\": \"admin\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Invites" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/invites/accept": { + "post": { + "operationId": "PostInvitesInviteAccept", + "summary": "Accept an Invite", + "description": "Accepts an Invite and creates a corresponding user", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostInvitesInviteAcceptReq" + } + } + } + }, + "x-codegen": { + "method": "accept" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.invites.accept({\n token,\n user: {\n first_name: 'Brigitte',\n last_name: 'Collier',\n password: 'supersecret'\n }\n})\n.then(() => {\n // successful\n})\n.catch(() => {\n // an error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/invites/accept' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"token\": \"{token}\",\n \"user\": {\n \"first_name\": \"Brigitte\",\n \"last_name\": \"Collier\",\n \"password\": \"supersecret\"\n }\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Invites" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/invites/{invite_id}": { + "delete": { + "operationId": "DeleteInvitesInvite", + "summary": "Delete an Invite", + "description": "Deletes an Invite", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "invite_id", + "required": true, + "description": "The ID of the Invite", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.invites.delete(invite_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/invites/{invite_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Invites" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminInviteDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/invites/{invite_id}/resend": { + "post": { + "operationId": "PostInvitesInviteResend", + "summary": "Resend an Invite", + "description": "Resends an Invite by triggering the 'invite' created event again", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "invite_id", + "required": true, + "description": "The ID of the Invite", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "resend" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.invites.resend(invite_id)\n.then(() => {\n // successful\n})\n.catch(() => {\n // an error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/invites/{invite_id}/resend' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Invites" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/notes": { + "get": { + "operationId": "GetNotes", + "summary": "List Notes", + "x-authenticated": true, + "description": "Retrieves a list of notes", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of notes to get", + "schema": { + "type": "number", + "default": "50" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset at which to get notes", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "resource_id", + "description": "The ID which the notes belongs to", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetNotesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notes.list()\n.then(({ notes, limit, offset, count }) => {\n console.log(notes.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/notes' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostNotes", + "summary": "Creates a Note", + "description": "Creates a Note which can be associated with any resource as required.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostNotesReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notes.create({\n resource_id,\n resource_type: 'order',\n value: 'We delivered this order'\n})\n.then(({ note }) => {\n console.log(note.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/notes' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"resource_id\": \"{resource_id}\",\n \"resource_type\": \"order\",\n \"value\": \"We delivered this order\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/notes/{id}": { + "get": { + "operationId": "GetNotesNote", + "summary": "Get a Note", + "description": "Retrieves a single note using its id", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the note to retrieve.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notes.retrieve(note_id)\n.then(({ note }) => {\n console.log(note.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/notes/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostNotesNote", + "summary": "Update a Note", + "x-authenticated": true, + "description": "Updates a Note associated with some resource", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Note to update", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostNotesNoteReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notes.update(note_id, {\n value: 'We delivered this order'\n})\n.then(({ note }) => {\n console.log(note.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/notes/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"value\": \"We delivered this order\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteNotesNote", + "summary": "Delete a Note", + "description": "Deletes a Note.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Note to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notes.delete(note_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/notes/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notes" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotesDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/notifications": { + "get": { + "operationId": "GetNotifications", + "summary": "List Notifications", + "description": "Retrieves a list of Notifications.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "The number of notifications to skip before starting to collect the notifications set", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of notifications to return", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated fields to include in the result set", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated fields to populate", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "event_name", + "description": "The name of the event that the notification was sent for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "resource_type", + "description": "The type of resource that the Notification refers to.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "resource_id", + "description": "The ID of the resource that the Notification refers to.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "to", + "description": "The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "include_resends", + "description": "A boolean indicating whether the result set should include resent notifications or not", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetNotificationsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notifications.list()\n.then(({ notifications }) => {\n console.log(notifications.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/notifications' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotificationsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/notifications/{id}/resend": { + "post": { + "operationId": "PostNotificationsNotificationResend", + "summary": "Resend Notification", + "description": "Resends a previously sent notifications, with the same data but optionally to a different address", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Notification", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostNotificationsNotificationResendReq" + } + } + } + }, + "x-codegen": { + "method": "resend" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.notifications.resend(notification_id)\n.then(({ notification }) => {\n console.log(notification.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/notifications/{id}/resend' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Notifications" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminNotificationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits": { + "get": { + "operationId": "GetOrderEdits", + "summary": "List OrderEdits", + "description": "List OrderEdits.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching order edit internal note.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order_id", + "description": "List order edits by order id.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of items in the response", + "schema": { + "type": "number", + "default": "20" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset of items in response", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "GetOrderEditsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.list()\n .then(({ order_edits, count, limit, offset }) => {\n console.log(order_edits.length)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/order-edits' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostOrderEdits", + "summary": "Create an OrderEdit", + "description": "Creates an OrderEdit.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrderEditsReq" + } + } + } + }, + "x-authenticated": true, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.create({ order_id })\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{ \"order_id\": \"my_order_id\", \"internal_note\": \"my_optional_note\" }'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits/{id}": { + "get": { + "operationId": "GetOrderEditsOrderEdit", + "summary": "Get an OrderEdit", + "description": "Retrieves a OrderEdit.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the OrderEdit.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "GetOrderEditsOrderEditParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.retrieve(orderEditId)\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/order-edits/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostOrderEditsOrderEdit", + "summary": "Update an OrderEdit", + "description": "Updates a OrderEdit.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the OrderEdit.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrderEditsOrderEditReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.update(order_edit_id, {\n internal_note: \"internal reason XY\"\n})\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"internal_note\": \"internal reason XY\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteOrderEditsOrderEdit", + "summary": "Delete an Order Edit", + "description": "Delete an Order Edit", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.delete(order_edit_id)\n .then(({ id, object, deleted }) => {\n console.log(id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + } + } + } + }, + "/admin/order-edits/{id}/cancel": { + "post": { + "operationId": "PostOrderEditsOrderEditCancel", + "summary": "Cancel an OrderEdit", + "description": "Cancels an OrderEdit.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the OrderEdit.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.cancel(order_edit_id)\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits/{id}/changes/{change_id}": { + "delete": { + "operationId": "DeleteOrderEditsOrderEditItemChange", + "summary": "Delete a Line Item Change", + "description": "Deletes an Order Edit Item Change", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit to delete.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "change_id", + "required": true, + "description": "The ID of the Order Edit Item Change to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteItemChange" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.deleteItemChange(order_edit_id, item_change_id)\n .then(({ id, object, deleted }) => {\n console.log(id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}/changes/{change_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditItemChangeDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + } + } + } + }, + "/admin/order-edits/{id}/confirm": { + "post": { + "operationId": "PostOrderEditsOrderEditConfirm", + "summary": "Confirms an OrderEdit", + "description": "Confirms an OrderEdit.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the order edit.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "confirm" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.confirm(order_edit_id)\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/confirm' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits/{id}/items": { + "post": { + "operationId": "PostOrderEditsEditLineItems", + "summary": "Add a Line Item", + "description": "Create an OrderEdit LineItem.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrderEditsEditLineItemsReq" + } + } + } + }, + "x-authenticated": true, + "x-codegen": { + "method": "addLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.addLineItem(order_edit_id, {\n variant_id,\n quantity\n})\n.then(({ order_edit }) => {\n console.log(order_edit.id)\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/items' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{ \"variant_id\": \"variant_01G1G5V2MRX2V3PVSR2WXYPFB6\", \"quantity\": 3 }'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits/{id}/items/{item_id}": { + "post": { + "operationId": "PostOrderEditsEditLineItemsLineItem", + "summary": "Upsert Line Item Change", + "description": "Create or update the order edit change holding the line item changes", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit to update.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "item_id", + "required": true, + "description": "The ID of the order edit item to update.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrderEditsEditLineItemsLineItemReq" + } + } + } + }, + "x-codegen": { + "method": "updateLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.updateLineItem(order_edit_id, line_item_id, {\n quantity: 5\n })\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/items/{item_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{ \"quantity\": 5 }'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteOrderEditsOrderEditLineItemsLineItem", + "summary": "Delete a Line Item", + "description": "Delete line items from an order edit and create change item", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit to delete from.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "item_id", + "required": true, + "description": "The ID of the order edit item to delete from order.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "removeLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.removeLineItem(order_edit_id, line_item_id)\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}/items/{item_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/order-edits/{id}/request": { + "post": { + "operationId": "PostOrderEditsOrderEditRequest", + "summary": "Request Confirmation", + "description": "Request customer confirmation of an Order Edit", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit to request confirmation from.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "requestConfirmation" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orderEdits.requestConfirmation(order_edit_id)\n .then({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/request' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders": { + "get": { + "operationId": "GetOrders", + "summary": "List Orders", + "description": "Retrieves a list of Orders", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching orders by shipping address first name, orders' email, and orders' display ID", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "description": "ID of the order to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "style": "form", + "explode": false, + "description": "Status to search for", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "pending", + "completed", + "archived", + "canceled", + "requires_action" + ] + } + } + }, + { + "in": "query", + "name": "fulfillment_status", + "style": "form", + "explode": false, + "description": "Fulfillment status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "not_fulfilled", + "fulfilled", + "partially_fulfilled", + "shipped", + "partially_shipped", + "canceled", + "returned", + "partially_returned", + "requires_action" + ] + } + } + }, + { + "in": "query", + "name": "payment_status", + "style": "form", + "explode": false, + "description": "Payment status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "captured", + "awaiting", + "not_paid", + "refunded", + "partially_refunded", + "canceled", + "requires_action" + ] + } + } + }, + { + "in": "query", + "name": "display_id", + "description": "Display ID to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "customer_id", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "email", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "style": "form", + "explode": false, + "description": "Regions to search orders by", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "ID of a Region." + }, + { + "type": "array", + "items": { + "type": "string", + "description": "ID of a Region." + } + } + ] + } + }, + { + "in": "query", + "name": "currency_code", + "style": "form", + "explode": false, + "description": "Currency code to search for", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + }, + { + "in": "query", + "name": "tax_rate", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting orders were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting orders were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "canceled_at", + "description": "Date comparison for when resulting orders were canceled.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "sales_channel_id", + "style": "form", + "explode": false, + "description": "Filter by Sales Channels", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "The ID of a Sales Channel" + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many orders to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of orders returned.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each order of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each order of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetOrdersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.list()\n.then(({ orders, limit, offset, count }) => {\n console.log(orders.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/orders' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}": { + "get": { + "operationId": "GetOrdersOrder", + "summary": "Get an Order", + "description": "Retrieves an Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetOrdersOrderParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.retrieve(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/orders/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostOrdersOrder", + "summary": "Update an Order", + "description": "Updates and order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderReq" + } + } + } + }, + "x-codegen": { + "method": "update", + "params": "AdminPostOrdersOrderParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.update(order_id, {\n email: 'user@example.com'\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/adasda' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/archive": { + "post": { + "operationId": "PostOrdersOrderArchive", + "summary": "Archive Order", + "description": "Archives the order with the given id.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "archive", + "params": "AdminPostOrdersOrderArchiveParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.archive(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/archive' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/cancel": { + "post": { + "operationId": "PostOrdersOrderCancel", + "summary": "Cancel an Order", + "description": "Registers an Order as canceled. This triggers a flow that will cancel any created Fulfillments and Payments, may fail if the Payment or Fulfillment Provider is unable to cancel the Payment/Fulfillment.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancel", + "params": "AdminPostOrdersOrderCancel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancel(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/capture": { + "post": { + "operationId": "PostOrdersOrderCapture", + "summary": "Capture Order's Payment", + "description": "Captures all the Payments associated with an Order.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "capturePayment", + "params": "AdminPostOrdersOrderCaptureParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.capturePayment(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/capture' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims": { + "post": { + "operationId": "PostOrdersOrderClaims", + "summary": "Create a Claim", + "description": "Creates a Claim.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderClaimsReq" + } + } + } + }, + "x-codegen": { + "method": "createClaim", + "params": "AdminPostOrdersOrderClaimsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createClaim(order_id, {\n type: 'refund',\n claim_items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"type\": \"refund\",\n \"claim_items\": [\n {\n \"item_id\": \"asdsd\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims/{claim_id}": { + "post": { + "operationId": "PostOrdersOrderClaimsClaim", + "summary": "Update a Claim", + "description": "Updates a Claim.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "claim_id", + "required": true, + "description": "The ID of the Claim.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderClaimsClaimReq" + } + } + } + }, + "x-codegen": { + "method": "updateClaim", + "params": "AdminPostOrdersOrderClaimsClaimParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.updateClaim(order_id, claim_id, {\n no_notification: true\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"no_notification\": true\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims/{claim_id}/cancel": { + "post": { + "operationId": "PostOrdersClaimCancel", + "summary": "Cancel a Claim", + "description": "Cancels a Claim", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "claim_id", + "required": true, + "description": "The ID of the Claim.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancelClaim", + "params": "AdminPostOrdersClaimCancel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancelClaim(order_id, claim_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims/{claim_id}/fulfillments": { + "post": { + "operationId": "PostOrdersOrderClaimsClaimFulfillments", + "summary": "Create Claim Fulfillment", + "description": "Creates a Fulfillment for a Claim.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "claim_id", + "required": true, + "description": "The ID of the Claim.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderClaimsClaimFulfillmentsReq" + } + } + } + }, + "x-codegen": { + "method": "fulfillClaim", + "params": "AdminPostOrdersOrderClaimsClaimFulfillmentsReq" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.fulfillClaim(order_id, claim_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/fulfillments' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel": { + "post": { + "operationId": "PostOrdersClaimFulfillmentsCancel", + "summary": "Cancel Claim Fulfillment", + "description": "Registers a claim's fulfillment as canceled.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order which the Claim relates to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "claim_id", + "required": true, + "description": "The ID of the Claim which the Fulfillment relates to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "fulfillment_id", + "required": true, + "description": "The ID of the Fulfillment.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancelClaimFulfillment", + "params": "AdminPostOrdersClaimFulfillmentsCancelParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancelClaimFulfillment(order_id, claim_id, fulfillment_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/claims/{claim_id}/shipments": { + "post": { + "operationId": "PostOrdersOrderClaimsClaimShipments", + "summary": "Create Claim Shipment", + "description": "Registers a Claim Fulfillment as shipped.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "claim_id", + "required": true, + "description": "The ID of the Claim.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderClaimsClaimShipmentsReq" + } + } + } + }, + "x-codegen": { + "method": "createClaimShipment", + "params": "AdminPostOrdersOrderClaimsClaimShipmentsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createClaimShipment(order_id, claim_id, {\n fulfillment_id\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/shipments' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"fulfillment_id\": \"{fulfillment_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/complete": { + "post": { + "operationId": "PostOrdersOrderComplete", + "summary": "Complete an Order", + "description": "Completes an Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "complete", + "params": "AdminPostOrdersOrderCompleteParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.complete(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/complete' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/fulfillment": { + "post": { + "operationId": "PostOrdersOrderFulfillments", + "summary": "Create a Fulfillment", + "description": "Creates a Fulfillment of an Order - will notify Fulfillment Providers to prepare a shipment.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderFulfillmentsReq" + } + } + } + }, + "x-codegen": { + "method": "createFulfillment", + "params": "AdminPostOrdersOrderFulfillmentsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createFulfillment(order_id, {\n items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/fulfillment' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"items\": [\n {\n \"item_id\": \"{item_id}\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/fulfillments/{fulfillment_id}/cancel": { + "post": { + "operationId": "PostOrdersOrderFulfillmentsCancel", + "summary": "Cancels a Fulfilmment", + "description": "Registers a Fulfillment as canceled.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order which the Fulfillment relates to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "fulfillment_id", + "required": true, + "description": "The ID of the Fulfillment", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancelFulfillment", + "params": "AdminPostOrdersOrderFulfillementsCancelParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancelFulfillment(order_id, fulfillment_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/fulfillments/{fulfillment_id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/line-items/{line_item_id}/reserve": { + "post": { + "operationId": "PostOrdersOrderLineItemReservations", + "summary": "Create a Reservation for a line item", + "description": "Creates a Reservation for a line item at a specified location, optionally for a partial quantity.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "line_item_id", + "required": true, + "description": "The ID of the Line item.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersOrderLineItemReservationReq" + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createReservation(order_id, line_item_id, {\n location_id\n})\n.then(({ reservation }) => {\n console.log(reservation.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/line-items/{line_item_id}/reservations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"location_id\": \"loc_1\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReservationsReq" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/refund": { + "post": { + "operationId": "PostOrdersOrderRefunds", + "summary": "Create a Refund", + "description": "Issues a Refund.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderRefundsReq" + } + } + } + }, + "x-codegen": { + "method": "refundPayment", + "params": "AdminPostOrdersOrderRefundsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.refundPayment(order_id, {\n amount: 1000,\n reason: 'Do not like it'\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/adasda/refund' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"amount\": 1000,\n \"reason\": \"Do not like it\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/reservations": { + "get": { + "operationId": "GetOrdersOrderReservations", + "summary": "Get reservations for an Order", + "description": "Retrieves reservations for an Order", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many reservations to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of reservations returned.", + "schema": { + "type": "integer", + "default": 20 + } + } + ], + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.retrieveReservations(order_id)\n.then(({ reservations }) => {\n console.log(reservations[0].id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/orders/{id}/reservations' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/return": { + "post": { + "operationId": "PostOrdersOrderReturns", + "summary": "Request a Return", + "description": "Requests a Return. If applicable a return label will be created and other plugins notified.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderReturnsReq" + } + } + } + }, + "x-codegen": { + "method": "requestReturn", + "params": "AdminPostOrdersOrderReturnsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.requestReturn(order_id, {\n items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/return' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"items\": [\n {\n \"item_id\": \"{item_id}\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/shipment": { + "post": { + "operationId": "PostOrdersOrderShipment", + "summary": "Create a Shipment", + "description": "Registers a Fulfillment as shipped.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderShipmentReq" + } + } + } + }, + "x-codegen": { + "method": "createShipment", + "params": "AdminPostOrdersOrderShipmentParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createShipment(order_id, {\n fulfillment_id\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/shipment' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"fulfillment_id\": \"{fulfillment_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/shipping-methods": { + "post": { + "operationId": "PostOrdersOrderShippingMethods", + "summary": "Add a Shipping Method", + "description": "Adds a Shipping Method to an Order. If another Shipping Method exists with the same Shipping Profile, the previous Shipping Method will be replaced.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderShippingMethodsReq" + } + } + } + }, + "x-authenticated": true, + "x-codegen": { + "method": "addShippingMethod", + "params": "AdminPostOrdersOrderShippingMethodsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.addShippingMethod(order_id, {\n price: 1000,\n option_id\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/shipping-methods' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"price\": 1000,\n \"option_id\": \"{option_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps": { + "post": { + "operationId": "PostOrdersOrderSwaps", + "summary": "Create a Swap", + "description": "Creates a Swap. Swaps are used to handle Return of previously purchased goods and Fulfillment of replacements simultaneously.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded the order of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included the order of the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderSwapsReq" + } + } + } + }, + "x-codegen": { + "method": "createSwap", + "queryParams": "AdminPostOrdersOrderSwapsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createSwap(order_id, {\n return_items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"return_items\": [\n {\n \"item_id\": \"asfasf\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps/{swap_id}/cancel": { + "post": { + "operationId": "PostOrdersSwapCancel", + "summary": "Cancels a Swap", + "description": "Cancels a Swap", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "swap_id", + "required": true, + "description": "The ID of the Swap.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancelSwap", + "params": "AdminPostOrdersSwapCancelParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancelSwap(order_id, swap_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{order_id}/swaps/{swap_id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps/{swap_id}/fulfillments": { + "post": { + "operationId": "PostOrdersOrderSwapsSwapFulfillments", + "summary": "Create Swap Fulfillment", + "description": "Creates a Fulfillment for a Swap.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "swap_id", + "required": true, + "description": "The ID of the Swap.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderSwapsSwapFulfillmentsReq" + } + } + } + }, + "x-codegen": { + "method": "fulfillSwap", + "params": "AdminPostOrdersOrderSwapsSwapFulfillmentsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.fulfillSwap(order_id, swap_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/fulfillments' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel": { + "post": { + "operationId": "PostOrdersSwapFulfillmentsCancel", + "summary": "Cancel Swap's Fulfilmment", + "description": "Registers a Swap's Fulfillment as canceled.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order which the Swap relates to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "swap_id", + "required": true, + "description": "The ID of the Swap which the Fulfillment relates to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "fulfillment_id", + "required": true, + "description": "The ID of the Fulfillment.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancelSwapFulfillment", + "params": "AdminPostOrdersSwapFulfillementsCancelParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.cancelSwapFulfillment(order_id, swap_id, fulfillment_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps/{swap_id}/process-payment": { + "post": { + "operationId": "PostOrdersOrderSwapsSwapProcessPayment", + "summary": "Process Swap Payment", + "description": "When there are differences between the returned and shipped Products in a Swap, the difference must be processed. Either a Refund will be issued or a Payment will be captured.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "swap_id", + "required": true, + "description": "The ID of the Swap.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "processSwapPayment", + "params": "AdminPostOrdersOrderSwapsSwapProcessPaymentParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.processSwapPayment(order_id, swap_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/process-payment' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/orders/{id}/swaps/{swap_id}/shipments": { + "post": { + "operationId": "PostOrdersOrderSwapsSwapShipments", + "summary": "Create Swap Shipment", + "description": "Registers a Swap Fulfillment as shipped.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "swap_id", + "required": true, + "description": "The ID of the Swap.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the result.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostOrdersOrderSwapsSwapShipmentsReq" + } + } + } + }, + "x-codegen": { + "method": "createSwapShipment", + "params": "AdminPostOrdersOrderSwapsSwapShipmentsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.orders.createSwapShipment(order_id, swap_id, {\n fulfillment_id\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/shipments' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"fulfillment_id\": \"{fulfillment_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/payment-collections/{id}": { + "get": { + "operationId": "GetPaymentCollectionsPaymentCollection", + "summary": "Get a PaymentCollection", + "description": "Retrieves a PaymentCollection.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PaymentCollection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetPaymentCollectionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.paymentCollections.retrieve(paymentCollectionId)\n .then(({ payment_collection }) => {\n console.log(payment_collection.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/payment-collections/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostPaymentCollectionsPaymentCollection", + "summary": "Update PaymentCollection", + "description": "Updates a PaymentCollection.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PaymentCollection.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUpdatePaymentCollectionsReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.paymentCollections.update(payment_collection_id, {\n description: \"Description of payCol\"\n})\n .then(({ payment_collection }) => {\n console.log(payment_collection.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/payment-collections/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"description\": \"Description of payCol\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeletePaymentCollectionsPaymentCollection", + "summary": "Del a PaymentCollection", + "description": "Deletes a Payment Collection", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment Collection to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.paymentCollections.delete(payment_collection_id)\n .then(({ id, object, deleted }) => {\n console.log(id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/payment-collections/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentCollectionDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + } + } + } + }, + "/admin/payment-collections/{id}/authorize": { + "post": { + "operationId": "PostPaymentCollectionsPaymentCollectionAuthorize", + "summary": "Mark Authorized", + "description": "Sets the status of PaymentCollection as Authorized.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PaymentCollection.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "markAsAuthorized" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.paymentCollections.markAsAuthorized(payment_collection_id)\n .then(({ payment_collection }) => {\n console.log(payment_collection.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/payment-collections/{id}/authorize' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/payments/{id}": { + "get": { + "operationId": "GetPaymentsPayment", + "summary": "Get Payment details", + "description": "Retrieves the Payment details", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "GetPaymentsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.payments.retrieve(payment_id)\n.then(({ payment }) => {\n console.log(payment.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/payments/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payments" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/payments/{id}/capture": { + "post": { + "operationId": "PostPaymentsPaymentCapture", + "summary": "Capture a Payment", + "description": "Captures a Payment.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "capturePayment" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.payments.capturePayment(payment_id)\n.then(({ payment }) => {\n console.log(payment.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/payments/{id}/capture' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payments" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/payments/{id}/refund": { + "post": { + "operationId": "PostPaymentsPaymentRefunds", + "summary": "Create a Refund", + "description": "Issues a Refund.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPaymentRefundsReq" + } + } + } + }, + "x-codegen": { + "method": "refundPayment" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.payments.refundPayment(payment_id, {\n amount: 1000,\n reason: 'return',\n note: 'Do not like it',\n})\n.then(({ payment }) => {\n console.log(payment.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/payments/pay_123/refund' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"amount\": 1000,\n \"reason\": \"return\",\n \"note\": \"Do not like it\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payments" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRefundRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists": { + "get": { + "operationId": "GetPriceLists", + "summary": "List Price Lists", + "description": "Retrieves a list of Price Lists.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of items to get", + "schema": { + "type": "number", + "default": "10" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset at which to get items", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each item of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "field to order results by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "description": "ID to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "query to search in price list description, price list name, and customer group name fields.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "style": "form", + "explode": false, + "description": "Status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "active", + "draft" + ] + } + } + }, + { + "in": "query", + "name": "name", + "description": "price list name to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "customer_groups", + "style": "form", + "explode": false, + "description": "Customer Group IDs to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "type", + "style": "form", + "explode": false, + "description": "Type to search for.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "sale", + "override" + ] + } + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting price lists were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting price lists were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting price lists were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetPriceListPaginationParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.list()\n.then(({ price_lists, limit, offset, count }) => {\n console.log(price_lists.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/price-lists' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostPriceListsPriceList", + "summary": "Create a Price List", + "description": "Creates a Price List", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPriceListsPriceListReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nimport { PriceListType } from \"@medusajs/medusa\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.create({\n name: 'New Price List',\n description: 'A new price list',\n type: PriceListType.SALE,\n prices: [\n {\n amount: 1000,\n variant_id,\n currency_code: 'eur'\n }\n ]\n})\n.then(({ price_list }) => {\n console.log(price_list.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/price-lists' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"New Price List\",\n \"description\": \"A new price list\",\n \"type\": \"sale\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"variant_id\": \"afafa\",\n \"currency_code\": \"eur\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists/{id}": { + "get": { + "operationId": "GetPriceListsPriceList", + "summary": "Get a Price List", + "description": "Retrieves a Price List.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.retrieve(price_list_id)\n.then(({ price_list }) => {\n console.log(price_list.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/price-lists/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostPriceListsPriceListPriceList", + "summary": "Update a Price List", + "description": "Updates a Price List", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPriceListsPriceListPriceListReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.update(price_list_id, {\n name: 'New Price List'\n})\n.then(({ price_list }) => {\n console.log(price_list.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/price-lists/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"New Price List\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeletePriceListsPriceList", + "summary": "Delete a Price List", + "description": "Deletes a Price List", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.delete(price_list_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists/{id}/prices/batch": { + "post": { + "operationId": "PostPriceListsPriceListPricesBatch", + "summary": "Update Prices", + "description": "Batch update prices for a Price List", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List to update prices for.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPriceListPricesPricesReq" + } + } + } + }, + "x-codegen": { + "method": "addPrices" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.addPrices(price_list_id, {\n prices: [\n {\n amount: 1000,\n variant_id,\n currency_code: 'eur'\n }\n ]\n})\n.then(({ price_list }) => {\n console.log(price_list.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/price-lists/{id}/prices/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"prices\": [\n {\n \"amount\": 100,\n \"variant_id\": \"afasfa\",\n \"currency_code\": \"eur\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeletePriceListsPriceListPricesBatch", + "summary": "Delete Prices", + "description": "Batch delete prices that belong to a Price List", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List that the Money Amounts (Prices) that will be deleted belongs to.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeletePriceListPricesPricesReq" + } + } + } + }, + "x-codegen": { + "method": "deletePrices" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.deletePrices(price_list_id, {\n price_ids: [\n price_id\n ]\n})\n.then(({ ids, object, deleted }) => {\n console.log(ids.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/prices/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"price_ids\": [\n \"adasfa\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListDeleteBatchRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists/{id}/products": { + "get": { + "operationId": "GetPriceListsPriceListProducts", + "summary": "List Products", + "description": "Retrieves a list of Product that are part of a Price List", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the price list.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "Query used for searching product title and description, variant title and sku, and collection title.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "description": "ID of the product to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "description": "Product status to search for", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ] + } + } + }, + { + "in": "query", + "name": "collection_id", + "description": "Collection IDs to search for", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "tags", + "description": "Tag IDs to search for", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "title", + "description": "product title to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "description", + "description": "product description to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "handle", + "description": "product handle to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "is_giftcard", + "description": "Search for giftcards using is_giftcard=true.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "type", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "field to sort results by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting products were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting products were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting products were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many products to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of products returned.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each product of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listProducts", + "queryParams": "AdminGetPriceListsPriceListProductsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.listProducts(price_list_id)\n.then(({ products, limit, offset, count }) => {\n console.log(products.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/price-lists/{id}/products' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListsProductsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists/{id}/products/{product_id}/prices": { + "delete": { + "operationId": "DeletePriceListsPriceListProductsProductPrices", + "summary": "Delete Product's Prices", + "description": "Delete all the prices related to a specific product in a price list", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List that the Money Amounts that will be deleted belongs to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "product_id", + "required": true, + "description": "The ID of the product from which the money amount will be deleted.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteProductPrices" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.deleteProductPrices(price_list_id, product_id)\n.then(({ ids, object, deleted }) => {\n console.log(ids.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/products/{product_id}/prices' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListDeleteProductPricesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/price-lists/{id}/variants/{variant_id}/prices": { + "delete": { + "operationId": "DeletePriceListsPriceListVariantsVariantPrices", + "summary": "Delete Variant's Prices", + "description": "Delete all the prices related to a specific variant in a price list", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Price List that the Money Amounts that will be deleted belongs to.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "variant_id", + "required": true, + "description": "The ID of the variant from which the money amount will be deleted.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteVariantPrices" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.priceLists.deleteVariantPrices(price_list_id, variant_id)\n.then(({ ids, object, deleted }) => {\n console.log(ids);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/variants/{variant_id}/prices' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Price Lists" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPriceListDeleteVariantPricesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/product-categories": { + "get": { + "operationId": "GetProductCategories", + "summary": "List Product Categories", + "description": "Retrieve a list of product categories.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching product category names orhandles.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "is_internal", + "description": "Search for only internal categories.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "is_active", + "description": "Search for only active categories", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "include_descendants_tree", + "description": "Include all nested descendants of category", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "parent_category_id", + "description": "Returns categories scoped by parent", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many product categories to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of product categories returned.", + "schema": { + "type": "integer", + "default": 100 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the product category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the product category.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetProductCategoriesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.list()\n.then(({ product_categories, limit, offset, count }) => {\n console.log(product_categories.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/product-categories' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostProductCategories", + "summary": "Create a Product Category", + "description": "Creates a Product Category.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be retrieved in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductCategoriesReq" + } + } + } + }, + "x-codegen": { + "method": "create", + "queryParams": "AdminPostProductCategoriesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.create({\n name: \"Skinny Jeans\",\n})\n.then(({ product_category }) => {\n console.log(product_category.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/product-categories' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Skinny Jeans\",\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/product-categories/{id}": { + "get": { + "operationId": "GetProductCategoriesCategory", + "summary": "Get a Product Category", + "description": "Retrieves a Product Category.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetProductCategoryParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.retrieve(product_category_id)\n.then(({ product_category }) => {\n console.log(product_category.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/product-categories/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostProductCategoriesCategory", + "summary": "Update a Product Category", + "description": "Updates a Product Category.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be retrieved in each product category.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductCategoriesCategoryReq" + } + } + } + }, + "x-codegen": { + "method": "update", + "queryParams": "AdminPostProductCategoriesCategoryParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.update(product_category_id, {\n name: \"Skinny Jeans\"\n})\n.then(({ product_category }) => {\n console.log(product_category.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/product-categories/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Skinny Jeans\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductCategoriesCategory", + "summary": "Delete a Product Category", + "description": "Deletes a ProductCategory.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.delete(product_category_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/product-categories/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/product-categories/{id}/products/batch": { + "post": { + "operationId": "PostProductCategoriesCategoryProductsBatch", + "summary": "Add Products to a category", + "description": "Assign a batch of products to a product category.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Category fields to be expanded in the response.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Category fields to be retrieved in the response.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductCategoriesCategoryProductsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "addProducts", + "queryParams": "AdminPostProductCategoriesCategoryProductsBatchParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.addProducts(product_category_id, {\n product_ids: [\n {\n id: product_id\n }\n ]\n})\n.then(({ product_category }) => {\n console.log(product_category.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location \\\n--request POST 'https://medusa-url.com/admin/product-categories/{product_category_id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n {\n \"id\": \"{product_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductCategoriesCategoryProductsBatch", + "summary": "Delete Products", + "description": "Remove a list of products from a product category.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Category fields to be expanded in the response.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Category fields to be retrieved in the response.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteProductCategoriesCategoryProductsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "removeProducts", + "queryParams": "AdminDeleteProductCategoriesCategoryProductsBatchParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productCategories.removeProducts(product_category_id, {\n product_ids: [\n {\n id: product_id\n }\n ]\n})\n.then(({ product_category }) => {\n console.log(product_category.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/product-categories/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n {\n \"id\": \"{product_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/product-tags": { + "get": { + "operationId": "GetProductTags", + "summary": "List Product Tags", + "description": "Retrieve a list of Product Tags.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of tags to return.", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "order", + "description": "The field to sort items by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the tags.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "value", + "style": "form", + "explode": false, + "description": "The tag values to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "q", + "description": "A query string to search values for", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "The tag IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting product tags were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting product tags were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetProductTagsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productTags.list()\n.then(({ product_tags }) => {\n console.log(product_tags.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/product-tags' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Tags" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductTagsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/product-types": { + "get": { + "operationId": "GetProductTypes", + "summary": "List Product Types", + "description": "Retrieve a list of Product Types.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of types to return.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "order", + "description": "The field to sort items by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the product types.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "value", + "style": "form", + "explode": false, + "description": "The type values to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "The type IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "q", + "description": "A query string to search values for", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting product types were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting product types were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetProductTypesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.productTypes.list()\n.then(({ product_types }) => {\n console.log(product_types.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/product-types' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Types" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductTypesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products": { + "get": { + "operationId": "GetProducts", + "summary": "List Products", + "description": "Retrieves a list of Product", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching product title and description, variant title and sku, and collection title.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the product.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "Filter by product IDs.", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "ID of the product to search for." + }, + { + "type": "array", + "items": { + "type": "string", + "description": "ID of a product." + } + } + ] + } + }, + { + "in": "query", + "name": "status", + "style": "form", + "explode": false, + "description": "Status to search for", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ] + } + } + }, + { + "in": "query", + "name": "collection_id", + "style": "form", + "explode": false, + "description": "Collection ids to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "tags", + "style": "form", + "explode": false, + "description": "Tag IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "price_list_id", + "style": "form", + "explode": false, + "description": "Price List IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "sales_channel_id", + "style": "form", + "explode": false, + "description": "Sales Channel IDs to filter products by", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "type_id", + "style": "form", + "explode": false, + "description": "Type IDs to filter products by", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "category_id", + "style": "form", + "explode": false, + "description": "Category IDs to filter products by", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "include_category_children", + "description": "Include category children when filtering by category_id", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "title", + "description": "title to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "description", + "description": "description to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "handle", + "description": "handle to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "is_giftcard", + "description": "Search for giftcards using is_giftcard=true.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting products were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting products were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting products were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many products to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of products returned.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "the field used to order the products.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetProductsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.list()\n.then(({ products, limit, offset, count }) => {\n console.log(products.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/products' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostProducts", + "summary": "Create a Product", + "x-authenticated": true, + "description": "Creates a Product", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.create({\n title: 'Shirt',\n is_giftcard: false,\n discountable: true\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Shirt\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/tag-usage": { + "get": { + "operationId": "GetProductsTagUsage", + "summary": "List Tags Usage Number", + "description": "Retrieves a list of Product Tags with how many times each is used.", + "x-authenticated": true, + "x-codegen": { + "method": "listTags" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.listTags()\n.then(({ tags }) => {\n console.log(tags.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/products/tag-usage' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsListTagsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/types": { + "get": { + "deprecated": true, + "operationId": "GetProductsTypes", + "summary": "List Product Types", + "description": "Retrieves a list of Product Types.", + "x-authenticated": true, + "x-codegen": { + "method": "listTypes" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.listTypes()\n.then(({ types }) => {\n console.log(types.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/products/types' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsListTypesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}": { + "get": { + "operationId": "GetProductsProduct", + "summary": "Get a Product", + "description": "Retrieves a Product.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.retrieve(product_id)\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/products/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostProductsProduct", + "summary": "Update a Product", + "description": "Updates a Product", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.update(product_id, {\n title: 'Shirt',\n images: []\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Size\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductsProduct", + "summary": "Delete a Product", + "description": "Deletes a Product and it's associated Product Variants.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.delete(product_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/products/asfsaf' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}/metadata": { + "post": { + "operationId": "PostProductsProductMetadata", + "summary": "Set Product Metadata", + "description": "Set metadata key/value pair for Product", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductMetadataReq" + } + } + } + }, + "x-codegen": { + "method": "setMetadata" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.setMetadata(product_id, {\nkey: 'test',\n value: 'true'\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/{id}/metadata' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"key\": \"test\",\n \"value\": \"true\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}/options": { + "post": { + "operationId": "PostProductsProductOptions", + "summary": "Add an Option", + "x-authenticated": true, + "description": "Adds a Product Option to a Product", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductOptionsReq" + } + } + } + }, + "x-codegen": { + "method": "addOption" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.addOption(product_id, {\n title: 'Size'\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/{id}/options' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Size\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}/options/{option_id}": { + "post": { + "operationId": "PostProductsProductOptionsOption", + "summary": "Update a Product Option", + "description": "Updates a Product Option", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "option_id", + "required": true, + "description": "The ID of the Product Option.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductOptionsOption" + } + } + } + }, + "x-codegen": { + "method": "updateOption" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.updateOption(product_id, option_id, {\n title: 'Size'\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/{id}/options/{option_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Size\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductsProductOptionsOption", + "summary": "Delete a Product Option", + "description": "Deletes a Product Option. Before a Product Option can be deleted all Option Values for the Product Option must be the same. You may, for example, have to delete some of your variants prior to deleting the Product Option", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "option_id", + "required": true, + "description": "The ID of the Product Option.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteOption" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.deleteOption(product_id, option_id)\n.then(({ option_id, object, delete, product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/products/{id}/options/{option_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsDeleteOptionRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}/variants": { + "get": { + "operationId": "GetProductsProductVariants", + "summary": "List a Product's Variants", + "description": "Retrieves a list of the Product Variants associated with a Product.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the product to search for the variants.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated string of the column to select.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated string of the relations to include.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many items to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of items returned.", + "schema": { + "type": "integer", + "default": 100 + } + } + ], + "x-codegen": { + "method": "listVariants", + "queryParams": "AdminGetProductsVariantsParams" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/products/{id}/variants' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsListVariantsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostProductsProductVariants", + "summary": "Create a Product Variant", + "description": "Creates a Product Variant. Each Product Variant must have a unique combination of Product Option Values.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductVariantsReq" + } + } + } + }, + "x-codegen": { + "method": "createVariant" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.createVariant(product_id, {\n title: 'Color',\n prices: [\n {\n amount: 1000,\n currency_code: \"eur\"\n }\n ],\n options: [\n {\n option_id,\n value: 'S'\n }\n ],\n inventory_quantity: 100\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/{id}/variants' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Color\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency_code\": \"eur\"\n }\n ],\n \"options\": [\n {\n \"option_id\": \"asdasf\",\n \"value\": \"S\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/products/{id}/variants/{variant_id}": { + "post": { + "operationId": "PostProductsProductVariantsVariant", + "summary": "Update a Product Variant", + "description": "Update a Product Variant.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "variant_id", + "required": true, + "description": "The ID of the Product Variant.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostProductsProductVariantsVariantReq" + } + } + } + }, + "x-codegen": { + "method": "updateVariant" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.updateVariant(product_id, variant_id, {\n title: 'Color',\n prices: [\n {\n amount: 1000,\n currency_code: \"eur\"\n }\n ],\n options: [\n {\n option_id,\n value: 'S'\n }\n ],\n inventory_quantity: 100\n})\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/products/asfsaf/variants/saaga' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Color\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency_code\": \"eur\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteProductsProductVariantsVariant", + "summary": "Delete a Product Variant", + "description": "Deletes a Product Variant.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "variant_id", + "required": true, + "description": "The ID of the Product Variant.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteVariant" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.products.deleteVariant(product_id, variant_id)\n.then(({ variant_id, object, deleted, product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/products/{id}/variants/{variant_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminProductsDeleteVariantRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/publishable-api-key/{id}": { + "post": { + "operationId": "PostPublishableApiKysPublishableApiKey", + "summary": "Update PublishableApiKey", + "description": "Updates a PublishableApiKey.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PublishableApiKey.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPublishableApiKeysPublishableApiKeyReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.update(publishableApiKeyId, {\n title: \"new title\"\n})\n.then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id)\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/publishable-api-key/{pka_id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"new title\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/publishable-api-keys": { + "get": { + "operationId": "GetPublishableApiKeys", + "summary": "List PublishableApiKeys", + "description": "List PublishableApiKeys.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching publishable api keys by title.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of items in the response", + "schema": { + "type": "number", + "default": "20" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset of items in response", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "GetPublishableApiKeysParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.list()\n .then(({ publishable_api_keys, count, limit, offset }) => {\n console.log(publishable_api_keys)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostPublishableApiKeys", + "summary": "Create PublishableApiKey", + "description": "Creates a PublishableApiKey.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPublishableApiKeysReq" + } + } + } + }, + "x-authenticated": true, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.create({\n title\n})\n.then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id)\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"title\": \"Web API Key\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/publishable-api-keys/{id}": { + "get": { + "operationId": "GetPublishableApiKeysPublishableApiKey", + "summary": "Get a PublishableApiKey", + "description": "Retrieve the Publishable Api Key.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PublishableApiKey.", + "schema": { + "type": "string" + } + } + ], + "x-authenticated": true, + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.retrieve(publishableApiKeyId)\n.then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id)\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeletePublishableApiKeysPublishableApiKey", + "summary": "Delete PublishableApiKey", + "description": "Deletes a PublishableApiKeys", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PublishableApiKeys to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.delete(publishableApiKeyId)\n.then(({ id, object, deleted }) => {\n console.log(id)\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/publishable-api-key/{pka_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeyDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + } + } + } + }, + "/admin/publishable-api-keys/{id}/revoke": { + "post": { + "operationId": "PostPublishableApiKeysPublishableApiKeyRevoke", + "summary": "Revoke PublishableApiKey", + "description": "Revokes a PublishableApiKey.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PublishableApiKey.", + "schema": { + "type": "string" + } + } + ], + "x-authenticated": true, + "x-codegen": { + "method": "revoke" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.revoke(publishableApiKeyId)\n .then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/revoke' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/publishable-api-keys/{id}/sales-channels": { + "get": { + "operationId": "GetPublishableApiKeySalesChannels", + "summary": "List SalesChannels", + "description": "List PublishableApiKey's SalesChannels", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Publishable Api Key.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "Query used for searching sales channels' names and descriptions.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listSalesChannels", + "queryParams": "GetPublishableApiKeySalesChannelsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.listSalesChannels()\n .then(({ sales_channels }) => {\n console.log(sales_channels.length)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/sales-channels' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysListSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/publishable-api-keys/{id}/sales-channels/batch": { + "post": { + "operationId": "PostPublishableApiKeySalesChannelsChannelsBatch", + "summary": "Add SalesChannels", + "description": "Assign a batch of sales channels to a publishable api key.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Publishable Api Key.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostPublishableApiKeySalesChannelsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "addSalesChannelsBatch" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.addSalesChannelsBatch(publishableApiKeyId, {\n sales_channel_ids: [\n {\n id: channel_id\n }\n ]\n})\n.then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys/{pak_id}/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"sales_channel_ids\": [\n {\n \"id\": \"{sales_channel_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeletePublishableApiKeySalesChannelsChannelsBatch", + "summary": "Delete SalesChannels", + "description": "Remove a batch of sales channels from a publishable api key.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Publishable Api Key.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeletePublishableApiKeySalesChannelsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "deleteSalesChannelsBatch" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.publishableApiKeys.deleteSalesChannelsBatch(publishableApiKeyId, {\n sales_channel_ids: [\n {\n id: channel_id\n }\n ]\n})\n.then(({ publishable_api_key }) => {\n console.log(publishable_api_key.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"sales_channel_ids\": [\n {\n \"id\": \"{sales_channel_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Publishable Api Keys" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPublishableApiKeysRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions": { + "get": { + "operationId": "GetRegions", + "summary": "List Regions", + "description": "Retrieves a list of Regions.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "default": 50 + }, + "required": false, + "description": "limit the number of regions in response" + }, + { + "in": "query", + "name": "offset", + "schema": { + "type": "integer", + "default": 0 + }, + "required": false, + "description": "Offset of regions in response (used for pagination)" + }, + { + "in": "query", + "name": "created_at", + "schema": { + "type": "object" + }, + "required": false, + "description": "Date comparison for when resulting region was created, i.e. less than, greater than etc." + }, + { + "in": "query", + "name": "updated_at", + "schema": { + "type": "object" + }, + "required": false, + "description": "Date comparison for when resulting region was updated, i.e. less than, greater than etc." + }, + { + "in": "query", + "name": "deleted_at", + "schema": { + "type": "object" + }, + "required": false, + "description": "Date comparison for when resulting region was deleted, i.e. less than, greater than etc." + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetRegionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.list()\n.then(({ regions, limit, offset, count }) => {\n console.log(regions.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/regions' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostRegions", + "summary": "Create a Region", + "description": "Creates a Region", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostRegionsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.create({\n name: 'Europe',\n currency_code: 'eur',\n tax_rate: 0,\n payment_providers: [\n 'manual'\n ],\n fulfillment_providers: [\n 'manual'\n ],\n countries: [\n 'DK'\n ]\n})\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/regions' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Europe\",\n \"currency_code\": \"eur\",\n \"tax_rate\": 0,\n \"payment_providers\": [\n \"manual\"\n ],\n \"fulfillment_providers\": [\n \"manual\"\n ],\n \"countries\": [\n \"DK\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}": { + "get": { + "operationId": "GetRegionsRegion", + "summary": "Get a Region", + "description": "Retrieves a Region.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.retrieve(region_id)\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/regions/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostRegionsRegion", + "summary": "Update a Region", + "description": "Updates a Region", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostRegionsRegionReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.update(region_id, {\n name: 'Europe'\n})\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/regions/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Europe\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteRegionsRegion", + "summary": "Delete a Region", + "description": "Deletes a Region.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.delete(region_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/countries": { + "post": { + "operationId": "PostRegionsRegionCountries", + "summary": "Add Country", + "description": "Adds a Country to the list of Countries in a Region", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostRegionsRegionCountriesReq" + } + } + } + }, + "x-codegen": { + "method": "addCountry" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.addCountry(region_id, {\n country_code: 'dk'\n})\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/regions/{region_id}/countries' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"country_code\": \"dk\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/countries/{country_code}": { + "delete": { + "operationId": "PostRegionsRegionCountriesCountry", + "summary": "Delete Country", + "x-authenticated": true, + "description": "Removes a Country from the list of Countries in a Region", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "country_code", + "description": "The 2 character ISO code for the Country.", + "required": true, + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + } + ], + "x-codegen": { + "method": "deleteCountry" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.deleteCountry(region_id, 'dk')\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/countries/dk' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/fulfillment-options": { + "get": { + "operationId": "GetRegionsRegionFulfillmentOptions", + "summary": "List Fulfillment Options", + "description": "Gathers all the fulfillment options available to in the Region.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieveFulfillmentOptions" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.retrieveFulfillmentOptions(region_id)\n.then(({ fulfillment_options }) => {\n console.log(fulfillment_options.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/regions/{id}/fulfillment-options' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/fulfillment-providers": { + "post": { + "operationId": "PostRegionsRegionFulfillmentProviders", + "summary": "Add Fulfillment Provider", + "description": "Adds a Fulfillment Provider to a Region", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostRegionsRegionFulfillmentProvidersReq" + } + } + } + }, + "x-codegen": { + "method": "addFulfillmentProvider" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.addFulfillmentProvider(region_id, {\n provider_id: 'manual'\n})\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/regions/{id}/fulfillment-providers' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"provider_id\": \"manual\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/fulfillment-providers/{provider_id}": { + "delete": { + "operationId": "PostRegionsRegionFulfillmentProvidersProvider", + "summary": "Del. Fulfillment Provider", + "description": "Removes a Fulfillment Provider.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "provider_id", + "required": true, + "description": "The ID of the Fulfillment Provider.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteFulfillmentProvider" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.deleteFulfillmentProvider(region_id, 'manual')\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/fulfillment-providers/manual' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/payment-providers": { + "post": { + "operationId": "PostRegionsRegionPaymentProviders", + "summary": "Add Payment Provider", + "description": "Adds a Payment Provider to a Region", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostRegionsRegionPaymentProvidersReq" + } + } + } + }, + "x-codegen": { + "method": "addPaymentProvider" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.addPaymentProvider(region_id, {\n provider_id: 'manual'\n})\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/regions/{id}/payment-providers' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"provider_id\": \"manual\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/regions/{id}/payment-providers/{provider_id}": { + "delete": { + "operationId": "PostRegionsRegionPaymentProvidersProvider", + "summary": "Delete Payment Provider", + "description": "Removes a Payment Provider.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Region.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "provider_id", + "required": true, + "description": "The ID of the Payment Provider.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deletePaymentProvider" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.regions.deletePaymentProvider(region_id, 'manual')\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/payment-providers/manual' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/reservations": { + "get": { + "operationId": "GetReservations", + "summary": "List Reservations", + "description": "Retrieve a list of Reservations.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "location_id", + "style": "form", + "explode": false, + "description": "Location ids to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "inventory_item_id", + "style": "form", + "explode": false, + "description": "Inventory Item ids to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "line_item_id", + "style": "form", + "explode": false, + "description": "Line Item ids to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "quantity", + "description": "Filter by reservation quantity", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "number", + "description": "filter by reservation quantity less than this number" + }, + "gt": { + "type": "number", + "description": "filter by reservation quantity greater than this number" + }, + "lte": { + "type": "number", + "description": "filter by reservation quantity less than or equal to this number" + }, + "gte": { + "type": "number", + "description": "filter by reservation quantity greater than or equal to this number" + } + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many Reservations to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of Reservations returned.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the product category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the product category.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetReservationsParams" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/product-categories' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Reservations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostReservations", + "summary": "Creates a Reservation", + "description": "Creates a Reservation which can be associated with any resource as required.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReservationsReq" + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.reservations.create({\n})\n.then(({ reservations }) => {\n console.log(reservations.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/reservations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"resource_id\": \"{resource_id}\",\n \"resource_type\": \"order\",\n \"value\": \"We delivered this order\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Reservations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/reservations/{id}": { + "get": { + "operationId": "GetReservationsReservation", + "summary": "Get a Reservation", + "description": "Retrieves a single reservation using its id", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the reservation to retrieve.", + "schema": { + "type": "string" + } + } + ], + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.reservations.retrieve(reservation_id)\n.then(({ reservation }) => {\n console.log(reservation.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/reservations/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Reservations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostReservationsReservation", + "summary": "Updates a Reservation", + "description": "Updates a Reservation which can be associated with any resource as required.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Reservation to update.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReservationsReservationReq" + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.reservations.update(reservation.id, {\n quantity: 3\n})\n.then(({ reservations }) => {\n console.log(reservations.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/reservations/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"quantity\": 3,\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Reservations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteReservationsReservation", + "summary": "Delete a Reservation", + "description": "Deletes a Reservation.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Reservation to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.reservations.delete(reservation.id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/reservations/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Reservations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReservationsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/return-reasons": { + "get": { + "operationId": "GetReturnReasons", + "summary": "List Return Reasons", + "description": "Retrieves a list of Return Reasons.", + "x-authenticated": true, + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returnReasons.list()\n.then(({ return_reasons }) => {\n console.log(return_reasons.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/return-reasons' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnReasonsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostReturnReasons", + "summary": "Create a Return Reason", + "description": "Creates a Return Reason", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReturnReasonsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returnReasons.create({\n label: 'Damaged',\n value: 'damaged'\n})\n.then(({ return_reason }) => {\n console.log(return_reason.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/return-reasons' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"label\": \"Damaged\",\n \"value\": \"damaged\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnReasonsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/return-reasons/{id}": { + "get": { + "operationId": "GetReturnReasonsReason", + "summary": "Get a Return Reason", + "description": "Retrieves a Return Reason.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Return Reason.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returnReasons.retrieve(return_reason_id)\n.then(({ return_reason }) => {\n console.log(return_reason.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/return-reasons/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnReasonsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostReturnReasonsReason", + "summary": "Update a Return Reason", + "description": "Updates a Return Reason", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Return Reason.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReturnReasonsReasonReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returnReasons.update(return_reason_id, {\n label: 'Damaged'\n})\n.then(({ return_reason }) => {\n console.log(return_reason.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/return-reasons/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"label\": \"Damaged\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnReasonsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteReturnReason", + "summary": "Delete a Return Reason", + "description": "Deletes a return reason.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the return reason", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returnReasons.delete(return_reason_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/return-reasons/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnReasonsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/returns": { + "get": { + "operationId": "GetReturns", + "summary": "List Returns", + "description": "Retrieves a list of Returns", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The upper limit for the amount of responses returned.", + "schema": { + "type": "number", + "default": "50" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset of the list returned.", + "schema": { + "type": "number", + "default": "0" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetReturnsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returns.list()\n.then(({ returns, limit, offset, count }) => {\n console.log(returns.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/returns' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Returns" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/returns/{id}/cancel": { + "post": { + "operationId": "PostReturnsReturnCancel", + "summary": "Cancel a Return", + "description": "Registers a Return as canceled.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Return.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "cancel" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returns.cancel(return_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/returns/{id}/cancel' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Returns" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnsCancelRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/returns/{id}/receive": { + "post": { + "operationId": "PostReturnsReturnReceive", + "summary": "Receive a Return", + "description": "Registers a Return as received. Updates statuses on Orders and Swaps accordingly.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Return.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostReturnsReturnReceiveReq" + } + } + } + }, + "x-codegen": { + "method": "receive" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.returns.receive(return_id, {\n items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then((data) => {\n console.log(data.return.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/returns/{id}/receive' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"items\": [\n {\n \"item_id\": \"asafg\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Returns" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminReturnsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/sales-channels": { + "get": { + "operationId": "GetSalesChannels", + "summary": "List Sales Channels", + "description": "Retrieves a list of sales channels", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "id", + "description": "ID of the sales channel", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "name", + "description": "Name of the sales channel", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "description", + "description": "Description of the sales channel", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "q", + "description": "Query used for searching sales channels' names and descriptions.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "The field to order the results by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting collections were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting collections were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting collections were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many sales channels to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of sales channels returned.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each sales channel of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each sales channel of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetSalesChannelsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.list()\n.then(({ sales_channels, limit, offset, count }) => {\n console.log(sales_channels.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/sales-channels' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostSalesChannels", + "summary": "Create a Sales Channel", + "description": "Creates a Sales Channel.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostSalesChannelsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.create({\n name: 'App',\n description: 'Mobile app'\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/sales-channels' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"App\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/sales-channels/{id}": { + "get": { + "operationId": "GetSalesChannelsSalesChannel", + "summary": "Get a Sales Channel", + "description": "Retrieves the sales channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales channel.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.retrieve(sales_channel_id)\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/sales-channels/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostSalesChannelsSalesChannel", + "summary": "Update a Sales Channel", + "description": "Updates a Sales Channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales Channel.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostSalesChannelsSalesChannelReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.update(sales_channel_id, {\n name: 'App'\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/sales-channels/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"App\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteSalesChannelsSalesChannel", + "summary": "Delete a Sales Channel", + "description": "Deletes the sales channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales channel.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.delete(sales_channel_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/sales-channels/{id}/products/batch": { + "post": { + "operationId": "PostSalesChannelsChannelProductsBatch", + "summary": "Add Products", + "description": "Assign a batch of product to a sales channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales channel.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostSalesChannelsChannelProductsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "addProducts" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.addProducts(sales_channel_id, {\n product_ids: [\n {\n id: product_id\n }\n ]\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/sales-channels/afasf/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n {\n \"id\": \"{product_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteSalesChannelsChannelProductsBatch", + "summary": "Delete Products", + "description": "Remove a list of products from a sales channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales Channel", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteSalesChannelsChannelProductsBatchReq" + } + } + } + }, + "x-codegen": { + "method": "removeProducts" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.removeProducts(sales_channel_id, {\n product_ids: [\n {\n id: product_id\n }\n ]\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_ids\": [\n {\n \"id\": \"{product_id}\"\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/sales-channels/{id}/stock-locations": { + "post": { + "operationId": "PostSalesChannelsSalesChannelStockLocation", + "summary": "Associate a stock location to a Sales Channel", + "description": "Associates a stock location to a Sales Channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales Channel.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostSalesChannelsChannelStockLocationsReq" + } + } + } + }, + "x-codegen": { + "method": "addLocation" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.addLocation(sales_channel_id, {\n location_id: 'App'\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/sales-channels/{id}/stock-locations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"locaton_id\": \"stock_location_id\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteSalesChannelsSalesChannelStockLocation", + "summary": "Remove a stock location from a Sales Channel", + "description": "Removes a stock location from a Sales Channel.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Sales Channel.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteSalesChannelsChannelStockLocationsReq" + } + } + } + }, + "x-codegen": { + "method": "removeLocation" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.salesChannels.removeLocation(sales_channel_id, {\n location_id: 'App'\n})\n.then(({ sales_channel }) => {\n console.log(sales_channel.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}/stock-locations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"locaton_id\": \"stock_location_id\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Sales Channels" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSalesChannelsDeleteLocationRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/shipping-options": { + "get": { + "operationId": "GetShippingOptions", + "summary": "List Shipping Options", + "description": "Retrieves a list of Shipping Options.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "region_id", + "schema": { + "type": "string" + }, + "description": "Region ID to fetch options from" + }, + { + "in": "query", + "name": "is_return", + "schema": { + "type": "boolean" + }, + "description": "Flag for fetching return options only" + }, + { + "in": "query", + "name": "admin_only", + "schema": { + "type": "boolean" + }, + "description": "Flag for fetching admin specific options" + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetShippingOptionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingOptions.list()\n.then(({ shipping_options, count }) => {\n console.log(shipping_options.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/shipping-options' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingOptionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostShippingOptions", + "summary": "Create Shipping Option", + "description": "Creates a Shipping Option", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostShippingOptionsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingOptions.create({\n name: 'PostFake',\n region_id: \"saasf\",\n provider_id: \"manual\",\n data: {\n },\n price_type: 'flat_rate'\n})\n.then(({ shipping_option }) => {\n console.log(shipping_option.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/shipping-options' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"PostFake\",\n \"region_id\": \"afasf\",\n \"provider_id\": \"manual\",\n \"data\": {},\n \"price_type\": \"flat_rate\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingOptionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/shipping-options/{id}": { + "get": { + "operationId": "GetShippingOptionsOption", + "summary": "Get a Shipping Option", + "description": "Retrieves a Shipping Option.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Option.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingOptions.retrieve(option_id)\n.then(({ shipping_option }) => {\n console.log(shipping_option.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/shipping-options/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingOptionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostShippingOptionsOption", + "summary": "Update Shipping Option", + "description": "Updates a Shipping Option", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Option.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostShippingOptionsOptionReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingOptions.update(option_id, {\n name: 'PostFake',\n requirements: [\n {\n id,\n type: 'max_subtotal',\n amount: 1000\n }\n ]\n})\n.then(({ shipping_option }) => {\n console.log(shipping_option.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/shipping-options/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"requirements\": [\n {\n \"type\": \"max_subtotal\",\n \"amount\": 1000\n }\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingOptionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteShippingOptionsOption", + "summary": "Delete a Shipping Option", + "description": "Deletes a Shipping Option.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Option.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingOptions.delete(option_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/shipping-options/{option_id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingOptionsDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/shipping-profiles": { + "get": { + "operationId": "GetShippingProfiles", + "summary": "List Shipping Profiles", + "description": "Retrieves a list of Shipping Profile.", + "x-authenticated": true, + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingProfiles.list()\n.then(({ shipping_profiles }) => {\n console.log(shipping_profiles.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/shipping-profiles' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Profiles" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingProfilesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostShippingProfiles", + "summary": "Create a Shipping Profile", + "description": "Creates a Shipping Profile", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostShippingProfilesReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingProfiles.create({\n name: 'Large Products'\n})\n.then(({ shipping_profile }) => {\n console.log(shipping_profile.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/shipping-profiles' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Large Products\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Profiles" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingProfilesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/shipping-profiles/{id}": { + "get": { + "operationId": "GetShippingProfilesProfile", + "summary": "Get a Shipping Profile", + "description": "Retrieves a Shipping Profile.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Profile.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingProfiles.retrieve(profile_id)\n.then(({ shipping_profile }) => {\n console.log(shipping_profile.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/shipping-profiles/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Profiles" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingProfilesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostShippingProfilesProfile", + "summary": "Update a Shipping Profile", + "description": "Updates a Shipping Profile", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Profile.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostShippingProfilesProfileReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingProfiles.update(shipping_profile_id, {\n name: 'Large Products'\n})\n.then(({ shipping_profile }) => {\n console.log(shipping_profile.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/shipping-profiles/{id} \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Large Products\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Profiles" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminShippingProfilesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteShippingProfilesProfile", + "summary": "Delete a Shipping Profile", + "description": "Deletes a Shipping Profile.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Profile.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.shippingProfiles.delete(profile_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/shipping-profiles/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Shipping Profiles" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteShippingProfileRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/stock-locations": { + "get": { + "operationId": "GetStockLocations", + "summary": "List Stock Locations", + "description": "Retrieves a list of stock locations", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "id", + "description": "ID of the stock location", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "name", + "description": "Name of the stock location", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "The field to order the results by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting collections were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting collections were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "deleted_at", + "description": "Date comparison for when resulting collections were deleted.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "offset", + "description": "How many stock locations to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of stock locations returned.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each stock location of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each stock location of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetStockLocationsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.stockLocations.list()\n.then(({ stock_locations, limit, offset, count }) => {\n console.log(stock_locations.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/stock-locations' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Stock Locations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStockLocationsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostStockLocations", + "summary": "Create a Stock Location", + "description": "Creates a Stock Location.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostStockLocationsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.stockLocations.create({\n name: 'Main Warehouse',\n location_id: 'sloc'\n})\n.then(({ stock_location }) => {\n console.log(stock_location.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/stock-locations' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"App\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Stock Locations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStockLocationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/stock-locations/{id}": { + "get": { + "operationId": "GetStockLocationsStockLocation", + "summary": "Get a Stock Location", + "description": "Retrieves the Stock Location.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Stock Location.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetStockLocationsLocationParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.stockLocations.retrieve(stock_location_id)\n.then(({ stock_location }) => {\n console.log(stock_location.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/stock-locations/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Stock Locations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStockLocationsRes" + } + } + } + } + } + }, + "post": { + "operationId": "PostStockLocationsStockLocation", + "summary": "Update a Stock Location", + "description": "Updates a Stock Location.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Stock Location.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostStockLocationsLocationReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.stockLocations.update(stock_location_id, {\n name: 'App'\n})\n.then(({ stock_location }) => {\n console.log(stock_location.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/stock-locations/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"App\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Stock Locations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStockLocationsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteStockLocationsStockLocation", + "summary": "Delete a Stock Location", + "description": "Delete a Stock Location", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Stock Location to delete.", + "schema": { + "type": "string" + } + } + ], + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.stockLocations.delete(stock_location_id)\n .then(({ id, object, deleted }) => {\n console.log(id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/stock-locations/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Stock Locations" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Stock Location." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "format": "stock_location" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Stock Location was deleted.", + "default": true + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + } + } + } + }, + "/admin/store": { + "get": { + "operationId": "GetStore", + "summary": "Get Store details", + "description": "Retrieves the Store details", + "x-authenticated": true, + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.retrieve()\n.then(({ store }) => {\n console.log(store.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/store' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminExtendedStoresRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostStore", + "summary": "Update Store Details", + "description": "Updates the Store details", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostStoreReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.update({\n name: 'Medusa Store'\n})\n.then(({ store }) => {\n console.log(store.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/store' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"Medusa Store\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStoresRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/store/currencies/{code}": { + "post": { + "operationId": "PostStoreCurrenciesCode", + "summary": "Add a Currency Code", + "description": "Adds a Currency Code to the available currencies.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "description": "The 3 character ISO currency code.", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + } + ], + "x-codegen": { + "method": "addCurrency" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.addCurrency('eur')\n.then(({ store }) => {\n console.log(store.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/store/currencies/eur' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStoresRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteStoreCurrenciesCode", + "summary": "Delete a Currency Code", + "description": "Removes a Currency Code from the available currencies.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "description": "The 3 character ISO currency code.", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + } + ], + "x-codegen": { + "method": "deleteCurrency" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.deleteCurrency('eur')\n.then(({ store }) => {\n console.log(store.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/store/currencies/eur' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminStoresRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/store/payment-providers": { + "get": { + "operationId": "GetStorePaymentProviders", + "summary": "List Payment Providers", + "description": "Retrieves the configured Payment Providers", + "x-authenticated": true, + "x-codegen": { + "method": "listPaymentProviders" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.listPaymentProviders()\n.then(({ payment_providers }) => {\n console.log(payment_providers.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/store/payment-providers' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPaymentProvidersList" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/store/tax-providers": { + "get": { + "operationId": "GetStoreTaxProviders", + "summary": "List Tax Providers", + "description": "Retrieves the configured Tax Providers", + "x-authenticated": true, + "x-codegen": { + "method": "listTaxProviders" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.store.listTaxProviders()\n.then(({ tax_providers }) => {\n console.log(tax_providers.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/store/tax-providers' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Store" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxProvidersList" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/swaps": { + "get": { + "operationId": "GetSwaps", + "summary": "List Swaps", + "description": "Retrieves a list of Swaps.", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The upper limit for the amount of responses returned.", + "schema": { + "type": "number", + "default": "50" + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset of the list returned.", + "schema": { + "type": "number", + "default": "0" + } + } + ], + "x-authenticated": true, + "x-codegen": { + "method": "list", + "queryParams": "AdminGetSwapsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.swaps.list()\n.then(({ swaps }) => {\n console.log(swaps.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/swaps' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Swaps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSwapsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/swaps/{id}": { + "get": { + "operationId": "GetSwapsSwap", + "summary": "Get a Swap", + "description": "Retrieves a Swap.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Swap.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.swaps.retrieve(swap_id)\n.then(({ swap }) => {\n console.log(swap.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/swaps/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Swaps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminSwapsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/tax-rates": { + "get": { + "operationId": "GetTaxRates", + "summary": "List Tax Rates", + "description": "Retrieves a list of TaxRates", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "name", + "description": "Name of tax rate to retrieve", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "style": "form", + "explode": false, + "description": "Filter by Region ID", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + }, + { + "in": "query", + "name": "code", + "description": "code to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "rate", + "style": "form", + "explode": false, + "description": "Filter by Rate", + "schema": { + "oneOf": [ + { + "type": "number" + }, + { + "type": "object", + "properties": { + "lt": { + "type": "number", + "description": "filter by rates less than this number" + }, + "gt": { + "type": "number", + "description": "filter by rates greater than this number" + }, + "lte": { + "type": "number", + "description": "filter by rates less than or equal to this number" + }, + "gte": { + "type": "number", + "description": "filter by rates greater than or equal to this number" + } + } + } + ] + } + }, + { + "in": "query", + "name": "offset", + "description": "How many tax rates to skip before retrieving the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of tax rates returned.", + "schema": { + "type": "integer", + "default": 50 + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in each item.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved for each item.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetTaxRatesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.list()\n.then(({ tax_rates, limit, offset, count }) => {\n console.log(tax_rates.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/tax-rates' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostTaxRates", + "summary": "Create a Tax Rate", + "description": "Creates a Tax Rate", + "parameters": [ + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostTaxRatesReq" + } + } + } + }, + "x-codegen": { + "method": "create", + "queryParams": "AdminPostTaxRatesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.create({\n code: 'TEST',\n name: 'New Tax Rate',\n region_id\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/tax-rates' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"code\": \"TEST\",\n \"name\": \"New Tax Rate\",\n \"region_id\": \"{region_id}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/tax-rates/{id}": { + "get": { + "operationId": "GetTaxRatesTaxRate", + "summary": "Get a Tax Rate", + "description": "Retrieves a TaxRate", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetTaxRatesTaxRateParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.retrieve(tax_rate_id)\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/tax-rates/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostTaxRatesTaxRate", + "summary": "Update a Tax Rate", + "description": "Updates a Tax Rate", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostTaxRatesTaxRateReq" + } + } + } + }, + "x-codegen": { + "method": "update", + "queryParams": "AdminPostTaxRatesTaxRateParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.update(tax_rate_id, {\n name: 'New Tax Rate'\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"name\": \"New Tax Rate\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteTaxRatesTaxRate", + "summary": "Delete a Tax Rate", + "description": "Deletes a Tax Rate", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Shipping Option.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.delete(tax_rate_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesDeleteRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/tax-rates/{id}/product-types/batch": { + "post": { + "operationId": "PostTaxRatesTaxRateProductTypes", + "summary": "Add to Product Types", + "description": "Associates a Tax Rate with a list of Product Types", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostTaxRatesTaxRateProductTypesReq" + } + } + } + }, + "x-codegen": { + "method": "addProductTypes", + "queryParams": "AdminPostTaxRatesTaxRateProductTypesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.addProductTypes(tax_rate_id, {\n product_types: [\n product_type_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/product-types/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_types\": [\n \"{product_type_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteTaxRatesTaxRateProductTypes", + "summary": "Delete from Product Types", + "description": "Removes a Tax Rate from a list of Product Types", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteTaxRatesTaxRateProductTypesReq" + } + } + } + }, + "x-codegen": { + "method": "removeProductTypes", + "queryParams": "AdminDeleteTaxRatesTaxRateProductTypesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.removeProductTypes(tax_rate_id, {\n product_types: [\n product_type_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/product-types/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"product_types\": [\n \"{product_type_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/tax-rates/{id}/products/batch": { + "post": { + "operationId": "PostTaxRatesTaxRateProducts", + "summary": "Add to Products", + "description": "Associates a Tax Rate with a list of Products", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostTaxRatesTaxRateProductsReq" + } + } + } + }, + "x-codegen": { + "method": "addProducts", + "queryParams": "AdminPostTaxRatesTaxRateProductsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.addProducts(tax_rate_id, {\n products: [\n product_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"products\": [\n \"{product_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteTaxRatesTaxRateProducts", + "summary": "Delete from Products", + "description": "Removes a Tax Rate from a list of Products", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteTaxRatesTaxRateProductsReq" + } + } + } + }, + "x-codegen": { + "method": "removeProducts", + "queryParams": "AdminDeleteTaxRatesTaxRateProductsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.removeProducts(tax_rate_id, {\n products: [\n product_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/products/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"products\": [\n \"{product_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/tax-rates/{id}/shipping-options/batch": { + "post": { + "operationId": "PostTaxRatesTaxRateShippingOptions", + "summary": "Add to Shipping Options", + "description": "Associates a Tax Rate with a list of Shipping Options", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostTaxRatesTaxRateShippingOptionsReq" + } + } + } + }, + "x-codegen": { + "method": "addShippingOptions", + "queryParams": "AdminPostTaxRatesTaxRateShippingOptionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.addShippingOptions(tax_rate_id, {\n shipping_options: [\n shipping_option_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/shipping-options/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"shipping_options\": [\n \"{shipping_option_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteTaxRatesTaxRateShippingOptions", + "summary": "Del. for Shipping Options", + "description": "Removes a Tax Rate from a list of Shipping Options", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "ID of the tax rate.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Which fields should be included in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "expand", + "description": "Which fields should be expanded and retrieved in the result.", + "style": "form", + "explode": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteTaxRatesTaxRateShippingOptionsReq" + } + } + } + }, + "x-codegen": { + "method": "removeShippingOptions", + "queryParams": "AdminDeleteTaxRatesTaxRateShippingOptionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.taxRates.removeShippingOptions(tax_rate_id, {\n shipping_options: [\n shipping_option_id\n ]\n})\n.then(({ tax_rate }) => {\n console.log(tax_rate.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/shipping-options/batch' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"shipping_options\": [\n \"{shipping_option_id}\"\n ]\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Tax Rates" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminTaxRatesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/uploads": { + "post": { + "operationId": "PostUploads", + "summary": "Upload files", + "description": "Uploads at least one file to the specific fileservice that is installed in Medusa.", + "x-authenticated": true, + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "files": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.uploads.create(file)\n.then(({ uploads }) => {\n console.log(uploads.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/uploads' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: image/jpeg' \\\n--form 'files=@\"\"' \\\n--form 'files=@\"\"'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Uploads" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUploadsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteUploads", + "summary": "Delete an Uploaded File", + "description": "Removes an uploaded file using the installed fileservice", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteUploadsReq" + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.uploads.delete({\n file_key\n})\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/uploads' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"file_key\": \"{file_key}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Uploads" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteUploadsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/uploads/download-url": { + "post": { + "operationId": "PostUploadsDownloadUrl", + "summary": "Get a File's Download URL", + "description": "Creates a presigned download url for a file", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminPostUploadsDownloadUrlReq" + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.uploads.getPresignedDownloadUrl({\n file_key\n})\n.then(({ download_url }) => {\n console.log(download_url);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/uploads/download-url' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"file_key\": \"{file_key}\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Uploads" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUploadsDownloadUrlRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/uploads/protected": { + "post": { + "operationId": "PostUploadsProtected", + "summary": "Protected File Upload", + "description": "Uploads at least one file with ACL or a non-public bucket to the specific fileservice that is installed in Medusa.", + "x-authenticated": true, + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "files": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.uploads.createProtected(file)\n.then(({ uploads }) => {\n console.log(uploads.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/uploads/protected' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: image/jpeg' \\\n--form 'files=@\"\"' \\\n--form 'files=@\"\"'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Uploads" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUploadsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/users": { + "get": { + "operationId": "GetUsers", + "summary": "List Users", + "description": "Retrieves all users.", + "x-authenticated": true, + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.list()\n.then(({ users }) => {\n console.log(users.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/users' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUsersListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostUsers", + "summary": "Create a User", + "description": "Creates a User", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminCreateUserRequest" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.create({\n email: 'user@example.com',\n password: 'supersecret'\n})\n.then(({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/users' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/users/password-token": { + "post": { + "operationId": "PostUsersUserPasswordToken", + "summary": "Request Password Reset", + "description": "Generates a password token for a User with a given email.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminResetPasswordTokenRequest" + } + } + } + }, + "x-codegen": { + "method": "sendResetPasswordToken" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.sendResetPasswordToken({\n email: 'user@example.com'\n})\n.then(() => {\n // successful\n})\n.catch(() => {\n // error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/users/password-token' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "204": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/users/reset-password": { + "post": { + "operationId": "PostUsersUserPassword", + "summary": "Reset Password", + "description": "Sets the password for a User given the correct token.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminResetPasswordRequest" + } + } + } + }, + "x-codegen": { + "method": "resetPassword" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.resetPassword({\n token: 'supersecrettoken',\n password: 'supersecret'\n})\n.then(({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/users/reset-password' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"token\": \"supersecrettoken\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/users/{id}": { + "get": { + "operationId": "GetUsersUser", + "summary": "Get a User", + "description": "Retrieves a User.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the User.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.retrieve(user_id)\n.then(({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/users/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostUsersUser", + "summary": "Update a User", + "description": "Updates a User", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the User.", + "schema": { + "type": "string" + } + } + ], + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUpdateUserRequest" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.update(user_id, {\n first_name: 'Marcellus'\n})\n.then(({ user }) => {\n console.log(user.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/admin/users/{id}' \\\n--header 'Authorization: Bearer {api_token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"first_name\": \"Marcellus\"\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteUsersUser", + "summary": "Delete a User", + "description": "Deletes a User", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the User.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "delete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.users.delete(user_id)\n.then(({ id, object, deleted }) => {\n console.log(id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/admin/users/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Users" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminDeleteUserRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/variants": { + "get": { + "operationId": "GetVariants", + "summary": "List Product Variants", + "description": "Retrieves a list of Product Variants", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "id", + "description": "A Product Variant id to filter by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "ids", + "description": "A comma separated list of Product Variant ids to filter by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "A comma separated list of Product Variant relations to load.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "A comma separated list of Product Variant fields to include.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many product variants to skip in the result.", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "limit", + "description": "Maximum number of Product Variants to return.", + "schema": { + "type": "number", + "default": "100" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "The id of the cart to use for price selection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "The id of the region to use for price selection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "description": "The currency code to use for price selection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "customer_id", + "description": "The id of the customer to use for price selection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "title", + "style": "form", + "explode": false, + "description": "product variant title to search for.", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "a single title to search by" + }, + { + "type": "array", + "description": "multiple titles to search by", + "items": { + "type": "string" + } + } + ] + } + }, + { + "in": "query", + "name": "inventory_quantity", + "description": "Filter by available inventory quantity", + "schema": { + "oneOf": [ + { + "type": "number", + "description": "a specific number to search by." + }, + { + "type": "object", + "description": "search using less and greater than comparisons.", + "properties": { + "lt": { + "type": "number", + "description": "filter by inventory quantity less than this number" + }, + "gt": { + "type": "number", + "description": "filter by inventory quantity greater than this number" + }, + "lte": { + "type": "number", + "description": "filter by inventory quantity less than or equal to this number" + }, + "gte": { + "type": "number", + "description": "filter by inventory quantity greater than or equal to this number" + } + } + } + ] + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "AdminGetVariantsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.variants.list()\n.then(({ variants, limit, offset, count }) => {\n console.log(variants.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/variants' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Variants" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminVariantsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/variants/{id}": { + "get": { + "operationId": "GetVariantsVariant", + "summary": "Get a Product variant", + "description": "Retrieves a Product variant.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the variant.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded the order of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included the order of the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "AdminGetVariantParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.variants.retrieve(product_id)\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/variants/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminVariantsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/admin/variants/{id}/inventory": { + "get": { + "operationId": "GetVariantsVariantInventory", + "summary": "Get inventory of Variant.", + "description": "Returns the available inventory of a Variant.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The Product Variant id to get inventory for.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "getInventory" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.admin.variants.list()\n .then(({ variants, limit, offset, count }) => {\n console.log(variants.length)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/admin/variants' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Variants" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "variant": { + "type": "object", + "$ref": "#/components/schemas/AdminGetVariantsVariantInventoryRes" + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + } + }, + "components": { + "responses": { + "default_error": { + "description": "Default Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "unknown_error", + "message": "An unknown error occurred.", + "type": "unknown_error" + } + } + } + }, + "invalid_state_error": { + "description": "Invalid State Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "unknown_error", + "message": "The request conflicted with another request. You may retry the request with the provided Idempotency-Key.", + "type": "QueryRunnerAlreadyReleasedError" + } + } + } + }, + "invalid_request_error": { + "description": "Invalid Request Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "invalid_request_error", + "message": "Discount with code TEST already exists.", + "type": "duplicate_error" + } + } + } + }, + "not_found_error": { + "description": "Not Found Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "message": "Entity with id 1 was not found", + "type": "not_found" + } + } + } + }, + "400_error": { + "description": "Client Error or Multiple Errors", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Error" + }, + { + "$ref": "#/components/schemas/MultipleErrors" + } + ] + }, + "examples": { + "not_allowed": { + "$ref": "#/components/examples/not_allowed_error" + }, + "invalid_data": { + "$ref": "#/components/examples/invalid_data_error" + }, + "MultipleErrors": { + "$ref": "#/components/examples/multiple_errors" + } + } + } + } + }, + "500_error": { + "description": "Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "database": { + "$ref": "#/components/examples/database_error" + }, + "unexpected_state": { + "$ref": "#/components/examples/unexpected_state_error" + }, + "invalid_argument": { + "$ref": "#/components/examples/invalid_argument_error" + }, + "default_error": { + "$ref": "#/components/examples/default_error" + } + } + } + } + }, + "unauthorized": { + "description": "User is not authorized. Must log in first", + "content": { + "text/plain": { + "schema": { + "type": "string", + "default": "Unauthorized", + "example": "Unauthorized" + } + } + } + }, + "incorrect_credentials": { + "description": "User does not exist or incorrect credentials", + "content": { + "text/plain": { + "schema": { + "type": "string", + "default": "Unauthorized", + "example": "Unauthorized" + } + } + } + } + }, + "examples": { + "not_allowed_error": { + "summary": "Not Allowed Error", + "value": { + "message": "Discount must be set to dynamic", + "type": "not_allowed" + } + }, + "invalid_data_error": { + "summary": "Invalid Data Error", + "value": { + "message": "first_name must be a string", + "type": "invalid_data" + } + }, + "multiple_errors": { + "summary": "Multiple Errors", + "value": { + "message": "Provided request body contains errors. Please check the data and retry the request", + "errors": [ + { + "message": "first_name must be a string", + "type": "invalid_data" + }, + { + "message": "Discount must be set to dynamic", + "type": "not_allowed" + } + ] + } + }, + "database_error": { + "summary": "Database Error", + "value": { + "code": "api_error", + "message": "An error occured while hashing password", + "type": "database_error" + } + }, + "unexpected_state_error": { + "summary": "Unexpected State Error", + "value": { + "message": "cart.total must be defined", + "type": "unexpected_state" + } + }, + "invalid_argument_error": { + "summary": "Invalid Argument Error", + "value": { + "message": "cart.total must be defined", + "type": "unexpected_state" + } + }, + "default_error": { + "summary": "Default Error", + "value": { + "code": "unknown_error", + "message": "An unknown error occurred.", + "type": "unknown_error" + } + } + }, + "securitySchemes": { + "api_token": { + "type": "http", + "x-displayName": "API Token", + "description": "Use a user's API Token to send authenticated requests.\n\n### How to Add API Token to a User\n\nAt the moment, there's no direct way of adding an API Token for a user. The only way it can be done is through directly editing the database.\n\nIf you're using a PostgreSQL database, you can run the following commands in your command line to add API token:\n\n```bash\npsql -d -U \nUPDATE public.user SET api_token='' WHERE email='';\n```\n\nWhere:\n- `` is the name of the database schema you use for the Medusa server.\n- `` is the name of the user that has privileges over the database schema.\n- `` is the API token you want to associate with the user. You can use [this tool to generate a random token](https://randomkeygen.com/).\n- `` is the email address of the admin user you want to have this API token.\n\n### How to Use the API Token\n\nThe API token can be used for Bearer Authentication. It's passed in the `Authorization` header as the following:\n\n```\nAuthorization: Bearer {api_token}\n```\n\nIn this API reference, you'll find in the cURL request samples the use of `{api_token}`. This is where you must pass the API token.\n\nIf you're following along with the JS Client request samples, you must provide the `apiKey` option when creating the Medusa client:\n\n```ts\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3, apiKey: '{api_token}' })\n```\n\nIf you're using Medusa React, you can pass the `apiKey` prop to `MedusaProvider`:\n\n```tsx\n\n```\n", + "scheme": "bearer" + }, + "cookie_auth": { + "type": "apiKey", + "in": "cookie", + "name": "connect.sid", + "x-displayName": "Cookie Session ID", + "description": "Use a cookie session to send authenticated requests.\n\n### How to Obtain the Cookie Session\n\nIf you're sending requests through a browser, using JS Client, or using tools like Postman, the cookie session should be automatically set when the admin user is logged in.\n\nIf you're sending requests using cURL, you must set the Session ID in the cookie manually.\n\nTo do that, send a request to [authenticate the user](#tag/Auth/operation/PostAuth) and pass the cURL option `-v`:\n\n```bash\ncurl -v --location --request POST 'https://medusa-url.com/admin/auth' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n```\n\nThe headers will be logged in the terminal as well as the response. You should find in the headers a Cookie header similar to this:\n\n```bash\nSet-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM;\n```\n\nCopy the value after `connect.sid` (without the `;` at the end) and pass it as a cookie in subsequent requests as the following:\n\n```bash\ncurl --location --request GET 'https://medusa-url.com/admin/products' \\\n--header 'Cookie: connect.sid={sid}'\n```\n\nWhere `{sid}` is the value of `connect.sid` that you copied.\n" + } + }, + "schemas": { + "Address": { + "title": "Address", + "description": "An address.", + "type": "object", + "required": [ + "address_1", + "address_2", + "city", + "company", + "country_code", + "created_at", + "customer_id", + "deleted_at", + "first_name", + "id", + "last_name", + "metadata", + "phone", + "postal_code", + "province", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "ID of the address", + "example": "addr_01G8ZC9VS1XVE149MGH2J7QSSH" + }, + "customer_id": { + "description": "ID of the customer this address belongs to", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "company": { + "description": "Company name", + "nullable": true, + "type": "string", + "example": "Acme" + }, + "first_name": { + "description": "First name", + "nullable": true, + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "nullable": true, + "type": "string", + "example": "Willms" + }, + "address_1": { + "description": "Address line 1", + "nullable": true, + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "nullable": true, + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "nullable": true, + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "country": { + "description": "A country object. Available if the relation `country` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Country" + }, + "province": { + "description": "Province", + "nullable": true, + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "nullable": true, + "type": "string", + "example": 72093 + }, + "phone": { + "description": "Phone Number", + "nullable": true, + "type": "string", + "example": 16128234334802 + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "AddressCreatePayload": { + "type": "object", + "description": "Address fields used when creating an address.", + "required": [ + "first_name", + "last_name", + "address_1", + "city", + "country_code", + "postal_code" + ], + "properties": { + "first_name": { + "description": "First name", + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "type": "string", + "example": "Willms" + }, + "phone": { + "type": "string", + "description": "Phone Number", + "example": 16128234334802 + }, + "company": { + "type": "string" + }, + "address_1": { + "description": "Address line 1", + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "province": { + "description": "Province", + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "type": "string", + "example": 72093 + }, + "metadata": { + "type": "object", + "example": { + "car": "white" + }, + "description": "An optional key-value map with additional details" + } + } + }, + "AddressPayload": { + "type": "object", + "description": "Address fields used when creating/updating an address.", + "properties": { + "first_name": { + "description": "First name", + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "type": "string", + "example": "Willms" + }, + "phone": { + "type": "string", + "description": "Phone Number", + "example": 16128234334802 + }, + "company": { + "type": "string" + }, + "address_1": { + "description": "Address line 1", + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "province": { + "description": "Province", + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "type": "string", + "example": 72093 + }, + "metadata": { + "type": "object", + "example": { + "car": "white" + }, + "description": "An optional key-value map with additional details" + } + } + }, + "AdminAppsListRes": { + "type": "object", + "required": [ + "apps" + ], + "properties": { + "apps": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OAuth" + } + } + } + }, + "AdminAppsRes": { + "type": "object", + "required": [ + "apps" + ], + "properties": { + "apps": { + "$ref": "#/components/schemas/OAuth" + } + } + }, + "AdminAuthRes": { + "type": "object", + "required": [ + "user" + ], + "properties": { + "user": { + "$ref": "#/components/schemas/User" + } + } + }, + "AdminBatchJobListRes": { + "type": "object", + "required": [ + "batch_jobs", + "count", + "offset", + "limit" + ], + "properties": { + "batch_jobs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BatchJob" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminBatchJobRes": { + "type": "object", + "required": [ + "batch_job" + ], + "properties": { + "batch_job": { + "$ref": "#/components/schemas/BatchJob" + } + } + }, + "AdminCollectionsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Collection" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "product-collection" + }, + "deleted": { + "type": "boolean", + "description": "Whether the collection was deleted successfully or not.", + "default": true + } + } + }, + "AdminCollectionsListRes": { + "type": "object", + "required": [ + "collections", + "count", + "offset", + "limit" + ], + "properties": { + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCollection" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminCollectionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "collection", + "relations": [ + "products" + ] + }, + "required": [ + "collection" + ], + "properties": { + "collection": { + "$ref": "#/components/schemas/ProductCollection" + } + } + }, + "AdminCreateUserRequest": { + "type": "object", + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "description": "The Users email.", + "type": "string", + "format": "email" + }, + "first_name": { + "description": "The name of the User.", + "type": "string" + }, + "last_name": { + "description": "The name of the User.", + "type": "string" + }, + "role": { + "description": "Userrole assigned to the user.", + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ] + }, + "password": { + "description": "The Users password.", + "type": "string", + "format": "password" + } + } + }, + "AdminCurrenciesListRes": { + "type": "object", + "required": [ + "currencies", + "count", + "offset", + "limit" + ], + "properties": { + "currencies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminCurrenciesRes": { + "type": "object", + "required": [ + "currency" + ], + "properties": { + "currency": { + "$ref": "#/components/schemas/Currency" + } + } + }, + "AdminCustomerGroupsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted customer group." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "customer_group" + }, + "deleted": { + "type": "boolean", + "description": "Whether the customer group was deleted successfully or not.", + "default": true + } + } + }, + "AdminCustomerGroupsListRes": { + "type": "object", + "required": [ + "customer_groups", + "count", + "offset", + "limit" + ], + "properties": { + "customer_groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminCustomerGroupsRes": { + "type": "object", + "required": [ + "customer_group" + ], + "properties": { + "customer_group": { + "$ref": "#/components/schemas/CustomerGroup" + } + } + }, + "AdminCustomersListRes": { + "type": "object", + "required": [ + "customers", + "count", + "offset", + "limit" + ], + "properties": { + "customers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Customer" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminCustomersRes": { + "type": "object", + "x-expanded-relations": { + "field": "customer", + "relations": [ + "orders", + "shipping_addresses" + ] + }, + "required": [ + "customer" + ], + "properties": { + "customer": { + "$ref": "#/components/schemas/Customer" + } + } + }, + "AdminDeleteCustomerGroupsGroupCustomerBatchReq": { + "type": "object", + "required": [ + "customer_ids" + ], + "properties": { + "customer_ids": { + "description": "The ids of the customers to remove", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "ID of the customer", + "type": "string" + } + } + } + } + } + }, + "AdminDeleteDiscountsDiscountConditionsConditionBatchReq": { + "type": "object", + "required": [ + "resources" + ], + "properties": { + "resources": { + "description": "The resources to be deleted from the discount condition", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The id of the item", + "type": "string" + } + } + } + } + } + }, + "AdminDeletePriceListPricesPricesReq": { + "type": "object", + "properties": { + "price_ids": { + "description": "The price id's of the Money Amounts to delete.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "AdminDeleteProductCategoriesCategoryProductsBatchReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "The IDs of the products to delete from the Product Category.", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a product", + "type": "string" + } + } + } + } + } + }, + "AdminDeleteProductsFromCollectionReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "An array of Product IDs to remove from the Product Collection.", + "type": "array", + "items": { + "description": "The ID of a Product to add to the Product Collection.", + "type": "string" + } + } + } + }, + "AdminDeleteProductsFromCollectionRes": { + "type": "object", + "required": [ + "id", + "object", + "removed_products" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the collection" + }, + "object": { + "type": "string", + "description": "The type of object the removal was executed on", + "default": "product-collection" + }, + "removed_products": { + "description": "The IDs of the products removed from the collection", + "type": "array", + "items": { + "description": "The ID of a Product to add to the Product Collection.", + "type": "string" + } + } + } + }, + "AdminDeletePublishableApiKeySalesChannelsBatchReq": { + "type": "object", + "required": [ + "sales_channel_ids" + ], + "properties": { + "sales_channel_ids": { + "description": "The IDs of the sales channels to delete from the publishable api key", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the sales channel" + } + } + } + } + } + }, + "AdminDeleteSalesChannelsChannelProductsBatchReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "The IDs of the products to delete from the Sales Channel.", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a product", + "type": "string" + } + } + } + } + } + }, + "AdminDeleteSalesChannelsChannelStockLocationsReq": { + "type": "object", + "required": [ + "location_id" + ], + "properties": { + "location_id": { + "description": "The ID of the stock location", + "type": "string" + } + } + }, + "AdminDeleteShippingProfileRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Shipping Profile." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "shipping_profile" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminDeleteTaxRatesTaxRateProductTypesReq": { + "type": "object", + "required": [ + "product_types" + ], + "properties": { + "product_types": { + "type": "array", + "description": "The IDs of the types of products to remove association with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminDeleteTaxRatesTaxRateProductsReq": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "products": { + "type": "array", + "description": "The IDs of the products to remove association with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminDeleteTaxRatesTaxRateShippingOptionsReq": { + "type": "object", + "required": [ + "shipping_options" + ], + "properties": { + "shipping_options": { + "type": "array", + "description": "The IDs of the shipping options to remove association with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminDeleteUploadsReq": { + "type": "object", + "required": [ + "file_key" + ], + "properties": { + "file_key": { + "description": "key of the file to delete", + "type": "string" + } + } + }, + "AdminDeleteUploadsRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The file key of the upload deleted" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "file" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminDeleteUserRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted user." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "user" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminDiscountConditionsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted", + "discount" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted DiscountCondition" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "discount-condition" + }, + "deleted": { + "type": "boolean", + "description": "Whether the discount condition was deleted successfully or not.", + "default": true + }, + "discount": { + "description": "The Discount to which the condition used to belong", + "$ref": "#/components/schemas/Discount" + } + } + }, + "AdminDiscountConditionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "discount_condition", + "relations": [ + "discount_rule" + ] + }, + "required": [ + "discount_condition" + ], + "properties": { + "discount_condition": { + "$ref": "#/components/schemas/DiscountCondition" + } + } + }, + "AdminDiscountsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Discount" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "discount" + }, + "deleted": { + "type": "boolean", + "description": "Whether the discount was deleted successfully or not.", + "default": true + } + } + }, + "AdminDiscountsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "discounts", + "relations": [ + "parent_discount", + "regions", + "rule", + "rule.conditions" + ] + }, + "required": [ + "discounts", + "count", + "offset", + "limit" + ], + "properties": { + "discounts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminDiscountsRes": { + "type": "object", + "x-expanded-relations": { + "field": "discount", + "relations": [ + "parent_discount", + "regions", + "rule", + "rule.conditions" + ], + "eager": [ + "regions.fulfillment_providers", + "regions.payment_providers" + ] + }, + "required": [ + "discount" + ], + "properties": { + "discount": { + "$ref": "#/components/schemas/Discount" + } + } + }, + "AdminDraftOrdersDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Draft Order." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "draft-order" + }, + "deleted": { + "type": "boolean", + "description": "Whether the draft order was deleted successfully or not.", + "default": true + } + } + }, + "AdminDraftOrdersListRes": { + "type": "object", + "x-expanded-relations": { + "field": "draft_orders", + "relations": [ + "order", + "cart", + "cart.items", + "cart.items.adjustments" + ] + }, + "required": [ + "draft_orders", + "count", + "offset", + "limit" + ], + "properties": { + "draft_orders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DraftOrder" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminDraftOrdersRes": { + "type": "object", + "x-expanded-relations": { + "field": "draft_order", + "relations": [ + "order", + "cart", + "cart.items", + "cart.items.adjustments", + "cart.billing_address", + "cart.customer", + "cart.discounts", + "cart.discounts.rule", + "cart.items", + "cart.items.adjustments", + "cart.payment", + "cart.payment_sessions", + "cart.region", + "cart.region.payment_providers", + "cart.shipping_address", + "cart.shipping_methods", + "cart.shipping_methods.shipping_option" + ], + "eager": [ + "cart.region.fulfillment_providers", + "cart.region.payment_providers", + "cart.shipping_methods.shipping_option" + ], + "implicit": [ + "cart.discounts", + "cart.discounts.rule", + "cart.gift_cards", + "cart.items", + "cart.items.adjustments", + "cart.items.tax_lines", + "cart.items.variant", + "cart.items.variant.product", + "cart.region", + "cart.region.tax_rates", + "cart.shipping_address", + "cart.shipping_methods", + "cart.shipping_methods.tax_lines" + ], + "totals": [ + "cart.discount_total", + "cart.gift_card_tax_total", + "cart.gift_card_total", + "cart.item_tax_total", + "cart.refundable_amount", + "cart.refunded_total", + "cart.shipping_tax_total", + "cart.shipping_total", + "cart.subtotal", + "cart.tax_total", + "cart.total", + "cart.items.discount_total", + "cart.items.gift_card_total", + "cart.items.original_tax_total", + "cart.items.original_total", + "cart.items.refundable", + "cart.items.subtotal", + "cart.items.tax_total", + "cart.items.total" + ] + }, + "required": [ + "draft_order" + ], + "properties": { + "draft_order": { + "$ref": "#/components/schemas/DraftOrder" + } + } + }, + "AdminExtendedStoresRes": { + "type": "object", + "x-expanded-relations": { + "field": "store", + "relations": [ + "currencies", + "default_currency" + ] + }, + "required": [ + "store" + ], + "properties": { + "store": { + "$ref": "#/components/schemas/ExtendedStoreDTO" + } + } + }, + "AdminGetRegionsRegionFulfillmentOptionsRes": { + "type": "object", + "required": [ + "fulfillment_options" + ], + "properties": { + "fulfillment_options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "provider_id", + "options" + ], + "properties": { + "provider_id": { + "description": "ID of the fulfillment provider", + "type": "string" + }, + "options": { + "description": "fulfillment provider options", + "type": "array", + "items": { + "type": "object", + "example": [ + { + "id": "manual-fulfillment" + }, + { + "id": "manual-fulfillment-return", + "is_return": true + } + ] + } + } + } + } + } + } + }, + "AdminGetVariantsVariantInventoryRes": { + "type": "object", + "properties": { + "variant": { + "type": "object", + "$ref": "#/components/schemas/VariantInventory" + } + } + }, + "AdminGiftCardsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Gift Card" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "gift-card" + }, + "deleted": { + "type": "boolean", + "description": "Whether the gift card was deleted successfully or not.", + "default": true + } + } + }, + "AdminGiftCardsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "gift_cards", + "relations": [ + "order", + "region" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "gift_cards", + "count", + "offset", + "limit" + ], + "properties": { + "gift_cards": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCard" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminGiftCardsRes": { + "type": "object", + "x-expanded-relations": { + "field": "gift_card", + "relations": [ + "order", + "region" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "gift_card" + ], + "properties": { + "gift_card": { + "$ref": "#/components/schemas/GiftCard" + } + } + }, + "AdminInventoryItemsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Inventory Item." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "format": "inventory_item" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Inventory Item was deleted.", + "default": true + } + } + }, + "AdminInventoryItemsListRes": { + "type": "object", + "required": [ + "inventory_items", + "count", + "offset", + "limit" + ], + "properties": { + "inventory_items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InventoryItemDTO" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminInventoryItemsListWithVariantsAndLocationLevelsRes": { + "type": "object", + "required": [ + "inventory_items", + "count", + "offset", + "limit" + ], + "properties": { + "inventory_items": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/components/schemas/InventoryItemDTO" + }, + { + "type": "object", + "properties": { + "location_levels": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/components/schemas/InventoryLevelDTO" + } + ] + } + }, + "variants": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductVariant" + } + ] + } + } + } + } + ] + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminInventoryItemsLocationLevelsRes": { + "type": "object", + "required": [ + "inventory_item" + ], + "properties": { + "inventory_item": { + "type": "object", + "required": [ + "id", + "location_levels" + ], + "properties": { + "id": { + "description": "The id of the location" + }, + "location_levels": { + "description": "List of stock levels at a given location", + "type": "array", + "items": { + "$ref": "#/components/schemas/InventoryLevelDTO" + } + } + } + } + } + }, + "AdminInventoryItemsRes": { + "type": "object", + "required": [ + "inventory_item" + ], + "properties": { + "inventory_item": { + "$ref": "#/components/schemas/InventoryItemDTO" + } + } + }, + "AdminInviteDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Invite." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "invite" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Invite was deleted.", + "default": true + } + } + }, + "AdminListInvitesRes": { + "type": "object", + "required": [ + "invites" + ], + "properties": { + "invites": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Invite" + } + } + } + }, + "AdminNotesDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Note." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "note" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Note was deleted.", + "default": true + } + } + }, + "AdminNotesListRes": { + "type": "object", + "required": [ + "notes", + "count", + "offset", + "limit" + ], + "properties": { + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Note" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminNotesRes": { + "type": "object", + "required": [ + "note" + ], + "properties": { + "note": { + "$ref": "#/components/schemas/Note" + } + } + }, + "AdminNotificationsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "notifications", + "relations": [ + "resends" + ] + }, + "required": [ + "notifications" + ], + "properties": { + "notifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + }, + "AdminNotificationsRes": { + "type": "object", + "x-expanded-relations": { + "field": "notification", + "relations": [ + "resends" + ] + }, + "required": [ + "notification" + ], + "properties": { + "notification": { + "$ref": "#/components/schemas/Notification" + } + } + }, + "AdminOrderEditDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Order Edit." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "order_edit" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Order Edit was deleted.", + "default": true + } + } + }, + "AdminOrderEditItemChangeDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Order Edit Item Change." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "item_change" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Order Edit Item Change was deleted.", + "default": true + } + } + }, + "AdminOrderEditsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "order_edits", + "relations": [ + "changes", + "changes.line_item", + "changes.line_item.variant", + "changes.original_line_item", + "changes.original_line_item.variant", + "items", + "items.adjustments", + "items.tax_lines", + "items.variant", + "payment_collection" + ], + "implicit": [ + "items", + "items.tax_lines", + "items.adjustments", + "items.variant" + ], + "totals": [ + "difference_due", + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total" + ] + }, + "required": [ + "order_edits", + "count", + "offset", + "limit" + ], + "properties": { + "order_edits": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderEdit" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminOrderEditsRes": { + "type": "object", + "x-expanded-relations": { + "field": "order_edit", + "relations": [ + "changes", + "changes.line_item", + "changes.line_item.variant", + "changes.original_line_item", + "changes.original_line_item.variant", + "items", + "items.adjustments", + "items.tax_lines", + "items.variant", + "payment_collection" + ], + "implicit": [ + "items", + "items.tax_lines", + "items.adjustments", + "items.variant" + ], + "totals": [ + "difference_due", + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total" + ] + }, + "required": [ + "order_edit" + ], + "properties": { + "order_edit": { + "$ref": "#/components/schemas/OrderEdit" + } + } + }, + "AdminOrdersListRes": { + "type": "object", + "x-expanded-relations": { + "field": "orders", + "relations": [ + "billing_address", + "claims", + "claims.additional_items", + "claims.additional_items.variant", + "claims.claim_items", + "claims.claim_items.images", + "claims.claim_items.item", + "claims.fulfillments", + "claims.fulfillments.tracking_links", + "claims.return_order", + "claims.return_order.shipping_method", + "claims.return_order.shipping_method.tax_lines", + "claims.shipping_address", + "claims.shipping_methods", + "customer", + "discounts", + "discounts.rule", + "fulfillments", + "fulfillments.items", + "fulfillments.tracking_links", + "gift_card_transactions", + "gift_cards", + "items", + "payments", + "refunds", + "region", + "returns", + "returns.items", + "returns.items.reason", + "returns.shipping_method", + "returns.shipping_method.tax_lines", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "fulfillments.items", + "region.fulfillment_providers", + "region.payment_providers", + "returns.items", + "shipping_methods.shipping_option" + ], + "implicit": [ + "claims", + "claims.additional_items", + "claims.additional_items.adjustments", + "claims.additional_items.refundable", + "claims.additional_items.tax_lines", + "discounts", + "discounts.rule", + "gift_card_transactions", + "gift_card_transactions.gift_card", + "gift_cards", + "items", + "items.adjustments", + "items.refundable", + "items.tax_lines", + "items.variant", + "items.variant.product", + "refunds", + "region", + "shipping_methods", + "shipping_methods.tax_lines", + "swaps", + "swaps.additional_items", + "swaps.additional_items.adjustments", + "swaps.additional_items.refundable", + "swaps.additional_items.tax_lines" + ], + "totals": [ + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "paid_total", + "refundable_amount", + "refunded_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "claims.additional_items.discount_total", + "claims.additional_items.gift_card_total", + "claims.additional_items.original_tax_total", + "claims.additional_items.original_total", + "claims.additional_items.refundable", + "claims.additional_items.subtotal", + "claims.additional_items.tax_total", + "claims.additional_items.total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total", + "swaps.additional_items.discount_total", + "swaps.additional_items.gift_card_total", + "swaps.additional_items.original_tax_total", + "swaps.additional_items.original_total", + "swaps.additional_items.refundable", + "swaps.additional_items.subtotal", + "swaps.additional_items.tax_total", + "swaps.additional_items.total" + ] + }, + "required": [ + "orders", + "count", + "offset", + "limit" + ], + "properties": { + "orders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminOrdersOrderLineItemReservationReq": { + "type": "object", + "required": [ + "location_id" + ], + "properties": { + "location_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "quantity": { + "description": "The quantity to reserve", + "type": "number" + } + } + }, + "AdminOrdersRes": { + "type": "object", + "x-expanded-relations": { + "field": "order", + "relations": [ + "billing_address", + "claims", + "claims.additional_items", + "claims.additional_items.variant", + "claims.claim_items", + "claims.claim_items.images", + "claims.claim_items.item", + "claims.fulfillments", + "claims.fulfillments.tracking_links", + "claims.return_order", + "claims.return_order.shipping_method", + "claims.return_order.shipping_method.tax_lines", + "claims.shipping_address", + "claims.shipping_methods", + "customer", + "discounts", + "discounts.rule", + "fulfillments", + "fulfillments.items", + "fulfillments.tracking_links", + "gift_card_transactions", + "gift_cards", + "items", + "payments", + "refunds", + "region", + "returns", + "returns.items", + "returns.items.reason", + "returns.shipping_method", + "returns.shipping_method.tax_lines", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "fulfillments.items", + "region.fulfillment_providers", + "region.payment_providers", + "returns.items", + "shipping_methods.shipping_option" + ], + "implicit": [ + "claims", + "claims.additional_items", + "claims.additional_items.adjustments", + "claims.additional_items.refundable", + "claims.additional_items.tax_lines", + "discounts", + "discounts.rule", + "gift_card_transactions", + "gift_card_transactions.gift_card", + "gift_cards", + "items", + "items.adjustments", + "items.refundable", + "items.tax_lines", + "items.variant", + "items.variant.product", + "refunds", + "region", + "shipping_methods", + "shipping_methods.tax_lines", + "swaps", + "swaps.additional_items", + "swaps.additional_items.adjustments", + "swaps.additional_items.refundable", + "swaps.additional_items.tax_lines" + ], + "totals": [ + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "paid_total", + "refundable_amount", + "refunded_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "claims.additional_items.discount_total", + "claims.additional_items.gift_card_total", + "claims.additional_items.original_tax_total", + "claims.additional_items.original_total", + "claims.additional_items.refundable", + "claims.additional_items.subtotal", + "claims.additional_items.tax_total", + "claims.additional_items.total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total", + "swaps.additional_items.discount_total", + "swaps.additional_items.gift_card_total", + "swaps.additional_items.original_tax_total", + "swaps.additional_items.original_total", + "swaps.additional_items.refundable", + "swaps.additional_items.subtotal", + "swaps.additional_items.tax_total", + "swaps.additional_items.total" + ] + }, + "required": [ + "order" + ], + "properties": { + "order": { + "$ref": "#/components/schemas/Order" + } + } + }, + "AdminPaymentCollectionDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Payment Collection." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "payment_collection" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Payment Collection was deleted.", + "default": true + } + } + }, + "AdminPaymentCollectionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "payment_collection", + "relations": [ + "payment_sessions", + "payments", + "region" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "payment_collection" + ], + "properties": { + "payment_collection": { + "$ref": "#/components/schemas/PaymentCollection" + } + } + }, + "AdminPaymentProvidersList": { + "type": "object", + "required": [ + "payment_providers" + ], + "properties": { + "payment_providers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentProvider" + } + } + } + }, + "AdminPaymentRes": { + "type": "object", + "required": [ + "payment" + ], + "properties": { + "payment": { + "$ref": "#/components/schemas/Payment" + } + } + }, + "AdminPostAppsReq": { + "type": "object", + "required": [ + "application_name", + "state", + "code" + ], + "properties": { + "application_name": { + "type": "string", + "description": "Name of the application for the token to be generated for." + }, + "state": { + "type": "string", + "description": "State of the application." + }, + "code": { + "type": "string", + "description": "The code for the generated token." + } + } + }, + "AdminPostAuthReq": { + "type": "object", + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "type": "string", + "description": "The User's email.", + "format": "email" + }, + "password": { + "type": "string", + "description": "The User's password.", + "format": "password" + } + } + }, + "AdminPostBatchesReq": { + "type": "object", + "required": [ + "type", + "context" + ], + "properties": { + "type": { + "type": "string", + "description": "The type of batch job to start.", + "example": "product-export" + }, + "context": { + "type": "object", + "description": "Additional infomration regarding the batch to be used for processing.", + "example": { + "shape": { + "prices": [ + { + "region": null, + "currency_code": "eur" + } + ], + "dynamicImageColumnCount": 4, + "dynamicOptionColumnCount": 2 + }, + "list_config": { + "skip": 0, + "take": 50, + "order": { + "created_at": "DESC" + }, + "relations": [ + "variants", + "variant.prices", + "images" + ] + } + } + }, + "dry_run": { + "type": "boolean", + "description": "Set a batch job in dry_run mode to get some information on what will be done without applying any modifications.", + "default": false + } + } + }, + "AdminPostCollectionsCollectionReq": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The title to identify the Collection by." + }, + "handle": { + "type": "string", + "description": "An optional handle to be used in slugs, if none is provided we will kebab-case the title." + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostCollectionsReq": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "type": "string", + "description": "The title to identify the Collection by." + }, + "handle": { + "type": "string", + "description": "An optional handle to be used in slugs, if none is provided we will kebab-case the title." + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostCurrenciesCurrencyReq": { + "type": "object", + "properties": { + "includes_tax": { + "type": "boolean", + "description": "[EXPERIMENTAL] Tax included in prices of currency." + } + } + }, + "AdminPostCustomerGroupsGroupCustomersBatchReq": { + "type": "object", + "required": [ + "customer_ids" + ], + "properties": { + "customer_ids": { + "description": "The ids of the customers to add", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "ID of the customer", + "type": "string" + } + } + } + } + } + }, + "AdminPostCustomerGroupsGroupReq": { + "type": "object", + "properties": { + "name": { + "description": "Name of the customer group", + "type": "string" + }, + "metadata": { + "description": "Metadata for the customer.", + "type": "object" + } + } + }, + "AdminPostCustomerGroupsReq": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the customer group" + }, + "metadata": { + "type": "object", + "description": "Metadata for the customer." + } + } + }, + "AdminPostCustomersCustomerReq": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "The Customer's email.", + "format": "email" + }, + "first_name": { + "type": "string", + "description": "The Customer's first name." + }, + "last_name": { + "type": "string", + "description": "The Customer's last name." + }, + "phone": { + "type": "string", + "description": "The Customer's phone number." + }, + "password": { + "type": "string", + "description": "The Customer's password.", + "format": "password" + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a customer group", + "type": "string" + } + } + }, + "description": "A list of customer groups to which the customer belongs." + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostCustomersReq": { + "type": "object", + "required": [ + "email", + "first_name", + "last_name", + "password" + ], + "properties": { + "email": { + "type": "string", + "description": "The customer's email.", + "format": "email" + }, + "first_name": { + "type": "string", + "description": "The customer's first name." + }, + "last_name": { + "type": "string", + "description": "The customer's last name." + }, + "password": { + "type": "string", + "description": "The customer's password.", + "format": "password" + }, + "phone": { + "type": "string", + "description": "The customer's phone number." + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostDiscountsDiscountConditions": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "description": "Operator of the condition", + "type": "string", + "enum": [ + "in", + "not_in" + ] + }, + "products": { + "type": "array", + "description": "list of product IDs if the condition is applied on products.", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "list of product type IDs if the condition is applied on product types.", + "items": { + "type": "string" + } + }, + "product_collections": { + "type": "array", + "description": "list of product collection IDs if the condition is applied on product collections.", + "items": { + "type": "string" + } + }, + "product_tags": { + "type": "array", + "description": "list of product tag IDs if the condition is applied on product tags.", + "items": { + "type": "string" + } + }, + "customer_groups": { + "type": "array", + "description": "list of customer group IDs if the condition is applied on customer groups.", + "items": { + "type": "string" + } + } + } + }, + "AdminPostDiscountsDiscountConditionsCondition": { + "type": "object", + "properties": { + "products": { + "type": "array", + "description": "list of product IDs if the condition is applied on products.", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "list of product type IDs if the condition is applied on product types.", + "items": { + "type": "string" + } + }, + "product_collections": { + "type": "array", + "description": "list of product collection IDs if the condition is applied on product collections.", + "items": { + "type": "string" + } + }, + "product_tags": { + "type": "array", + "description": "list of product tag IDs if the condition is applied on product tags.", + "items": { + "type": "string" + } + }, + "customer_groups": { + "type": "array", + "description": "list of customer group IDs if the condition is applied on customer groups.", + "items": { + "type": "string" + } + } + } + }, + "AdminPostDiscountsDiscountConditionsConditionBatchReq": { + "type": "object", + "required": [ + "resources" + ], + "properties": { + "resources": { + "description": "The resources to be added to the discount condition", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The id of the item", + "type": "string" + } + } + } + } + } + }, + "AdminPostDiscountsDiscountDynamicCodesReq": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "type": "string", + "description": "A unique code that will be used to redeem the Discount" + }, + "usage_limit": { + "type": "number", + "description": "Maximum times the discount can be used", + "default": 1 + }, + "metadata": { + "type": "object", + "description": "An optional set of key-value pairs to hold additional information." + } + } + }, + "AdminPostDiscountsDiscountReq": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "A unique code that will be used to redeem the Discount" + }, + "rule": { + "description": "The Discount Rule that defines how Discounts are calculated", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the Rule" + }, + "description": { + "type": "string", + "description": "A short description of the discount" + }, + "value": { + "type": "number", + "description": "The value that the discount represents; this will depend on the type of the discount" + }, + "allocation": { + "type": "string", + "description": "The scope that the discount should apply to.", + "enum": [ + "total", + "item" + ] + }, + "conditions": { + "type": "array", + "description": "A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided.", + "items": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the Rule" + }, + "operator": { + "type": "string", + "description": "Operator of the condition", + "enum": [ + "in", + "not_in" + ] + }, + "products": { + "type": "array", + "description": "list of product IDs if the condition is applied on products.", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "list of product type IDs if the condition is applied on product types.", + "items": { + "type": "string" + } + }, + "product_collections": { + "type": "array", + "description": "list of product collection IDs if the condition is applied on product collections.", + "items": { + "type": "string" + } + }, + "product_tags": { + "type": "array", + "description": "list of product tag IDs if the condition is applied on product tags.", + "items": { + "type": "string" + } + }, + "customer_groups": { + "type": "array", + "description": "list of customer group IDs if the condition is applied on customer groups.", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "is_disabled": { + "type": "boolean", + "description": "Whether the Discount code is disabled on creation. You will have to enable it later to make it available to Customers." + }, + "starts_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Discount should be available." + }, + "ends_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Discount should no longer be available." + }, + "valid_duration": { + "type": "string", + "description": "Duration the discount runs between", + "example": "P3Y6M4DT12H30M5S" + }, + "usage_limit": { + "type": "number", + "description": "Maximum times the discount can be used" + }, + "regions": { + "description": "A list of Region ids representing the Regions in which the Discount can be used.", + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "description": "An object containing metadata of the discount", + "type": "object" + } + } + }, + "AdminPostDiscountsReq": { + "type": "object", + "required": [ + "code", + "rule", + "regions" + ], + "properties": { + "code": { + "type": "string", + "description": "A unique code that will be used to redeem the Discount" + }, + "is_dynamic": { + "type": "boolean", + "description": "Whether the Discount should have multiple instances of itself, each with a different code. This can be useful for automatically generated codes that all have to follow a common set of rules.", + "default": false + }, + "rule": { + "description": "The Discount Rule that defines how Discounts are calculated", + "type": "object", + "required": [ + "type", + "value", + "allocation" + ], + "properties": { + "description": { + "type": "string", + "description": "A short description of the discount" + }, + "type": { + "type": "string", + "description": "The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers.", + "enum": [ + "fixed", + "percentage", + "free_shipping" + ] + }, + "value": { + "type": "number", + "description": "The value that the discount represents; this will depend on the type of the discount" + }, + "allocation": { + "type": "string", + "description": "The scope that the discount should apply to.", + "enum": [ + "total", + "item" + ] + }, + "conditions": { + "type": "array", + "description": "A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided.", + "items": { + "type": "object", + "required": [ + "operator" + ], + "properties": { + "operator": { + "type": "string", + "description": "Operator of the condition", + "enum": [ + "in", + "not_in" + ] + }, + "products": { + "type": "array", + "description": "list of product IDs if the condition is applied on products.", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "list of product type IDs if the condition is applied on product types.", + "items": { + "type": "string" + } + }, + "product_collections": { + "type": "array", + "description": "list of product collection IDs if the condition is applied on product collections.", + "items": { + "type": "string" + } + }, + "product_tags": { + "type": "array", + "description": "list of product tag IDs if the condition is applied on product tags.", + "items": { + "type": "string" + } + }, + "customer_groups": { + "type": "array", + "description": "list of customer group IDs if the condition is applied on customer groups.", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "is_disabled": { + "type": "boolean", + "description": "Whether the Discount code is disabled on creation. You will have to enable it later to make it available to Customers.", + "default": false + }, + "starts_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Discount should be available." + }, + "ends_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Discount should no longer be available." + }, + "valid_duration": { + "type": "string", + "description": "Duration the discount runs between", + "example": "P3Y6M4DT12H30M5S" + }, + "regions": { + "description": "A list of Region ids representing the Regions in which the Discount can be used.", + "type": "array", + "items": { + "type": "string" + } + }, + "usage_limit": { + "type": "number", + "description": "Maximum times the discount can be used" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostDraftOrdersDraftOrderLineItemsItemReq": { + "type": "object", + "properties": { + "unit_price": { + "description": "The potential custom price of the item.", + "type": "integer" + }, + "title": { + "description": "The potential custom title of the item.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Line Item.", + "type": "integer" + }, + "metadata": { + "description": "The optional key-value map with additional details about the Line Item.", + "type": "object" + } + } + }, + "AdminPostDraftOrdersDraftOrderLineItemsReq": { + "type": "object", + "required": [ + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the Product Variant to generate the Line Item from.", + "type": "string" + }, + "unit_price": { + "description": "The potential custom price of the item.", + "type": "integer" + }, + "title": { + "description": "The potential custom title of the item.", + "type": "string", + "default": "Custom item" + }, + "quantity": { + "description": "The quantity of the Line Item.", + "type": "integer" + }, + "metadata": { + "description": "The optional key-value map with additional details about the Line Item.", + "type": "object" + } + } + }, + "AdminPostDraftOrdersDraftOrderRegisterPaymentRes": { + "type": "object", + "required": [ + "order" + ], + "properties": { + "order": { + "$ref": "#/components/schemas/Order" + } + } + }, + "AdminPostDraftOrdersDraftOrderReq": { + "type": "object", + "properties": { + "region_id": { + "type": "string", + "description": "The ID of the Region to create the Draft Order in." + }, + "country_code": { + "type": "string", + "description": "The 2 character ISO code for the Country.", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "email": { + "type": "string", + "description": "An email to be used on the Draft Order.", + "format": "email" + }, + "billing_address": { + "description": "The Address to be used for billing purposes.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload" + }, + { + "type": "string" + } + ] + }, + "shipping_address": { + "description": "The Address to be used for shipping.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload" + }, + { + "type": "string" + } + ] + }, + "discounts": { + "description": "An array of Discount codes to add to the Draft Order.", + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "description": "The code that a Discount is identifed by.", + "type": "string" + } + } + } + }, + "no_notification_order": { + "description": "An optional flag passed to the resulting order to determine use of notifications.", + "type": "boolean" + }, + "customer_id": { + "description": "The ID of the Customer to associate the Draft Order with.", + "type": "string" + } + } + }, + "AdminPostDraftOrdersReq": { + "type": "object", + "required": [ + "email", + "region_id", + "shipping_methods" + ], + "properties": { + "status": { + "description": "The status of the draft order", + "type": "string", + "enum": [ + "open", + "completed" + ] + }, + "email": { + "description": "The email of the customer of the draft order", + "type": "string", + "format": "email" + }, + "billing_address": { + "description": "The Address to be used for billing purposes.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload" + }, + { + "type": "string" + } + ] + }, + "shipping_address": { + "description": "The Address to be used for shipping.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload" + }, + { + "type": "string" + } + ] + }, + "items": { + "description": "The Line Items that have been received.", + "type": "array", + "items": { + "type": "object", + "required": [ + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the Product Variant to generate the Line Item from.", + "type": "string" + }, + "unit_price": { + "description": "The potential custom price of the item.", + "type": "integer" + }, + "title": { + "description": "The potential custom title of the item.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Line Item.", + "type": "integer" + }, + "metadata": { + "description": "The optional key-value map with additional details about the Line Item.", + "type": "object" + } + } + } + }, + "region_id": { + "description": "The ID of the region for the draft order", + "type": "string" + }, + "discounts": { + "description": "The discounts to add on the draft order", + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "description": "The code of the discount to apply", + "type": "string" + } + } + } + }, + "customer_id": { + "description": "The ID of the customer to add on the draft order", + "type": "string" + }, + "no_notification_order": { + "description": "An optional flag passed to the resulting order to determine use of notifications.", + "type": "boolean" + }, + "shipping_methods": { + "description": "The shipping methods for the draft order", + "type": "array", + "items": { + "type": "object", + "required": [ + "option_id" + ], + "properties": { + "option_id": { + "description": "The ID of the shipping option in use", + "type": "string" + }, + "data": { + "description": "The optional additional data needed for the shipping method", + "type": "object" + }, + "price": { + "description": "The potential custom price of the shipping", + "type": "integer" + } + } + } + }, + "metadata": { + "description": "The optional key-value map with additional details about the Draft Order.", + "type": "object" + } + } + }, + "AdminPostGiftCardsGiftCardReq": { + "type": "object", + "properties": { + "balance": { + "type": "integer", + "description": "The value (excluding VAT) that the Gift Card should represent." + }, + "is_disabled": { + "type": "boolean", + "description": "Whether the Gift Card is disabled on creation. You will have to enable it later to make it available to Customers." + }, + "ends_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Gift Card should no longer be available." + }, + "region_id": { + "description": "The ID of the Region in which the Gift Card can be used.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostGiftCardsReq": { + "type": "object", + "required": [ + "region_id" + ], + "properties": { + "value": { + "type": "integer", + "description": "The value (excluding VAT) that the Gift Card should represent." + }, + "is_disabled": { + "type": "boolean", + "description": "Whether the Gift Card is disabled on creation. You will have to enable it later to make it available to Customers." + }, + "ends_at": { + "type": "string", + "format": "date-time", + "description": "The time at which the Gift Card should no longer be available." + }, + "region_id": { + "description": "The ID of the Region in which the Gift Card can be used.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostInventoryItemsInventoryItemReq": { + "type": "object", + "properties": { + "hs_code": { + "description": "The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "origin_country": { + "description": "The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "material": { + "description": "The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "weight": { + "description": "The weight of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "height": { + "description": "The height of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "width": { + "description": "The width of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "length": { + "description": "The length of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "requires_shipping": { + "description": "Whether the item requires shipping.", + "type": "boolean" + } + } + }, + "AdminPostInventoryItemsItemLocationLevelsLevelReq": { + "type": "object", + "properties": { + "stocked_quantity": { + "description": "the total stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "incoming_quantity": { + "description": "the incoming stock quantity of an inventory item at the given location ID", + "type": "number" + } + } + }, + "AdminPostInventoryItemsItemLocationLevelsReq": { + "type": "object", + "required": [ + "location_id", + "stocked_quantity" + ], + "properties": { + "location_id": { + "description": "the item location ID", + "type": "string" + }, + "stocked_quantity": { + "description": "the stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "incoming_quantity": { + "description": "the incoming stock quantity of an inventory item at the given location ID", + "type": "number" + } + } + }, + "AdminPostInventoryItemsReq": { + "type": "object", + "properties": { + "sku": { + "description": "The unique SKU for the Product Variant.", + "type": "string" + }, + "ean": { + "description": "The EAN number of the item.", + "type": "string" + }, + "upc": { + "description": "The UPC number of the item.", + "type": "string" + }, + "barcode": { + "description": "A generic GTIN field for the Product Variant.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "inventory_quantity": { + "description": "The amount of stock kept for the Product Variant.", + "type": "integer", + "default": 0 + }, + "allow_backorder": { + "description": "Whether the Product Variant can be purchased when out of stock.", + "type": "boolean" + }, + "manage_inventory": { + "description": "Whether Medusa should keep track of the inventory for this Product Variant.", + "type": "boolean", + "default": true + }, + "weight": { + "description": "The wieght of the Product Variant.", + "type": "number" + }, + "length": { + "description": "The length of the Product Variant.", + "type": "number" + }, + "height": { + "description": "The height of the Product Variant.", + "type": "number" + }, + "width": { + "description": "The width of the Product Variant.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product Variant.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product Variant.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product Variant.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostInvitesInviteAcceptReq": { + "type": "object", + "required": [ + "token", + "user" + ], + "properties": { + "token": { + "description": "The invite token provided by the admin.", + "type": "string" + }, + "user": { + "description": "The User to create.", + "type": "object", + "required": [ + "first_name", + "last_name", + "password" + ], + "properties": { + "first_name": { + "type": "string", + "description": "the first name of the User" + }, + "last_name": { + "type": "string", + "description": "the last name of the User" + }, + "password": { + "description": "The desired password for the User", + "type": "string", + "format": "password" + } + } + } + } + }, + "AdminPostInvitesReq": { + "type": "object", + "required": [ + "user", + "role" + ], + "properties": { + "user": { + "description": "The email for the user to be created.", + "type": "string", + "format": "email" + }, + "role": { + "description": "The role of the user to be created.", + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ] + } + } + }, + "AdminPostNotesNoteReq": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string", + "description": "The updated description of the Note." + } + } + }, + "AdminPostNotesReq": { + "type": "object", + "required": [ + "resource_id", + "resource_type", + "value" + ], + "properties": { + "resource_id": { + "type": "string", + "description": "The ID of the resource which the Note relates to." + }, + "resource_type": { + "type": "string", + "description": "The type of resource which the Note relates to." + }, + "value": { + "type": "string", + "description": "The content of the Note to create." + } + } + }, + "AdminPostNotificationsNotificationResendReq": { + "type": "object", + "properties": { + "to": { + "description": "A new address or user identifier that the Notification should be sent to", + "type": "string" + } + } + }, + "AdminPostOrderEditsEditLineItemsLineItemReq": { + "type": "object", + "required": [ + "quantity" + ], + "properties": { + "quantity": { + "description": "The quantity to update", + "type": "number" + } + } + }, + "AdminPostOrderEditsEditLineItemsReq": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the variant ID to add", + "type": "string" + }, + "quantity": { + "description": "The quantity to add", + "type": "number" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostOrderEditsOrderEditReq": { + "type": "object", + "properties": { + "internal_note": { + "description": "An optional note to create or update for the order edit.", + "type": "string" + } + } + }, + "AdminPostOrderEditsReq": { + "type": "object", + "required": [ + "order_id" + ], + "properties": { + "order_id": { + "description": "The ID of the order to create the edit for.", + "type": "string" + }, + "internal_note": { + "description": "An optional note to create for the order edit.", + "type": "string" + } + } + }, + "AdminPostOrdersOrderClaimsClaimFulfillmentsReq": { + "type": "object", + "properties": { + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Claim.", + "type": "boolean" + } + } + }, + "AdminPostOrdersOrderClaimsClaimReq": { + "type": "object", + "properties": { + "claim_items": { + "description": "The Claim Items that the Claim will consist of.", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "images", + "tags" + ], + "properties": { + "id": { + "description": "The ID of the Claim Item.", + "type": "string" + }, + "item_id": { + "description": "The ID of the Line Item that will be claimed.", + "type": "string" + }, + "quantity": { + "description": "The number of items that will be returned", + "type": "integer" + }, + "note": { + "description": "Short text describing the Claim Item in further detail.", + "type": "string" + }, + "reason": { + "description": "The reason for the Claim", + "type": "string", + "enum": [ + "missing_item", + "wrong_item", + "production_failure", + "other" + ] + }, + "tags": { + "description": "A list o tags to add to the Claim Item", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Tag ID" + }, + "value": { + "type": "string", + "description": "Tag value" + } + } + } + }, + "images": { + "description": "A list of image URL's that will be associated with the Claim", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Image ID" + }, + "url": { + "type": "string", + "description": "Image URL" + } + } + } + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + } + }, + "shipping_methods": { + "description": "The Shipping Methods to send the additional Line Items with.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of an existing Shipping Method", + "type": "string" + }, + "option_id": { + "description": "The ID of the Shipping Option to create a Shipping Method from", + "type": "string" + }, + "price": { + "description": "The price to charge for the Shipping Method", + "type": "integer" + }, + "data": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + } + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Swap.", + "type": "boolean" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostOrdersOrderClaimsClaimShipmentsReq": { + "type": "object", + "required": [ + "fulfillment_id" + ], + "properties": { + "fulfillment_id": { + "description": "The ID of the Fulfillment.", + "type": "string" + }, + "tracking_numbers": { + "description": "The tracking numbers for the shipment.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "AdminPostOrdersOrderClaimsReq": { + "type": "object", + "required": [ + "type", + "claim_items" + ], + "properties": { + "type": { + "description": "The type of the Claim. This will determine how the Claim is treated: `replace` Claims will result in a Fulfillment with new items being created, while a `refund` Claim will refund the amount paid for the claimed items.", + "type": "string", + "enum": [ + "replace", + "refund" + ] + }, + "claim_items": { + "description": "The Claim Items that the Claim will consist of.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item that will be claimed.", + "type": "string" + }, + "quantity": { + "description": "The number of items that will be returned", + "type": "integer" + }, + "note": { + "description": "Short text describing the Claim Item in further detail.", + "type": "string" + }, + "reason": { + "description": "The reason for the Claim", + "type": "string", + "enum": [ + "missing_item", + "wrong_item", + "production_failure", + "other" + ] + }, + "tags": { + "description": "A list o tags to add to the Claim Item", + "type": "array", + "items": { + "type": "string" + } + }, + "images": { + "description": "A list of image URL's that will be associated with the Claim", + "items": { + "type": "string" + } + } + } + } + }, + "return_shipping": { + "description": "Optional details for the Return Shipping Method, if the items are to be sent back.", + "type": "object", + "properties": { + "option_id": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + }, + "price": { + "type": "integer", + "description": "The price to charge for the Shipping Method." + } + } + }, + "additional_items": { + "description": "The new items to send to the Customer when the Claim type is Replace.", + "type": "array", + "items": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the Product Variant to ship.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Product Variant to ship.", + "type": "integer" + } + } + } + }, + "shipping_methods": { + "description": "The Shipping Methods to send the additional Line Items with.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of an existing Shipping Method", + "type": "string" + }, + "option_id": { + "description": "The ID of the Shipping Option to create a Shipping Method from", + "type": "string" + }, + "price": { + "description": "The price to charge for the Shipping Method", + "type": "integer" + }, + "data": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + } + }, + "shipping_address": { + "description": "An optional shipping address to send the claim to. Defaults to the parent order's shipping address", + "$ref": "#/components/schemas/AddressPayload" + }, + "refund_amount": { + "description": "The amount to refund the Customer when the Claim type is `refund`.", + "type": "integer" + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Claim.", + "type": "boolean" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostOrdersOrderFulfillmentsReq": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "The Line Items to include in the Fulfillment.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of Line Item to fulfill.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Line Item to fulfill.", + "type": "integer" + } + } + } + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Swap.", + "type": "boolean" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminPostOrdersOrderRefundsReq": { + "type": "object", + "required": [ + "amount", + "reason" + ], + "properties": { + "amount": { + "description": "The amount to refund.", + "type": "integer" + }, + "reason": { + "description": "The reason for the Refund.", + "type": "string" + }, + "note": { + "description": "A note with additional details about the Refund.", + "type": "string" + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Refund.", + "type": "boolean" + } + } + }, + "AdminPostOrdersOrderReq": { + "type": "object", + "properties": { + "email": { + "description": "the email for the order", + "type": "string" + }, + "billing_address": { + "description": "Billing address", + "$ref": "#/components/schemas/AddressPayload" + }, + "shipping_address": { + "description": "Shipping address", + "$ref": "#/components/schemas/AddressPayload" + }, + "items": { + "description": "The Line Items for the order", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "region": { + "description": "ID of the region where the order belongs", + "type": "string" + }, + "discounts": { + "description": "Discounts applied to the order", + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "customer_id": { + "description": "ID of the customer", + "type": "string" + }, + "payment_method": { + "description": "payment method chosen for the order", + "type": "object", + "properties": { + "provider_id": { + "type": "string", + "description": "ID of the payment provider" + }, + "data": { + "description": "Data relevant for the given payment method", + "type": "object" + } + } + }, + "shipping_method": { + "description": "The Shipping Method used for shipping the order.", + "type": "object", + "properties": { + "provider_id": { + "type": "string", + "description": "The ID of the shipping provider." + }, + "profile_id": { + "type": "string", + "description": "The ID of the shipping profile." + }, + "price": { + "type": "integer", + "description": "The price of the shipping." + }, + "data": { + "type": "object", + "description": "Data relevant to the specific shipping method." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "description": "Items to ship" + } + } + }, + "no_notification": { + "description": "A flag to indicate if no notifications should be emitted related to the updated order.", + "type": "boolean" + } + } + }, + "AdminPostOrdersOrderReturnsReq": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "The Line Items that will be returned.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item.", + "type": "string" + }, + "reason_id": { + "description": "The ID of the Return Reason to use.", + "type": "string" + }, + "note": { + "description": "An optional note with information about the Return.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Line Item.", + "type": "integer" + } + } + } + }, + "return_shipping": { + "description": "The Shipping Method to be used to handle the return shipment.", + "type": "object", + "properties": { + "option_id": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + }, + "price": { + "type": "integer", + "description": "The price to charge for the Shipping Method." + } + } + }, + "note": { + "description": "An optional note with information about the Return.", + "type": "string" + }, + "receive_now": { + "description": "A flag to indicate if the Return should be registerd as received immediately.", + "type": "boolean", + "default": false + }, + "no_notification": { + "description": "A flag to indicate if no notifications should be emitted related to the requested Return.", + "type": "boolean" + }, + "refund": { + "description": "The amount to refund.", + "type": "integer" + } + } + }, + "AdminPostOrdersOrderShipmentReq": { + "type": "object", + "required": [ + "fulfillment_id" + ], + "properties": { + "fulfillment_id": { + "description": "The ID of the Fulfillment.", + "type": "string" + }, + "tracking_numbers": { + "description": "The tracking numbers for the shipment.", + "type": "array", + "items": { + "type": "string" + } + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Shipment.", + "type": "boolean" + } + } + }, + "AdminPostOrdersOrderShippingMethodsReq": { + "type": "object", + "required": [ + "price", + "option_id" + ], + "properties": { + "price": { + "type": "number", + "description": "The price (excluding VAT) that should be charged for the Shipping Method" + }, + "option_id": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + }, + "date": { + "type": "object", + "description": "The data required for the Shipping Option to create a Shipping Method. This will depend on the Fulfillment Provider." + } + } + }, + "AdminPostOrdersOrderSwapsReq": { + "type": "object", + "required": [ + "return_items" + ], + "properties": { + "return_items": { + "description": "The Line Items to return as part of the Swap.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item that will be claimed.", + "type": "string" + }, + "quantity": { + "description": "The number of items that will be returned", + "type": "integer" + }, + "reason_id": { + "description": "The ID of the Return Reason to use.", + "type": "string" + }, + "note": { + "description": "An optional note with information about the Return.", + "type": "string" + } + } + } + }, + "return_shipping": { + "description": "How the Swap will be returned.", + "type": "object", + "required": [ + "option_id" + ], + "properties": { + "option_id": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + }, + "price": { + "type": "integer", + "description": "The price to charge for the Shipping Method." + } + } + }, + "additional_items": { + "description": "The new items to send to the Customer.", + "type": "array", + "items": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the Product Variant to ship.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Product Variant to ship.", + "type": "integer" + } + } + } + }, + "custom_shipping_options": { + "description": "The custom shipping options to potentially create a Shipping Method from.", + "type": "array", + "items": { + "type": "object", + "required": [ + "option_id", + "price" + ], + "properties": { + "option_id": { + "description": "The ID of the Shipping Option to override with a custom price.", + "type": "string" + }, + "price": { + "description": "The custom price of the Shipping Option.", + "type": "integer" + } + } + } + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Swap.", + "type": "boolean" + }, + "allow_backorder": { + "description": "If true, swaps can be completed with items out of stock", + "type": "boolean", + "default": true + } + } + }, + "AdminPostOrdersOrderSwapsSwapFulfillmentsReq": { + "type": "object", + "properties": { + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + }, + "no_notification": { + "description": "If set to true no notification will be send related to this Claim.", + "type": "boolean" + } + } + }, + "AdminPostOrdersOrderSwapsSwapShipmentsReq": { + "type": "object", + "required": [ + "fulfillment_id" + ], + "properties": { + "fulfillment_id": { + "description": "The ID of the Fulfillment.", + "type": "string" + }, + "tracking_numbers": { + "description": "The tracking numbers for the shipment.", + "type": "array", + "items": { + "type": "string" + } + }, + "no_notification": { + "description": "If set to true no notification will be sent related to this Claim.", + "type": "boolean" + } + } + }, + "AdminPostPaymentRefundsReq": { + "type": "object", + "required": [ + "amount", + "reason" + ], + "properties": { + "amount": { + "description": "The amount to refund.", + "type": "integer" + }, + "reason": { + "description": "The reason for the Refund.", + "type": "string" + }, + "note": { + "description": "A note with additional details about the Refund.", + "type": "string" + } + } + }, + "AdminPostPriceListPricesPricesReq": { + "type": "object", + "properties": { + "prices": { + "description": "The prices to update or add.", + "type": "array", + "items": { + "type": "object", + "required": [ + "amount", + "variant_id" + ], + "properties": { + "id": { + "description": "The ID of the price.", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currecny_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "variant_id": { + "description": "The ID of the Variant for which the price is used.", + "type": "string" + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "override": { + "description": "If true the prices will replace all existing prices associated with the Price List.", + "type": "boolean" + } + } + }, + "AdminPostPriceListsPriceListPriceListReq": { + "type": "object", + "properties": { + "name": { + "description": "The name of the Price List", + "type": "string" + }, + "description": { + "description": "A description of the Price List.", + "type": "string" + }, + "starts_at": { + "description": "The date with timezone that the Price List starts being valid.", + "type": "string", + "format": "date" + }, + "ends_at": { + "description": "The date with timezone that the Price List ends being valid.", + "type": "string", + "format": "date" + }, + "type": { + "description": "The type of the Price List.", + "type": "string", + "enum": [ + "sale", + "override" + ] + }, + "status": { + "description": "The status of the Price List.", + "type": "string", + "enum": [ + "active", + "draft" + ] + }, + "prices": { + "description": "The prices of the Price List.", + "type": "array", + "items": { + "type": "object", + "required": [ + "amount", + "variant_id" + ], + "properties": { + "id": { + "description": "The ID of the price.", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currecny_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "variant_id": { + "description": "The ID of the Variant for which the price is used.", + "type": "string" + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "customer_groups": { + "type": "array", + "description": "A list of customer groups that the Price List applies to.", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a customer group", + "type": "string" + } + } + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of price list", + "type": "boolean" + } + } + }, + "AdminPostPriceListsPriceListReq": { + "type": "object", + "required": [ + "name", + "description", + "type", + "prices" + ], + "properties": { + "name": { + "description": "The name of the Price List", + "type": "string" + }, + "description": { + "description": "A description of the Price List.", + "type": "string" + }, + "starts_at": { + "description": "The date with timezone that the Price List starts being valid.", + "type": "string", + "format": "date" + }, + "ends_at": { + "description": "The date with timezone that the Price List ends being valid.", + "type": "string", + "format": "date" + }, + "type": { + "description": "The type of the Price List.", + "type": "string", + "enum": [ + "sale", + "override" + ] + }, + "status": { + "description": "The status of the Price List.", + "type": "string", + "enum": [ + "active", + "draft" + ] + }, + "prices": { + "description": "The prices of the Price List.", + "type": "array", + "items": { + "type": "object", + "required": [ + "amount", + "variant_id" + ], + "properties": { + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currecny_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "variant_id": { + "description": "The ID of the Variant for which the price is used.", + "type": "string" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "customer_groups": { + "type": "array", + "description": "A list of customer groups that the Price List applies to.", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a customer group", + "type": "string" + } + } + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of price list", + "type": "boolean" + } + } + }, + "AdminPostProductCategoriesCategoryProductsBatchReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "The IDs of the products to add to the Product Category", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the product" + } + } + } + } + } + }, + "AdminPostProductCategoriesCategoryReq": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name to identify the Product Category by." + }, + "handle": { + "type": "string", + "description": "A handle to be used in slugs." + }, + "is_internal": { + "type": "boolean", + "description": "A flag to make product category an internal category for admins" + }, + "is_active": { + "type": "boolean", + "description": "A flag to make product category visible/hidden in the store front" + }, + "parent_category_id": { + "type": "string", + "description": "The ID of the parent product category" + }, + "rank": { + "type": "number", + "description": "The rank of the category in the tree node (starting from 0)" + } + } + }, + "AdminPostProductCategoriesReq": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "The name to identify the Product Category by." + }, + "handle": { + "type": "string", + "description": "An optional handle to be used in slugs, if none is provided we will kebab-case the title." + }, + "is_internal": { + "type": "boolean", + "description": "A flag to make product category an internal category for admins" + }, + "is_active": { + "type": "boolean", + "description": "A flag to make product category visible/hidden in the store front" + }, + "parent_category_id": { + "type": "string", + "description": "The ID of the parent product category" + } + } + }, + "AdminPostProductsProductMetadataReq": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "The metadata key", + "type": "string" + }, + "value": { + "description": "The metadata value", + "type": "string" + } + } + }, + "AdminPostProductsProductOptionsOption": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title of the Product Option", + "type": "string" + } + } + }, + "AdminPostProductsProductOptionsReq": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title the Product Option will be identified by i.e. \"Size\"", + "type": "string" + } + } + }, + "AdminPostProductsProductReq": { + "type": "object", + "properties": { + "title": { + "description": "The title of the Product", + "type": "string" + }, + "subtitle": { + "description": "The subtitle of the Product", + "type": "string" + }, + "description": { + "description": "A description of the Product.", + "type": "string" + }, + "discountable": { + "description": "A flag to indicate if discounts can be applied to the LineItems generated from this Product", + "type": "boolean" + }, + "images": { + "description": "Images of the Product.", + "type": "array", + "items": { + "type": "string" + } + }, + "thumbnail": { + "description": "The thumbnail to use for the Product.", + "type": "string" + }, + "handle": { + "description": "A unique handle to identify the Product by.", + "type": "string" + }, + "status": { + "description": "The status of the product.", + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ] + }, + "type": { + "description": "The Product Type to associate the Product with.", + "type": "object", + "required": [ + "value" + ], + "properties": { + "id": { + "description": "The ID of the Product Type.", + "type": "string" + }, + "value": { + "description": "The value of the Product Type.", + "type": "string" + } + } + }, + "collection_id": { + "description": "The ID of the Collection the Product should belong to.", + "type": "string" + }, + "tags": { + "description": "Tags to associate the Product with.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "id": { + "description": "The ID of an existing Tag.", + "type": "string" + }, + "value": { + "description": "The value of the Tag, these will be upserted.", + "type": "string" + } + } + } + }, + "sales_channels": { + "description": "[EXPERIMENTAL] Sales channels to associate the Product with.", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of an existing Sales channel.", + "type": "string" + } + } + } + }, + "categories": { + "description": "Categories to add the Product to.", + "type": "array", + "items": { + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a Product Category.", + "type": "string" + } + } + } + }, + "variants": { + "description": "A list of Product Variants to create with the Product.", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of the Product Variant.", + "type": "string" + }, + "title": { + "description": "The title to identify the Product Variant by.", + "type": "string" + }, + "sku": { + "description": "The unique SKU for the Product Variant.", + "type": "string" + }, + "ean": { + "description": "The EAN number of the item.", + "type": "string" + }, + "upc": { + "description": "The UPC number of the item.", + "type": "string" + }, + "barcode": { + "description": "A generic GTIN field for the Product Variant.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "inventory_quantity": { + "description": "The amount of stock kept for the Product Variant.", + "type": "integer" + }, + "allow_backorder": { + "description": "Whether the Product Variant can be purchased when out of stock.", + "type": "boolean" + }, + "manage_inventory": { + "description": "Whether Medusa should keep track of the inventory for this Product Variant.", + "type": "boolean" + }, + "weight": { + "description": "The wieght of the Product Variant.", + "type": "number" + }, + "length": { + "description": "The length of the Product Variant.", + "type": "number" + }, + "height": { + "description": "The height of the Product Variant.", + "type": "number" + }, + "width": { + "description": "The width of the Product Variant.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product Variant.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product Variant.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product Variant.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "id": { + "description": "The ID of the Price.", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currency_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "option_id", + "value" + ], + "properties": { + "option_id": { + "description": "The ID of the Option.", + "type": "string" + }, + "value": { + "description": "The value to give for the Product Option at the same index in the Product's `options` field.", + "type": "string" + } + } + } + } + } + } + }, + "weight": { + "description": "The wieght of the Product.", + "type": "number" + }, + "length": { + "description": "The length of the Product.", + "type": "number" + }, + "height": { + "description": "The height of the Product.", + "type": "number" + }, + "width": { + "description": "The width of the Product.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostProductsProductVariantsReq": { + "type": "object", + "required": [ + "title", + "prices", + "options" + ], + "properties": { + "title": { + "description": "The title to identify the Product Variant by.", + "type": "string" + }, + "sku": { + "description": "The unique SKU for the Product Variant.", + "type": "string" + }, + "ean": { + "description": "The EAN number of the item.", + "type": "string" + }, + "upc": { + "description": "The UPC number of the item.", + "type": "string" + }, + "barcode": { + "description": "A generic GTIN field for the Product Variant.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "inventory_quantity": { + "description": "The amount of stock kept for the Product Variant.", + "type": "integer", + "default": 0 + }, + "allow_backorder": { + "description": "Whether the Product Variant can be purchased when out of stock.", + "type": "boolean" + }, + "manage_inventory": { + "description": "Whether Medusa should keep track of the inventory for this Product Variant.", + "type": "boolean", + "default": true + }, + "weight": { + "description": "The wieght of the Product Variant.", + "type": "number" + }, + "length": { + "description": "The length of the Product Variant.", + "type": "number" + }, + "height": { + "description": "The height of the Product Variant.", + "type": "number" + }, + "width": { + "description": "The width of the Product Variant.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product Variant.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product Variant.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product Variant.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "id": { + "description": "The ID of the price.", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currency_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "option_id", + "value" + ], + "properties": { + "option_id": { + "description": "The ID of the Product Option to set the value for.", + "type": "string" + }, + "value": { + "description": "The value to give for the Product Option.", + "type": "string" + } + } + } + } + } + }, + "AdminPostProductsProductVariantsVariantReq": { + "type": "object", + "required": [ + "prices" + ], + "properties": { + "title": { + "description": "The title to identify the Product Variant by.", + "type": "string" + }, + "sku": { + "description": "The unique SKU for the Product Variant.", + "type": "string" + }, + "ean": { + "description": "The EAN number of the item.", + "type": "string" + }, + "upc": { + "description": "The UPC number of the item.", + "type": "string" + }, + "barcode": { + "description": "A generic GTIN field for the Product Variant.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "inventory_quantity": { + "description": "The amount of stock kept for the Product Variant.", + "type": "integer" + }, + "allow_backorder": { + "description": "Whether the Product Variant can be purchased when out of stock.", + "type": "boolean" + }, + "manage_inventory": { + "description": "Whether Medusa should keep track of the inventory for this Product Variant.", + "type": "boolean" + }, + "weight": { + "description": "The weight of the Product Variant.", + "type": "number" + }, + "length": { + "description": "The length of the Product Variant.", + "type": "number" + }, + "height": { + "description": "The height of the Product Variant.", + "type": "number" + }, + "width": { + "description": "The width of the Product Variant.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product Variant.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product Variant.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product Variant.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "id": { + "description": "The ID of the price.", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currency_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "option_id", + "value" + ], + "properties": { + "option_id": { + "description": "The ID of the Product Option to set the value for.", + "type": "string" + }, + "value": { + "description": "The value to give for the Product Option.", + "type": "string" + } + } + } + } + } + }, + "AdminPostProductsReq": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title of the Product", + "type": "string" + }, + "subtitle": { + "description": "The subtitle of the Product", + "type": "string" + }, + "description": { + "description": "A description of the Product.", + "type": "string" + }, + "is_giftcard": { + "description": "A flag to indicate if the Product represents a Gift Card. Purchasing Products with this flag set to `true` will result in a Gift Card being created.", + "type": "boolean", + "default": false + }, + "discountable": { + "description": "A flag to indicate if discounts can be applied to the LineItems generated from this Product", + "type": "boolean", + "default": true + }, + "images": { + "description": "Images of the Product.", + "type": "array", + "items": { + "type": "string" + } + }, + "thumbnail": { + "description": "The thumbnail to use for the Product.", + "type": "string" + }, + "handle": { + "description": "A unique handle to identify the Product by.", + "type": "string" + }, + "status": { + "description": "The status of the product.", + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ], + "default": "draft" + }, + "type": { + "description": "The Product Type to associate the Product with.", + "type": "object", + "required": [ + "value" + ], + "properties": { + "id": { + "description": "The ID of the Product Type.", + "type": "string" + }, + "value": { + "description": "The value of the Product Type.", + "type": "string" + } + } + }, + "collection_id": { + "description": "The ID of the Collection the Product should belong to.", + "type": "string" + }, + "tags": { + "description": "Tags to associate the Product with.", + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "id": { + "description": "The ID of an existing Tag.", + "type": "string" + }, + "value": { + "description": "The value of the Tag, these will be upserted.", + "type": "string" + } + } + } + }, + "sales_channels": { + "description": "[EXPERIMENTAL] Sales channels to associate the Product with.", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of an existing Sales channel.", + "type": "string" + } + } + } + }, + "categories": { + "description": "Categories to add the Product to.", + "type": "array", + "items": { + "required": [ + "id" + ], + "properties": { + "id": { + "description": "The ID of a Product Category.", + "type": "string" + } + } + } + }, + "options": { + "description": "The Options that the Product should have. These define on which properties the Product's Product Variants will differ.", + "type": "array", + "items": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title to identify the Product Option by.", + "type": "string" + } + } + } + }, + "variants": { + "description": "A list of Product Variants to create with the Product.", + "type": "array", + "items": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title to identify the Product Variant by.", + "type": "string" + }, + "sku": { + "description": "The unique SKU for the Product Variant.", + "type": "string" + }, + "ean": { + "description": "The EAN number of the item.", + "type": "string" + }, + "upc": { + "description": "The UPC number of the item.", + "type": "string" + }, + "barcode": { + "description": "A generic GTIN field for the Product Variant.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "inventory_quantity": { + "description": "The amount of stock kept for the Product Variant.", + "type": "integer", + "default": 0 + }, + "allow_backorder": { + "description": "Whether the Product Variant can be purchased when out of stock.", + "type": "boolean" + }, + "manage_inventory": { + "description": "Whether Medusa should keep track of the inventory for this Product Variant.", + "type": "boolean" + }, + "weight": { + "description": "The wieght of the Product Variant.", + "type": "number" + }, + "length": { + "description": "The length of the Product Variant.", + "type": "number" + }, + "height": { + "description": "The height of the Product Variant.", + "type": "number" + }, + "width": { + "description": "The width of the Product Variant.", + "type": "number" + }, + "origin_country": { + "description": "The country of origin of the Product Variant.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product Variant.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product Variant.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "region_id": { + "description": "The ID of the Region for which the price is used. Only required if currency_code is not provided.", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "amount": { + "description": "The amount to charge for the Product Variant.", + "type": "integer" + }, + "min_quantity": { + "description": "The minimum quantity for which the price will be used.", + "type": "integer" + }, + "max_quantity": { + "description": "The maximum quantity for which the price will be used.", + "type": "integer" + } + } + } + }, + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "description": "The value to give for the Product Option at the same index in the Product's `options` field.", + "type": "string" + } + } + } + } + } + } + }, + "weight": { + "description": "The weight of the Product.", + "type": "number" + }, + "length": { + "description": "The length of the Product.", + "type": "number" + }, + "height": { + "description": "The height of the Product.", + "type": "number" + }, + "width": { + "description": "The width of the Product.", + "type": "number" + }, + "hs_code": { + "description": "The Harmonized System code for the Product Variant.", + "type": "string" + }, + "origin_country": { + "description": "The country of origin of the Product.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturer Identification code for the Product.", + "type": "string" + }, + "material": { + "description": "The material composition of the Product.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostProductsToCollectionReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "An array of Product IDs to add to the Product Collection.", + "type": "array", + "items": { + "description": "The ID of a Product to add to the Product Collection.", + "type": "string" + } + } + } + }, + "AdminPostPublishableApiKeySalesChannelsBatchReq": { + "type": "object", + "required": [ + "sales_channel_ids" + ], + "properties": { + "sales_channel_ids": { + "description": "The IDs of the sales channels to add to the publishable api key", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the sales channel" + } + } + } + } + } + }, + "AdminPostPublishableApiKeysPublishableApiKeyReq": { + "type": "object", + "properties": { + "title": { + "description": "A title to update for the key.", + "type": "string" + } + } + }, + "AdminPostPublishableApiKeysReq": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "description": "A title for the publishable api key", + "type": "string" + } + } + }, + "AdminPostRegionsRegionCountriesReq": { + "type": "object", + "required": [ + "country_code" + ], + "properties": { + "country_code": { + "description": "The 2 character ISO code for the Country.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + } + } + }, + "AdminPostRegionsRegionFulfillmentProvidersReq": { + "type": "object", + "required": [ + "provider_id" + ], + "properties": { + "provider_id": { + "description": "The ID of the Fulfillment Provider to add.", + "type": "string" + } + } + }, + "AdminPostRegionsRegionPaymentProvidersReq": { + "type": "object", + "required": [ + "provider_id" + ], + "properties": { + "provider_id": { + "description": "The ID of the Payment Provider to add.", + "type": "string" + } + } + }, + "AdminPostRegionsRegionReq": { + "type": "object", + "properties": { + "name": { + "description": "The name of the Region", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code to use for the Region.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "automatic_taxes": { + "description": "If true Medusa will automatically calculate taxes for carts in this region. If false you have to manually call POST /carts/:id/taxes.", + "type": "boolean" + }, + "gift_cards_taxable": { + "description": "Whether gift cards in this region should be applied sales tax when purchasing a gift card", + "type": "boolean" + }, + "tax_provider_id": { + "description": "The ID of the tax provider to use; if null the system tax provider is used", + "type": "string" + }, + "tax_code": { + "description": "An optional tax code the Region.", + "type": "string" + }, + "tax_rate": { + "description": "The tax rate to use on Orders in the Region.", + "type": "number" + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of region", + "type": "boolean" + }, + "payment_providers": { + "description": "A list of Payment Provider IDs that should be enabled for the Region", + "type": "array", + "items": { + "type": "string" + } + }, + "fulfillment_providers": { + "description": "A list of Fulfillment Provider IDs that should be enabled for the Region", + "type": "array", + "items": { + "type": "string" + } + }, + "countries": { + "description": "A list of countries' 2 ISO Characters that should be included in the Region.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "AdminPostRegionsReq": { + "type": "object", + "required": [ + "name", + "currency_code", + "tax_rate", + "payment_providers", + "fulfillment_providers", + "countries" + ], + "properties": { + "name": { + "description": "The name of the Region", + "type": "string" + }, + "currency_code": { + "description": "The 3 character ISO currency code to use for the Region.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "tax_code": { + "description": "An optional tax code the Region.", + "type": "string" + }, + "tax_rate": { + "description": "The tax rate to use on Orders in the Region.", + "type": "number" + }, + "payment_providers": { + "description": "A list of Payment Provider IDs that should be enabled for the Region", + "type": "array", + "items": { + "type": "string" + } + }, + "fulfillment_providers": { + "description": "A list of Fulfillment Provider IDs that should be enabled for the Region", + "type": "array", + "items": { + "type": "string" + } + }, + "countries": { + "description": "A list of countries' 2 ISO Characters that should be included in the Region.", + "example": [ + "US" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of region", + "type": "boolean" + } + } + }, + "AdminPostReservationsReq": { + "type": "object", + "required": [ + "location_id", + "inventory_item_id", + "quantity" + ], + "properties": { + "line_item_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "location_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "inventory_item_id": { + "description": "The id of the inventory item the reservation relates to", + "type": "string" + }, + "quantity": { + "description": "The id of the reservation item", + "type": "number" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostReservationsReservationReq": { + "type": "object", + "properties": { + "location_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "quantity": { + "description": "The id of the reservation item", + "type": "number" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostReturnReasonsReasonReq": { + "type": "object", + "properties": { + "label": { + "description": "The label to display to the Customer.", + "type": "string" + }, + "value": { + "description": "The value that the Return Reason will be identified by. Must be unique.", + "type": "string" + }, + "description": { + "description": "An optional description to for the Reason.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostReturnReasonsReq": { + "type": "object", + "required": [ + "label", + "value" + ], + "properties": { + "label": { + "description": "The label to display to the Customer.", + "type": "string" + }, + "value": { + "description": "The value that the Return Reason will be identified by. Must be unique.", + "type": "string" + }, + "parent_return_reason_id": { + "description": "The ID of the parent return reason.", + "type": "string" + }, + "description": { + "description": "An optional description to for the Reason.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostReturnsReturnReceiveReq": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "description": "The Line Items that have been received.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Line Item.", + "type": "integer" + } + } + } + }, + "refund": { + "description": "The amount to refund.", + "type": "number" + } + } + }, + "AdminPostSalesChannelsChannelProductsBatchReq": { + "type": "object", + "required": [ + "product_ids" + ], + "properties": { + "product_ids": { + "description": "The IDs of the products to add to the Sales Channel", + "type": "array", + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the product" + } + } + } + } + } + }, + "AdminPostSalesChannelsChannelStockLocationsReq": { + "type": "object", + "required": [ + "location_id" + ], + "properties": { + "location_id": { + "description": "The ID of the stock location", + "type": "string" + } + } + }, + "AdminPostSalesChannelsReq": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "The name of the Sales Channel", + "type": "string" + }, + "description": { + "description": "The description of the Sales Channel", + "type": "string" + }, + "is_disabled": { + "description": "Whether the Sales Channel is disabled or not.", + "type": "boolean" + } + } + }, + "AdminPostSalesChannelsSalesChannelReq": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the sales channel." + }, + "description": { + "type": "string", + "description": "Sales Channel description." + }, + "is_disabled": { + "type": "boolean", + "description": "Indication of if the sales channel is active." + } + } + }, + "AdminPostShippingOptionsOptionReq": { + "type": "object", + "required": [ + "requirements" + ], + "properties": { + "name": { + "description": "The name of the Shipping Option", + "type": "string" + }, + "amount": { + "description": "The amount to charge for the Shipping Option.", + "type": "integer" + }, + "admin_only": { + "description": "If true, the option can be used for draft orders", + "type": "boolean" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "requirements": { + "description": "The requirements that must be satisfied for the Shipping Option to be available.", + "type": "array", + "items": { + "type": "object", + "required": [ + "type", + "amount" + ], + "properties": { + "id": { + "description": "The ID of the requirement", + "type": "string" + }, + "type": { + "description": "The type of the requirement", + "type": "string", + "enum": [ + "max_subtotal", + "min_subtotal" + ] + }, + "amount": { + "description": "The amount to compare with.", + "type": "integer" + } + } + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of shipping option", + "type": "boolean" + } + } + }, + "AdminPostShippingOptionsReq": { + "type": "object", + "required": [ + "name", + "region_id", + "provider_id", + "data", + "price_type" + ], + "properties": { + "name": { + "description": "The name of the Shipping Option", + "type": "string" + }, + "region_id": { + "description": "The ID of the Region in which the Shipping Option will be available.", + "type": "string" + }, + "provider_id": { + "description": "The ID of the Fulfillment Provider that handles the Shipping Option.", + "type": "string" + }, + "profile_id": { + "description": "The ID of the Shipping Profile to add the Shipping Option to.", + "type": "number" + }, + "data": { + "description": "The data needed for the Fulfillment Provider to handle shipping with this Shipping Option.", + "type": "object" + }, + "price_type": { + "description": "The type of the Shipping Option price.", + "type": "string", + "enum": [ + "flat_rate", + "calculated" + ] + }, + "amount": { + "description": "The amount to charge for the Shipping Option.", + "type": "integer" + }, + "requirements": { + "description": "The requirements that must be satisfied for the Shipping Option to be available.", + "type": "array", + "items": { + "type": "object", + "required": [ + "type", + "amount" + ], + "properties": { + "type": { + "description": "The type of the requirement", + "type": "string", + "enum": [ + "max_subtotal", + "min_subtotal" + ] + }, + "amount": { + "description": "The amount to compare with.", + "type": "integer" + } + } + } + }, + "is_return": { + "description": "Whether the Shipping Option defines a return shipment.", + "type": "boolean", + "default": false + }, + "admin_only": { + "description": "If true, the option can be used for draft orders", + "type": "boolean", + "default": false + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Tax included in prices of shipping option", + "type": "boolean" + } + } + }, + "AdminPostShippingProfilesProfileReq": { + "type": "object", + "properties": { + "name": { + "description": "The name of the Shipping Profile", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + }, + "type": { + "description": "The type of the Shipping Profile", + "type": "string", + "enum": [ + "default", + "gift_card", + "custom" + ] + }, + "products": { + "description": "An optional array of product ids to associate with the Shipping Profile", + "type": "array" + }, + "shipping_options": { + "description": "An optional array of shipping option ids to associate with the Shipping Profile", + "type": "array" + } + } + }, + "AdminPostShippingProfilesReq": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "description": "The name of the Shipping Profile", + "type": "string" + }, + "type": { + "description": "The type of the Shipping Profile", + "type": "string", + "enum": [ + "default", + "gift_card", + "custom" + ] + } + } + }, + "AdminPostStockLocationsLocationReq": { + "type": "object", + "properties": { + "name": { + "description": "the name of the stock location", + "type": "string" + }, + "address_id": { + "description": "the stock location address ID", + "type": "string" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "address": { + "$ref": "#/components/schemas/StockLocationAddressInput" + } + } + }, + "AdminPostStockLocationsReq": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "the name of the stock location", + "type": "string" + }, + "address_id": { + "description": "the stock location address ID", + "type": "string" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "address": { + "$ref": "#/components/schemas/StockLocationAddressInput" + } + } + }, + "AdminPostStoreReq": { + "type": "object", + "properties": { + "name": { + "description": "The name of the Store", + "type": "string" + }, + "swap_link_template": { + "description": "A template for Swap links - use `{{cart_id}}` to insert the Swap Cart id", + "type": "string" + }, + "payment_link_template": { + "description": "A template for payment links links - use `{{cart_id}}` to insert the Cart id", + "type": "string" + }, + "invite_link_template": { + "description": "A template for invite links - use `{{invite_token}}` to insert the invite token", + "type": "string" + }, + "default_currency_code": { + "description": "The default currency code for the Store.", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currencies": { + "description": "Array of currencies in 2 character ISO code format.", + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminPostTaxRatesReq": { + "type": "object", + "required": [ + "code", + "name", + "region_id" + ], + "properties": { + "code": { + "type": "string", + "description": "A code to identify the tax type by" + }, + "name": { + "type": "string", + "description": "A human friendly name for the tax" + }, + "region_id": { + "type": "string", + "description": "The ID of the Region that the rate belongs to" + }, + "rate": { + "type": "number", + "description": "The numeric rate to charge" + }, + "products": { + "type": "array", + "description": "The IDs of the products associated with this tax rate", + "items": { + "type": "string" + } + }, + "shipping_options": { + "type": "array", + "description": "The IDs of the shipping options associated with this tax rate", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "The IDs of the types of products associated with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminPostTaxRatesTaxRateProductTypesReq": { + "type": "object", + "required": [ + "product_types" + ], + "properties": { + "product_types": { + "type": "array", + "description": "The IDs of the types of products to associate with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminPostTaxRatesTaxRateProductsReq": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "products": { + "type": "array", + "description": "The IDs of the products to associate with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminPostTaxRatesTaxRateReq": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "A code to identify the tax type by" + }, + "name": { + "type": "string", + "description": "A human friendly name for the tax" + }, + "region_id": { + "type": "string", + "description": "The ID of the Region that the rate belongs to" + }, + "rate": { + "type": "number", + "description": "The numeric rate to charge" + }, + "products": { + "type": "array", + "description": "The IDs of the products associated with this tax rate", + "items": { + "type": "string" + } + }, + "shipping_options": { + "type": "array", + "description": "The IDs of the shipping options associated with this tax rate", + "items": { + "type": "string" + } + }, + "product_types": { + "type": "array", + "description": "The IDs of the types of products associated with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminPostTaxRatesTaxRateShippingOptionsReq": { + "type": "object", + "required": [ + "shipping_options" + ], + "properties": { + "shipping_options": { + "type": "array", + "description": "The IDs of the shipping options to associate with this tax rate", + "items": { + "type": "string" + } + } + } + }, + "AdminPostUploadsDownloadUrlReq": { + "type": "object", + "required": [ + "file_key" + ], + "properties": { + "file_key": { + "description": "key of the file to obtain the download link for", + "type": "string" + } + } + }, + "AdminPriceListDeleteBatchRes": { + "type": "object", + "required": [ + "ids", + "object", + "deleted" + ], + "properties": { + "ids": { + "type": "array", + "items": { + "type": "string", + "description": "The IDs of the deleted Money Amounts (Prices)." + } + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "money-amount" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminPriceListDeleteProductPricesRes": { + "type": "object", + "required": [ + "ids", + "object", + "deleted" + ], + "properties": { + "ids": { + "type": "array", + "description": "The price ids that have been deleted.", + "items": { + "type": "string" + } + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "money-amount" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminPriceListDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Price List." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "price-list" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminPriceListDeleteVariantPricesRes": { + "type": "object", + "required": [ + "ids", + "object", + "deleted" + ], + "properties": { + "ids": { + "type": "array", + "description": "The price ids that have been deleted.", + "items": { + "type": "string" + } + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "money-amount" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminPriceListRes": { + "type": "object", + "x-expanded-relations": { + "field": "price_list", + "relations": [ + "customer_groups", + "prices" + ] + }, + "required": [ + "price_list" + ], + "properties": { + "price_list": { + "$ref": "#/components/schemas/PriceList" + } + } + }, + "AdminPriceListsListRes": { + "type": "object", + "required": [ + "price_lists", + "count", + "offset", + "limit" + ], + "properties": { + "price_lists": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PriceList" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminPriceListsProductsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "products", + "relations": [ + "categories", + "collection", + "images", + "options", + "tags", + "type", + "variants", + "variants.options" + ] + }, + "required": [ + "products", + "count", + "offset", + "limit" + ], + "properties": { + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductCategoriesCategoryDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted product category" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "product-category" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminProductCategoriesCategoryRes": { + "type": "object", + "x-expanded-relations": { + "field": "product_category", + "relations": [ + "category_children", + "parent_category" + ] + }, + "required": [ + "product_category" + ], + "properties": { + "product_category": { + "$ref": "#/components/schemas/ProductCategory" + } + } + }, + "AdminProductCategoriesListRes": { + "type": "object", + "x-expanded-relations": { + "field": "product_categories", + "relations": [ + "category_children", + "parent_category" + ] + }, + "required": [ + "product_categories", + "count", + "offset", + "limit" + ], + "properties": { + "product_categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductTagsListRes": { + "type": "object", + "required": [ + "product_tags", + "count", + "offset", + "limit" + ], + "properties": { + "product_tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductTypesListRes": { + "type": "object", + "required": [ + "product_types", + "count", + "offset", + "limit" + ], + "properties": { + "product_types": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductsDeleteOptionRes": { + "type": "object", + "x-expanded-relations": { + "field": "product", + "relations": [ + "collection", + "images", + "options", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "option_id", + "object", + "deleted", + "product" + ], + "properties": { + "option_id": { + "type": "string", + "description": "The ID of the deleted Product Option" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "option" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + }, + "product": { + "$ref": "#/components/schemas/PricedProduct" + } + } + }, + "AdminProductsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Product." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "product" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminProductsDeleteVariantRes": { + "type": "object", + "x-expanded-relations": { + "field": "product", + "relations": [ + "collection", + "images", + "options", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "variant_id", + "object", + "deleted", + "product" + ], + "properties": { + "variant_id": { + "type": "string", + "description": "The ID of the deleted Product Variant." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "product-variant" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + }, + "product": { + "$ref": "#/components/schemas/PricedProduct" + } + } + }, + "AdminProductsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "products", + "relations": [ + "collection", + "images", + "options", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "products", + "count", + "offset", + "limit" + ], + "properties": { + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedProduct" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductsListTagsRes": { + "type": "object", + "required": [ + "tags" + ], + "properties": { + "tags": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "usage_count", + "value" + ], + "properties": { + "id": { + "description": "The ID of the tag.", + "type": "string" + }, + "usage_count": { + "description": "The number of products that use this tag.", + "type": "string" + }, + "value": { + "description": "The value of the tag.", + "type": "string" + } + } + } + } + } + }, + "AdminProductsListTypesRes": { + "type": "object", + "required": [ + "types" + ], + "properties": { + "types": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + } + } + }, + "AdminProductsListVariantsRes": { + "type": "object", + "required": [ + "variants", + "count", + "offset", + "limit" + ], + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductVariant" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminProductsRes": { + "type": "object", + "x-expanded-relations": { + "field": "product", + "relations": [ + "collection", + "images", + "options", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "product" + ], + "properties": { + "product": { + "$ref": "#/components/schemas/PricedProduct" + } + } + }, + "AdminPublishableApiKeyDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted PublishableApiKey." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "publishable_api_key" + }, + "deleted": { + "type": "boolean", + "description": "Whether the PublishableApiKeys was deleted.", + "default": true + } + } + }, + "AdminPublishableApiKeysListRes": { + "type": "object", + "required": [ + "publishable_api_keys", + "count", + "offset", + "limit" + ], + "properties": { + "publishable_api_keys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PublishableApiKey" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminPublishableApiKeysListSalesChannelsRes": { + "type": "object", + "required": [ + "sales_channels" + ], + "properties": { + "sales_channels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannel" + } + } + } + }, + "AdminPublishableApiKeysRes": { + "type": "object", + "required": [ + "publishable_api_key" + ], + "properties": { + "publishable_api_key": { + "$ref": "#/components/schemas/PublishableApiKey" + } + } + }, + "AdminRefundRes": { + "type": "object", + "required": [ + "refund" + ], + "properties": { + "refund": { + "$ref": "#/components/schemas/Refund" + } + } + }, + "AdminRegionsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Region." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "region" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminRegionsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "regions", + "relations": [ + "countries", + "fulfillment_providers", + "payment_providers" + ], + "eager": [ + "fulfillment_providers", + "payment_providers" + ] + }, + "required": [ + "regions", + "count", + "offset", + "limit" + ], + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Region" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminRegionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "region", + "relations": [ + "countries", + "fulfillment_providers", + "payment_providers" + ], + "eager": [ + "fulfillment_providers", + "payment_providers" + ] + }, + "required": [ + "region" + ], + "properties": { + "region": { + "$ref": "#/components/schemas/Region" + } + } + }, + "AdminReservationsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Reservation." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "reservation" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the Reservation was deleted.", + "default": true + } + } + }, + "AdminReservationsListRes": { + "type": "object", + "required": [ + "reservations", + "count", + "offset", + "limit" + ], + "properties": { + "reservations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReservationItemDTO" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminReservationsRes": { + "type": "object", + "required": [ + "reservation" + ], + "properties": { + "reservation": { + "$ref": "#/components/schemas/ReservationItemDTO" + } + } + }, + "AdminResetPasswordRequest": { + "type": "object", + "required": [ + "token", + "password" + ], + "properties": { + "email": { + "description": "The Users email.", + "type": "string", + "format": "email" + }, + "token": { + "description": "The token generated from the 'password-token' endpoint.", + "type": "string" + }, + "password": { + "description": "The Users new password.", + "type": "string", + "format": "password" + } + } + }, + "AdminResetPasswordTokenRequest": { + "type": "object", + "required": [ + "email" + ], + "properties": { + "email": { + "description": "The Users email.", + "type": "string", + "format": "email" + } + } + }, + "AdminReturnReasonsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted return reason" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "return_reason" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminReturnReasonsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "return_reasons", + "relations": [ + "parent_return_reason", + "return_reason_children" + ] + }, + "required": [ + "return_reasons" + ], + "properties": { + "return_reasons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReturnReason" + } + } + } + }, + "AdminReturnReasonsRes": { + "type": "object", + "x-expanded-relations": { + "field": "return_reason", + "relations": [ + "parent_return_reason", + "return_reason_children" + ] + }, + "required": [ + "return_reason" + ], + "properties": { + "return_reason": { + "$ref": "#/components/schemas/ReturnReason" + } + } + }, + "AdminReturnsCancelRes": { + "type": "object", + "x-expanded-relations": { + "field": "order", + "relations": [ + "billing_address", + "claims", + "claims.additional_items", + "claims.additional_items.variant", + "claims.claim_items", + "claims.claim_items.images", + "claims.claim_items.item", + "claims.fulfillments", + "claims.fulfillments.tracking_links", + "claims.return_order", + "claims.return_order.shipping_method", + "claims.return_order.shipping_method.tax_lines", + "claims.shipping_address", + "claims.shipping_methods", + "customer", + "discounts", + "discounts.rule", + "fulfillments", + "fulfillments.items", + "fulfillments.tracking_links", + "gift_card_transactions", + "gift_cards", + "items", + "payments", + "refunds", + "region", + "returns", + "returns.items", + "returns.items.reason", + "returns.shipping_method", + "returns.shipping_method.tax_lines", + "shipping_address", + "shipping_methods", + "swaps", + "swaps.additional_items", + "swaps.additional_items.variant", + "swaps.fulfillments", + "swaps.fulfillments.tracking_links", + "swaps.payment", + "swaps.return_order", + "swaps.return_order.shipping_method", + "swaps.return_order.shipping_method.tax_lines", + "swaps.shipping_address", + "swaps.shipping_methods", + "swaps.shipping_methods.tax_lines" + ] + }, + "required": [ + "order" + ], + "properties": { + "order": { + "$ref": "#/components/schemas/Order" + } + } + }, + "AdminReturnsListRes": { + "type": "object", + "x-expanded-relation": { + "field": "returns", + "relations": [ + "order", + "swap" + ] + }, + "required": [ + "returns", + "count", + "offset", + "limit" + ], + "properties": { + "returns": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Return" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminReturnsRes": { + "type": "object", + "x-expanded-relation": { + "field": "return", + "relations": [ + "swap" + ] + }, + "required": [ + "return" + ], + "properties": { + "return": { + "$ref": "#/components/schemas/Return" + } + } + }, + "AdminSalesChannelsDeleteLocationRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the removed stock location from a sales channel" + }, + "object": { + "type": "string", + "description": "The type of the object that was removed.", + "default": "stock-location" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminSalesChannelsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted sales channel" + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "sales-channel" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminSalesChannelsListRes": { + "type": "object", + "required": [ + "sales_channels", + "count", + "offset", + "limit" + ], + "properties": { + "sales_channels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminSalesChannelsRes": { + "type": "object", + "required": [ + "sales_channel" + ], + "properties": { + "sales_channel": { + "$ref": "#/components/schemas/SalesChannel" + } + } + }, + "AdminShippingOptionsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Shipping Option." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "shipping-option" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminShippingOptionsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "shipping_options", + "relations": [ + "profile", + "region", + "requirements" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "shipping_options", + "count", + "offset", + "limit" + ], + "properties": { + "shipping_options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingOption" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminShippingOptionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "shipping_option", + "relations": [ + "profile", + "region", + "requirements" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "shipping_option" + ], + "properties": { + "shipping_option": { + "$ref": "#/components/schemas/ShippingOption" + } + } + }, + "AdminShippingProfilesListRes": { + "type": "object", + "required": [ + "shipping_profiles" + ], + "properties": { + "shipping_profiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingProfile" + } + } + } + }, + "AdminShippingProfilesRes": { + "type": "object", + "x-expanded-relations": { + "field": "shipping_profile", + "relations": [ + "products", + "shipping_options" + ] + }, + "required": [ + "shipping_profile" + ], + "properties": { + "shipping_profile": { + "$ref": "#/components/schemas/ShippingProfile" + } + } + }, + "AdminStockLocationsDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Stock Location." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "stock_location" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminStockLocationsListRes": { + "type": "object", + "required": [ + "stock_locations", + "count", + "offset", + "limit" + ], + "properties": { + "stock_locations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StockLocationExpandedDTO" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminStockLocationsRes": { + "type": "object", + "required": [ + "stock_location" + ], + "properties": { + "stock_location": { + "$ref": "#/components/schemas/StockLocationExpandedDTO" + } + } + }, + "AdminStoresRes": { + "type": "object", + "required": [ + "store" + ], + "properties": { + "store": { + "$ref": "#/components/schemas/Store" + } + } + }, + "AdminSwapsListRes": { + "type": "object", + "required": [ + "swaps", + "count", + "offset", + "limit" + ], + "properties": { + "swaps": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Swap" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminSwapsRes": { + "type": "object", + "x-expanded-relations": { + "field": "swap", + "relations": [ + "additional_items", + "additional_items.adjustments", + "cart", + "cart.items", + "cart.items.adjustments", + "cart.items.variant", + "fulfillments", + "order", + "payment", + "return_order", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "fulfillments.items", + "shipping_methods.shipping_option" + ] + }, + "required": [ + "swap" + ], + "properties": { + "swap": { + "$ref": "#/components/schemas/Swap" + } + } + }, + "AdminTaxProvidersList": { + "type": "object", + "required": [ + "tax_providers" + ], + "properties": { + "tax_providers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxProvider" + } + } + } + }, + "AdminTaxRatesDeleteRes": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the deleted Shipping Option." + }, + "object": { + "type": "string", + "description": "The type of the object that was deleted.", + "default": "tax-rate" + }, + "deleted": { + "type": "boolean", + "description": "Whether or not the items were deleted.", + "default": true + } + } + }, + "AdminTaxRatesListRes": { + "type": "object", + "required": [ + "tax_rates", + "count", + "offset", + "limit" + ], + "properties": { + "tax_rates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxRate" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminTaxRatesRes": { + "type": "object", + "required": [ + "tax_rate" + ], + "properties": { + "tax_rate": { + "$ref": "#/components/schemas/TaxRate" + } + } + }, + "AdminUpdatePaymentCollectionsReq": { + "type": "object", + "properties": { + "description": { + "description": "An optional description to create or update the payment collection.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs to hold additional information.", + "type": "object" + } + } + }, + "AdminUpdateUserRequest": { + "type": "object", + "properties": { + "first_name": { + "description": "The name of the User.", + "type": "string" + }, + "last_name": { + "description": "The name of the User.", + "type": "string" + }, + "role": { + "description": "Userrole assigned to the user.", + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ] + }, + "api_token": { + "description": "The api token of the User.", + "type": "string" + }, + "metadata": { + "description": "An optional set of key-value pairs with additional information.", + "type": "object" + } + } + }, + "AdminUploadsDownloadUrlRes": { + "type": "object", + "required": [ + "download_url" + ], + "properties": { + "download_url": { + "description": "The Download URL of the file", + "type": "string" + } + } + }, + "AdminUploadsRes": { + "type": "object", + "required": [ + "uploads" + ], + "properties": { + "uploads": { + "type": "array", + "items": { + "type": "object", + "required": [ + "url" + ], + "properties": { + "url": { + "description": "The URL of the uploaded file.", + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "AdminUserRes": { + "type": "object", + "required": [ + "user" + ], + "properties": { + "user": { + "$ref": "#/components/schemas/User" + } + } + }, + "AdminUsersListRes": { + "type": "object", + "required": [ + "users" + ], + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "AdminVariantsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "variants", + "relations": [ + "options", + "prices", + "product" + ] + }, + "required": [ + "variants", + "count", + "offset", + "limit" + ], + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedVariant" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "AdminVariantsRes": { + "type": "object", + "x-expanded-relations": { + "field": "variant", + "relations": [ + "options", + "prices", + "product" + ] + }, + "required": [ + "variant" + ], + "properties": { + "variant": { + "$ref": "#/components/schemas/PricedVariant" + } + } + }, + "BatchJob": { + "title": "Batch Job", + "description": "A Batch Job.", + "type": "object", + "required": [ + "canceled_at", + "completed_at", + "confirmed_at", + "context", + "created_at", + "created_by", + "deleted_at", + "dry_run", + "failed_at", + "id", + "pre_processed_at", + "processing_at", + "result", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The unique identifier for the batch job.", + "type": "string", + "example": "batch_01G8T782965PYFG0751G0Z38B4" + }, + "type": { + "description": "The type of batch job.", + "type": "string", + "enum": [ + "product-import", + "product-export" + ] + }, + "status": { + "description": "The status of the batch job.", + "type": "string", + "enum": [ + "created", + "pre_processed", + "confirmed", + "processing", + "completed", + "canceled", + "failed" + ], + "default": "created" + }, + "created_by": { + "description": "The unique identifier of the user that created the batch job.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "created_by_user": { + "description": "A user object. Available if the relation `created_by_user` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/User" + }, + "context": { + "description": "The context of the batch job, the type of the batch job determines what the context should contain.", + "nullable": true, + "type": "object", + "example": { + "shape": { + "prices": [ + { + "region": null, + "currency_code": "eur" + } + ], + "dynamicImageColumnCount": 4, + "dynamicOptionColumnCount": 2 + }, + "list_config": { + "skip": 0, + "take": 50, + "order": { + "created_at": "DESC" + }, + "relations": [ + "variants", + "variant.prices", + "images" + ] + } + } + }, + "dry_run": { + "description": "Specify if the job must apply the modifications or not.", + "type": "boolean", + "default": false + }, + "result": { + "description": "The result of the batch job.", + "nullable": true, + "allOf": [ + { + "type": "object", + "example": {} + }, + { + "type": "object", + "properties": { + "count": { + "type": "number" + }, + "advancement_count": { + "type": "number" + }, + "progress": { + "type": "number" + }, + "errors": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "err": { + "type": "array" + } + } + }, + "stat_descriptors": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "file_key": { + "type": "string" + }, + "file_size": { + "type": "number" + } + } + } + ], + "example": { + "errors": [ + { + "err": [], + "code": "unknown", + "message": "Method not implemented." + } + ], + "stat_descriptors": [ + { + "key": "product-export-count", + "name": "Product count to export", + "message": "There will be 8 products exported by this action" + } + ] + } + }, + "pre_processed_at": { + "description": "The date from which the job has been pre-processed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "processing_at": { + "description": "The date the job is processing at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "confirmed_at": { + "description": "The date when the confirmation has been done.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "completed_at": { + "description": "The date of the completion.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date of the concellation.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "failed_at": { + "description": "The date when the job failed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was last updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "Cart": { + "title": "Cart", + "description": "Represents a user cart", + "type": "object", + "required": [ + "billing_address_id", + "completed_at", + "context", + "created_at", + "customer_id", + "deleted_at", + "email", + "id", + "idempotency_key", + "metadata", + "payment_authorized_at", + "payment_id", + "payment_session", + "region_id", + "shipping_address_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The cart's ID", + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "email": { + "description": "The email associated with the cart", + "nullable": true, + "type": "string", + "format": "email" + }, + "billing_address_id": { + "description": "The billing address's ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_address_id": { + "description": "The shipping address's ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "items": { + "description": "Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "discounts": { + "description": "Available if the relation `discounts` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "gift_cards": { + "description": "Available if the relation `gift_cards` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCard" + } + }, + "customer_id": { + "description": "The customer's ID", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "payment_session": { + "description": "The selected payment session in the cart.", + "nullable": true, + "$ref": "#/components/schemas/PaymentSession" + }, + "payment_sessions": { + "description": "The payment sessions created on the cart.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentSession" + } + }, + "payment_id": { + "description": "The payment's ID if available", + "nullable": true, + "type": "string", + "example": "pay_01G8ZCC5W42ZNY842124G7P5R9" + }, + "payment": { + "description": "Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "shipping_methods": { + "description": "The shipping methods added to the cart.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "type": { + "description": "The cart's type.", + "type": "string", + "enum": [ + "default", + "swap", + "draft_order", + "payment_link", + "claim" + ], + "default": "default" + }, + "completed_at": { + "description": "The date with timezone at which the cart was completed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "payment_authorized_at": { + "description": "The date with timezone at which the payment was authorized.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a cart in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "context": { + "description": "The context of the cart which can include info like IP or user agent.", + "nullable": true, + "type": "object", + "example": { + "ip": "::1", + "user_agent": "PostmanRuntime/7.29.2" + } + }, + "sales_channel_id": { + "description": "The sales channel ID the cart is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel": { + "description": "A sales channel object. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + }, + "shipping_total": { + "description": "The total of shipping", + "type": "integer", + "example": 1000 + }, + "discount_total": { + "description": "The total of discount rounded", + "type": "integer", + "example": 800 + }, + "raw_discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "item_tax_total": { + "description": "The total of items with taxes", + "type": "integer", + "example": 8000 + }, + "shipping_tax_total": { + "description": "The total of shipping with taxes", + "type": "integer", + "example": 1000 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "refunded_total": { + "description": "The total amount refunded if the order associated with this cart is returned.", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the cart", + "type": "integer", + "example": 8200 + }, + "subtotal": { + "description": "The subtotal of the cart", + "type": "integer", + "example": 8000 + }, + "refundable_amount": { + "description": "The amount that can be refunded", + "type": "integer", + "example": 8200 + }, + "gift_card_total": { + "description": "The total of gift cards", + "type": "integer", + "example": 0 + }, + "gift_card_tax_total": { + "description": "The total of gift cards with taxes", + "type": "integer", + "example": 0 + } + } + }, + "ClaimImage": { + "title": "Claim Image", + "description": "Represents photo documentation of a claim.", + "type": "object", + "required": [ + "claim_item_id", + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "url" + ], + "properties": { + "id": { + "description": "The claim image's ID", + "type": "string", + "example": "cimg_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "claim_item_id": { + "description": "The ID of the claim item associated with the image", + "type": "string" + }, + "claim_item": { + "description": "A claim item object. Available if the relation `claim_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimItem" + }, + "url": { + "description": "The URL of the image", + "type": "string", + "format": "uri" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ClaimItem": { + "title": "Claim Item", + "description": "Represents a claimed item along with information about the reasons for the claim.", + "type": "object", + "required": [ + "claim_order_id", + "created_at", + "deleted_at", + "id", + "item_id", + "metadata", + "note", + "quantity", + "reason", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The claim item's ID", + "type": "string", + "example": "citm_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "images": { + "description": "Available if the relation `images` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimImage" + } + }, + "claim_order_id": { + "description": "The ID of the claim this item is associated with.", + "type": "string" + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "item_id": { + "description": "The ID of the line item that the claim item refers to.", + "type": "string", + "example": "item_01G8ZM25TN49YV9EQBE2NC27KC" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "variant_id": { + "description": "The ID of the product variant that is claimed.", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "A variant object. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "reason": { + "description": "The reason for the claim", + "type": "string", + "enum": [ + "missing_item", + "wrong_item", + "production_failure", + "other" + ] + }, + "note": { + "description": "An optional note about the claim, for additional information", + "nullable": true, + "type": "string", + "example": "I don't like it." + }, + "quantity": { + "description": "The quantity of the item that is being claimed; must be less than or equal to the amount purchased in the original order.", + "type": "integer", + "example": 1 + }, + "tags": { + "description": "User defined tags for easy filtering and grouping. Available if the relation 'tags' is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimTag" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ClaimOrder": { + "title": "Claim Order", + "description": "Claim Orders represent a group of faulty or missing items. Each claim order consists of a subset of items associated with an original order, and can contain additional information about fulfillments and returns.", + "type": "object", + "required": [ + "canceled_at", + "created_at", + "deleted_at", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "order_id", + "payment_status", + "refund_amount", + "shipping_address_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The claim's ID", + "type": "string", + "example": "claim_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "type": { + "description": "The claim's type", + "type": "string", + "enum": [ + "refund", + "replace" + ] + }, + "payment_status": { + "description": "The status of the claim's payment", + "type": "string", + "enum": [ + "na", + "not_refunded", + "refunded" + ], + "default": "na" + }, + "fulfillment_status": { + "description": "The claim's fulfillment status", + "type": "string", + "enum": [ + "not_fulfilled", + "partially_fulfilled", + "fulfilled", + "partially_shipped", + "shipped", + "partially_returned", + "returned", + "canceled", + "requires_action" + ], + "default": "not_fulfilled" + }, + "claim_items": { + "description": "The items that have been claimed", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimItem" + } + }, + "additional_items": { + "description": "Refers to the new items to be shipped when the claim order has the type `replace`", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "order_id": { + "description": "The ID of the order that the claim comes from.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "return_order": { + "description": "A return object. Holds information about the return if the claim is to be returned. Available if the relation 'return_order' is expanded", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "shipping_address_id": { + "description": "The ID of the address that the new items should be shipped to", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_methods": { + "description": "The shipping methods that the claim order will be shipped with.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "fulfillments": { + "description": "The fulfillments of the new items to be shipped", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "refund_amount": { + "description": "The amount that will be refunded in conjunction with the claim", + "nullable": true, + "type": "integer", + "example": 1000 + }, + "canceled_at": { + "description": "The date with timezone at which the claim was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be send.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the cart associated with the claim in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + } + } + }, + "ClaimTag": { + "title": "Claim Tag", + "description": "Claim Tags are user defined tags that can be assigned to claim items for easy filtering and grouping.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The claim tag's ID", + "type": "string", + "example": "ctag_01G8ZCC5Y63B95V6B5SHBZ91S4" + }, + "value": { + "description": "The value that the claim tag holds", + "type": "string", + "example": "Damaged" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Country": { + "title": "Country", + "description": "Country details", + "type": "object", + "required": [ + "display_name", + "id", + "iso_2", + "iso_3", + "name", + "num_code", + "region_id" + ], + "properties": { + "id": { + "description": "The country's ID", + "type": "string", + "example": 109 + }, + "iso_2": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "example": "it", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "iso_3": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "example": "ita", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "num_code": { + "description": "The numerical ISO code for the country.", + "type": "string", + "example": 380, + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_numeric#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "name": { + "description": "The normalized country name in upper case.", + "type": "string", + "example": "ITALY" + }, + "display_name": { + "description": "The country name appropriate for display.", + "type": "string", + "example": "Italy" + }, + "region_id": { + "description": "The region ID this country is associated with.", + "nullable": true, + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + } + } + }, + "CreateStockLocationInput": { + "title": "Create Stock Location Input", + "description": "Represents the Input to create a Stock Location", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "The stock location name" + }, + "address_id": { + "type": "string", + "description": "The Stock location address ID" + }, + "address": { + "description": "Stock location address object", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressInput" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "Currency": { + "title": "Currency", + "description": "Currency", + "type": "object", + "required": [ + "code", + "name", + "symbol", + "symbol_native" + ], + "properties": { + "code": { + "description": "The 3 character ISO code for the currency.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "symbol": { + "description": "The symbol used to indicate the currency.", + "type": "string", + "example": "$" + }, + "symbol_native": { + "description": "The native symbol used to indicate the currency.", + "type": "string", + "example": "$" + }, + "name": { + "description": "The written name of the currency", + "type": "string", + "example": "US Dollar" + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the currency prices include tax", + "type": "boolean", + "default": false + } + } + }, + "CustomShippingOption": { + "title": "Custom Shipping Option", + "description": "Custom Shipping Options are 'overriden' Shipping Options. Store managers can attach a Custom Shipping Option to a cart in order to set a custom price for a particular Shipping Option", + "type": "object", + "required": [ + "cart_id", + "created_at", + "deleted_at", + "id", + "metadata", + "price", + "shipping_option_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The custom shipping option's ID", + "type": "string", + "example": "cso_01G8X99XNB77DMFBJFWX6DN9V9" + }, + "price": { + "description": "The custom price set that will override the shipping option's original price", + "type": "integer", + "example": 1000 + }, + "shipping_option_id": { + "description": "The ID of the Shipping Option that the custom shipping option overrides", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "A shipping option object. Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "cart_id": { + "description": "The ID of the Cart that the custom shipping option is attached to", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Customer": { + "title": "Customer", + "description": "Represents a customer", + "type": "object", + "required": [ + "billing_address_id", + "created_at", + "deleted_at", + "email", + "first_name", + "has_account", + "id", + "last_name", + "metadata", + "phone", + "updated_at" + ], + "properties": { + "id": { + "description": "The customer's ID", + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "email": { + "description": "The customer's email", + "type": "string", + "format": "email" + }, + "first_name": { + "description": "The customer's first name", + "nullable": true, + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "The customer's last name", + "nullable": true, + "type": "string", + "example": "Willms" + }, + "billing_address_id": { + "description": "The customer's billing address ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_addresses": { + "description": "Available if the relation `shipping_addresses` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Address" + } + }, + "phone": { + "description": "The customer's phone number", + "nullable": true, + "type": "string", + "example": 16128234334802 + }, + "has_account": { + "description": "Whether the customer has an account or not", + "type": "boolean", + "default": false + }, + "orders": { + "description": "Available if the relation `orders` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + "groups": { + "description": "The customer groups the customer belongs to. Available if the relation `groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "CustomerGroup": { + "title": "Customer Group", + "description": "Represents a customer group", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "name", + "updated_at" + ], + "properties": { + "id": { + "description": "The customer group's ID", + "type": "string", + "example": "cgrp_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "name": { + "description": "The name of the customer group", + "type": "string", + "example": "VIP" + }, + "customers": { + "description": "The customers that belong to the customer group. Available if the relation `customers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Customer" + } + }, + "price_lists": { + "description": "The price lists that are associated with the customer group. Available if the relation `price_lists` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PriceList" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Discount": { + "title": "Discount", + "description": "Represents a discount that can be applied to a cart for promotional purposes.", + "type": "object", + "required": [ + "code", + "created_at", + "deleted_at", + "ends_at", + "id", + "is_disabled", + "is_dynamic", + "metadata", + "parent_discount_id", + "rule_id", + "starts_at", + "updated_at", + "usage_count", + "usage_limit", + "valid_duration" + ], + "properties": { + "id": { + "description": "The discount's ID", + "type": "string", + "example": "disc_01F0YESMW10MGHWJKZSDDMN0VN" + }, + "code": { + "description": "A unique code for the discount - this will be used by the customer to apply the discount", + "type": "string", + "example": "10DISC" + }, + "is_dynamic": { + "description": "A flag to indicate if multiple instances of the discount can be generated. I.e. for newsletter discounts", + "type": "boolean", + "example": false + }, + "rule_id": { + "description": "The Discount Rule that governs the behaviour of the Discount", + "nullable": true, + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "rule": { + "description": "Available if the relation `rule` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountRule" + }, + "is_disabled": { + "description": "Whether the Discount has been disabled. Disabled discounts cannot be applied to carts", + "type": "boolean", + "example": false + }, + "parent_discount_id": { + "description": "The Discount that the discount was created from. This will always be a dynamic discount", + "nullable": true, + "type": "string", + "example": "disc_01G8ZH853YPY9B94857DY91YGW" + }, + "parent_discount": { + "description": "Available if the relation `parent_discount` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Discount" + }, + "starts_at": { + "description": "The time at which the discount can be used.", + "type": "string", + "format": "date-time" + }, + "ends_at": { + "description": "The time at which the discount can no longer be used.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "valid_duration": { + "description": "Duration the discount runs between", + "nullable": true, + "type": "string", + "example": "P3Y6M4DT12H30M5S" + }, + "regions": { + "description": "The Regions in which the Discount can be used. Available if the relation `regions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Region" + } + }, + "usage_limit": { + "description": "The maximum number of times that a discount can be used.", + "nullable": true, + "type": "integer", + "example": 100 + }, + "usage_count": { + "description": "The number of times a discount has been used.", + "type": "integer", + "example": 50, + "default": 0 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountCondition": { + "title": "Discount Condition", + "description": "Holds rule conditions for when a discount is applicable", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "discount_rule_id", + "id", + "metadata", + "operator", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The discount condition's ID", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "type": { + "description": "The type of the Condition", + "type": "string", + "enum": [ + "products", + "product_types", + "product_collections", + "product_tags", + "customer_groups" + ] + }, + "operator": { + "description": "The operator of the Condition", + "type": "string", + "enum": [ + "in", + "not_in" + ] + }, + "discount_rule_id": { + "description": "The ID of the discount rule associated with the condition", + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "discount_rule": { + "description": "Available if the relation `discount_rule` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountRule" + }, + "products": { + "description": "products associated with this condition if type = products. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "product_types": { + "description": "Product types associated with this condition if type = product_types. Available if the relation `product_types` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "product_tags": { + "description": "Product tags associated with this condition if type = product_tags. Available if the relation `product_tags` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "product_collections": { + "description": "Product collections associated with this condition if type = product_collections. Available if the relation `product_collections` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCollection" + } + }, + "customer_groups": { + "description": "Customer groups associated with this condition if type = customer_groups. Available if the relation `customer_groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionCustomerGroup": { + "title": "Product Tag Discount Condition", + "description": "Associates a discount condition with a customer group", + "type": "object", + "required": [ + "condition_id", + "created_at", + "customer_group_id", + "metadata", + "updated_at" + ], + "properties": { + "customer_group_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "cgrp_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "customer_group": { + "description": "Available if the relation `customer_group` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/CustomerGroup" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProduct": { + "title": "Product Discount Condition", + "description": "Associates a discount condition with a product", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_id", + "updated_at" + ], + "properties": { + "product_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product": { + "description": "Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductCollection": { + "title": "Product Collection Discount Condition", + "description": "Associates a discount condition with a product collection", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_collection_id", + "updated_at" + ], + "properties": { + "product_collection_id": { + "description": "The ID of the Product Collection", + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_collection": { + "description": "Available if the relation `product_collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCollection" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductTag": { + "title": "Product Tag Discount Condition", + "description": "Associates a discount condition with a product tag", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_tag_id", + "updated_at" + ], + "properties": { + "product_tag_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "ptag_01F0YESHPZYY3H4SJ3A5918SBN" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_tag": { + "description": "Available if the relation `product_tag` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductTag" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductType": { + "title": "Product Type Discount Condition", + "description": "Associates a discount condition with a product type", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_type_id", + "updated_at" + ], + "properties": { + "product_type_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_type": { + "description": "Available if the relation `product_type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountRule": { + "title": "Discount Rule", + "description": "Holds the rules that governs how a Discount is calculated when applied to a Cart.", + "type": "object", + "required": [ + "allocation", + "created_at", + "deleted_at", + "description", + "id", + "metadata", + "type", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The discount rule's ID", + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "type": { + "description": "The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers.", + "type": "string", + "enum": [ + "fixed", + "percentage", + "free_shipping" + ], + "example": "percentage" + }, + "description": { + "description": "A short description of the discount", + "nullable": true, + "type": "string", + "example": "10 Percent" + }, + "value": { + "description": "The value that the discount represents; this will depend on the type of the discount", + "type": "integer", + "example": 10 + }, + "allocation": { + "description": "The scope that the discount should apply to.", + "nullable": true, + "type": "string", + "enum": [ + "total", + "item" + ], + "example": "total" + }, + "conditions": { + "description": "A set of conditions that can be used to limit when the discount can be used. Available if the relation `conditions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/DiscountCondition" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DraftOrder": { + "title": "DraftOrder", + "description": "Represents a draft order", + "type": "object", + "required": [ + "canceled_at", + "cart_id", + "completed_at", + "created_at", + "display_id", + "id", + "idempotency_key", + "metadata", + "no_notification_order", + "order_id", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The draft order's ID", + "type": "string", + "example": "dorder_01G8TJFKBG38YYFQ035MSVG03C" + }, + "status": { + "description": "The status of the draft order", + "type": "string", + "enum": [ + "open", + "completed" + ], + "default": "open" + }, + "display_id": { + "description": "The draft order's display ID", + "type": "string", + "example": 2 + }, + "cart_id": { + "description": "The ID of the cart associated with the draft order.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the order associated with the draft order.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "canceled_at": { + "description": "The date the draft order was canceled at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "completed_at": { + "description": "The date the draft order was completed at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification_order": { + "description": "Whether to send the customer notifications regarding order updates.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the cart associated with the draft order in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Error": { + "title": "Response Error", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "A slug code to indicate the type of the error." + }, + "message": { + "type": "string", + "description": "Description of the error that occurred." + }, + "type": { + "type": "string", + "description": "A slug indicating the type of the error." + } + } + }, + "ExtendedStoreDTO": { + "allOf": [ + { + "$ref": "#/components/schemas/Store" + }, + { + "type": "object", + "required": [ + "payment_providers", + "fulfillment_providers", + "feature_flags", + "modules" + ], + "properties": { + "payment_providers": { + "$ref": "#/components/schemas/PaymentProvider" + }, + "fulfillment_providers": { + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "feature_flags": { + "$ref": "#/components/schemas/FeatureFlagsResponse" + }, + "modules": { + "$ref": "#/components/schemas/ModulesResponse" + } + } + } + ] + }, + "FeatureFlagsResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "The key of the feature flag.", + "type": "string" + }, + "value": { + "description": "The value of the feature flag.", + "type": "boolean" + } + } + } + }, + "Fulfillment": { + "title": "Fulfillment", + "description": "Fulfillments are created once store operators can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a provider, which is typically an external shipping aggregator, shipping partner og 3PL, most plugins will have asynchronous communications with these providers through webhooks in order to automatically update and synchronize the state of Fulfillments.", + "type": "object", + "required": [ + "canceled_at", + "claim_order_id", + "created_at", + "data", + "id", + "idempotency_key", + "location_id", + "metadata", + "no_notification", + "order_id", + "provider_id", + "shipped_at", + "swap_id", + "tracking_numbers", + "updated_at" + ], + "properties": { + "id": { + "description": "The fulfillment's ID", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "claim_order_id": { + "description": "The id of the Claim that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "swap_id": { + "description": "The id of the Swap that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "order_id": { + "description": "The id of the Order that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "provider_id": { + "description": "The id of the Fulfillment Provider responsible for handling the fulfillment", + "type": "string", + "example": "manual" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "location_id": { + "description": "The id of the stock location the fulfillment will be shipped from", + "nullable": true, + "type": "string", + "example": "sloc_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "items": { + "description": "The Fulfillment Items in the Fulfillment - these hold information about how many of each Line Item has been fulfilled. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FulfillmentItem" + } + }, + "tracking_links": { + "description": "The Tracking Links that can be used to track the status of the Fulfillment, these will usually be provided by the Fulfillment Provider. Available if the relation `tracking_links` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TrackingLink" + } + }, + "tracking_numbers": { + "description": "The tracking numbers that can be used to track the status of the fulfillment.", + "deprecated": true, + "type": "array", + "items": { + "type": "string" + } + }, + "data": { + "description": "This contains all the data necessary for the Fulfillment provider to handle the fulfillment.", + "type": "object", + "example": {} + }, + "shipped_at": { + "description": "The date with timezone at which the Fulfillment was shipped.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be sent.", + "nullable": true, + "type": "boolean", + "example": false + }, + "canceled_at": { + "description": "The date with timezone at which the Fulfillment was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the fulfillment in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "FulfillmentItem": { + "title": "Fulfillment Item", + "description": "Correlates a Line Item with a Fulfillment, keeping track of the quantity of the Line Item.", + "type": "object", + "required": [ + "fulfillment_id", + "item_id", + "quantity" + ], + "properties": { + "fulfillment_id": { + "description": "The id of the Fulfillment that the Fulfillment Item belongs to.", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "item_id": { + "description": "The id of the Line Item that the Fulfillment Item references.", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "fulfillment": { + "description": "A fulfillment object. Available if the relation `fulfillment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Fulfillment" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "quantity": { + "description": "The quantity of the Line Item that is included in the Fulfillment.", + "type": "integer", + "example": 1 + } + } + }, + "FulfillmentProvider": { + "title": "Fulfillment Provider", + "description": "Represents a fulfillment provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the fulfillment provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "GiftCard": { + "title": "Gift Card", + "description": "Gift Cards are redeemable and represent a value that can be used towards the payment of an Order.", + "type": "object", + "required": [ + "balance", + "code", + "created_at", + "deleted_at", + "ends_at", + "id", + "is_disabled", + "metadata", + "order_id", + "region_id", + "tax_rate", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The gift card's ID", + "type": "string", + "example": "gift_01G8XKBPBQY2R7RBET4J7E0XQZ" + }, + "code": { + "description": "The unique code that identifies the Gift Card. This is used by the Customer to redeem the value of the Gift Card.", + "type": "string", + "example": "3RFT-MH2C-Y4YZ-XMN4" + }, + "value": { + "description": "The value that the Gift Card represents.", + "type": "integer", + "example": 10 + }, + "balance": { + "description": "The remaining value on the Gift Card.", + "type": "integer", + "example": 10 + }, + "region_id": { + "description": "The id of the Region in which the Gift Card is available.", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "order_id": { + "description": "The id of the Order that the Gift Card was purchased in.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "is_disabled": { + "description": "Whether the Gift Card has been disabled. Disabled Gift Cards cannot be applied to carts.", + "type": "boolean", + "default": false + }, + "ends_at": { + "description": "The time at which the Gift Card can no longer be used.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "tax_rate": { + "description": "The gift card's tax rate that will be applied on calculating totals", + "nullable": true, + "type": "number", + "example": 0 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "GiftCardTransaction": { + "title": "Gift Card Transaction", + "description": "Gift Card Transactions are created once a Customer uses a Gift Card to pay for their Order", + "type": "object", + "required": [ + "amount", + "created_at", + "gift_card_id", + "id", + "is_taxable", + "order_id", + "tax_rate" + ], + "properties": { + "id": { + "description": "The gift card transaction's ID", + "type": "string", + "example": "gct_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "gift_card_id": { + "description": "The ID of the Gift Card that was used in the transaction.", + "type": "string", + "example": "gift_01G8XKBPBQY2R7RBET4J7E0XQZ" + }, + "gift_card": { + "description": "A gift card object. Available if the relation `gift_card` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/GiftCard" + }, + "order_id": { + "description": "The ID of the Order that the Gift Card was used to pay for.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "amount": { + "description": "The amount that was used from the Gift Card.", + "type": "integer", + "example": 10 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "is_taxable": { + "description": "Whether the transaction is taxable or not.", + "nullable": true, + "type": "boolean", + "example": false + }, + "tax_rate": { + "description": "The tax rate of the transaction", + "nullable": true, + "type": "number", + "example": 0 + } + } + }, + "IdempotencyKey": { + "title": "Idempotency Key", + "description": "Idempotency Key is used to continue a process in case of any failure that might occur.", + "type": "object", + "required": [ + "created_at", + "id", + "idempotency_key", + "locked_at", + "recovery_point", + "response_code", + "response_body", + "request_method", + "request_params", + "request_path" + ], + "properties": { + "id": { + "description": "The idempotency key's ID", + "type": "string", + "example": "ikey_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "idempotency_key": { + "description": "The unique randomly generated key used to determine the state of a process.", + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "Date which the idempotency key was locked.", + "type": "string", + "format": "date-time" + }, + "locked_at": { + "description": "Date which the idempotency key was locked.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "request_method": { + "description": "The method of the request", + "nullable": true, + "type": "string", + "example": "POST" + }, + "request_params": { + "description": "The parameters passed to the request", + "nullable": true, + "type": "object", + "example": { + "id": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + } + }, + "request_path": { + "description": "The request's path", + "nullable": true, + "type": "string", + "example": "/store/carts/cart_01G8ZH853Y6TFXWPG5EYE81X63/complete" + }, + "response_code": { + "description": "The response's code.", + "nullable": true, + "type": "string", + "example": 200 + }, + "response_body": { + "description": "The response's body", + "nullable": true, + "type": "object", + "example": { + "id": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + } + }, + "recovery_point": { + "description": "Where to continue from.", + "type": "string", + "default": "started" + } + } + }, + "Image": { + "title": "Image", + "description": "Images holds a reference to a URL at which the image file can be found.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "url" + ], + "properties": { + "id": { + "type": "string", + "description": "The image's ID", + "example": "img_01G749BFYR6T8JTVW6SGW3K3E6" + }, + "url": { + "description": "The URL at which the image file can be found.", + "type": "string", + "format": "uri" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "InventoryItemDTO": { + "type": "object", + "required": [ + "sku" + ], + "properties": { + "sku": { + "description": "The Stock Keeping Unit (SKU) code of the Inventory Item.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "origin_country": { + "description": "The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "material": { + "description": "The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "weight": { + "description": "The weight of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "height": { + "description": "The height of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "width": { + "description": "The width of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "length": { + "description": "The length of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "requires_shipping": { + "description": "Whether the item requires shipping.", + "type": "boolean" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "InventoryLevelDTO": { + "type": "object", + "required": [ + "inventory_item_id", + "location_id", + "stocked_quantity", + "reserved_quantity", + "incoming_quantity" + ], + "properties": { + "location_id": { + "description": "the item location ID", + "type": "string" + }, + "stocked_quantity": { + "description": "the total stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "reserved_quantity": { + "description": "the reserved stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "incoming_quantity": { + "description": "the incoming stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "Invite": { + "title": "Invite", + "description": "Represents an invite", + "type": "object", + "required": [ + "accepted", + "created_at", + "deleted_at", + "expires_at", + "id", + "metadata", + "role", + "token", + "updated_at", + "user_email" + ], + "properties": { + "id": { + "type": "string", + "description": "The invite's ID", + "example": "invite_01G8TKE4XYCTHSCK2GDEP47RE1" + }, + "user_email": { + "description": "The email of the user being invited.", + "type": "string", + "format": "email" + }, + "role": { + "description": "The user's role.", + "nullable": true, + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ], + "default": "member" + }, + "accepted": { + "description": "Whether the invite was accepted or not.", + "type": "boolean", + "default": false + }, + "token": { + "description": "The token used to accept the invite.", + "type": "string" + }, + "expires_at": { + "description": "The date the invite expires at.", + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItem": { + "title": "Line Item", + "description": "Line Items represent purchasable units that can be added to a Cart for checkout. When Line Items are purchased they will get copied to the resulting order and can eventually be referenced in Fulfillments and Returns. Line Items may also be created when processing Swaps and Claims.", + "type": "object", + "required": [ + "allow_discounts", + "cart_id", + "claim_order_id", + "created_at", + "description", + "fulfilled_quantity", + "has_shipping", + "id", + "is_giftcard", + "is_return", + "metadata", + "order_edit_id", + "order_id", + "original_item_id", + "quantity", + "returned_quantity", + "shipped_quantity", + "should_merge", + "swap_id", + "thumbnail", + "title", + "unit_price", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The line item's ID", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "cart_id": { + "description": "The ID of the Cart that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the Order that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "swap_id": { + "description": "The id of the Swap that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "claim_order_id": { + "description": "The id of the Claim that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "tax_lines": { + "description": "Available if the relation `tax_lines` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItemTaxLine" + } + }, + "adjustments": { + "description": "Available if the relation `adjustments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItemAdjustment" + } + }, + "original_item_id": { + "description": "The id of the original line item", + "nullable": true, + "type": "string" + }, + "order_edit_id": { + "description": "The ID of the order edit to which a cloned item belongs", + "nullable": true, + "type": "string" + }, + "order_edit": { + "description": "The order edit joined. Available if the relation `order_edit` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/OrderEdit" + }, + "title": { + "description": "The title of the Line Item, this should be easily identifiable by the Customer.", + "type": "string", + "example": "Medusa Coffee Mug" + }, + "description": { + "description": "A more detailed description of the contents of the Line Item.", + "nullable": true, + "type": "string", + "example": "One Size" + }, + "thumbnail": { + "description": "A URL string to a small image of the contents of the Line Item.", + "nullable": true, + "type": "string", + "format": "uri", + "example": "https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png" + }, + "is_return": { + "description": "Is the item being returned", + "type": "boolean", + "default": false + }, + "is_giftcard": { + "description": "Flag to indicate if the Line Item is a Gift Card.", + "type": "boolean", + "default": false + }, + "should_merge": { + "description": "Flag to indicate if new Line Items with the same variant should be merged or added as an additional Line Item.", + "type": "boolean", + "default": true + }, + "allow_discounts": { + "description": "Flag to indicate if the Line Item should be included when doing discount calculations.", + "type": "boolean", + "default": true + }, + "has_shipping": { + "description": "Flag to indicate if the Line Item has fulfillment associated with it.", + "nullable": true, + "type": "boolean", + "example": false + }, + "unit_price": { + "description": "The price of one unit of the content in the Line Item. This should be in the currency defined by the Cart/Order/Swap/Claim that the Line Item belongs to.", + "type": "integer", + "example": 8000 + }, + "variant_id": { + "description": "The id of the Product Variant contained in the Line Item.", + "nullable": true, + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "A product variant object. The Product Variant contained in the Line Item. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "quantity": { + "description": "The quantity of the content in the Line Item.", + "type": "integer", + "example": 1 + }, + "fulfilled_quantity": { + "description": "The quantity of the Line Item that has been fulfilled.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "returned_quantity": { + "description": "The quantity of the Line Item that has been returned.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "shipped_quantity": { + "description": "The quantity of the Line Item that has been shipped.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "refundable": { + "description": "The amount that can be refunded from the given Line Item. Takes taxes and discounts into consideration.", + "type": "integer", + "example": 0 + }, + "subtotal": { + "description": "The subtotal of the line item", + "type": "integer", + "example": 8000 + }, + "tax_total": { + "description": "The total of tax of the line item", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the line item", + "type": "integer", + "example": 8000 + }, + "original_total": { + "description": "The original total amount of the line item", + "type": "integer", + "example": 8000 + }, + "original_tax_total": { + "description": "The original tax total amount of the line item", + "type": "integer", + "example": 0 + }, + "discount_total": { + "description": "The total of discount of the line item rounded", + "type": "integer", + "example": 0 + }, + "raw_discount_total": { + "description": "The total of discount of the line item", + "type": "integer", + "example": 0 + }, + "gift_card_total": { + "description": "The total of the gift card of the line item", + "type": "integer", + "example": 0 + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Indicates if the line item unit_price include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItemAdjustment": { + "title": "Line Item Adjustment", + "description": "Represents a Line Item Adjustment", + "type": "object", + "required": [ + "amount", + "description", + "discount_id", + "id", + "item_id", + "metadata" + ], + "properties": { + "id": { + "description": "The Line Item Adjustment's ID", + "type": "string", + "example": "lia_01G8TKE4XYCTHSCK2GDEP47RE1" + }, + "item_id": { + "description": "The ID of the line item", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "description": { + "description": "The line item's adjustment description", + "type": "string", + "example": "Adjusted item's price." + }, + "discount_id": { + "description": "The ID of the discount associated with the adjustment", + "nullable": true, + "type": "string", + "example": "disc_01F0YESMW10MGHWJKZSDDMN0VN" + }, + "discount": { + "description": "Available if the relation `discount` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Discount" + }, + "amount": { + "description": "The adjustment amount", + "type": "number", + "example": 1000 + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItemTaxLine": { + "title": "Line Item Tax Line", + "description": "Represents a Line Item Tax Line", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "item_id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The line item tax line's ID", + "type": "string", + "example": "litl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "item_id": { + "description": "The ID of the line item", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ModulesResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "module", + "resolution" + ], + "properties": { + "module": { + "description": "The key of the module.", + "type": "string" + }, + "resolution": { + "description": "The resolution path of the module or false if module is not installed.", + "type": "string" + } + } + } + }, + "MoneyAmount": { + "title": "Money Amount", + "description": "Money Amounts represents an amount that a given Product Variant can be purcased for. Each Money Amount either has a Currency or Region associated with it to indicate the pricing in a given Currency or, for fully region-based pricing, the given price in a specific Region. If region-based pricing is used the amount will be in the currency defined for the Reigon.", + "type": "object", + "required": [ + "amount", + "created_at", + "currency_code", + "deleted_at", + "id", + "max_quantity", + "min_quantity", + "price_list_id", + "region_id", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The money amount's ID", + "type": "string", + "example": "ma_01F0YESHRFQNH5S8Q0PK84YYZN" + }, + "currency_code": { + "description": "The 3 character currency code that the Money Amount is given in.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "amount": { + "description": "The amount in the smallest currecny unit (e.g. cents 100 cents to charge $1) that the Product Variant will cost.", + "type": "integer", + "example": 100 + }, + "min_quantity": { + "description": "The minimum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "max_quantity": { + "description": "The maximum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "price_list_id": { + "description": "The ID of the price list associated with the money amount", + "nullable": true, + "type": "string", + "example": "pl_01G8X3CKJXCG5VXVZ87H9KC09W" + }, + "price_list": { + "description": "Available if the relation `price_list` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/PriceList" + }, + "variant_id": { + "description": "The id of the Product Variant contained in the Line Item.", + "nullable": true, + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "The Product Variant contained in the Line Item. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "region_id": { + "description": "The region's ID", + "nullable": true, + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "MultipleErrors": { + "title": "Multiple Errors", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors", + "items": { + "$ref": "#/components/schemas/Error" + } + }, + "message": { + "type": "string", + "default": "Provided request body contains errors. Please check the data and retry the request" + } + } + }, + "Note": { + "title": "Note", + "description": "Notes are elements which we can use in association with different resources to allow users to describe additional information in relation to these.", + "type": "object", + "required": [ + "author_id", + "created_at", + "deleted_at", + "id", + "metadata", + "resource_id", + "resource_type", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The note's ID", + "type": "string", + "example": "note_01G8TM8ENBMC7R90XRR1G6H26Q" + }, + "resource_type": { + "description": "The type of resource that the Note refers to.", + "type": "string", + "example": "order" + }, + "resource_id": { + "description": "The ID of the resource that the Note refers to.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "value": { + "description": "The contents of the note.", + "type": "string", + "example": "This order must be fulfilled on Monday" + }, + "author_id": { + "description": "The ID of the author (user)", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "author": { + "description": "Available if the relation `author` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/User" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Notification": { + "title": "Notification", + "description": "Notifications a communications sent via Notification Providers as a reaction to internal events such as `order.placed`. Notifications can be used to show a chronological timeline for communications sent to a Customer regarding an Order, and enables resends.", + "type": "object", + "required": [ + "created_at", + "customer_id", + "data", + "event_name", + "id", + "parent_id", + "provider_id", + "resource_type", + "resource_id", + "to", + "updated_at" + ], + "properties": { + "id": { + "description": "The notification's ID", + "type": "string", + "example": "noti_01G53V9Y6CKMCGBM1P0X7C28RX" + }, + "event_name": { + "description": "The name of the event that the notification was sent for.", + "nullable": true, + "type": "string", + "example": "order.placed" + }, + "resource_type": { + "description": "The type of resource that the Notification refers to.", + "type": "string", + "example": "order" + }, + "resource_id": { + "description": "The ID of the resource that the Notification refers to.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "customer_id": { + "description": "The ID of the Customer that the Notification was sent to.", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "to": { + "description": "The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id", + "type": "string", + "example": "user@example.com" + }, + "data": { + "description": "The data that the Notification was sent with. This contains all the data necessary for the Notification Provider to initiate a resend.", + "type": "object", + "example": {} + }, + "parent_id": { + "description": "The notification's parent ID", + "nullable": true, + "type": "string", + "example": "noti_01G53V9Y6CKMCGBM1P0X7C28RX" + }, + "parent_notification": { + "description": "Available if the relation `parent_notification` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Notification" + }, + "resends": { + "description": "The resends that have been completed after the original Notification. Available if the relation `resends` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + }, + "provider_id": { + "description": "The id of the Notification Provider that handles the Notification.", + "nullable": true, + "type": "string", + "example": "sengrid" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/NotificationProvider" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "NotificationProvider": { + "title": "Notification Provider", + "description": "Represents a notification provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the notification provider as given by the plugin.", + "type": "string", + "example": "sendgrid" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "OAuth": { + "title": "OAuth", + "description": "Represent an OAuth app", + "type": "object", + "required": [ + "application_name", + "data", + "display_name", + "id", + "install_url", + "uninstall_url" + ], + "properties": { + "id": { + "description": "The app's ID", + "type": "string", + "example": "example_app" + }, + "display_name": { + "description": "The app's display name", + "type": "string", + "example": "Example app" + }, + "application_name": { + "description": "The app's name", + "type": "string", + "example": "example" + }, + "install_url": { + "description": "The URL to install the app", + "nullable": true, + "type": "string", + "format": "uri" + }, + "uninstall_url": { + "description": "The URL to uninstall the app", + "nullable": true, + "type": "string", + "format": "uri" + }, + "data": { + "description": "Any data necessary to the app.", + "nullable": true, + "type": "object", + "example": {} + } + } + }, + "Order": { + "title": "Order", + "description": "Represents an order", + "type": "object", + "required": [ + "billing_address_id", + "canceled_at", + "cart_id", + "created_at", + "currency_code", + "customer_id", + "draft_order_id", + "display_id", + "email", + "external_id", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "object", + "payment_status", + "region_id", + "shipping_address_id", + "status", + "tax_rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The order's ID", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "status": { + "description": "The order's status", + "type": "string", + "enum": [ + "pending", + "completed", + "archived", + "canceled", + "requires_action" + ], + "default": "pending" + }, + "fulfillment_status": { + "description": "The order's fulfillment status", + "type": "string", + "enum": [ + "not_fulfilled", + "partially_fulfilled", + "fulfilled", + "partially_shipped", + "shipped", + "partially_returned", + "returned", + "canceled", + "requires_action" + ], + "default": "not_fulfilled" + }, + "payment_status": { + "description": "The order's payment status", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "captured", + "partially_refunded", + "refunded", + "canceled", + "requires_action" + ], + "default": "not_paid" + }, + "display_id": { + "description": "The order's display ID", + "type": "integer", + "example": 2 + }, + "cart_id": { + "description": "The ID of the cart associated with the order", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "customer_id": { + "description": "The ID of the customer associated with the order", + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "email": { + "description": "The email associated with the order", + "type": "string", + "format": "email" + }, + "billing_address_id": { + "description": "The ID of the billing address associated with the order", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_address_id": { + "description": "The ID of the shipping address associated with the order", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "currency_code": { + "description": "The 3 character currency code that is used in the order", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "tax_rate": { + "description": "The order's tax rate", + "nullable": true, + "type": "number", + "example": 0 + }, + "discounts": { + "description": "The discounts used in the order. Available if the relation `discounts` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "gift_cards": { + "description": "The gift cards used in the order. Available if the relation `gift_cards` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCard" + } + }, + "shipping_methods": { + "description": "The shipping methods used in the order. Available if the relation `shipping_methods` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "payments": { + "description": "The payments used in the order. Available if the relation `payments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Payment" + } + }, + "fulfillments": { + "description": "The fulfillments used in the order. Available if the relation `fulfillments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "returns": { + "description": "The returns associated with the order. Available if the relation `returns` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Return" + } + }, + "claims": { + "description": "The claims associated with the order. Available if the relation `claims` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimOrder" + } + }, + "refunds": { + "description": "The refunds associated with the order. Available if the relation `refunds` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Refund" + } + }, + "swaps": { + "description": "The swaps associated with the order. Available if the relation `swaps` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Swap" + } + }, + "draft_order_id": { + "description": "The ID of the draft order this order is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "draft_order": { + "description": "A draft order object. Available if the relation `draft_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DraftOrder" + }, + "items": { + "description": "The line items that belong to the order. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "edits": { + "description": "Order edits done on the order. Available if the relation `edits` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderEdit" + } + }, + "gift_card_transactions": { + "description": "The gift card transactions used in the order. Available if the relation `gift_card_transactions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCardTransaction" + } + }, + "canceled_at": { + "description": "The date the order was canceled on.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be send.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the processing of the order in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "external_id": { + "description": "The ID of an external order.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel_id": { + "description": "The ID of the sales channel this order is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel": { + "description": "A sales channel object. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "shipping_total": { + "type": "integer", + "description": "The total of shipping", + "example": 1000 + }, + "raw_discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "discount_total": { + "description": "The total of discount rounded", + "type": "integer", + "example": 800 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "refunded_total": { + "description": "The total amount refunded if the order is returned.", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the order", + "type": "integer", + "example": 8200 + }, + "subtotal": { + "description": "The subtotal of the order", + "type": "integer", + "example": 8000 + }, + "paid_total": { + "description": "The total amount paid", + "type": "integer", + "example": 8000 + }, + "refundable_amount": { + "description": "The amount that can be refunded", + "type": "integer", + "example": 8200 + }, + "gift_card_total": { + "description": "The total of gift cards", + "type": "integer", + "example": 0 + }, + "gift_card_tax_total": { + "description": "The total of gift cards with taxes", + "type": "integer", + "example": 0 + }, + "returnable_items": { + "description": "The items that are returnable as part of the order, order swaps or order claims", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "OrderEdit": { + "title": "Order Edit", + "description": "Order edit keeps track of order items changes.", + "type": "object", + "required": [ + "canceled_at", + "canceled_by", + "confirmed_by", + "confirmed_at", + "created_at", + "created_by", + "declined_at", + "declined_by", + "declined_reason", + "id", + "internal_note", + "order_id", + "payment_collection_id", + "requested_at", + "requested_by", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The order edit's ID", + "type": "string", + "example": "oe_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order_id": { + "description": "The ID of the order that is edited", + "type": "string", + "example": "order_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "order": { + "description": "Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "changes": { + "description": "Available if the relation `changes` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderItemChange" + } + }, + "internal_note": { + "description": "An optional note with additional details about the order edit.", + "nullable": true, + "type": "string", + "example": "Included two more items B to the order." + }, + "created_by": { + "description": "The unique identifier of the user or customer who created the order edit.", + "type": "string" + }, + "requested_by": { + "description": "The unique identifier of the user or customer who requested the order edit.", + "nullable": true, + "type": "string" + }, + "requested_at": { + "description": "The date with timezone at which the edit was requested.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "confirmed_by": { + "description": "The unique identifier of the user or customer who confirmed the order edit.", + "nullable": true, + "type": "string" + }, + "confirmed_at": { + "description": "The date with timezone at which the edit was confirmed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "declined_by": { + "description": "The unique identifier of the user or customer who declined the order edit.", + "nullable": true, + "type": "string" + }, + "declined_at": { + "description": "The date with timezone at which the edit was declined.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "declined_reason": { + "description": "An optional note why the order edit is declined.", + "nullable": true, + "type": "string" + }, + "canceled_by": { + "description": "The unique identifier of the user or customer who cancelled the order edit.", + "nullable": true, + "type": "string" + }, + "canceled_at": { + "description": "The date with timezone at which the edit was cancelled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "subtotal": { + "description": "The total of subtotal", + "type": "integer", + "example": 8000 + }, + "discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "shipping_total": { + "description": "The total of the shipping amount", + "type": "integer", + "example": 800 + }, + "gift_card_total": { + "description": "The total of the gift card amount", + "type": "integer", + "example": 800 + }, + "gift_card_tax_total": { + "description": "The total of the gift card tax amount", + "type": "integer", + "example": 800 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the edited order.", + "type": "integer", + "example": 8200 + }, + "difference_due": { + "description": "The difference between the total amount of the order and total amount of edited order.", + "type": "integer", + "example": 8200 + }, + "status": { + "description": "The status of the order edit.", + "type": "string", + "enum": [ + "confirmed", + "declined", + "requested", + "created", + "canceled" + ] + }, + "items": { + "description": "Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "payment_collection_id": { + "description": "The ID of the payment collection", + "nullable": true, + "type": "string", + "example": "paycol_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "payment_collection": { + "description": "Available if the relation `payment_collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/PaymentCollection" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "OrderItemChange": { + "title": "Order Item Change", + "description": "Represents an order edit item change", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "line_item_id", + "order_edit_id", + "original_line_item_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The order item change's ID", + "type": "string", + "example": "oic_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "type": { + "description": "The order item change's status", + "type": "string", + "enum": [ + "item_add", + "item_remove", + "item_update" + ] + }, + "order_edit_id": { + "description": "The ID of the order edit", + "type": "string", + "example": "oe_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "order_edit": { + "description": "Available if the relation `order_edit` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/OrderEdit" + }, + "original_line_item_id": { + "description": "The ID of the original line item in the order", + "nullable": true, + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "original_line_item": { + "description": "Available if the relation `original_line_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "line_item_id": { + "description": "The ID of the cloned line item.", + "nullable": true, + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "line_item": { + "description": "Available if the relation `line_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "Payment": { + "title": "Payment", + "description": "Payments represent an amount authorized with a given payment method, Payments can be captured, canceled or refunded.", + "type": "object", + "required": [ + "amount", + "amount_refunded", + "canceled_at", + "captured_at", + "cart_id", + "created_at", + "currency_code", + "data", + "id", + "idempotency_key", + "metadata", + "order_id", + "provider_id", + "swap_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment's ID", + "type": "string", + "example": "pay_01G2SJNT6DEEWDFNAJ4XWDTHKE" + }, + "swap_id": { + "description": "The ID of the Swap that the Payment is used for.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "cart_id": { + "description": "The id of the Cart that the Payment Session is created for.", + "nullable": true, + "type": "string" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the Order that the Payment is used for.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "amount": { + "description": "The amount that the Payment has been authorized for.", + "type": "integer", + "example": 100 + }, + "currency_code": { + "description": "The 3 character ISO currency code that the Payment is completed in.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "amount_refunded": { + "description": "The amount of the original Payment amount that has been refunded back to the Customer.", + "type": "integer", + "default": 0, + "example": 0 + }, + "provider_id": { + "description": "The id of the Payment Provider that is responsible for the Payment", + "type": "string", + "example": "manual" + }, + "data": { + "description": "The data required for the Payment Provider to identify, modify and process the Payment. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state.", + "type": "object", + "example": {} + }, + "captured_at": { + "description": "The date with timezone at which the Payment was captured.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date with timezone at which the Payment was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a payment in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "PaymentCollection": { + "title": "Payment Collection", + "description": "Payment Collection", + "type": "object", + "required": [ + "amount", + "authorized_amount", + "created_at", + "created_by", + "currency_code", + "deleted_at", + "description", + "id", + "metadata", + "region_id", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment collection's ID", + "type": "string", + "example": "paycol_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "type": { + "description": "The type of the payment collection", + "type": "string", + "enum": [ + "order_edit" + ] + }, + "status": { + "description": "The type of the payment collection", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "authorized", + "partially_authorized", + "canceled" + ] + }, + "description": { + "description": "Description of the payment collection", + "nullable": true, + "type": "string" + }, + "amount": { + "description": "Amount of the payment collection.", + "type": "integer" + }, + "authorized_amount": { + "description": "Authorized amount of the payment collection.", + "nullable": true, + "type": "integer" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "currency_code": { + "description": "The 3 character ISO code for the currency.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "payment_sessions": { + "description": "Available if the relation `payment_sessions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentSession" + } + }, + "payments": { + "description": "Available if the relation `payments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Payment" + } + }, + "created_by": { + "description": "The ID of the user that created the payment collection.", + "type": "string" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "PaymentProvider": { + "title": "Payment Provider", + "description": "Represents a Payment Provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the payment provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "PaymentSession": { + "title": "Payment Session", + "description": "Payment Sessions are created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, who is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for capture/refunds/etc.", + "type": "object", + "required": [ + "amount", + "cart_id", + "created_at", + "data", + "id", + "is_initiated", + "is_selected", + "idempotency_key", + "payment_authorized_at", + "provider_id", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment session's ID", + "type": "string", + "example": "ps_01G901XNSRM2YS3ASN9H5KG3FZ" + }, + "cart_id": { + "description": "The id of the Cart that the Payment Session is created for.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "provider_id": { + "description": "The id of the Payment Provider that is responsible for the Payment Session", + "type": "string", + "example": "manual" + }, + "is_selected": { + "description": "A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase.", + "nullable": true, + "type": "boolean", + "example": true + }, + "is_initiated": { + "description": "A flag to indicate if a communication with the third party provider has been initiated.", + "type": "boolean", + "default": false, + "example": true + }, + "status": { + "description": "Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer.", + "type": "string", + "enum": [ + "authorized", + "pending", + "requires_more", + "error", + "canceled" + ], + "example": "pending" + }, + "data": { + "description": "The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state.", + "type": "object", + "example": {} + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a cart in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "amount": { + "description": "The amount that the Payment Session has been authorized for.", + "nullable": true, + "type": "integer", + "example": 100 + }, + "payment_authorized_at": { + "description": "The date with timezone at which the Payment Session was authorized.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "PriceList": { + "title": "Price List", + "description": "Price Lists represents a set of prices that overrides the default price for one or more product variants.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "ends_at", + "id", + "name", + "starts_at", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The price list's ID", + "type": "string", + "example": "pl_01G8X3CKJXCG5VXVZ87H9KC09W" + }, + "name": { + "description": "The price list's name", + "type": "string", + "example": "VIP Prices" + }, + "description": { + "description": "The price list's description", + "type": "string", + "example": "Prices for VIP customers" + }, + "type": { + "description": "The type of Price List. This can be one of either `sale` or `override`.", + "type": "string", + "enum": [ + "sale", + "override" + ], + "default": "sale" + }, + "status": { + "description": "The status of the Price List", + "type": "string", + "enum": [ + "active", + "draft" + ], + "default": "draft" + }, + "starts_at": { + "description": "The date with timezone that the Price List starts being valid.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "ends_at": { + "description": "The date with timezone that the Price List stops being valid.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "customer_groups": { + "description": "The Customer Groups that the Price List applies to. Available if the relation `customer_groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "prices": { + "description": "The Money Amounts that are associated with the Price List. Available if the relation `prices` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyAmount" + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the price list prices include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "PricedProduct": { + "title": "Priced Product", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Product" + }, + { + "type": "object", + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedVariant" + } + } + } + } + ] + }, + "PricedShippingOption": { + "title": "Priced Shipping Option", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ShippingOption" + }, + { + "type": "object", + "properties": { + "price_incl_tax": { + "type": "number", + "description": "Price including taxes" + }, + "tax_rates": { + "type": "array", + "description": "An array of applied tax rates", + "items": { + "type": "object", + "properties": { + "rate": { + "type": "number", + "description": "The tax rate value" + }, + "name": { + "type": "string", + "description": "The name of the tax rate" + }, + "code": { + "type": "string", + "description": "The code of the tax rate" + } + } + } + }, + "tax_amount": { + "type": "number", + "description": "The taxes applied." + } + } + } + ] + }, + "PricedVariant": { + "title": "Priced Product Variant", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ProductVariant" + }, + { + "type": "object", + "properties": { + "original_price": { + "type": "number", + "description": "The original price of the variant without any discounted prices applied." + }, + "calculated_price": { + "type": "number", + "description": "The calculated price of the variant. Can be a discounted price." + }, + "original_price_incl_tax": { + "type": "number", + "description": "The original price of the variant including taxes." + }, + "calculated_price_incl_tax": { + "type": "number", + "description": "The calculated price of the variant including taxes." + }, + "original_tax": { + "type": "number", + "description": "The taxes applied on the original price." + }, + "calculated_tax": { + "type": "number", + "description": "The taxes applied on the calculated price." + }, + "tax_rates": { + "type": "array", + "description": "An array of applied tax rates", + "items": { + "type": "object", + "properties": { + "rate": { + "type": "number", + "description": "The tax rate value" + }, + "name": { + "type": "string", + "description": "The name of the tax rate" + }, + "code": { + "type": "string", + "description": "The code of the tax rate" + } + } + } + } + } + } + ] + }, + "Product": { + "title": "Product", + "description": "Products are a grouping of Product Variants that have common properties such as images and descriptions. Products can have multiple options which define the properties that Product Variants differ by.", + "type": "object", + "required": [ + "collection_id", + "created_at", + "deleted_at", + "description", + "discountable", + "external_id", + "handle", + "height", + "hs_code", + "id", + "is_giftcard", + "length", + "material", + "metadata", + "mid_code", + "origin_country", + "profile_id", + "status", + "subtitle", + "type_id", + "thumbnail", + "title", + "updated_at", + "weight", + "width" + ], + "properties": { + "id": { + "description": "The product's ID", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "title": { + "description": "A title that can be displayed for easy identification of the Product.", + "type": "string", + "example": "Medusa Coffee Mug" + }, + "subtitle": { + "description": "An optional subtitle that can be used to further specify the Product.", + "nullable": true, + "type": "string" + }, + "description": { + "description": "A short description of the Product.", + "nullable": true, + "type": "string", + "example": "Every programmer's best friend." + }, + "handle": { + "description": "A unique identifier for the Product (e.g. for slug structure).", + "nullable": true, + "type": "string", + "example": "coffee-mug" + }, + "is_giftcard": { + "description": "Whether the Product represents a Gift Card. Products that represent Gift Cards will automatically generate a redeemable Gift Card code once they are purchased.", + "type": "boolean", + "default": false + }, + "status": { + "description": "The status of the product", + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ], + "default": "draft" + }, + "images": { + "description": "Images of the Product. Available if the relation `images` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Image" + } + }, + "thumbnail": { + "description": "A URL to an image file that can be used to identify the Product.", + "nullable": true, + "type": "string", + "format": "uri" + }, + "options": { + "description": "The Product Options that are defined for the Product. Product Variants of the Product will have a unique combination of Product Option Values. Available if the relation `options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOption" + } + }, + "variants": { + "description": "The Product Variants that belong to the Product. Each will have a unique combination of Product Option Values. Available if the relation `variants` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductVariant" + } + }, + "categories": { + "description": "The product's associated categories. Available if the relation `categories` are expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "profile_id": { + "description": "The ID of the Shipping Profile that the Product belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products.", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "profile": { + "description": "Available if the relation `profile` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingProfile" + }, + "weight": { + "description": "The weight of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "length": { + "description": "The length of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "height": { + "description": "The height of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "width": { + "description": "The width of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "hs_code": { + "description": "The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "origin_country": { + "description": "The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "material": { + "description": "The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "collection_id": { + "description": "The Product Collection that the Product belongs to", + "nullable": true, + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "collection": { + "description": "A product collection object. Available if the relation `collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCollection" + }, + "type_id": { + "description": "The Product type that the Product belongs to", + "nullable": true, + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "type": { + "description": "Available if the relation `type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "tags": { + "description": "The Product Tags assigned to the Product. Available if the relation `tags` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "discountable": { + "description": "Whether the Product can be discounted. Discounts will not apply to Line Items of this Product when this flag is set to `false`.", + "type": "boolean", + "default": true + }, + "external_id": { + "description": "The external ID of the product", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channels": { + "description": "The sales channels the product is associated with. Available if the relation `sales_channels` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductCategory": { + "title": "ProductCategory", + "description": "Represents a product category", + "x-resourceId": "ProductCategory", + "type": "object", + "required": [ + "category_children", + "created_at", + "handle", + "id", + "is_active", + "is_internal", + "mpath", + "name", + "parent_category_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The product category's ID", + "type": "string", + "example": "pcat_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "name": { + "description": "The product category's name", + "type": "string", + "example": "Regular Fit" + }, + "handle": { + "description": "A unique string that identifies the Product Category - can for example be used in slug structures.", + "type": "string", + "example": "regular-fit" + }, + "mpath": { + "description": "A string for Materialized Paths - used for finding ancestors and descendents", + "nullable": true, + "type": "string", + "example": "pcat_id1.pcat_id2.pcat_id3" + }, + "is_internal": { + "type": "boolean", + "description": "A flag to make product category an internal category for admins", + "default": false + }, + "is_active": { + "type": "boolean", + "description": "A flag to make product category visible/hidden in the store front", + "default": false + }, + "rank": { + "type": "integer", + "description": "An integer that depicts the rank of category in a tree node", + "default": 0 + }, + "category_children": { + "description": "Available if the relation `category_children` are expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "parent_category_id": { + "description": "The ID of the parent category.", + "nullable": true, + "type": "string", + "default": null + }, + "parent_category": { + "description": "A product category object. Available if the relation `parent_category` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCategory" + }, + "products": { + "description": "Products associated with category. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "ProductCollection": { + "title": "Product Collection", + "description": "Product Collections represents a group of Products that are related.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "handle", + "id", + "metadata", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The product collection's ID", + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "title": { + "description": "The title that the Product Collection is identified by.", + "type": "string", + "example": "Summer Collection" + }, + "handle": { + "description": "A unique string that identifies the Product Collection - can for example be used in slug structures.", + "nullable": true, + "type": "string", + "example": "summer-collection" + }, + "products": { + "description": "The Products contained in the Product Collection. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductOption": { + "title": "Product Option", + "description": "Product Options define properties that may vary between different variants of a Product. Common Product Options are \"Size\" and \"Color\", but Medusa doesn't limit what Product Options that can be defined.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "product_id", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The product option's ID", + "type": "string", + "example": "opt_01F0YESHQBZVKCEXJ24BS6PCX3" + }, + "title": { + "description": "The title that the Product Option is defined by (e.g. `Size`).", + "type": "string", + "example": "Size" + }, + "values": { + "description": "The Product Option Values that are defined for the Product Option. Available if the relation `values` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOptionValue" + } + }, + "product_id": { + "description": "The ID of the Product that the Product Option is defined for.", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "A product object. Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductOptionValue": { + "title": "Product Option Value", + "description": "A value given to a Product Variant's option set. Product Variant have a Product Option Value for each of the Product Options defined on the Product.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "option_id", + "updated_at", + "value", + "variant_id" + ], + "properties": { + "id": { + "description": "The product option value's ID", + "type": "string", + "example": "optval_01F0YESHR7S6ECD03RF6W12DSJ" + }, + "value": { + "description": "The value that the Product Variant has defined for the specific Product Option (e.g. if the Product Option is \\\"Size\\\" this value could be `Small`, `Medium` or `Large`).", + "type": "string", + "example": "large" + }, + "option_id": { + "description": "The ID of the Product Option that the Product Option Value is defined for.", + "type": "string", + "example": "opt_01F0YESHQBZVKCEXJ24BS6PCX3" + }, + "option": { + "description": "Available if the relation `option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductOption" + }, + "variant_id": { + "description": "The ID of the Product Variant that the Product Option Value is defined for.", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTag": { + "title": "Product Tag", + "description": "Product Tags can be added to Products for easy filtering and grouping.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The product tag's ID", + "type": "string", + "example": "ptag_01G8K2MTMG9168F2B70S1TAVK3" + }, + "value": { + "description": "The value that the Product Tag represents", + "type": "string", + "example": "Pants" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTaxRate": { + "title": "Product Tax Rate", + "description": "Associates a tax rate with a product to indicate that the product is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "product_id", + "rate_id", + "updated_at" + ], + "properties": { + "product_id": { + "description": "The ID of the Product", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "rate_id": { + "description": "The ID of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductType": { + "title": "Product Type", + "description": "Product Type can be added to Products for filtering and reporting purposes.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The product type's ID", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "value": { + "description": "The value that the Product Type represents.", + "type": "string", + "example": "Clothing" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTypeTaxRate": { + "title": "Product Type Tax Rate", + "description": "Associates a tax rate with a product type to indicate that the product type is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "product_type_id", + "rate_id", + "updated_at" + ], + "properties": { + "product_type_id": { + "description": "The ID of the Product type", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_type": { + "description": "Available if the relation `product_type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "rate_id": { + "description": "The id of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductVariant": { + "title": "Product Variant", + "description": "Product Variants represent a Product with a specific set of Product Option configurations. The maximum number of Product Variants that a Product can have is given by the number of available Product Option combinations.", + "type": "object", + "required": [ + "allow_backorder", + "barcode", + "created_at", + "deleted_at", + "ean", + "height", + "hs_code", + "id", + "inventory_quantity", + "length", + "manage_inventory", + "material", + "metadata", + "mid_code", + "origin_country", + "product_id", + "sku", + "title", + "upc", + "updated_at", + "weight", + "width" + ], + "properties": { + "id": { + "description": "The product variant's ID", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "title": { + "description": "A title that can be displayed for easy identification of the Product Variant.", + "type": "string", + "example": "Small" + }, + "product_id": { + "description": "The ID of the Product that the Product Variant belongs to.", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "A product object. Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "prices": { + "description": "The Money Amounts defined for the Product Variant. Each Money Amount represents a price in a given currency or a price in a specific Region. Available if the relation `prices` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyAmount" + } + }, + "sku": { + "description": "The unique stock keeping unit used to identify the Product Variant. This will usually be a unqiue identifer for the item that is to be shipped, and can be referenced across multiple systems.", + "nullable": true, + "type": "string", + "example": "shirt-123" + }, + "barcode": { + "description": "A generic field for a GTIN number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "ean": { + "description": "An EAN barcode number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "upc": { + "description": "A UPC barcode number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "variant_rank": { + "description": "The ranking of this variant", + "nullable": true, + "type": "number", + "default": 0 + }, + "inventory_quantity": { + "description": "The current quantity of the item that is stocked.", + "type": "integer", + "example": 100 + }, + "allow_backorder": { + "description": "Whether the Product Variant should be purchasable when `inventory_quantity` is 0.", + "type": "boolean", + "default": false + }, + "manage_inventory": { + "description": "Whether Medusa should manage inventory for the Product Variant.", + "type": "boolean", + "default": true + }, + "hs_code": { + "description": "The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "origin_country": { + "description": "The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "material": { + "description": "The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "weight": { + "description": "The weight of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "length": { + "description": "The length of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "height": { + "description": "The height of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "width": { + "description": "The width of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "options": { + "description": "The Product Option Values specified for the Product Variant. Available if the relation `options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOptionValue" + } + }, + "inventory_items": { + "description": "The Inventory Items related to the product variant. Available if the relation `inventory_items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductVariantInventoryItem" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductVariantInventoryItem": { + "title": "Product Variant Inventory Item", + "description": "Product Variant Inventory Items link variants with inventory items and denote the number of inventory items constituting a variant.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "inventory_item_id", + "required_quantity", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The product variant inventory item's ID", + "type": "string", + "example": "pvitem_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "inventory_item_id": { + "description": "The id of the inventory item", + "type": "string" + }, + "variant_id": { + "description": "The id of the variant.", + "type": "string" + }, + "variant": { + "description": "A ProductVariant object. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "required_quantity": { + "description": "The quantity of an inventory item required for one quantity of the variant.", + "type": "integer", + "default": 1 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "PublishableApiKey": { + "title": "Publishable API key", + "description": "Publishable API key defines scopes (i.e. resources) that are available within a request.", + "type": "object", + "required": [ + "created_at", + "created_by", + "id", + "revoked_by", + "revoked_at", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The key's ID", + "type": "string", + "example": "pk_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "created_by": { + "description": "The unique identifier of the user that created the key.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "revoked_by": { + "description": "The unique identifier of the user that revoked the key.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "revoked_at": { + "description": "The date with timezone at which the key was revoked.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "title": { + "description": "The key's title.", + "type": "string" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "PublishableApiKeySalesChannel": { + "title": "Publishable API key sales channel", + "description": "Holds mapping between Publishable API keys and Sales Channels", + "type": "object", + "required": [ + "publishable_key_id", + "sales_channel_id" + ], + "properties": { + "sales_channel_id": { + "description": "The sales channel's ID", + "type": "string", + "example": "sc_01G1G5V21KADXNGH29BJMAJ4B4" + }, + "publishable_key_id": { + "description": "The publishable API key's ID", + "type": "string", + "example": "pak_01G1G5V21KADXNGH29BJMAJ4B4" + } + } + }, + "Refund": { + "title": "Refund", + "description": "Refund represent an amount of money transfered back to the Customer for a given reason. Refunds may occur in relation to Returns, Swaps and Claims, but can also be initiated by a store operator.", + "type": "object", + "required": [ + "amount", + "created_at", + "id", + "idempotency_key", + "metadata", + "note", + "order_id", + "payment_id", + "reason", + "updated_at" + ], + "properties": { + "id": { + "description": "The refund's ID", + "type": "string", + "example": "ref_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "order_id": { + "description": "The id of the Order that the Refund is related to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "payment_id": { + "description": "The payment's ID if available", + "nullable": true, + "type": "string", + "example": "pay_01G8ZCC5W42ZNY842124G7P5R9" + }, + "payment": { + "description": "Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "amount": { + "description": "The amount that has be refunded to the Customer.", + "type": "integer", + "example": 1000 + }, + "note": { + "description": "An optional note explaining why the amount was refunded.", + "nullable": true, + "type": "string", + "example": "I didn't like it" + }, + "reason": { + "description": "The reason given for the Refund, will automatically be set when processed as part of a Swap, Claim or Return.", + "type": "string", + "enum": [ + "discount", + "return", + "swap", + "claim", + "other" + ], + "example": "return" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the refund in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Region": { + "title": "Region", + "description": "Regions hold settings for how Customers in a given geographical location shop. The is, for example, where currencies and tax rates are defined. A Region can consist of multiple countries to accomodate common shopping settings across countries.", + "type": "object", + "required": [ + "automatic_taxes", + "created_at", + "currency_code", + "deleted_at", + "gift_cards_taxable", + "id", + "metadata", + "name", + "tax_code", + "tax_provider_id", + "tax_rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "name": { + "description": "The name of the region as displayed to the customer. If the Region only has one country it is recommended to write the country name.", + "type": "string", + "example": "EU" + }, + "currency_code": { + "description": "The 3 character currency code that the Region uses.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "tax_rate": { + "description": "The tax rate that should be charged on purchases in the Region.", + "type": "number", + "example": 0 + }, + "tax_rates": { + "description": "The tax rates that are included in the Region. Available if the relation `tax_rates` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxRate" + } + }, + "tax_code": { + "description": "The tax code used on purchases in the Region. This may be used by other systems for accounting purposes.", + "nullable": true, + "type": "string", + "example": null + }, + "gift_cards_taxable": { + "description": "Whether the gift cards are taxable or not in this region.", + "type": "boolean", + "default": true + }, + "automatic_taxes": { + "description": "Whether taxes should be automated in this region.", + "type": "boolean", + "default": true + }, + "countries": { + "description": "The countries that are included in the Region. Available if the relation `countries` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + }, + "tax_provider_id": { + "description": "The ID of the tax provider used in this region", + "nullable": true, + "type": "string", + "example": null + }, + "tax_provider": { + "description": "Available if the relation `tax_provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxProvider" + }, + "payment_providers": { + "description": "The Payment Providers that can be used to process Payments in the Region. Available if the relation `payment_providers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentProvider" + } + }, + "fulfillment_providers": { + "description": "The Fulfillment Providers that can be used to fulfill orders in the Region. Available if the relation `fulfillment_providers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FulfillmentProvider" + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the prices for the region include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReservationItemDTO": { + "title": "Reservation item", + "description": "Represents a reservation of an inventory item at a stock location", + "type": "object", + "required": [ + "id", + "location_id", + "inventory_item_id", + "quantity" + ], + "properties": { + "id": { + "description": "The id of the reservation item", + "type": "string" + }, + "location_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "inventory_item_id": { + "description": "The id of the inventory item the reservation relates to", + "type": "string" + }, + "quantity": { + "description": "The id of the reservation item", + "type": "number" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "ResponseInventoryItem": { + "allOf": [ + { + "$ref": "#/components/schemas/InventoryItemDTO" + }, + { + "type": "object", + "required": [ + "available_quantity" + ], + "properties": { + "available_quantity": { + "type": "number" + } + } + } + ] + }, + "Return": { + "title": "Return", + "description": "Return orders hold information about Line Items that a Customer wishes to send back, along with how the items will be returned. Returns can be used as part of a Swap.", + "type": "object", + "required": [ + "claim_order_id", + "created_at", + "id", + "idempotency_key", + "location_id", + "metadata", + "no_notification", + "order_id", + "received_at", + "refund_amount", + "shipping_data", + "status", + "swap_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The return's ID", + "type": "string", + "example": "ret_01F0YET7XPCMF8RZ0Y151NZV2V" + }, + "status": { + "description": "Status of the Return.", + "type": "string", + "enum": [ + "requested", + "received", + "requires_action", + "canceled" + ], + "default": "requested" + }, + "items": { + "description": "The Return Items that will be shipped back to the warehouse. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ReturnItem" + } + }, + "swap_id": { + "description": "The ID of the Swap that the Return is a part of.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "claim_order_id": { + "description": "The ID of the Claim that the Return is a part of.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "order_id": { + "description": "The ID of the Order that the Return is made from.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "shipping_method": { + "description": "The Shipping Method that will be used to send the Return back. Can be null if the Customer facilitates the return shipment themselves. Available if the relation `shipping_method` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingMethod" + }, + "shipping_data": { + "description": "Data about the return shipment as provided by the Fulfilment Provider that handles the return shipment.", + "nullable": true, + "type": "object", + "example": {} + }, + "location_id": { + "description": "The id of the stock location the return will be added back.", + "nullable": true, + "type": "string", + "example": "sloc_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "refund_amount": { + "description": "The amount that should be refunded as a result of the return.", + "type": "integer", + "example": 1000 + }, + "no_notification": { + "description": "When set to true, no notification will be sent related to this return.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the return in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "received_at": { + "description": "The date with timezone at which the return was received.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReturnItem": { + "title": "Return Item", + "description": "Correlates a Line Item with a Return, keeping track of the quantity of the Line Item that will be returned.", + "type": "object", + "required": [ + "is_requested", + "item_id", + "metadata", + "note", + "quantity", + "reason_id", + "received_quantity", + "requested_quantity", + "return_id" + ], + "properties": { + "return_id": { + "description": "The id of the Return that the Return Item belongs to.", + "type": "string", + "example": "ret_01F0YET7XPCMF8RZ0Y151NZV2V" + }, + "item_id": { + "description": "The id of the Line Item that the Return Item references.", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "return_order": { + "description": "Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "quantity": { + "description": "The quantity of the Line Item that is included in the Return.", + "type": "integer", + "example": 1 + }, + "is_requested": { + "description": "Whether the Return Item was requested initially or received unexpectedly in the warehouse.", + "type": "boolean", + "default": true + }, + "requested_quantity": { + "description": "The quantity that was originally requested to be returned.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "received_quantity": { + "description": "The quantity that was received in the warehouse.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "reason_id": { + "description": "The ID of the reason for returning the item.", + "nullable": true, + "type": "string", + "example": "rr_01G8X82GCCV2KSQHDBHSSAH5TQ" + }, + "reason": { + "description": "Available if the relation `reason` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ReturnReason" + }, + "note": { + "description": "An optional note with additional details about the Return.", + "nullable": true, + "type": "string", + "example": "I didn't like it." + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReturnReason": { + "title": "Return Reason", + "description": "A Reason for why a given product is returned. A Return Reason can be used on Return Items in order to indicate why a Line Item was returned.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "id", + "label", + "metadata", + "parent_return_reason_id", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The return reason's ID", + "type": "string", + "example": "rr_01G8X82GCCV2KSQHDBHSSAH5TQ" + }, + "value": { + "description": "The value to identify the reason by.", + "type": "string", + "example": "damaged" + }, + "label": { + "description": "A text that can be displayed to the Customer as a reason.", + "type": "string", + "example": "Damaged goods" + }, + "description": { + "description": "A description of the Reason.", + "nullable": true, + "type": "string", + "example": "Items that are damaged" + }, + "parent_return_reason_id": { + "description": "The ID of the parent reason.", + "nullable": true, + "type": "string", + "example": null + }, + "parent_return_reason": { + "description": "Available if the relation `parent_return_reason` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ReturnReason" + }, + "return_reason_children": { + "description": "Available if the relation `return_reason_children` is expanded.", + "$ref": "#/components/schemas/ReturnReason" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "SalesChannel": { + "title": "Sales Channel", + "description": "A Sales Channel", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "id", + "is_disabled", + "name", + "updated_at" + ], + "properties": { + "id": { + "description": "The sales channel's ID", + "type": "string", + "example": "sc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "name": { + "description": "The name of the sales channel.", + "type": "string", + "example": "Market" + }, + "description": { + "description": "The description of the sales channel.", + "nullable": true, + "type": "string", + "example": "Multi-vendor market" + }, + "is_disabled": { + "description": "Specify if the sales channel is enabled or disabled.", + "type": "boolean", + "default": false + }, + "locations": { + "description": "The Stock Locations related to the sales channel. Available if the relation `locations` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannelLocation" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "SalesChannelLocation": { + "title": "Sales Channel Stock Location", + "description": "Sales Channel Stock Location link sales channels with stock locations.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "location_id", + "sales_channel_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The Sales Channel Stock Location's ID", + "type": "string", + "example": "scloc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "sales_channel_id": { + "description": "The id of the Sales Channel", + "type": "string", + "example": "sc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "location_id": { + "description": "The id of the Location Stock.", + "type": "string" + }, + "sales_channel": { + "description": "The sales channel the location is associated with. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "ShippingMethod": { + "title": "Shipping Method", + "description": "Shipping Methods represent a way in which an Order or Return can be shipped. Shipping Methods are built from a Shipping Option, but may contain additional details, that can be necessary for the Fulfillment Provider to handle the shipment.", + "type": "object", + "required": [ + "cart_id", + "claim_order_id", + "data", + "id", + "order_id", + "price", + "return_id", + "shipping_option_id", + "swap_id" + ], + "properties": { + "id": { + "description": "The shipping method's ID", + "type": "string", + "example": "sm_01F0YET7DR2E7CYVSDHM593QG2" + }, + "shipping_option_id": { + "description": "The id of the Shipping Option that the Shipping Method is built from.", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "order_id": { + "description": "The id of the Order that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "claim_order_id": { + "description": "The id of the Claim that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "cart_id": { + "description": "The id of the Cart that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "swap_id": { + "description": "The id of the Swap that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "return_id": { + "description": "The id of the Return that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "return_order": { + "description": "A return object. Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "tax_lines": { + "description": "Available if the relation `tax_lines` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethodTaxLine" + } + }, + "price": { + "description": "The amount to charge for the Shipping Method. The currency of the price is defined by the Region that the Order that the Shipping Method belongs to is a part of.", + "type": "integer", + "example": 200 + }, + "data": { + "description": "Additional data that the Fulfillment Provider needs to fulfill the shipment. This is used in combination with the Shipping Options data, and may contain information such as a drop point id.", + "type": "object", + "example": {} + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Indicates if the shipping method price include tax", + "type": "boolean", + "default": false + }, + "subtotal": { + "description": "The subtotal of the shipping", + "type": "integer", + "example": 8000 + }, + "total": { + "description": "The total amount of the shipping", + "type": "integer", + "example": 8200 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + } + } + }, + "ShippingMethodTaxLine": { + "title": "Shipping Method Tax Line", + "description": "Shipping Method Tax Line", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "shipping_method_id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The line item tax line's ID", + "type": "string", + "example": "smtl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "shipping_method_id": { + "description": "The ID of the line item", + "type": "string", + "example": "sm_01F0YET7DR2E7CYVSDHM593QG2" + }, + "shipping_method": { + "description": "Available if the relation `shipping_method` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingMethod" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingOption": { + "title": "Shipping Option", + "description": "Shipping Options represent a way in which an Order or Return can be shipped. Shipping Options have an associated Fulfillment Provider that will be used when the fulfillment of an Order is initiated. Shipping Options themselves cannot be added to Carts, but serve as a template for Shipping Methods. This distinction makes it possible to customize individual Shipping Methods with additional information.", + "type": "object", + "required": [ + "admin_only", + "amount", + "created_at", + "data", + "deleted_at", + "id", + "is_return", + "metadata", + "name", + "price_type", + "profile_id", + "provider_id", + "region_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The shipping option's ID", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "name": { + "description": "The name given to the Shipping Option - this may be displayed to the Customer.", + "type": "string", + "example": "PostFake Standard" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "profile_id": { + "description": "The ID of the Shipping Profile that the shipping option belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products.", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "profile": { + "description": "Available if the relation `profile` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingProfile" + }, + "provider_id": { + "description": "The id of the Fulfillment Provider, that will be used to process Fulfillments from the Shipping Option.", + "type": "string", + "example": "manual" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "price_type": { + "description": "The type of pricing calculation that is used when creatin Shipping Methods from the Shipping Option. Can be `flat_rate` for fixed prices or `calculated` if the Fulfillment Provider can provide price calulations.", + "type": "string", + "enum": [ + "flat_rate", + "calculated" + ], + "example": "flat_rate" + }, + "amount": { + "description": "The amount to charge for shipping when the Shipping Option price type is `flat_rate`.", + "nullable": true, + "type": "integer", + "example": 200 + }, + "is_return": { + "description": "Flag to indicate if the Shipping Option can be used for Return shipments.", + "type": "boolean", + "default": false + }, + "admin_only": { + "description": "Flag to indicate if the Shipping Option usage is restricted to admin users.", + "type": "boolean", + "default": false + }, + "requirements": { + "description": "The requirements that must be satisfied for the Shipping Option to be available for a Cart. Available if the relation `requirements` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingOptionRequirement" + } + }, + "data": { + "description": "The data needed for the Fulfillment Provider to identify the Shipping Option.", + "type": "object", + "example": {} + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the shipping option price include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingOptionRequirement": { + "title": "Shipping Option Requirement", + "description": "A requirement that a Cart must satisfy for the Shipping Option to be available to the Cart.", + "type": "object", + "required": [ + "amount", + "deleted_at", + "id", + "shipping_option_id", + "type" + ], + "properties": { + "id": { + "description": "The shipping option requirement's ID", + "type": "string", + "example": "sor_01G1G5V29AB4CTNDRFSRWSRKWD" + }, + "shipping_option_id": { + "description": "The id of the Shipping Option that the hipping option requirement belongs to", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "type": { + "description": "The type of the requirement, this defines how the value will be compared to the Cart's total. `min_subtotal` requirements define the minimum subtotal that is needed for the Shipping Option to be available, while the `max_subtotal` defines the maximum subtotal that the Cart can have for the Shipping Option to be available.", + "type": "string", + "enum": [ + "min_subtotal", + "max_subtotal" + ], + "example": "min_subtotal" + }, + "amount": { + "description": "The amount to compare the Cart subtotal to.", + "type": "integer", + "example": 100 + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "ShippingProfile": { + "title": "Shipping Profile", + "description": "Shipping Profiles have a set of defined Shipping Options that can be used to fulfill a given set of Products.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "name", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The shipping profile's ID", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "name": { + "description": "The name given to the Shipping profile - this may be displayed to the Customer.", + "type": "string", + "example": "Default Shipping Profile" + }, + "type": { + "description": "The type of the Shipping Profile, may be `default`, `gift_card` or `custom`.", + "type": "string", + "enum": [ + "default", + "gift_card", + "custom" + ], + "example": "default" + }, + "products": { + "description": "The Products that the Shipping Profile defines Shipping Options for. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "shipping_options": { + "description": "The Shipping Options that can be used to fulfill the Products in the Shipping Profile. Available if the relation `shipping_options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingOption" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingTaxRate": { + "title": "Shipping Tax Rate", + "description": "Associates a tax rate with a shipping option to indicate that the shipping option is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "rate_id", + "shipping_option_id", + "updated_at" + ], + "properties": { + "shipping_option_id": { + "description": "The ID of the Shipping Option", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "rate_id": { + "description": "The ID of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "StagedJob": { + "title": "Staged Job", + "description": "A staged job resource", + "type": "object", + "required": [ + "data", + "event_name", + "id", + "options" + ], + "properties": { + "id": { + "description": "The staged job's ID", + "type": "string", + "example": "job_01F0YET7BZTARY9MKN1SJ7AAXF" + }, + "event_name": { + "description": "The name of the event", + "type": "string", + "example": "order.placed" + }, + "data": { + "description": "Data necessary for the job", + "type": "object", + "example": {} + }, + "option": { + "description": "The staged job's option", + "type": "object", + "example": {} + } + } + }, + "StockLocationAddressDTO": { + "title": "Stock Location Address", + "description": "Represents a Stock Location Address", + "type": "object", + "required": [ + "address_1", + "country_code", + "created_at", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "The stock location address' ID", + "example": "laddr_51G4ZW853Y6TFXWPG5ENJ81X42" + }, + "address_1": { + "type": "string", + "description": "Stock location address", + "example": "35, Jhon Doe Ave" + }, + "address_2": { + "type": "string", + "description": "Stock location address' complement", + "example": "apartment 4432" + }, + "company": { + "type": "string", + "description": "Stock location company' name", + "example": "Medusa" + }, + "city": { + "type": "string", + "description": "Stock location address' city", + "example": "Mexico city" + }, + "country_code": { + "type": "string", + "description": "Stock location address' country", + "example": "MX" + }, + "phone": { + "type": "string", + "description": "Stock location address' phone number", + "example": "+1 555 61646" + }, + "postal_code": { + "type": "string", + "description": "Stock location address' postal code", + "example": "HD3-1G8" + }, + "province": { + "type": "string", + "description": "Stock location address' province", + "example": "Sinaloa" + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "StockLocationAddressInput": { + "title": "Stock Location Address Input", + "description": "Represents a Stock Location Address Input", + "type": "object", + "required": [ + "address_1", + "country_code" + ], + "properties": { + "address_1": { + "type": "string", + "description": "Stock location address", + "example": "35, Jhon Doe Ave" + }, + "address_2": { + "type": "string", + "description": "Stock location address' complement", + "example": "apartment 4432" + }, + "city": { + "type": "string", + "description": "Stock location address' city", + "example": "Mexico city" + }, + "country_code": { + "type": "string", + "description": "Stock location address' country", + "example": "MX" + }, + "phone": { + "type": "string", + "description": "Stock location address' phone number", + "example": "+1 555 61646" + }, + "postal_code": { + "type": "string", + "description": "Stock location address' postal code", + "example": "HD3-1G8" + }, + "province": { + "type": "string", + "description": "Stock location address' province", + "example": "Sinaloa" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "StockLocationDTO": { + "title": "Stock Location", + "description": "Represents a Stock Location", + "type": "object", + "required": [ + "id", + "name", + "address_id", + "created_at", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "The stock location's ID", + "example": "sloc_51G4ZW853Y6TFXWPG5ENJ81X42" + }, + "address_id": { + "type": "string", + "description": "Stock location address' ID", + "example": "laddr_05B2ZE853Y6FTXWPW85NJ81A44" + }, + "name": { + "type": "string", + "description": "The name of the stock location", + "example": "Main Warehouse" + }, + "address": { + "description": "The Address of the Stock Location", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressDTO" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "StockLocationExpandedDTO": { + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationDTO" + }, + { + "type": "object", + "properties": { + "sales_channels": { + "$ref": "#/components/schemas/SalesChannel" + } + } + } + ] + }, + "Store": { + "title": "Store", + "description": "Holds settings for the Store, such as name, currencies, etc.", + "type": "object", + "required": [ + "created_at", + "default_currency_code", + "default_location_id", + "id", + "invite_link_template", + "metadata", + "name", + "payment_link_template", + "swap_link_template", + "updated_at" + ], + "properties": { + "id": { + "description": "The store's ID", + "type": "string", + "example": "store_01G1G5V21KADXNGH29BJMAJ4B4" + }, + "name": { + "description": "The name of the Store - this may be displayed to the Customer.", + "type": "string", + "example": "Medusa Store" + }, + "default_currency_code": { + "description": "The 3 character currency code that is the default of the store.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "default_currency": { + "description": "Available if the relation `default_currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "currencies": { + "description": "The currencies that are enabled for the Store. Available if the relation `currencies` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + }, + "swap_link_template": { + "description": "A template to generate Swap links from. Use {{cart_id}} to include the Swap's `cart_id` in the link.", + "nullable": true, + "type": "string", + "example": null + }, + "payment_link_template": { + "description": "A template to generate Payment links from. Use {{cart_id}} to include the payment's `cart_id` in the link.", + "nullable": true, + "type": "string", + "example": null + }, + "invite_link_template": { + "description": "A template to generate Invite links from", + "nullable": true, + "type": "string", + "example": null + }, + "default_location_id": { + "description": "The location ID the store is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "default_sales_channel_id": { + "description": "The sales channel ID the cart is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "default_sales_channel": { + "description": "A sales channel object. Available if the relation `default_sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Swap": { + "title": "Swap", + "description": "Swaps can be created when a Customer wishes to exchange Products that they have purchased to different Products. Swaps consist of a Return of previously purchased Products and a Fulfillment of new Products, the amount paid for the Products being returned will be used towards payment for the new Products. In the case where the amount paid for the the Products being returned exceed the amount to be paid for the new Products, a Refund will be issued for the difference.", + "type": "object", + "required": [ + "allow_backorder", + "canceled_at", + "cart_id", + "confirmed_at", + "created_at", + "deleted_at", + "difference_due", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "order_id", + "payment_status", + "shipping_address_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The swap's ID", + "type": "string", + "example": "swap_01F0YET86Y9G92D3YDR9Y6V676" + }, + "fulfillment_status": { + "description": "The status of the Fulfillment of the Swap.", + "type": "string", + "enum": [ + "not_fulfilled", + "fulfilled", + "shipped", + "partially_shipped", + "canceled", + "requires_action" + ], + "example": "not_fulfilled" + }, + "payment_status": { + "description": "The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount.", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "captured", + "confirmed", + "canceled", + "difference_refunded", + "partially_refunded", + "refunded", + "requires_action" + ], + "example": "not_paid" + }, + "order_id": { + "description": "The ID of the Order where the Line Items to be returned where purchased.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "additional_items": { + "description": "The new Line Items to ship to the Customer. Available if the relation `additional_items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "return_order": { + "description": "A return order object. The Return that is issued for the return part of the Swap. Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "fulfillments": { + "description": "The Fulfillments used to send the new Line Items. Available if the relation `fulfillments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "payment": { + "description": "The Payment authorized when the Swap requires an additional amount to be charged from the Customer. Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "difference_due": { + "description": "The difference that is paid or refunded as a result of the Swap. May be negative when the amount paid for the returned items exceed the total of the new Products.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "shipping_address_id": { + "description": "The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order.", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_methods": { + "description": "The Shipping Methods used to fulfill the additional items purchased. Available if the relation `shipping_methods` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "cart_id": { + "description": "The id of the Cart that the Customer will use to confirm the Swap.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "confirmed_at": { + "description": "The date with timezone at which the Swap was confirmed by the Customer.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date with timezone at which the Swap was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "If set to true, no notification will be sent related to this swap", + "nullable": true, + "type": "boolean", + "example": false + }, + "allow_backorder": { + "description": "If true, swaps can be completed with items out of stock", + "type": "boolean", + "default": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the swap in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TaxLine": { + "title": "Tax Line", + "description": "Line item that specifies an amount of tax to add to a line item.", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The tax line's ID", + "type": "string", + "example": "tl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TaxProvider": { + "title": "Tax Provider", + "description": "The tax service used to calculate taxes", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the tax provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "TaxRate": { + "title": "Tax Rate", + "description": "A Tax Rate can be used to associate a certain rate to charge on products within a given Region", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "metadata", + "name", + "rate", + "region_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The tax rate's ID", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "rate": { + "description": "The numeric rate to charge", + "nullable": true, + "type": "number", + "example": 10 + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "region_id": { + "description": "The id of the Region that the rate belongs to", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "products": { + "description": "The products that belong to this tax rate. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "product_types": { + "description": "The product types that belong to this tax rate. Available if the relation `product_types` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "shipping_options": { + "type": "array", + "description": "The shipping options that belong to this tax rate. Available if the relation `shipping_options` is expanded.", + "items": { + "$ref": "#/components/schemas/ShippingOption" + } + }, + "product_count": { + "description": "The count of products", + "type": "integer", + "example": 10 + }, + "product_type_count": { + "description": "The count of product types", + "type": "integer", + "example": 2 + }, + "shipping_option_count": { + "description": "The count of shipping options", + "type": "integer", + "example": 1 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TrackingLink": { + "title": "Tracking Link", + "description": "Tracking Link holds information about tracking numbers for a Fulfillment. Tracking Links can optionally contain a URL that can be visited to see the status of the shipment.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "fulfillment_id", + "id", + "idempotency_key", + "metadata", + "tracking_number", + "updated_at", + "url" + ], + "properties": { + "id": { + "description": "The tracking link's ID", + "type": "string", + "example": "tlink_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "url": { + "description": "The URL at which the status of the shipment can be tracked.", + "nullable": true, + "type": "string", + "format": "uri" + }, + "tracking_number": { + "description": "The tracking number given by the shipping carrier.", + "type": "string", + "format": "RH370168054CN" + }, + "fulfillment_id": { + "description": "The id of the Fulfillment that the Tracking Link references.", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "fulfillment": { + "description": "Available if the relation `fulfillment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Fulfillment" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a process in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "UpdateStockLocationInput": { + "title": "Update Stock Location Input", + "description": "Represents the Input to update a Stock Location", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The stock location name" + }, + "address_id": { + "type": "string", + "description": "The Stock location address ID" + }, + "address": { + "description": "Stock location address object", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressInput" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "User": { + "title": "User", + "description": "Represents a User who can manage store settings.", + "type": "object", + "required": [ + "api_token", + "created_at", + "deleted_at", + "email", + "first_name", + "id", + "last_name", + "metadata", + "role", + "updated_at" + ], + "properties": { + "id": { + "description": "The user's ID", + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "role": { + "description": "The user's role", + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ], + "default": "member" + }, + "email": { + "description": "The email of the User", + "type": "string", + "format": "email" + }, + "first_name": { + "description": "The first name of the User", + "nullable": true, + "type": "string", + "example": "Levi" + }, + "last_name": { + "description": "The last name of the User", + "nullable": true, + "type": "string", + "example": "Bogan" + }, + "api_token": { + "description": "An API token associated with the user.", + "nullable": true, + "type": "string", + "example": null + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "VariantInventory": { + "type": "object", + "properties": { + "id": { + "description": "the id of the variant", + "type": "string" + }, + "inventory": { + "description": "the stock location address ID", + "$ref": "#/components/schemas/ResponseInventoryItem" + }, + "sales_channel_availability": { + "type": "object", + "description": "An optional key-value map with additional details", + "properties": { + "channel_name": { + "description": "Sales channel name", + "type": "string" + }, + "channel_id": { + "description": "Sales channel id", + "type": "string" + }, + "available_quantity": { + "description": "Available quantity in sales channel", + "type": "number" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/api/admin.oas.yaml b/docs/api/admin.oas.yaml new file mode 100644 index 0000000000..415beed096 --- /dev/null +++ b/docs/api/admin.oas.yaml @@ -0,0 +1,30611 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: Medusa Admin API + description: | + API reference for Medusa's Admin endpoints. All endpoints are prefixed with `/admin`. + + ## Authentication + + There are two ways to send authenticated requests to the Medusa server: Using a user's API token, or using a Cookie Session ID. + + + + ## Expanding Fields + + In many endpoints you'll find an `expand` query parameter that can be passed to the endpoint. You can use the `expand` query parameter to unpack an entity's relations and return them in the response. + + Please note that the relations you pass to `expand` replace any relations that are expanded by default in the request. + + ### Expanding One Relation + + For example, when you retrieve products, you can retrieve their collection by passing to the `expand` query parameter the value `collection`: + + ```bash + curl "http://localhost:9000/admin/products?expand=collection" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Expanding Multiple Relations + + You can expand more than one relation by separating the relations in the `expand` query parameter with a comma. + + For example, to retrieve both the variants and the collection of products, pass to the `expand` query parameter the value `variants,collection`: + + ```bash + curl "http://localhost:9000/admin/products?expand=variants,collection" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Prevent Expanding Relations + + Some requests expand relations by default. You can prevent that by passing an empty expand value to retrieve an entity without any extra relations. + + For example: + + ```bash + curl "http://localhost:9000/admin/products?expand" \ + -H 'Authorization: Bearer {api_token}' + ``` + + This would retrieve each product with only its properties, without any relations like `collection`. + + ## Selecting Fields + + In many endpoints you'll find a `fields` query parameter that can be passed to the endpoint. You can use the `fields` query parameter to specify which fields in the entity should be returned in the response. + + Please note that if you pass a `fields` query parameter, only the fields you pass in the value along with the `id` of the entity will be returned in the response. + + Also, the `fields` query parameter does not affect the expanded relations. You'll have to use the `expand` parameter instead. + + ### Selecting One Field + + For example, when you retrieve a list of products, you can retrieve only the titles of the products by passing `title` as a value to the `fields` query parameter: + + ```bash + curl "http://localhost:9000/admin/products?fields=title" \ + -H 'Authorization: Bearer {api_token}' + ``` + + As mentioned above, the expanded relations such as `variants` will still be returned as they're not affected by the `fields` parameter. + + You can ensure that only the `title` field is returned by passing an empty value to the `expand` query parameter. For example: + + ```bash + curl "http://localhost:9000/admin/products?fields=title&expand" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Selecting Multiple Fields + + You can pass more than one field by seperating the field names in the `fields` query parameter with a comma. + + For example, to select the `title` and `handle` of products: + + ```bash + curl "http://localhost:9000/admin/products?fields=title,handle" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Retrieve Only the ID + + You can pass an empty `fields` query parameter to return only the ID of an entity. For example: + + ```bash + curl "http://localhost:9000/admin/products?fields" \ + -H 'Authorization: Bearer {api_token}' + ``` + + You can also pair with an empty `expand` query parameter to ensure that the relations aren't retrieved as well. For example: + + ```bash + curl "http://localhost:9000/admin/products?fields&expand" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ## Query Parameter Types + + This section covers how to pass some common data types as query parameters. This is useful if you're sending requests to the API endpoints and not using our JS Client. For example, when using cURL or Postman. + + ### Strings + + You can pass a string value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/admin/products?title=Shirt" \ + -H 'Authorization: Bearer {api_token}' + ``` + + If the string has any characters other than letters and numbers, you must encode them. + + For example, if the string has spaces, you can encode the space with `+` or `%20`: + + ```bash + curl "http://localhost:9000/admin/products?title=Blue%20Shirt" \ + -H 'Authorization: Bearer {api_token}' + ``` + + You can use tools like [this one](https://www.urlencoder.org/) to learn how a value can be encoded. + + ### Integers + + You can pass an integer value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/admin/products?offset=1" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Boolean + + You can pass a boolean value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/admin/products?is_giftcard=true" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Date and DateTime + + You can pass a date value in the form `=`. The date must be in the format `YYYY-MM-DD`. + + For example: + + ```bash + curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17" \ + -H 'Authorization: Bearer {api_token}' + ``` + + You can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please note that the `T` and `Z` here are fixed. + + For example: + + ```bash + curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17T07:22:30Z" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Array + + Each array value must be passed as a separate query parameter in the form `[]=`. You can also specify the index of each parameter in the brackets `[0]=`. + + For example: + + ```bash + curl -g "http://localhost:9000/admin/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7" \ + -H 'Authorization: Bearer {api_token}' + ``` + + Note that the `-g` parameter passed to `curl` disables errors being thrown for using the brackets. Read more [here](https://curl.se/docs/manpage.html#-g). + + ### Object + + Object parameters must be passed as separate query parameters in the form `[]=`. + + For example: + + ```bash + curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ## Pagination + + ### Query Parameters + + In listing endpoints, such as list customers or list products, you can control the pagination using the query parameters `limit` and `offset`. + + `limit` is used to specify the maximum number of items that can be return in the response. `offset` is used to specify how many items to skip before returning the resulting entities. + + You can use the `offset` query parameter to change between pages. For example, if the limit is 50, at page 1 the offset should be 0; at page 2 the offset should be 50, and so on. + + For example, to limit the number of products returned in the List Products endpoint: + + ```bash + curl "http://localhost:9000/admin/products?limit=5" \ + -H 'Authorization: Bearer {api_token}' + ``` + + ### Response Fields + + In the response of listing endpoints, aside from the entities retrieved, there are three pagination-related fields returned: `count`, `limit`, and `offset`. + + Similar to the query parameters, `limit` is the maximum number of items that can be returned in the response, and `field` is the number of items that were skipped before the entities in the result. + + `count` is the total number of available items of this entity. It can be used to determine how many pages are there. + + For example, if the `count` is 100 and the `limit` is 50, you can divide the `count` by the `limit` to get the number of pages: `100/50 = 2 pages`. + license: + name: MIT + url: https://github.com/medusajs/medusa/blob/master/LICENSE +tags: + - name: Auth + description: Auth endpoints that allow authorization of admin Users and manages their sessions. + - name: Apps + description: App endpoints that allow handling apps in Medusa. + - name: Batch Jobs + description: Batch Job endpoints that allow handling batch jobs in Medusa. + - name: Collections + description: Collection endpoints that allow handling collections in Medusa. + - name: Customers + description: Customer endpoints that allow handling customers in Medusa. + - name: Customer Groups + description: Customer Group endpoints that allow handling customer groups in Medusa. + - name: Discounts + description: Discount endpoints that allow handling discounts in Medusa. + - name: Draft Orders + description: Draft Order endpoints that allow handling draft orders in Medusa. + - name: Gift Cards + description: Gift Card endpoints that allow handling gift cards in Medusa. + - name: Invites + description: Invite endpoints that allow handling invites in Medusa. + - name: Notes + description: Note endpoints that allow handling notes in Medusa. + - name: Notifications + description: Notification endpoints that allow handling notifications in Medusa. + - name: Orders + description: Order endpoints that allow handling orders in Medusa. + - name: Price Lists + description: Price List endpoints that allow handling price lists in Medusa. + - name: Products + description: Product endpoints that allow handling products in Medusa. + - name: Product Tags + description: Product Tag endpoints that allow handling product tags in Medusa. + - name: Product Types + description: Product Types endpoints that allow handling product types in Medusa. + - name: Regions + description: Region endpoints that allow handling regions in Medusa. + - name: Return Reasons + description: Return Reason endpoints that allow handling return reasons in Medusa. + - name: Returns + description: Return endpoints that allow handling returns in Medusa. + - name: Sales Channels + description: Sales Channel endpoints that allow handling sales channels in Medusa. + - name: Shipping Options + description: Shipping Option endpoints that allow handling shipping options in Medusa. + - name: Shipping Profiles + description: Shipping Profile endpoints that allow handling shipping profiles in Medusa. + - name: Store + description: Store endpoints that allow handling stores in Medusa. + - name: Swaps + description: Swap endpoints that allow handling swaps in Medusa. + - name: Tax Rates + description: Tax Rate endpoints that allow handling tax rates in Medusa. + - name: Uploads + description: Upload endpoints that allow handling uploads in Medusa. + - name: Users + description: User endpoints that allow handling users in Medusa. + - name: Variants + description: Product Variant endpoints that allow handling product variants in Medusa. +servers: + - url: https://api.medusa-commerce.com +paths: + /admin/apps: + get: + operationId: GetApps + summary: List Applications + description: Retrieve a list of applications. + x-authenticated: true + x-codegen: + method: list + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/apps' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Apps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAppsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/apps/authorizations: + post: + operationId: PostApps + summary: Generate Token for App + description: Generates a token for an application. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostAppsReq' + x-codegen: + method: authorize + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/apps/authorizations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "application_name": "example", + "state": "ready", + "code": "token" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Apps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAppsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/auth: + get: + operationId: GetAuth + summary: Get Current User + x-authenticated: true + description: Gets the currently logged in User. + x-codegen: + method: getSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.auth.getSession() + .then(({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/auth' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAuthRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostAuth + summary: User Login + x-authenticated: false + description: Logs a User in and authorizes them to manage Store settings. + parameters: [] + requestBody: + content: + application/json: + schema: + type: object + required: + - email + - password + properties: + email: + type: string + description: The User's email. + password: + type: string + description: The User's password. + x-codegen: + method: createSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.admin.auth.createSession({ + email: 'user@example.com', + password: 'supersecret' + }).then((({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/auth' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret" + }' + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAuthRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/incorrect_credentials' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteAuth + summary: User Logout + x-authenticated: true + description: Deletes the current session for the logged in user. + x-codegen: + method: deleteSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.auth.deleteSession() + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/auth' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/batch-jobs: + get: + operationId: GetBatchJobs + summary: List Batch Jobs + description: Retrieve a list of Batch Jobs. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of batch jobs to return. + schema: + type: integer + default: 10 + - in: query + name: offset + description: The number of batch jobs to skip before results. + schema: + type: integer + default: 0 + - in: query + name: id + style: form + explode: false + description: Filter by the batch ID + schema: + oneOf: + - type: string + description: batch job ID + - type: array + description: multiple batch job IDs + items: + type: string + - in: query + name: type + style: form + explode: false + description: Filter by the batch type + schema: + type: array + items: + type: string + - in: query + name: confirmed_at + style: form + explode: false + description: Date comparison for when resulting collections was confirmed, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: pre_processed_at + style: form + explode: false + description: Date comparison for when resulting collections was pre processed, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: completed_at + style: form + explode: false + description: Date comparison for when resulting collections was completed, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: failed_at + style: form + explode: false + description: Date comparison for when resulting collections was failed, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: canceled_at + style: form + explode: false + description: Date comparison for when resulting collections was canceled, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: order + description: Field used to order retrieved batch jobs + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each order of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each order of the result. + schema: + type: string + - in: query + name: created_at + style: form + explode: false + description: Date comparison for when resulting collections was created, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + style: form + explode: false + description: Date comparison for when resulting collections was updated, i.e. less than, greater than etc. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: AdminGetBatchParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.batchJobs.list() + .then(({ batch_jobs, limit, offset, count }) => { + console.log(batch_jobs.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/batch-jobs' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminBatchJobListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostBatchJobs + summary: Create a Batch Job + description: Creates a Batch Job. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostBatchesReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.batchJobs.create({ + type: 'product-export', + context: {}, + dry_run: false + }).then((({ batch_job }) => { + console.log(batch_job.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/batch-jobs' \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer {api_token}' \ + --data-raw '{ + "type": "product-export", + "context": { } + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '201': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminBatchJobRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/batch-jobs/{id}: + get: + operationId: GetBatchJobsBatchJob + summary: Get a Batch Job + description: Retrieves a Batch Job. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Batch Job + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.batchJobs.retrieve(batch_job_id) + .then(({ batch_job }) => { + console.log(batch_job.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/batch-jobs/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminBatchJobRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/batch-jobs/{id}/cancel: + post: + operationId: PostBatchJobsBatchJobCancel + summary: Cancel a Batch Job + description: Marks a batch job as canceled + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the batch job. + schema: + type: string + x-codegen: + method: cancel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.batchJobs.cancel(batch_job_id) + .then(({ batch_job }) => { + console.log(batch_job.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/batch-jobs/{id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminBatchJobRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/batch-jobs/{id}/confirm: + post: + operationId: PostBatchJobsBatchJobConfirmProcessing + summary: Confirm a Batch Job + description: Confirms that a previously requested batch job should be executed. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the batch job. + schema: + type: string + x-codegen: + method: confirm + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.batchJobs.confirm(batch_job_id) + .then(({ batch_job }) => { + console.log(batch_job.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/batch-jobs/{id}/confirm' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminBatchJobRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/collections: + get: + operationId: GetCollections + summary: List Collections + description: Retrieve a list of Product Collection. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of collections to return. + schema: + type: integer + default: 10 + - in: query + name: offset + description: The number of collections to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: title + description: The title of collections to return. + schema: + type: string + - in: query + name: handle + description: The handle of collections to return. + schema: + type: string + - in: query + name: q + description: a search term to search titles and handles. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the product collections. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting collections were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting collections were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting collections were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: AdminGetCollectionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.collections.list() + .then(({ collections, limit, offset, count }) => { + console.log(collections.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/collections' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCollections + summary: Create a Collection + description: Creates a Product Collection. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCollectionsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.collections.create({ + title: 'New Collection' + }) + .then(({ collection }) => { + console.log(collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/collections' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "New Collection" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/collections/{id}: + get: + operationId: GetCollectionsCollection + summary: Get a Collection + description: Retrieves a Product Collection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Collection + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.collections.retrieve(collection_id) + .then(({ collection }) => { + console.log(collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/collections/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCollectionsCollection + summary: Update a Collection + description: Updates a Product Collection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Collection. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCollectionsCollectionReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.collections.update(collection_id, { + title: 'New Collection' + }) + .then(({ collection }) => { + console.log(collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/collections/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "New Collection" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCollectionsCollection + summary: Delete a Collection + description: Deletes a Product Collection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Collection. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.collections.delete(collection_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/collections/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/collections/{id}/products/batch: + post: + operationId: PostProductsToCollection + summary: Update Products + description: Updates products associated with a Product Collection + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Collection. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsToCollectionReq' + x-codegen: + method: addProducts + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/collections/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + "prod_01G1G5V2MBA328390B5AXJ610F" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductsFromCollection + summary: Remove Product + description: Removes products associated with a Product Collection + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Collection. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteProductsFromCollectionReq' + x-codegen: + method: removeProducts + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/collections/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + "prod_01G1G5V2MBA328390B5AXJ610F" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteProductsFromCollectionRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/currencies: + get: + operationId: GetCurrencies + summary: List Currency + description: Retrieves a list of Currency + x-authenticated: true + parameters: + - in: query + name: code + description: Code of the currency to search for. + schema: + type: string + - in: query + name: includes_tax + description: Search for tax inclusive currencies. + schema: + type: boolean + - in: query + name: order + description: order to retrieve products in. + schema: + type: string + - in: query + name: offset + description: How many products to skip in the result. + schema: + type: number + default: '0' + - in: query + name: limit + description: Limit the number of products returned. + schema: + type: number + default: '20' + x-codegen: + method: list + queryParams: AdminGetCurrenciesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.currencies.list() + .then(({ currencies, count, offset, limit }) => { + console.log(currencies.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/currencies' \ + --header 'Authorization: Bearer {api_token}' + tags: + - Currencies + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCurrenciesListRes' + /admin/currencies/{code}: + post: + operationId: PostCurrenciesCurrency + summary: Update a Currency + description: Update a Currency + x-authenticated: true + parameters: + - in: path + name: code + required: true + description: The code of the Currency. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCurrenciesCurrencyReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.currencies.update(code, { + includes_tax: true + }) + .then(({ currency }) => { + console.log(currency.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/currencies/{code}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "includes_tax": true + }' + tags: + - Currencies + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCurrenciesRes' + /admin/customer-groups: + get: + operationId: GetCustomerGroups + summary: List Customer Groups + description: Retrieve a list of customer groups. + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching customer group names. + schema: + type: string + - in: query + name: offset + description: How many groups to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: order + description: the field used to order the customer groups. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the customer groups. + schema: + type: string + - in: query + name: id + style: form + explode: false + description: Filter by the customer group ID + schema: + oneOf: + - type: string + description: customer group ID + - type: array + description: multiple customer group IDs + items: + type: string + - type: object + properties: + lt: + type: string + description: filter by IDs less than this ID + gt: + type: string + description: filter by IDs greater than this ID + lte: + type: string + description: filter by IDs less than or equal to this ID + gte: + type: string + description: filter by IDs greater than or equal to this ID + - in: query + name: name + style: form + explode: false + description: Filter by the customer group name + schema: + type: array + description: multiple customer group names + items: + type: string + description: customer group name + - in: query + name: created_at + description: Date comparison for when resulting customer groups were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting customer groups were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: limit + description: Limit the number of customer groups returned. + schema: + type: integer + default: 10 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each customer groups of the result. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetCustomerGroupsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.list() + .then(({ customer_groups, limit, offset, count }) => { + console.log(customer_groups.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/customer-groups' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCustomerGroups + summary: Create a Customer Group + description: Creates a CustomerGroup. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCustomerGroupsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.create({ + name: 'VIP' + }) + .then(({ customer_group }) => { + console.log(customer_group.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/customer-groups' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "VIP" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/customer-groups/{id}: + get: + operationId: GetCustomerGroupsGroup + summary: Get a Customer Group + description: Retrieves a Customer Group. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Customer Group. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the customer group. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the customer group. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetCustomerGroupsGroupParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.retrieve(customer_group_id) + .then(({ customer_group }) => { + console.log(customer_group.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/customer-groups/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCustomerGroupsGroup + summary: Update a Customer Group + description: Update a CustomerGroup. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the customer group. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCustomerGroupsGroupReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.update(customer_group_id, { + name: 'VIP' + }) + .then(({ customer_group }) => { + console.log(customer_group.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/customer-groups/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "VIP" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCustomerGroupsCustomerGroup + summary: Delete a Customer Group + description: Deletes a CustomerGroup. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Customer Group + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.delete(customer_group_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/customer-groups/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/customer-groups/{id}/customers: + get: + operationId: GetCustomerGroupsGroupCustomers + summary: List Customers + description: Retrieves a list of customers in a customer group + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the customer group. + schema: + type: string + - in: query + name: limit + description: The number of items to return. + schema: + type: integer + default: 50 + - in: query + name: offset + description: The items to skip before result. + schema: + type: integer + default: 0 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each customer. + schema: + type: string + - in: query + name: q + description: a search term to search email, first_name, and last_name. + schema: + type: string + x-codegen: + method: listCustomers + queryParams: AdminGetGroupsGroupCustomersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.listCustomers(customer_group_id) + .then(({ customers }) => { + console.log(customers.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/customer-groups/{id}/customers' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomersListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/customer-groups/{id}/customers/batch: + post: + operationId: PostCustomerGroupsGroupCustomersBatch + summary: Add Customers + description: Adds a list of customers, represented by id's, to a customer group. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the customer group. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCustomerGroupsGroupCustomersBatchReq' + x-codegen: + method: addCustomers + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.addCustomers(customer_group_id, { + customer_ids: [ + { + id: customer_id + } + ] + }) + .then(({ customer_group }) => { + console.log(customer_group.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/customer-groups/{id}/customers/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "customer_ids": [ + { + "id": "cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCustomerGroupsGroupCustomerBatch + summary: Remove Customers + description: Removes a list of customers, represented by id's, from a customer group. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the customer group. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteCustomerGroupsGroupCustomerBatchReq' + x-codegen: + method: removeCustomers + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customerGroups.removeCustomers(customer_group_id, { + customer_ids: [ + { + id: customer_id + } + ] + }) + .then(({ customer_group }) => { + console.log(customer_group.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/customer-groups/{id}/customers/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "customer_ids": [ + { + "id": "cus_01G2Q4BS9GAHDBMDEN4ZQZCJB2" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomerGroupsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/customers: + get: + operationId: GetCustomers + summary: List Customers + description: Retrieves a list of Customers. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of items to return. + schema: + type: integer + default: 50 + - in: query + name: offset + description: The items to skip before result. + schema: + type: integer + default: 0 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each customer. + schema: + type: string + - in: query + name: q + description: a search term to search email, first_name, and last_name. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetCustomersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customers.list() + .then(({ customers, limit, offset, count }) => { + console.log(customers.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/customers' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomersListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCustomers + summary: Create a Customer + description: Creates a Customer. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCustomersReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customers.create({ + email: 'user@example.com', + first_name: 'Caterina', + last_name: 'Yost', + password: 'supersecret' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/customers' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "first_name": "Caterina", + "last_name": "Yost", + "password": "supersecret" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customers + responses: + '201': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/customers/{id}: + get: + operationId: GetCustomersCustomer + summary: Get a Customer + description: Retrieves a Customer. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Customer. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the customer. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the customer. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customers.retrieve(customer_id) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/customers/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCustomersCustomer + summary: Update a Customer + description: Updates a Customer. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Customer. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each customer. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in each customer. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostCustomersCustomerReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.customers.update(customer_id, { + first_name: 'Dolly' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/customers/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "first_name": "Dolly" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts: + get: + operationId: GetDiscounts + summary: List Discounts + x-authenticated: true + description: Retrieves a list of Discounts + parameters: + - in: query + name: q + description: Search query applied on the code field. + schema: + type: string + - in: query + name: rule + description: Discount Rules filters to apply on the search + schema: + type: object + properties: + type: + type: string + enum: + - fixed + - percentage + - free_shipping + description: The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. + allocation: + type: string + enum: + - total + - item + description: The value that the discount represents; this will depend on the type of the discount + - in: query + name: is_dynamic + description: Return only dynamic discounts. + schema: + type: boolean + - in: query + name: is_disabled + description: Return only disabled discounts. + schema: + type: boolean + - in: query + name: limit + description: The number of items in the response + schema: + type: number + default: '20' + - in: query + name: offset + description: The offset of items in response + schema: + type: number + default: '0' + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetDiscountsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.list() + .then(({ discounts, limit, offset, count }) => { + console.log(discounts.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/discounts' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostDiscounts + summary: Creates a Discount + x-authenticated: true + description: Creates a Discount with a given set of rules that define how the Discount behaves. + parameters: + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the results. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsReq' + x-codegen: + method: create + queryParams: AdminPostDiscountsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + import { AllocationType, DiscountRuleType } from "@medusajs/medusa" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.create({ + code: 'TEST', + rule: { + type: DiscountRuleType.FIXED, + value: 10, + allocation: AllocationType.ITEM + }, + regions: ["reg_XXXXXXXX"], + is_dynamic: false, + is_disabled: false + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "code": "TEST", + "rule": { + "type": "fixed", + "value": 10, + "allocation": "item" + }, + "regions": ["reg_XXXXXXXX"] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/code/{code}: + get: + operationId: GetDiscountsDiscountCode + summary: Get Discount by Code + description: Retrieves a Discount by its discount code + x-authenticated: true + parameters: + - in: path + name: code + required: true + description: The code of the Discount + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieveByCode + queryParams: AdminGetDiscountsDiscountCodeParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.retrieveByCode(code) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/discounts/code/{code}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{discount_id}/conditions: + post: + operationId: PostDiscountsDiscountConditions + summary: Create a Condition + description: Creates a DiscountCondition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided. + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Product. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each product of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsDiscountConditions' + x-codegen: + method: createCondition + queryParams: AdminPostDiscountsDiscountConditionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + import { DiscountConditionOperator } from "@medusajs/medusa" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.createCondition(discount_id, { + operator: DiscountConditionOperator.IN + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "operator": "in" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{discount_id}/conditions/{condition_id}: + get: + operationId: GetDiscountsDiscountConditionsCondition + summary: Get a Condition + description: Gets a DiscountCondition + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Discount. + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the DiscountCondition. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: getCondition + queryParams: AdminGetDiscountsDiscountConditionsConditionParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.getCondition(discount_id, condition_id) + .then(({ discount_condition }) => { + console.log(discount_condition.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountConditionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostDiscountsDiscountConditionsCondition + summary: Update a Condition + description: Updates a DiscountCondition. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided. + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the DiscountCondition. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each item of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each item of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsDiscountConditionsCondition' + x-codegen: + method: updateCondition + queryParams: AdminPostDiscountsDiscountConditionsConditionParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.updateCondition(discount_id, condition_id, { + products: [ + product_id + ] + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "products": [ + "prod_01G1G5V2MBA328390B5AXJ610F" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDiscountsDiscountConditionsCondition + summary: Delete a Condition + description: Deletes a DiscountCondition + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Discount + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the DiscountCondition + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: deleteCondition + queryParams: AdminDeleteDiscountsDiscountConditionsConditionParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.deleteCondition(discount_id, condition_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountConditionsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{discount_id}/conditions/{condition_id}/batch: + post: + operationId: PostDiscountsDiscountConditionsConditionBatch + summary: Add Batch Resources + description: Add a batch of resources to a discount condition. + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the condition on which to add the item. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which relations should be expanded in each discount of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each discount of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsDiscountConditionsConditionBatchReq' + x-codegen: + method: addConditionResourceBatch + queryParams: AdminPostDiscountsDiscountConditionsConditionBatchParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.addConditionResourceBatch(discount_id, condition_id, { + resources: [{ id: item_id }] + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "resources": [{ "id": "item_id" }] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDiscountsDiscountConditionsConditionBatch + summary: Delete Batch Resources + description: Delete a batch of resources from a discount condition. + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the condition on which to add the item. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which relations should be expanded in each discount of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each discount of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteDiscountsDiscountConditionsConditionBatchReq' + x-codegen: + method: deleteConditionResourceBatch + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.deleteConditionResourceBatch(discount_id, condition_id, { + resources: [{ id: item_id }] + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/conditions/{condition_id}/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "resources": [{ "id": "item_id" }] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{id}: + get: + operationId: GetDiscountsDiscount + summary: Get a Discount + description: Retrieves a Discount + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetDiscountParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.retrieve(discount_id) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/discounts/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostDiscountsDiscount + summary: Update a Discount + description: Updates a Discount with a given set of rules that define how the Discount behaves. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each item of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each item of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsDiscountReq' + x-codegen: + method: update + queryParams: AdminPostDiscountsDiscountParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.update(discount_id, { + code: 'TEST' + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "code": "TEST" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDiscountsDiscount + summary: Delete a Discount + description: Deletes a Discount. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.delete(discount_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{id}/dynamic-codes: + post: + operationId: PostDiscountsDiscountDynamicCodes + summary: Create a Dynamic Code + description: Creates a dynamic unique code that can map to a parent Discount. This is useful if you want to automatically generate codes with the same behaviour. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount to create the dynamic code from." + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDiscountsDiscountDynamicCodesReq' + x-codegen: + method: createDynamicCode + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.createDynamicCode(discount_id, { + code: 'TEST', + usage_limit: 1 + }) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/dynamic-codes' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "code": "TEST" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{id}/dynamic-codes/{code}: + delete: + operationId: DeleteDiscountsDiscountDynamicCodesCode + summary: Delete a Dynamic Code + description: Deletes a dynamic code from a Discount. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount + schema: + type: string + - in: path + name: code + required: true + description: The ID of the Discount + schema: + type: string + x-codegen: + method: deleteDynamicCode + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.deleteDynamicCode(discount_id, code) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/dynamic-codes/{code}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/discounts/{id}/regions/{region_id}: + post: + operationId: PostDiscountsDiscountRegionsRegion + summary: Add Region + description: Adds a Region to the list of Regions that a Discount can be used in. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount. + schema: + type: string + - in: path + name: region_id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: addRegion + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.addRegion(discount_id, region_id) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/discounts/{id}/regions/{region_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDiscountsDiscountRegionsRegion + summary: Remove Region + x-authenticated: true + description: Removes a Region from the list of Regions that a Discount can be used in. + parameters: + - in: path + name: id + required: true + description: The ID of the Discount. + schema: + type: string + - in: path + name: region_id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: removeRegion + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.discounts.removeRegion(discount_id, region_id) + .then(({ discount }) => { + console.log(discount.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/discounts/{id}/regions/{region_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDiscountsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/draft-orders: + get: + operationId: GetDraftOrders + summary: List Draft Orders + description: Retrieves an list of Draft Orders + x-authenticated: true + parameters: + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: number + default: '0' + - in: query + name: limit + description: Limit the number of items returned. + schema: + type: number + default: '50' + - in: query + name: q + description: a search term to search emails in carts associated with draft orders and display IDs of draft orders + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetDraftOrdersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.list() + .then(({ draft_orders, limit, offset, count }) => { + console.log(draft_orders.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/draft-orders' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostDraftOrders + summary: Create a Draft Order + description: Creates a Draft Order + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDraftOrdersReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.create({ + email: 'user@example.com', + region_id, + items: [ + { + quantity: 1 + } + ], + shipping_methods: [ + { + option_id + } + ], + }) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/draft-orders' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "region_id": "{region_id}" + "items": [ + { + "quantity": 1 + } + ], + "shipping_methods": [ + { + "option_id": "{option_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/draft-orders/{id}: + get: + operationId: GetDraftOrdersDraftOrder + summary: Get a Draft Order + description: Retrieves a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.retrieve(draft_order_id) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/draft-orders/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostDraftOrdersDraftOrder + summary: Update a Draft Order + description: Updates a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.update(draft_order_id, { + email: "user@example.com" + }) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDraftOrdersDraftOrder + summary: Delete a Draft Order + description: Deletes a Draft Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.delete(draft_order_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/draft-orders/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/draft-orders/{id}/line-items: + post: + operationId: PostDraftOrdersDraftOrderLineItems + summary: Create a Line Item + description: Creates a Line Item for the Draft Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsReq' + x-codegen: + method: addLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.addLineItem(draft_order_id, { + quantity: 1 + }) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/line-items' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "quantity": 1 + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/draft-orders/{id}/line-items/{line_id}: + post: + operationId: PostDraftOrdersDraftOrderLineItemsItem + summary: Update a Line Item + description: Updates a Line Item for a Draft Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + - in: path + name: line_id + required: true + description: The ID of the Line Item. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderLineItemsItemReq' + x-codegen: + method: updateLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.updateLineItem(draft_order_id, line_id, { + quantity: 1 + }) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/line-items/{line_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "quantity": 1 + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteDraftOrdersDraftOrderLineItemsItem + summary: Delete a Line Item + description: Removes a Line Item from a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + - in: path + name: line_id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: removeLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.removeLineItem(draft_order_id, item_id) + .then(({ draft_order }) => { + console.log(draft_order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/draft-orders/{id}/line-items/{line_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDraftOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/draft-orders/{id}/pay: + post: + summary: Registers a Payment + operationId: PostDraftOrdersDraftOrderRegisterPayment + description: Registers a payment for a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The Draft Order id. + schema: + type: string + x-codegen: + method: markPaid + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.draftOrders.markPaid(draft_order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/draft-orders/{id}/pay' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/gift-cards: + get: + operationId: GetGiftCards + summary: List Gift Cards + description: Retrieves a list of Gift Cards. + x-authenticated: true + parameters: + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: number + default: '0' + - in: query + name: limit + description: Limit the number of items returned. + schema: + type: number + default: '50' + - in: query + name: q + description: a search term to search by code or display ID + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetGiftCardsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.giftCards.list() + .then(({ gift_cards, limit, offset, count }) => { + console.log(gift_cards.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/gift-cards' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGiftCardsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostGiftCards + summary: Create a Gift Card + description: Creates a Gift Card that can redeemed by its unique code. The Gift Card is only valid within 1 region. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostGiftCardsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.giftCards.create({ + region_id + }) + .then(({ gift_card }) => { + console.log(gift_card.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/gift-cards' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "region_id": "{region_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGiftCardsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/gift-cards/{id}: + get: + operationId: GetGiftCardsGiftCard + summary: Get a Gift Card + description: Retrieves a Gift Card. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Gift Card. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.giftCards.retrieve(gift_card_id) + .then(({ gift_card }) => { + console.log(gift_card.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/gift-cards/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGiftCardsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostGiftCardsGiftCard + summary: Update a Gift Card + description: Update a Gift Card that can redeemed by its unique code. The Gift Card is only valid within 1 region. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Gift Card. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostGiftCardsGiftCardReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.giftCards.update(gift_card_id, { + region_id + }) + .then(({ gift_card }) => { + console.log(gift_card.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/gift-cards/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "region_id": "{region_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGiftCardsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteGiftCardsGiftCard + summary: Delete a Gift Card + description: Deletes a Gift Card + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Gift Card to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.giftCards.delete(gift_card_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/gift-cards/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGiftCardsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/inventory-items: + get: + operationId: GetInventoryItems + summary: List inventory items. + description: Lists inventory items. + x-authenticated: true + parameters: + - in: query + name: offset + description: How many inventory items to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of inventory items returned. + schema: + type: integer + default: 20 + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + - in: query + name: q + description: Query used for searching product inventory items and their properties. + schema: + type: string + - in: query + name: location_id + style: form + explode: false + description: Locations ids to search for. + schema: + type: array + items: + type: string + - in: query + name: id + description: id to search for. + schema: + type: string + - in: query + name: sku + description: sku to search for. + schema: + type: string + - in: query + name: origin_country + description: origin_country to search for. + schema: + type: string + - in: query + name: mid_code + description: mid_code to search for. + schema: + type: string + - in: query + name: material + description: material to search for. + schema: + type: string + - in: query + name: hs_code + description: hs_code to search for. + schema: + type: string + - in: query + name: weight + description: weight to search for. + schema: + type: string + - in: query + name: length + description: length to search for. + schema: + type: string + - in: query + name: height + description: height to search for. + schema: + type: string + - in: query + name: width + description: width to search for. + schema: + type: string + - in: query + name: requires_shipping + description: requires_shipping to search for. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetInventoryItemsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.list() + .then(({ inventory_items }) => { + console.log(inventory_items.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/inventory-items' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostInventoryItems + summary: Create an Inventory Item. + description: Creates an Inventory Item. + x-authenticated: true + parameters: + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInventoryItemsReq' + x-codegen: + method: create + queryParams: AdminPostInventoryItemsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.create(inventoryItemId, { + variant_id: 'variant_123', + sku: "sku-123", + }) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/inventory-items' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "variant_id": "variant_123", + "sku": "sku-123", + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/inventory-items/{id}: + get: + operationId: GetInventoryItemsInventoryItem + summary: Retrive an Inventory Item. + description: Retrives an Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetInventoryItemsItemParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.retrieve(inventoryItemId) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/inventory-items/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostInventoryItemsInventoryItem + summary: Update an Inventory Item. + description: Updates an Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInventoryItemsInventoryItemReq' + x-codegen: + method: update + queryParams: AdminPostInventoryItemsInventoryItemParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.update(inventoryItemId, { + origin_country: "US", + }) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "origin_country": "US" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteInventoryItemsInventoryItem + summary: Delete an Inventory Item + description: Delete an Inventory Item + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.delete(inventoryItemId) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/inventory-items/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + /admin/inventory-items/{id}/location-levels: + get: + operationId: GetInventoryItemsInventoryItemLocationLevels + summary: List stock levels of a given location. + description: Lists stock levels of a given location. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: query + name: offset + description: How many stock locations levels to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of stock locations levels returned. + schema: + type: integer + default: 20 + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: listLocationLevels + queryParams: AdminGetInventoryItemsItemLocationLevelsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.listLocationLevels(inventoryItemId) + .then(({ inventory_item }) => { + console.log(inventory_item.location_levels); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/inventory-items/{id}/location-levels' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsLocationLevelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostInventoryItemsInventoryItemLocationLevels + summary: Create an Inventory Location Level for a given Inventory Item. + description: Creates an Inventory Location Level for a given Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInventoryItemsItemLocationLevelsReq' + x-codegen: + method: createLocationLevel + queryParams: AdminPostInventoryItemsItemLocationLevelsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.createLocationLevel(inventoryItemId, { + location_id: 'sloc', + stocked_quantity: 10, + }) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}/location-levels' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "location_id": "sloc", + "stocked_quantity": 10 + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/inventory-items/{id}/location-levels/{location_id}: + post: + operationId: PostInventoryItemsInventoryItemLocationLevelsLocationLevel + summary: Update an Inventory Location Level for a given Inventory Item. + description: Updates an Inventory Location Level for a given Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: path + name: location_id + required: true + description: The ID of the Location. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInventoryItemsItemLocationLevelsLevelReq' + x-codegen: + method: updateLocationLevel + queryParams: AdminPostInventoryItemsItemLocationLevelsLevelParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.updateLocationLevel(inventoryItemId, locationId, { + stocked_quantity: 15, + }) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/inventory-items/{id}/location-levels/{location_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "stocked_quantity": 15 + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteInventoryItemsInventoryIteLocationLevelsLocation + summary: Delete a location level of an Inventory Item. + description: Delete a location level of an Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: path + name: location_id + required: true + description: The ID of the location. + schema: + type: string + x-codegen: + method: deleteLocationLevel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.inventoryItems.deleteLocationLevel(inventoryItemId, locationId) + .then(({ inventory_item }) => { + console.log(inventory_item.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/inventory-items/{id}/location-levels/{location_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInventoryItemsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/invites: + get: + operationId: GetInvites + summary: Lists Invites + description: Lists all Invites + x-authenticated: true + x-codegen: + method: list + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.invites.list() + .then(({ invites }) => { + console.log(invites.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/invites' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminListInvitesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostInvites + summary: Create an Invite + description: Creates an Invite and triggers an 'invite' created event + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInvitesReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.invites.create({ + user: "user@example.com", + role: "admin" + }) + .then(() => { + // successful + }) + .catch(() => { + // an error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/invites' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "user": "user@example.com", + "role": "admin" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/invites/accept: + post: + operationId: PostInvitesInviteAccept + summary: Accept an Invite + description: Accepts an Invite and creates a corresponding user + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostInvitesInviteAcceptReq' + x-codegen: + method: accept + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.invites.accept({ + token, + user: { + first_name: 'Brigitte', + last_name: 'Collier', + password: 'supersecret' + } + }) + .then(() => { + // successful + }) + .catch(() => { + // an error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/invites/accept' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "token": "{token}", + "user": { + "first_name": "Brigitte", + "last_name": "Collier", + "password": "supersecret" + } + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/invites/{invite_id}: + delete: + operationId: DeleteInvitesInvite + summary: Delete an Invite + description: Deletes an Invite + x-authenticated: true + parameters: + - in: path + name: invite_id + required: true + description: The ID of the Invite + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.invites.delete(invite_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/invites/{invite_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminInviteDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/invites/{invite_id}/resend: + post: + operationId: PostInvitesInviteResend + summary: Resend an Invite + description: Resends an Invite by triggering the 'invite' created event again + x-authenticated: true + parameters: + - in: path + name: invite_id + required: true + description: The ID of the Invite + schema: + type: string + x-codegen: + method: resend + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.invites.resend(invite_id) + .then(() => { + // successful + }) + .catch(() => { + // an error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/invites/{invite_id}/resend' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/notes: + get: + operationId: GetNotes + summary: List Notes + x-authenticated: true + description: Retrieves a list of notes + parameters: + - in: query + name: limit + description: The number of notes to get + schema: + type: number + default: '50' + - in: query + name: offset + description: The offset at which to get notes + schema: + type: number + default: '0' + - in: query + name: resource_id + description: The ID which the notes belongs to + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetNotesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notes.list() + .then(({ notes, limit, offset, count }) => { + console.log(notes.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/notes' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostNotes + summary: Creates a Note + description: Creates a Note which can be associated with any resource as required. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostNotesReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notes.create({ + resource_id, + resource_type: 'order', + value: 'We delivered this order' + }) + .then(({ note }) => { + console.log(note.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/notes' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "resource_id": "{resource_id}", + "resource_type": "order", + "value": "We delivered this order" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/notes/{id}: + get: + operationId: GetNotesNote + summary: Get a Note + description: Retrieves a single note using its id + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the note to retrieve. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notes.retrieve(note_id) + .then(({ note }) => { + console.log(note.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/notes/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostNotesNote + summary: Update a Note + x-authenticated: true + description: Updates a Note associated with some resource + parameters: + - in: path + name: id + required: true + description: The ID of the Note to update + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostNotesNoteReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notes.update(note_id, { + value: 'We delivered this order' + }) + .then(({ note }) => { + console.log(note.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/notes/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "value": "We delivered this order" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteNotesNote + summary: Delete a Note + description: Deletes a Note. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Note to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notes.delete(note_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/notes/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotesDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/notifications: + get: + operationId: GetNotifications + summary: List Notifications + description: Retrieves a list of Notifications. + x-authenticated: true + parameters: + - in: query + name: offset + description: The number of notifications to skip before starting to collect the notifications set + schema: + type: integer + default: 0 + - in: query + name: limit + description: The number of notifications to return + schema: + type: integer + default: 50 + - in: query + name: fields + description: Comma separated fields to include in the result set + schema: + type: string + - in: query + name: expand + description: Comma separated fields to populate + schema: + type: string + - in: query + name: event_name + description: The name of the event that the notification was sent for. + schema: + type: string + - in: query + name: resource_type + description: The type of resource that the Notification refers to. + schema: + type: string + - in: query + name: resource_id + description: The ID of the resource that the Notification refers to. + schema: + type: string + - in: query + name: to + description: The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id + schema: + type: string + - in: query + name: include_resends + description: A boolean indicating whether the result set should include resent notifications or not + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetNotificationsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notifications.list() + .then(({ notifications }) => { + console.log(notifications.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/notifications' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notifications + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotificationsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/notifications/{id}/resend: + post: + operationId: PostNotificationsNotificationResend + summary: Resend Notification + description: Resends a previously sent notifications, with the same data but optionally to a different address + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Notification + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostNotificationsNotificationResendReq' + x-codegen: + method: resend + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.notifications.resend(notification_id) + .then(({ notification }) => { + console.log(notification.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/notifications/{id}/resend' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notifications + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminNotificationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits: + get: + operationId: GetOrderEdits + summary: List OrderEdits + description: List OrderEdits. + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching order edit internal note. + schema: + type: string + - in: query + name: order_id + description: List order edits by order id. + schema: + type: string + - in: query + name: limit + description: The number of items in the response + schema: + type: number + default: '20' + - in: query + name: offset + description: The offset of items in response + schema: + type: number + default: '0' + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: list + queryParams: GetOrderEditsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.list() + .then(({ order_edits, count, limit, offset }) => { + console.log(order_edits.length) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/order-edits' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostOrderEdits + summary: Create an OrderEdit + description: Creates an OrderEdit. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrderEditsReq' + x-authenticated: true + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.create({ order_id }) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ "order_id": "my_order_id", "internal_note": "my_optional_note" }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits/{id}: + get: + operationId: GetOrderEditsOrderEdit + summary: Get an OrderEdit + description: Retrieves a OrderEdit. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the OrderEdit. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: GetOrderEditsOrderEditParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.retrieve(orderEditId) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/order-edits/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostOrderEditsOrderEdit + summary: Update an OrderEdit + description: Updates a OrderEdit. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the OrderEdit. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrderEditsOrderEditReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.update(order_edit_id, { + internal_note: "internal reason XY" + }) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "internal_note": "internal reason XY" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteOrderEditsOrderEdit + summary: Delete an Order Edit + description: Delete an Order Edit + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.delete(order_edit_id) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditDeleteRes' + '400': + $ref: '#/components/responses/400_error' + /admin/order-edits/{id}/cancel: + post: + operationId: PostOrderEditsOrderEditCancel + summary: Cancel an OrderEdit + description: Cancels an OrderEdit. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the OrderEdit. + schema: + type: string + x-codegen: + method: cancel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.cancel(order_edit_id) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits/{id}/changes/{change_id}: + delete: + operationId: DeleteOrderEditsOrderEditItemChange + summary: Delete a Line Item Change + description: Deletes an Order Edit Item Change + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to delete. + schema: + type: string + - in: path + name: change_id + required: true + description: The ID of the Order Edit Item Change to delete. + schema: + type: string + x-codegen: + method: deleteItemChange + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.deleteItemChange(order_edit_id, item_change_id) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}/changes/{change_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditItemChangeDeleteRes' + '400': + $ref: '#/components/responses/400_error' + /admin/order-edits/{id}/confirm: + post: + operationId: PostOrderEditsOrderEditConfirm + summary: Confirms an OrderEdit + description: Confirms an OrderEdit. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the order edit. + schema: + type: string + x-codegen: + method: confirm + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.confirm(order_edit_id) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/confirm' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits/{id}/items: + post: + operationId: PostOrderEditsEditLineItems + summary: Add a Line Item + description: Create an OrderEdit LineItem. + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrderEditsEditLineItemsReq' + x-authenticated: true + x-codegen: + method: addLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.addLineItem(order_edit_id, { + variant_id, + quantity + }) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/items' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ "variant_id": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6", "quantity": 3 }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits/{id}/items/{item_id}: + post: + operationId: PostOrderEditsEditLineItemsLineItem + summary: Upsert Line Item Change + description: Create or update the order edit change holding the line item changes + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to update. + schema: + type: string + - in: path + name: item_id + required: true + description: The ID of the order edit item to update. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrderEditsEditLineItemsLineItemReq' + x-codegen: + method: updateLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.updateLineItem(order_edit_id, line_item_id, { + quantity: 5 + }) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/items/{item_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ "quantity": 5 }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteOrderEditsOrderEditLineItemsLineItem + summary: Delete a Line Item + description: Delete line items from an order edit and create change item + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to delete from. + schema: + type: string + - in: path + name: item_id + required: true + description: The ID of the order edit item to delete from order. + schema: + type: string + x-codegen: + method: removeLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.removeLineItem(order_edit_id, line_item_id) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/order-edits/{id}/items/{item_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/order-edits/{id}/request: + post: + operationId: PostOrderEditsOrderEditRequest + summary: Request Confirmation + description: Request customer confirmation of an Order Edit + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to request confirmation from. + schema: + type: string + x-codegen: + method: requestConfirmation + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orderEdits.requestConfirmation(order_edit_id) + .then({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/order-edits/{id}/request' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders: + get: + operationId: GetOrders + summary: List Orders + description: Retrieves a list of Orders + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching orders by shipping address first name, orders' email, and orders' display ID + schema: + type: string + - in: query + name: id + description: ID of the order to search for. + schema: + type: string + - in: query + name: status + style: form + explode: false + description: Status to search for + schema: + type: array + items: + type: string + enum: + - pending + - completed + - archived + - canceled + - requires_action + - in: query + name: fulfillment_status + style: form + explode: false + description: Fulfillment status to search for. + schema: + type: array + items: + type: string + enum: + - not_fulfilled + - fulfilled + - partially_fulfilled + - shipped + - partially_shipped + - canceled + - returned + - partially_returned + - requires_action + - in: query + name: payment_status + style: form + explode: false + description: Payment status to search for. + schema: + type: array + items: + type: string + enum: + - captured + - awaiting + - not_paid + - refunded + - partially_refunded + - canceled + - requires_action + - in: query + name: display_id + description: Display ID to search for. + schema: + type: string + - in: query + name: cart_id + description: to search for. + schema: + type: string + - in: query + name: customer_id + description: to search for. + schema: + type: string + - in: query + name: email + description: to search for. + schema: + type: string + - in: query + name: region_id + style: form + explode: false + description: Regions to search orders by + schema: + oneOf: + - type: string + description: ID of a Region. + - type: array + items: + type: string + description: ID of a Region. + - in: query + name: currency_code + style: form + explode: false + description: Currency code to search for + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + - in: query + name: tax_rate + description: to search for. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting orders were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting orders were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: canceled_at + description: Date comparison for when resulting orders were canceled. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: sales_channel_id + style: form + explode: false + description: Filter by Sales Channels + schema: + type: array + items: + type: string + description: The ID of a Sales Channel + - in: query + name: offset + description: How many orders to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of orders returned. + schema: + type: integer + default: 50 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each order of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each order of the result. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetOrdersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.list() + .then(({ orders, limit, offset, count }) => { + console.log(orders.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/orders' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}: + get: + operationId: GetOrdersOrder + summary: Get an Order + description: Retrieves an Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetOrdersOrderParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.retrieve(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/orders/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostOrdersOrder + summary: Update an Order + description: Updates and order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderReq' + x-codegen: + method: update + params: AdminPostOrdersOrderParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.update(order_id, { + email: 'user@example.com' + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/adasda' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/archive: + post: + operationId: PostOrdersOrderArchive + summary: Archive Order + description: Archives the order with the given id. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: archive + params: AdminPostOrdersOrderArchiveParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.archive(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/archive' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/cancel: + post: + operationId: PostOrdersOrderCancel + summary: Cancel an Order + description: Registers an Order as canceled. This triggers a flow that will cancel any created Fulfillments and Payments, may fail if the Payment or Fulfillment Provider is unable to cancel the Payment/Fulfillment. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancel + params: AdminPostOrdersOrderCancel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancel(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/capture: + post: + operationId: PostOrdersOrderCapture + summary: Capture Order's Payment + description: Captures all the Payments associated with an Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: capturePayment + params: AdminPostOrdersOrderCaptureParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.capturePayment(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/capture' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims: + post: + operationId: PostOrdersOrderClaims + summary: Create a Claim + description: Creates a Claim. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderClaimsReq' + x-codegen: + method: createClaim + params: AdminPostOrdersOrderClaimsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createClaim(order_id, { + type: 'refund', + claim_items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "type": "refund", + "claim_items": [ + { + "item_id": "asdsd", + "quantity": 1 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims/{claim_id}: + post: + operationId: PostOrdersOrderClaimsClaim + summary: Update a Claim + description: Updates a Claim. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: claim_id + required: true + description: The ID of the Claim. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimReq' + x-codegen: + method: updateClaim + params: AdminPostOrdersOrderClaimsClaimParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.updateClaim(order_id, claim_id, { + no_notification: true + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "no_notification": true + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims/{claim_id}/cancel: + post: + operationId: PostOrdersClaimCancel + summary: Cancel a Claim + description: Cancels a Claim + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: claim_id + required: true + description: The ID of the Claim. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancelClaim + params: AdminPostOrdersClaimCancel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancelClaim(order_id, claim_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims/{claim_id}/fulfillments: + post: + operationId: PostOrdersOrderClaimsClaimFulfillments + summary: Create Claim Fulfillment + description: Creates a Fulfillment for a Claim. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: claim_id + required: true + description: The ID of the Claim. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimFulfillmentsReq' + x-codegen: + method: fulfillClaim + params: AdminPostOrdersOrderClaimsClaimFulfillmentsReq + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.fulfillClaim(order_id, claim_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/fulfillments' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel: + post: + operationId: PostOrdersClaimFulfillmentsCancel + summary: Cancel Claim Fulfillment + description: Registers a claim's fulfillment as canceled. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order which the Claim relates to. + schema: + type: string + - in: path + name: claim_id + required: true + description: The ID of the Claim which the Fulfillment relates to. + schema: + type: string + - in: path + name: fulfillment_id + required: true + description: The ID of the Fulfillment. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancelClaimFulfillment + params: AdminPostOrdersClaimFulfillmentsCancelParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancelClaimFulfillment(order_id, claim_id, fulfillment_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/claims/{claim_id}/shipments: + post: + operationId: PostOrdersOrderClaimsClaimShipments + summary: Create Claim Shipment + description: Registers a Claim Fulfillment as shipped. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: claim_id + required: true + description: The ID of the Claim. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderClaimsClaimShipmentsReq' + x-codegen: + method: createClaimShipment + params: AdminPostOrdersOrderClaimsClaimShipmentsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createClaimShipment(order_id, claim_id, { + fulfillment_id + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/claims/{claim_id}/shipments' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "fulfillment_id": "{fulfillment_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/complete: + post: + operationId: PostOrdersOrderComplete + summary: Complete an Order + description: Completes an Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: complete + params: AdminPostOrdersOrderCompleteParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.complete(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/complete' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/fulfillment: + post: + operationId: PostOrdersOrderFulfillments + summary: Create a Fulfillment + description: Creates a Fulfillment of an Order - will notify Fulfillment Providers to prepare a shipment. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderFulfillmentsReq' + x-codegen: + method: createFulfillment + params: AdminPostOrdersOrderFulfillmentsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createFulfillment(order_id, { + items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/fulfillment' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "items": [ + { + "item_id": "{item_id}", + "quantity": 1 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/fulfillments/{fulfillment_id}/cancel: + post: + operationId: PostOrdersOrderFulfillmentsCancel + summary: Cancels a Fulfilmment + description: Registers a Fulfillment as canceled. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order which the Fulfillment relates to. + schema: + type: string + - in: path + name: fulfillment_id + required: true + description: The ID of the Fulfillment + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancelFulfillment + params: AdminPostOrdersOrderFulfillementsCancelParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancelFulfillment(order_id, fulfillment_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/fulfillments/{fulfillment_id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/line-items/{line_item_id}/reserve: + post: + operationId: PostOrdersOrderLineItemReservations + summary: Create a Reservation for a line item + description: Creates a Reservation for a line item at a specified location, optionally for a partial quantity. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: line_item_id + required: true + description: The ID of the Line item. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersOrderLineItemReservationReq' + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createReservation(order_id, line_item_id, { + location_id + }) + .then(({ reservation }) => { + console.log(reservation.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/line-items/{line_item_id}/reservations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "location_id": "loc_1" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReservationsReq' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/refund: + post: + operationId: PostOrdersOrderRefunds + summary: Create a Refund + description: Issues a Refund. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderRefundsReq' + x-codegen: + method: refundPayment + params: AdminPostOrdersOrderRefundsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.refundPayment(order_id, { + amount: 1000, + reason: 'Do not like it' + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/adasda/refund' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "amount": 1000, + "reason": "Do not like it" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/reservations: + get: + operationId: GetOrdersOrderReservations + summary: Get reservations for an Order + description: Retrieves reservations for an Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: offset + description: How many reservations to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of reservations returned. + schema: + type: integer + default: 20 + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.retrieveReservations(order_id) + .then(({ reservations }) => { + console.log(reservations[0].id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/orders/{id}/reservations' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/return: + post: + operationId: PostOrdersOrderReturns + summary: Request a Return + description: Requests a Return. If applicable a return label will be created and other plugins notified. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderReturnsReq' + x-codegen: + method: requestReturn + params: AdminPostOrdersOrderReturnsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.requestReturn(order_id, { + items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/return' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "items": [ + { + "item_id": "{item_id}", + "quantity": 1 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/shipment: + post: + operationId: PostOrdersOrderShipment + summary: Create a Shipment + description: Registers a Fulfillment as shipped. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderShipmentReq' + x-codegen: + method: createShipment + params: AdminPostOrdersOrderShipmentParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createShipment(order_id, { + fulfillment_id + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/shipment' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "fulfillment_id": "{fulfillment_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/shipping-methods: + post: + operationId: PostOrdersOrderShippingMethods + summary: Add a Shipping Method + description: Adds a Shipping Method to an Order. If another Shipping Method exists with the same Shipping Profile, the previous Shipping Method will be replaced. + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderShippingMethodsReq' + x-authenticated: true + x-codegen: + method: addShippingMethod + params: AdminPostOrdersOrderShippingMethodsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.addShippingMethod(order_id, { + price: 1000, + option_id + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/shipping-methods' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "price": 1000, + "option_id": "{option_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps: + post: + operationId: PostOrdersOrderSwaps + summary: Create a Swap + description: Creates a Swap. Swaps are used to handle Return of previously purchased goods and Fulfillment of replacements simultaneously. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded the order of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included the order of the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderSwapsReq' + x-codegen: + method: createSwap + queryParams: AdminPostOrdersOrderSwapsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createSwap(order_id, { + return_items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "return_items": [ + { + "item_id": "asfasf", + "quantity": 1 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps/{swap_id}/cancel: + post: + operationId: PostOrdersSwapCancel + summary: Cancels a Swap + description: Cancels a Swap + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: swap_id + required: true + description: The ID of the Swap. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancelSwap + params: AdminPostOrdersSwapCancelParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancelSwap(order_id, swap_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{order_id}/swaps/{swap_id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps/{swap_id}/fulfillments: + post: + operationId: PostOrdersOrderSwapsSwapFulfillments + summary: Create Swap Fulfillment + description: Creates a Fulfillment for a Swap. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: swap_id + required: true + description: The ID of the Swap. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderSwapsSwapFulfillmentsReq' + x-codegen: + method: fulfillSwap + params: AdminPostOrdersOrderSwapsSwapFulfillmentsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.fulfillSwap(order_id, swap_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/fulfillments' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel: + post: + operationId: PostOrdersSwapFulfillmentsCancel + summary: Cancel Swap's Fulfilmment + description: Registers a Swap's Fulfillment as canceled. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order which the Swap relates to. + schema: + type: string + - in: path + name: swap_id + required: true + description: The ID of the Swap which the Fulfillment relates to. + schema: + type: string + - in: path + name: fulfillment_id + required: true + description: The ID of the Fulfillment. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: cancelSwapFulfillment + params: AdminPostOrdersSwapFulfillementsCancelParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.cancelSwapFulfillment(order_id, swap_id, fulfillment_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps/{swap_id}/process-payment: + post: + operationId: PostOrdersOrderSwapsSwapProcessPayment + summary: Process Swap Payment + description: When there are differences between the returned and shipped Products in a Swap, the difference must be processed. Either a Refund will be issued or a Payment will be captured. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: swap_id + required: true + description: The ID of the Swap. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + x-codegen: + method: processSwapPayment + params: AdminPostOrdersOrderSwapsSwapProcessPaymentParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.processSwapPayment(order_id, swap_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/process-payment' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/orders/{id}/swaps/{swap_id}/shipments: + post: + operationId: PostOrdersOrderSwapsSwapShipments + summary: Create Swap Shipment + description: Registers a Swap Fulfillment as shipped. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order. + schema: + type: string + - in: path + name: swap_id + required: true + description: The ID of the Swap. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the result. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the result. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostOrdersOrderSwapsSwapShipmentsReq' + x-codegen: + method: createSwapShipment + params: AdminPostOrdersOrderSwapsSwapShipmentsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.orders.createSwapShipment(order_id, swap_id, { + fulfillment_id + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/orders/{id}/swaps/{swap_id}/shipments' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "fulfillment_id": "{fulfillment_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/payment-collections/{id}: + get: + operationId: GetPaymentCollectionsPaymentCollection + summary: Get a PaymentCollection + description: Retrieves a PaymentCollection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PaymentCollection. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetPaymentCollectionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.paymentCollections.retrieve(paymentCollectionId) + .then(({ payment_collection }) => { + console.log(payment_collection.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/payment-collections/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostPaymentCollectionsPaymentCollection + summary: Update PaymentCollection + description: Updates a PaymentCollection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PaymentCollection. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUpdatePaymentCollectionsReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.paymentCollections.update(payment_collection_id, { + description: "Description of payCol" + }) + .then(({ payment_collection }) => { + console.log(payment_collection.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/payment-collections/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "description": "Description of payCol" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeletePaymentCollectionsPaymentCollection + summary: Del a PaymentCollection + description: Deletes a Payment Collection + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collection to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.paymentCollections.delete(payment_collection_id) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/payment-collections/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentCollectionDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + /admin/payment-collections/{id}/authorize: + post: + operationId: PostPaymentCollectionsPaymentCollectionAuthorize + summary: Mark Authorized + description: Sets the status of PaymentCollection as Authorized. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PaymentCollection. + schema: + type: string + x-codegen: + method: markAsAuthorized + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.paymentCollections.markAsAuthorized(payment_collection_id) + .then(({ payment_collection }) => { + console.log(payment_collection.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/payment-collections/{id}/authorize' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/payments/{id}: + get: + operationId: GetPaymentsPayment + summary: Get Payment details + description: Retrieves the Payment details + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Payment. + schema: + type: string + x-codegen: + method: retrieve + queryParams: GetPaymentsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.payments.retrieve(payment_id) + .then(({ payment }) => { + console.log(payment.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/payments/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payments + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/payments/{id}/capture: + post: + operationId: PostPaymentsPaymentCapture + summary: Capture a Payment + description: Captures a Payment. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Payment. + schema: + type: string + x-codegen: + method: capturePayment + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.payments.capturePayment(payment_id) + .then(({ payment }) => { + console.log(payment.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/payments/{id}/capture' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payments + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/payments/{id}/refund: + post: + operationId: PostPaymentsPaymentRefunds + summary: Create a Refund + description: Issues a Refund. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Payment. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPaymentRefundsReq' + x-codegen: + method: refundPayment + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.payments.refundPayment(payment_id, { + amount: 1000, + reason: 'return', + note: 'Do not like it', + }) + .then(({ payment }) => { + console.log(payment.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/payments/pay_123/refund' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "amount": 1000, + "reason": "return", + "note": "Do not like it" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payments + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRefundRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists: + get: + operationId: GetPriceLists + summary: List Price Lists + description: Retrieves a list of Price Lists. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of items to get + schema: + type: number + default: '10' + - in: query + name: offset + description: The offset at which to get items + schema: + type: number + default: '0' + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each item of the result. + schema: + type: string + - in: query + name: order + description: field to order results by. + schema: + type: string + - in: query + name: id + description: ID to search for. + schema: + type: string + - in: query + name: q + description: query to search in price list description, price list name, and customer group name fields. + schema: + type: string + - in: query + name: status + style: form + explode: false + description: Status to search for. + schema: + type: array + items: + type: string + enum: + - active + - draft + - in: query + name: name + description: price list name to search for. + schema: + type: string + - in: query + name: customer_groups + style: form + explode: false + description: Customer Group IDs to search for. + schema: + type: array + items: + type: string + - in: query + name: type + style: form + explode: false + description: Type to search for. + schema: + type: array + items: + type: string + enum: + - sale + - override + - in: query + name: created_at + description: Date comparison for when resulting price lists were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting price lists were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting price lists were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: AdminGetPriceListPaginationParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.list() + .then(({ price_lists, limit, offset, count }) => { + console.log(price_lists.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/price-lists' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostPriceListsPriceList + summary: Create a Price List + description: Creates a Price List + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPriceListsPriceListReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + import { PriceListType } from "@medusajs/medusa" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.create({ + name: 'New Price List', + description: 'A new price list', + type: PriceListType.SALE, + prices: [ + { + amount: 1000, + variant_id, + currency_code: 'eur' + } + ] + }) + .then(({ price_list }) => { + console.log(price_list.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/price-lists' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "New Price List", + "description": "A new price list", + "type": "sale", + "prices": [ + { + "amount": 1000, + "variant_id": "afafa", + "currency_code": "eur" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists/{id}: + get: + operationId: GetPriceListsPriceList + summary: Get a Price List + description: Retrieves a Price List. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.retrieve(price_list_id) + .then(({ price_list }) => { + console.log(price_list.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/price-lists/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostPriceListsPriceListPriceList + summary: Update a Price List + description: Updates a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPriceListsPriceListPriceListReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.update(price_list_id, { + name: 'New Price List' + }) + .then(({ price_list }) => { + console.log(price_list.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/price-lists/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "New Price List" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeletePriceListsPriceList + summary: Delete a Price List + description: Deletes a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.delete(price_list_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists/{id}/prices/batch: + post: + operationId: PostPriceListsPriceListPricesBatch + summary: Update Prices + description: Batch update prices for a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List to update prices for. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPriceListPricesPricesReq' + x-codegen: + method: addPrices + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.addPrices(price_list_id, { + prices: [ + { + amount: 1000, + variant_id, + currency_code: 'eur' + } + ] + }) + .then(({ price_list }) => { + console.log(price_list.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/price-lists/{id}/prices/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "prices": [ + { + "amount": 100, + "variant_id": "afasfa", + "currency_code": "eur" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeletePriceListsPriceListPricesBatch + summary: Delete Prices + description: Batch delete prices that belong to a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List that the Money Amounts (Prices) that will be deleted belongs to. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeletePriceListPricesPricesReq' + x-codegen: + method: deletePrices + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.deletePrices(price_list_id, { + price_ids: [ + price_id + ] + }) + .then(({ ids, object, deleted }) => { + console.log(ids.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/prices/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "price_ids": [ + "adasfa" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListDeleteBatchRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists/{id}/products: + get: + operationId: GetPriceListsPriceListProducts + summary: List Products + description: Retrieves a list of Product that are part of a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: ID of the price list. + schema: + type: string + - in: query + name: q + description: Query used for searching product title and description, variant title and sku, and collection title. + schema: + type: string + - in: query + name: id + description: ID of the product to search for. + schema: + type: string + - in: query + name: status + description: Product status to search for + style: form + explode: false + schema: + type: array + items: + type: string + enum: + - draft + - proposed + - published + - rejected + - in: query + name: collection_id + description: Collection IDs to search for + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: tags + description: Tag IDs to search for + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: title + description: product title to search for. + schema: + type: string + - in: query + name: description + description: product description to search for. + schema: + type: string + - in: query + name: handle + description: product handle to search for. + schema: + type: string + - in: query + name: is_giftcard + description: Search for giftcards using is_giftcard=true. + schema: + type: string + - in: query + name: type + description: to search for. + schema: + type: string + - in: query + name: order + description: field to sort results by. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting products were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting products were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting products were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: offset + description: How many products to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of products returned. + schema: + type: integer + default: 50 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each product of the result. + schema: + type: string + x-codegen: + method: listProducts + queryParams: AdminGetPriceListsPriceListProductsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.listProducts(price_list_id) + .then(({ products, limit, offset, count }) => { + console.log(products.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/price-lists/{id}/products' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListsProductsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists/{id}/products/{product_id}/prices: + delete: + operationId: DeletePriceListsPriceListProductsProductPrices + summary: Delete Product's Prices + description: Delete all the prices related to a specific product in a price list + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List that the Money Amounts that will be deleted belongs to. + schema: + type: string + - in: path + name: product_id + required: true + description: The ID of the product from which the money amount will be deleted. + schema: + type: string + x-codegen: + method: deleteProductPrices + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.deleteProductPrices(price_list_id, product_id) + .then(({ ids, object, deleted }) => { + console.log(ids.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/products/{product_id}/prices' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListDeleteProductPricesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/price-lists/{id}/variants/{variant_id}/prices: + delete: + operationId: DeletePriceListsPriceListVariantsVariantPrices + summary: Delete Variant's Prices + description: Delete all the prices related to a specific variant in a price list + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List that the Money Amounts that will be deleted belongs to. + schema: + type: string + - in: path + name: variant_id + required: true + description: The ID of the variant from which the money amount will be deleted. + schema: + type: string + x-codegen: + method: deleteVariantPrices + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.priceLists.deleteVariantPrices(price_list_id, variant_id) + .then(({ ids, object, deleted }) => { + console.log(ids); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/price-lists/{id}/variants/{variant_id}/prices' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPriceListDeleteVariantPricesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/product-categories: + get: + operationId: GetProductCategories + summary: List Product Categories + description: Retrieve a list of product categories. + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching product category names orhandles. + schema: + type: string + - in: query + name: is_internal + description: Search for only internal categories. + schema: + type: boolean + - in: query + name: is_active + description: Search for only active categories + schema: + type: boolean + - in: query + name: include_descendants_tree + description: Include all nested descendants of category + schema: + type: boolean + - in: query + name: parent_category_id + description: Returns categories scoped by parent + schema: + type: string + - in: query + name: offset + description: How many product categories to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of product categories returned. + schema: + type: integer + default: 100 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the product category. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the product category. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetProductCategoriesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.list() + .then(({ product_categories, limit, offset, count }) => { + console.log(product_categories.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/product-categories' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostProductCategories + summary: Create a Product Category + description: Creates a Product Category. + x-authenticated: true + parameters: + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the results. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductCategoriesReq' + x-codegen: + method: create + queryParams: AdminPostProductCategoriesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.create({ + name: "Skinny Jeans", + }) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/product-categories' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Skinny Jeans", + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/product-categories/{id}: + get: + operationId: GetProductCategoriesCategory + summary: Get a Product Category + description: Retrieves a Product Category. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the results. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetProductCategoryParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.retrieve(product_category_id) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/product-categories/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostProductCategoriesCategory + summary: Update a Product Category + description: Updates a Product Category. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product category. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in each product category. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductCategoriesCategoryReq' + x-codegen: + method: update + queryParams: AdminPostProductCategoriesCategoryParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.update(product_category_id, { + name: "Skinny Jeans" + }) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/product-categories/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Skinny Jeans" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductCategoriesCategory + summary: Delete a Product Category + description: Deletes a ProductCategory. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.delete(product_category_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/product-categories/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/product-categories/{id}/products/batch: + post: + operationId: PostProductCategoriesCategoryProductsBatch + summary: Add Products to a category + description: Assign a batch of products to a product category. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Category fields to be expanded in the response. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Category fields to be retrieved in the response. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductCategoriesCategoryProductsBatchReq' + x-codegen: + method: addProducts + queryParams: AdminPostProductCategoriesCategoryProductsBatchParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.addProducts(product_category_id, { + product_ids: [ + { + id: product_id + } + ] + }) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location \ + --request POST 'https://medusa-url.com/admin/product-categories/{product_category_id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + { + "id": "{product_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductCategoriesCategoryProductsBatch + summary: Delete Products + description: Remove a list of products from a product category. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Category fields to be expanded in the response. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Category fields to be retrieved in the response. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteProductCategoriesCategoryProductsBatchReq' + x-codegen: + method: removeProducts + queryParams: AdminDeleteProductCategoriesCategoryProductsBatchParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productCategories.removeProducts(product_category_id, { + product_ids: [ + { + id: product_id + } + ] + }) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/product-categories/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + { + "id": "{product_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/product-tags: + get: + operationId: GetProductTags + summary: List Product Tags + description: Retrieve a list of Product Tags. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of tags to return. + schema: + type: integer + default: 10 + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: order + description: The field to sort items by. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the tags. + schema: + type: string + - in: query + name: value + style: form + explode: false + description: The tag values to search for + schema: + type: array + items: + type: string + - in: query + name: q + description: A query string to search values for + schema: + type: string + - in: query + name: id + style: form + explode: false + description: The tag IDs to search for + schema: + type: array + items: + type: string + - in: query + name: created_at + description: Date comparison for when resulting product tags were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting product tags were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: AdminGetProductTagsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productTags.list() + .then(({ product_tags }) => { + console.log(product_tags.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/product-tags' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Tags + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductTagsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/product-types: + get: + operationId: GetProductTypes + summary: List Product Types + description: Retrieve a list of Product Types. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of types to return. + schema: + type: integer + default: 20 + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: order + description: The field to sort items by. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the product types. + schema: + type: string + - in: query + name: value + style: form + explode: false + description: The type values to search for + schema: + type: array + items: + type: string + - in: query + name: id + style: form + explode: false + description: The type IDs to search for + schema: + type: array + items: + type: string + - in: query + name: q + description: A query string to search values for + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting product types were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting product types were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: AdminGetProductTypesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.productTypes.list() + .then(({ product_types }) => { + console.log(product_types.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/product-types' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Types + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductTypesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products: + get: + operationId: GetProducts + summary: List Products + description: Retrieves a list of Product + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching product title and description, variant title and sku, and collection title. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the product. + schema: + type: string + - in: query + name: id + style: form + explode: false + description: Filter by product IDs. + schema: + oneOf: + - type: string + description: ID of the product to search for. + - type: array + items: + type: string + description: ID of a product. + - in: query + name: status + style: form + explode: false + description: Status to search for + schema: + type: array + items: + type: string + enum: + - draft + - proposed + - published + - rejected + - in: query + name: collection_id + style: form + explode: false + description: Collection ids to search for. + schema: + type: array + items: + type: string + - in: query + name: tags + style: form + explode: false + description: Tag IDs to search for + schema: + type: array + items: + type: string + - in: query + name: price_list_id + style: form + explode: false + description: Price List IDs to search for + schema: + type: array + items: + type: string + - in: query + name: sales_channel_id + style: form + explode: false + description: Sales Channel IDs to filter products by + schema: + type: array + items: + type: string + - in: query + name: type_id + style: form + explode: false + description: Type IDs to filter products by + schema: + type: array + items: + type: string + - in: query + name: category_id + style: form + explode: false + description: Category IDs to filter products by + schema: + type: array + items: + type: string + - in: query + name: include_category_children + description: Include category children when filtering by category_id + schema: + type: boolean + - in: query + name: title + description: title to search for. + schema: + type: string + - in: query + name: description + description: description to search for. + schema: + type: string + - in: query + name: handle + description: handle to search for. + schema: + type: string + - in: query + name: is_giftcard + description: Search for giftcards using is_giftcard=true. + schema: + type: boolean + - in: query + name: created_at + description: Date comparison for when resulting products were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting products were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting products were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: offset + description: How many products to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of products returned. + schema: + type: integer + default: 50 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each product of the result. + schema: + type: string + - in: query + name: order + description: the field used to order the products. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetProductsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.list() + .then(({ products, limit, offset, count }) => { + console.log(products.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/products' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostProducts + summary: Create a Product + x-authenticated: true + description: Creates a Product + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.create({ + title: 'Shirt', + is_giftcard: false, + discountable: true + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Shirt" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/tag-usage: + get: + operationId: GetProductsTagUsage + summary: List Tags Usage Number + description: Retrieves a list of Product Tags with how many times each is used. + x-authenticated: true + x-codegen: + method: listTags + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.listTags() + .then(({ tags }) => { + console.log(tags.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/products/tag-usage' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsListTagsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/types: + get: + deprecated: true + operationId: GetProductsTypes + summary: List Product Types + description: Retrieves a list of Product Types. + x-authenticated: true + x-codegen: + method: listTypes + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.listTypes() + .then(({ types }) => { + console.log(types.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/products/types' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsListTypesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}: + get: + operationId: GetProductsProduct + summary: Get a Product + description: Retrieves a Product. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.retrieve(product_id) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/products/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostProductsProduct + summary: Update a Product + description: Updates a Product + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.update(product_id, { + title: 'Shirt', + images: [] + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Size" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductsProduct + summary: Delete a Product + description: Deletes a Product and it's associated Product Variants. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.delete(product_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/products/asfsaf' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}/metadata: + post: + operationId: PostProductsProductMetadata + summary: Set Product Metadata + description: Set metadata key/value pair for Product + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductMetadataReq' + x-codegen: + method: setMetadata + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.setMetadata(product_id, { + key: 'test', + value: 'true' + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/{id}/metadata' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "key": "test", + "value": "true" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}/options: + post: + operationId: PostProductsProductOptions + summary: Add an Option + x-authenticated: true + description: Adds a Product Option to a Product + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductOptionsReq' + x-codegen: + method: addOption + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.addOption(product_id, { + title: 'Size' + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/{id}/options' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Size" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}/options/{option_id}: + post: + operationId: PostProductsProductOptionsOption + summary: Update a Product Option + description: Updates a Product Option + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: option_id + required: true + description: The ID of the Product Option. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductOptionsOption' + x-codegen: + method: updateOption + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.updateOption(product_id, option_id, { + title: 'Size' + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/{id}/options/{option_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Size" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductsProductOptionsOption + summary: Delete a Product Option + description: Deletes a Product Option. Before a Product Option can be deleted all Option Values for the Product Option must be the same. You may, for example, have to delete some of your variants prior to deleting the Product Option + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: option_id + required: true + description: The ID of the Product Option. + schema: + type: string + x-codegen: + method: deleteOption + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.deleteOption(product_id, option_id) + .then(({ option_id, object, delete, product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/products/{id}/options/{option_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsDeleteOptionRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}/variants: + get: + operationId: GetProductsProductVariants + summary: List a Product's Variants + description: Retrieves a list of the Product Variants associated with a Product. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: ID of the product to search for the variants. + schema: + type: string + - in: query + name: fields + description: Comma separated string of the column to select. + schema: + type: string + - in: query + name: expand + description: Comma separated string of the relations to include. + schema: + type: string + - in: query + name: offset + description: How many items to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of items returned. + schema: + type: integer + default: 100 + x-codegen: + method: listVariants + queryParams: AdminGetProductsVariantsParams + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/products/{id}/variants' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsListVariantsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostProductsProductVariants + summary: Create a Product Variant + description: Creates a Product Variant. Each Product Variant must have a unique combination of Product Option Values. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductVariantsReq' + x-codegen: + method: createVariant + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.createVariant(product_id, { + title: 'Color', + prices: [ + { + amount: 1000, + currency_code: "eur" + } + ], + options: [ + { + option_id, + value: 'S' + } + ], + inventory_quantity: 100 + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/{id}/variants' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Color", + "prices": [ + { + "amount": 1000, + "currency_code": "eur" + } + ], + "options": [ + { + "option_id": "asdasf", + "value": "S" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/products/{id}/variants/{variant_id}: + post: + operationId: PostProductsProductVariantsVariant + summary: Update a Product Variant + description: Update a Product Variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: variant_id + required: true + description: The ID of the Product Variant. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostProductsProductVariantsVariantReq' + x-codegen: + method: updateVariant + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.updateVariant(product_id, variant_id, { + title: 'Color', + prices: [ + { + amount: 1000, + currency_code: "eur" + } + ], + options: [ + { + option_id, + value: 'S' + } + ], + inventory_quantity: 100 + }) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/products/asfsaf/variants/saaga' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Color", + "prices": [ + { + "amount": 1000, + "currency_code": "eur" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteProductsProductVariantsVariant + summary: Delete a Product Variant + description: Deletes a Product Variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: variant_id + required: true + description: The ID of the Product Variant. + schema: + type: string + x-codegen: + method: deleteVariant + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.products.deleteVariant(product_id, variant_id) + .then(({ variant_id, object, deleted, product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/products/{id}/variants/{variant_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminProductsDeleteVariantRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/publishable-api-key/{id}: + post: + operationId: PostPublishableApiKysPublishableApiKey + summary: Update PublishableApiKey + description: Updates a PublishableApiKey. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PublishableApiKey. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPublishableApiKeysPublishableApiKeyReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.update(publishableApiKeyId, { + title: "new title" + }) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/publishable-api-key/{pka_id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "new title" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/publishable-api-keys: + get: + operationId: GetPublishableApiKeys + summary: List PublishableApiKeys + description: List PublishableApiKeys. + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching publishable api keys by title. + schema: + type: string + - in: query + name: limit + description: The number of items in the response + schema: + type: number + default: '20' + - in: query + name: offset + description: The offset of items in response + schema: + type: number + default: '0' + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: list + queryParams: GetPublishableApiKeysParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.list() + .then(({ publishable_api_keys, count, limit, offset }) => { + console.log(publishable_api_keys) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostPublishableApiKeys + summary: Create PublishableApiKey + description: Creates a PublishableApiKey. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPublishableApiKeysReq' + x-authenticated: true + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.create({ + title + }) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "title": "Web API Key" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/publishable-api-keys/{id}: + get: + operationId: GetPublishableApiKeysPublishableApiKey + summary: Get a PublishableApiKey + description: Retrieve the Publishable Api Key. + parameters: + - in: path + name: id + required: true + description: The ID of the PublishableApiKey. + schema: + type: string + x-authenticated: true + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.retrieve(publishableApiKeyId) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeletePublishableApiKeysPublishableApiKey + summary: Delete PublishableApiKey + description: Deletes a PublishableApiKeys + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PublishableApiKeys to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.delete(publishableApiKeyId) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/publishable-api-key/{pka_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeyDeleteRes' + '400': + $ref: '#/components/responses/400_error' + /admin/publishable-api-keys/{id}/revoke: + post: + operationId: PostPublishableApiKeysPublishableApiKeyRevoke + summary: Revoke PublishableApiKey + description: Revokes a PublishableApiKey. + parameters: + - in: path + name: id + required: true + description: The ID of the PublishableApiKey. + schema: + type: string + x-authenticated: true + x-codegen: + method: revoke + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.revoke(publishableApiKeyId) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/revoke' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/publishable-api-keys/{id}/sales-channels: + get: + operationId: GetPublishableApiKeySalesChannels + summary: List SalesChannels + description: List PublishableApiKey's SalesChannels + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Publishable Api Key. + schema: + type: string + - in: query + name: q + description: Query used for searching sales channels' names and descriptions. + schema: + type: string + x-codegen: + method: listSalesChannels + queryParams: GetPublishableApiKeySalesChannelsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.listSalesChannels() + .then(({ sales_channels }) => { + console.log(sales_channels.length) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/sales-channels' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysListSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/publishable-api-keys/{id}/sales-channels/batch: + post: + operationId: PostPublishableApiKeySalesChannelsChannelsBatch + summary: Add SalesChannels + description: Assign a batch of sales channels to a publishable api key. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Publishable Api Key. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostPublishableApiKeySalesChannelsBatchReq' + x-codegen: + method: addSalesChannelsBatch + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.addSalesChannelsBatch(publishableApiKeyId, { + sales_channel_ids: [ + { + id: channel_id + } + ] + }) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/publishable-api-keys/{pak_id}/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "sales_channel_ids": [ + { + "id": "{sales_channel_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeletePublishableApiKeySalesChannelsChannelsBatch + summary: Delete SalesChannels + description: Remove a batch of sales channels from a publishable api key. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Publishable Api Key. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeletePublishableApiKeySalesChannelsBatchReq' + x-codegen: + method: deleteSalesChannelsBatch + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.publishableApiKeys.deleteSalesChannelsBatch(publishableApiKeyId, { + sales_channel_ids: [ + { + id: channel_id + } + ] + }) + .then(({ publishable_api_key }) => { + console.log(publishable_api_key.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/publishable-api-keys/{pka_id}/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "sales_channel_ids": [ + { + "id": "{sales_channel_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPublishableApiKeysRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions: + get: + operationId: GetRegions + summary: List Regions + description: Retrieves a list of Regions. + x-authenticated: true + parameters: + - in: query + name: limit + schema: + type: integer + default: 50 + required: false + description: limit the number of regions in response + - in: query + name: offset + schema: + type: integer + default: 0 + required: false + description: Offset of regions in response (used for pagination) + - in: query + name: created_at + schema: + type: object + required: false + description: Date comparison for when resulting region was created, i.e. less than, greater than etc. + - in: query + name: updated_at + schema: + type: object + required: false + description: Date comparison for when resulting region was updated, i.e. less than, greater than etc. + - in: query + name: deleted_at + schema: + type: object + required: false + description: Date comparison for when resulting region was deleted, i.e. less than, greater than etc. + x-codegen: + method: list + queryParams: AdminGetRegionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.list() + .then(({ regions, limit, offset, count }) => { + console.log(regions.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/regions' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostRegions + summary: Create a Region + description: Creates a Region + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostRegionsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.create({ + name: 'Europe', + currency_code: 'eur', + tax_rate: 0, + payment_providers: [ + 'manual' + ], + fulfillment_providers: [ + 'manual' + ], + countries: [ + 'DK' + ] + }) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/regions' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Europe", + "currency_code": "eur", + "tax_rate": 0, + "payment_providers": [ + "manual" + ], + "fulfillment_providers": [ + "manual" + ], + "countries": [ + "DK" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}: + get: + operationId: GetRegionsRegion + summary: Get a Region + description: Retrieves a Region. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.retrieve(region_id) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/regions/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostRegionsRegion + summary: Update a Region + description: Updates a Region + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostRegionsRegionReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.update(region_id, { + name: 'Europe' + }) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/regions/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Europe" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteRegionsRegion + summary: Delete a Region + description: Deletes a Region. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.delete(region_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/countries: + post: + operationId: PostRegionsRegionCountries + summary: Add Country + description: Adds a Country to the list of Countries in a Region + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostRegionsRegionCountriesReq' + x-codegen: + method: addCountry + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.addCountry(region_id, { + country_code: 'dk' + }) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/regions/{region_id}/countries' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "country_code": "dk" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/countries/{country_code}: + delete: + operationId: PostRegionsRegionCountriesCountry + summary: Delete Country + x-authenticated: true + description: Removes a Country from the list of Countries in a Region + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + - in: path + name: country_code + description: The 2 character ISO code for the Country. + required: true + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + x-codegen: + method: deleteCountry + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.deleteCountry(region_id, 'dk') + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/countries/dk' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/fulfillment-options: + get: + operationId: GetRegionsRegionFulfillmentOptions + summary: List Fulfillment Options + description: Gathers all the fulfillment options available to in the Region. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: retrieveFulfillmentOptions + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.retrieveFulfillmentOptions(region_id) + .then(({ fulfillment_options }) => { + console.log(fulfillment_options.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/regions/{id}/fulfillment-options' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/fulfillment-providers: + post: + operationId: PostRegionsRegionFulfillmentProviders + summary: Add Fulfillment Provider + description: Adds a Fulfillment Provider to a Region + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostRegionsRegionFulfillmentProvidersReq' + x-codegen: + method: addFulfillmentProvider + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.addFulfillmentProvider(region_id, { + provider_id: 'manual' + }) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/regions/{id}/fulfillment-providers' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "provider_id": "manual" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/fulfillment-providers/{provider_id}: + delete: + operationId: PostRegionsRegionFulfillmentProvidersProvider + summary: Del. Fulfillment Provider + description: Removes a Fulfillment Provider. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + - in: path + name: provider_id + required: true + description: The ID of the Fulfillment Provider. + schema: + type: string + x-codegen: + method: deleteFulfillmentProvider + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.deleteFulfillmentProvider(region_id, 'manual') + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/fulfillment-providers/manual' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/payment-providers: + post: + operationId: PostRegionsRegionPaymentProviders + summary: Add Payment Provider + description: Adds a Payment Provider to a Region + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostRegionsRegionPaymentProvidersReq' + x-codegen: + method: addPaymentProvider + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.addPaymentProvider(region_id, { + provider_id: 'manual' + }) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/regions/{id}/payment-providers' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "provider_id": "manual" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/regions/{id}/payment-providers/{provider_id}: + delete: + operationId: PostRegionsRegionPaymentProvidersProvider + summary: Delete Payment Provider + description: Removes a Payment Provider. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + - in: path + name: provider_id + required: true + description: The ID of the Payment Provider. + schema: + type: string + x-codegen: + method: deletePaymentProvider + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.regions.deletePaymentProvider(region_id, 'manual') + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/regions/{id}/payment-providers/manual' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/reservations: + get: + operationId: GetReservations + summary: List Reservations + description: Retrieve a list of Reservations. + x-authenticated: true + parameters: + - in: query + name: location_id + style: form + explode: false + description: Location ids to search for. + schema: + type: array + items: + type: string + - in: query + name: inventory_item_id + style: form + explode: false + description: Inventory Item ids to search for. + schema: + type: array + items: + type: string + - in: query + name: line_item_id + style: form + explode: false + description: Line Item ids to search for. + schema: + type: array + items: + type: string + - in: query + name: quantity + description: Filter by reservation quantity + schema: + type: object + properties: + lt: + type: number + description: filter by reservation quantity less than this number + gt: + type: number + description: filter by reservation quantity greater than this number + lte: + type: number + description: filter by reservation quantity less than or equal to this number + gte: + type: number + description: filter by reservation quantity greater than or equal to this number + - in: query + name: offset + description: How many Reservations to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of Reservations returned. + schema: + type: integer + default: 20 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the product category. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the product category. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetReservationsParams + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/product-categories' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostReservations + summary: Creates a Reservation + description: Creates a Reservation which can be associated with any resource as required. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReservationsReq' + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.reservations.create({ + }) + .then(({ reservations }) => { + console.log(reservations.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/reservations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "resource_id": "{resource_id}", + "resource_type": "order", + "value": "We delivered this order" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/reservations/{id}: + get: + operationId: GetReservationsReservation + summary: Get a Reservation + description: Retrieves a single reservation using its id + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the reservation to retrieve. + schema: + type: string + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.reservations.retrieve(reservation_id) + .then(({ reservation }) => { + console.log(reservation.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/reservations/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostReservationsReservation + summary: Updates a Reservation + description: Updates a Reservation which can be associated with any resource as required. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Reservation to update. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReservationsReservationReq' + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.reservations.update(reservation.id, { + quantity: 3 + }) + .then(({ reservations }) => { + console.log(reservations.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/reservations/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "quantity": 3, + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteReservationsReservation + summary: Delete a Reservation + description: Deletes a Reservation. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Reservation to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.reservations.delete(reservation.id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/reservations/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReservationsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/return-reasons: + get: + operationId: GetReturnReasons + summary: List Return Reasons + description: Retrieves a list of Return Reasons. + x-authenticated: true + x-codegen: + method: list + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returnReasons.list() + .then(({ return_reasons }) => { + console.log(return_reasons.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/return-reasons' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnReasonsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostReturnReasons + summary: Create a Return Reason + description: Creates a Return Reason + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReturnReasonsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returnReasons.create({ + label: 'Damaged', + value: 'damaged' + }) + .then(({ return_reason }) => { + console.log(return_reason.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/return-reasons' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "label": "Damaged", + "value": "damaged" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnReasonsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/return-reasons/{id}: + get: + operationId: GetReturnReasonsReason + summary: Get a Return Reason + description: Retrieves a Return Reason. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Return Reason. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returnReasons.retrieve(return_reason_id) + .then(({ return_reason }) => { + console.log(return_reason.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/return-reasons/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnReasonsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostReturnReasonsReason + summary: Update a Return Reason + description: Updates a Return Reason + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Return Reason. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReturnReasonsReasonReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returnReasons.update(return_reason_id, { + label: 'Damaged' + }) + .then(({ return_reason }) => { + console.log(return_reason.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/return-reasons/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "label": "Damaged" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnReasonsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteReturnReason + summary: Delete a Return Reason + description: Deletes a return reason. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the return reason + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returnReasons.delete(return_reason_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/return-reasons/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnReasonsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/returns: + get: + operationId: GetReturns + summary: List Returns + description: Retrieves a list of Returns + parameters: + - in: query + name: limit + description: The upper limit for the amount of responses returned. + schema: + type: number + default: '50' + - in: query + name: offset + description: The offset of the list returned. + schema: + type: number + default: '0' + x-codegen: + method: list + queryParams: AdminGetReturnsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returns.list() + .then(({ returns, limit, offset, count }) => { + console.log(returns.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/returns' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Returns + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/returns/{id}/cancel: + post: + operationId: PostReturnsReturnCancel + summary: Cancel a Return + description: Registers a Return as canceled. + parameters: + - in: path + name: id + required: true + description: The ID of the Return. + schema: + type: string + x-codegen: + method: cancel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returns.cancel(return_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/returns/{id}/cancel' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Returns + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnsCancelRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/returns/{id}/receive: + post: + operationId: PostReturnsReturnReceive + summary: Receive a Return + description: Registers a Return as received. Updates statuses on Orders and Swaps accordingly. + parameters: + - in: path + name: id + required: true + description: The ID of the Return. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostReturnsReturnReceiveReq' + x-codegen: + method: receive + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.returns.receive(return_id, { + items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then((data) => { + console.log(data.return.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/returns/{id}/receive' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "items": [ + { + "item_id": "asafg", + "quantity": 1 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Returns + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminReturnsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/sales-channels: + get: + operationId: GetSalesChannels + summary: List Sales Channels + description: Retrieves a list of sales channels + x-authenticated: true + parameters: + - in: query + name: id + description: ID of the sales channel + schema: + type: string + - in: query + name: name + description: Name of the sales channel + schema: + type: string + - in: query + name: description + description: Description of the sales channel + schema: + type: string + - in: query + name: q + description: Query used for searching sales channels' names and descriptions. + schema: + type: string + - in: query + name: order + description: The field to order the results by. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting collections were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting collections were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting collections were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: offset + description: How many sales channels to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of sales channels returned. + schema: + type: integer + default: 20 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each sales channel of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each sales channel of the result. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetSalesChannelsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.list() + .then(({ sales_channels, limit, offset, count }) => { + console.log(sales_channels.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/sales-channels' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostSalesChannels + summary: Create a Sales Channel + description: Creates a Sales Channel. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostSalesChannelsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.create({ + name: 'App', + description: 'Mobile app' + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/sales-channels' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "App" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/sales-channels/{id}: + get: + operationId: GetSalesChannelsSalesChannel + summary: Get a Sales Channel + description: Retrieves the sales channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales channel. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.retrieve(sales_channel_id) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/sales-channels/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostSalesChannelsSalesChannel + summary: Update a Sales Channel + description: Updates a Sales Channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales Channel. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostSalesChannelsSalesChannelReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.update(sales_channel_id, { + name: 'App' + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/sales-channels/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "App" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteSalesChannelsSalesChannel + summary: Delete a Sales Channel + description: Deletes the sales channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales channel. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.delete(sales_channel_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/sales-channels/{id}/products/batch: + post: + operationId: PostSalesChannelsChannelProductsBatch + summary: Add Products + description: Assign a batch of product to a sales channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales channel. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostSalesChannelsChannelProductsBatchReq' + x-codegen: + method: addProducts + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.addProducts(sales_channel_id, { + product_ids: [ + { + id: product_id + } + ] + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/sales-channels/afasf/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + { + "id": "{product_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteSalesChannelsChannelProductsBatch + summary: Delete Products + description: Remove a list of products from a sales channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales Channel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteSalesChannelsChannelProductsBatchReq' + x-codegen: + method: removeProducts + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.removeProducts(sales_channel_id, { + product_ids: [ + { + id: product_id + } + ] + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_ids": [ + { + "id": "{product_id}" + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/sales-channels/{id}/stock-locations: + post: + operationId: PostSalesChannelsSalesChannelStockLocation + summary: Associate a stock location to a Sales Channel + description: Associates a stock location to a Sales Channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales Channel. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostSalesChannelsChannelStockLocationsReq' + x-codegen: + method: addLocation + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.addLocation(sales_channel_id, { + location_id: 'App' + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/sales-channels/{id}/stock-locations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "locaton_id": "stock_location_id" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteSalesChannelsSalesChannelStockLocation + summary: Remove a stock location from a Sales Channel + description: Removes a stock location from a Sales Channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales Channel. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteSalesChannelsChannelStockLocationsReq' + x-codegen: + method: removeLocation + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.salesChannels.removeLocation(sales_channel_id, { + location_id: 'App' + }) + .then(({ sales_channel }) => { + console.log(sales_channel.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/sales-channels/{id}/stock-locations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "locaton_id": "stock_location_id" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSalesChannelsDeleteLocationRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/shipping-options: + get: + operationId: GetShippingOptions + summary: List Shipping Options + description: Retrieves a list of Shipping Options. + x-authenticated: true + parameters: + - in: query + name: region_id + schema: + type: string + description: Region ID to fetch options from + - in: query + name: is_return + schema: + type: boolean + description: Flag for fetching return options only + - in: query + name: admin_only + schema: + type: boolean + description: Flag for fetching admin specific options + x-codegen: + method: list + queryParams: AdminGetShippingOptionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingOptions.list() + .then(({ shipping_options, count }) => { + console.log(shipping_options.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/shipping-options' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingOptionsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostShippingOptions + summary: Create Shipping Option + description: Creates a Shipping Option + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostShippingOptionsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingOptions.create({ + name: 'PostFake', + region_id: "saasf", + provider_id: "manual", + data: { + }, + price_type: 'flat_rate' + }) + .then(({ shipping_option }) => { + console.log(shipping_option.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/shipping-options' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "PostFake", + "region_id": "afasf", + "provider_id": "manual", + "data": {}, + "price_type": "flat_rate" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingOptionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/shipping-options/{id}: + get: + operationId: GetShippingOptionsOption + summary: Get a Shipping Option + description: Retrieves a Shipping Option. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingOptions.retrieve(option_id) + .then(({ shipping_option }) => { + console.log(shipping_option.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/shipping-options/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingOptionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostShippingOptionsOption + summary: Update Shipping Option + description: Updates a Shipping Option + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostShippingOptionsOptionReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingOptions.update(option_id, { + name: 'PostFake', + requirements: [ + { + id, + type: 'max_subtotal', + amount: 1000 + } + ] + }) + .then(({ shipping_option }) => { + console.log(shipping_option.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/shipping-options/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "requirements": [ + { + "type": "max_subtotal", + "amount": 1000 + } + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingOptionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteShippingOptionsOption + summary: Delete a Shipping Option + description: Deletes a Shipping Option. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingOptions.delete(option_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/shipping-options/{option_id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingOptionsDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/shipping-profiles: + get: + operationId: GetShippingProfiles + summary: List Shipping Profiles + description: Retrieves a list of Shipping Profile. + x-authenticated: true + x-codegen: + method: list + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingProfiles.list() + .then(({ shipping_profiles }) => { + console.log(shipping_profiles.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/shipping-profiles' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingProfilesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostShippingProfiles + summary: Create a Shipping Profile + description: Creates a Shipping Profile + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostShippingProfilesReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingProfiles.create({ + name: 'Large Products' + }) + .then(({ shipping_profile }) => { + console.log(shipping_profile.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/shipping-profiles' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Large Products" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingProfilesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/shipping-profiles/{id}: + get: + operationId: GetShippingProfilesProfile + summary: Get a Shipping Profile + description: Retrieves a Shipping Profile. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Profile. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingProfiles.retrieve(profile_id) + .then(({ shipping_profile }) => { + console.log(shipping_profile.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/shipping-profiles/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingProfilesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostShippingProfilesProfile + summary: Update a Shipping Profile + description: Updates a Shipping Profile + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Profile. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostShippingProfilesProfileReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingProfiles.update(shipping_profile_id, { + name: 'Large Products' + }) + .then(({ shipping_profile }) => { + console.log(shipping_profile.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/shipping-profiles/{id} \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Large Products" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminShippingProfilesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteShippingProfilesProfile + summary: Delete a Shipping Profile + description: Deletes a Shipping Profile. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Profile. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.shippingProfiles.delete(profile_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/shipping-profiles/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteShippingProfileRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/stock-locations: + get: + operationId: GetStockLocations + summary: List Stock Locations + description: Retrieves a list of stock locations + x-authenticated: true + parameters: + - in: query + name: id + description: ID of the stock location + schema: + type: string + - in: query + name: name + description: Name of the stock location + schema: + type: string + - in: query + name: order + description: The field to order the results by. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting collections were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting collections were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: deleted_at + description: Date comparison for when resulting collections were deleted. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: offset + description: How many stock locations to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of stock locations returned. + schema: + type: integer + default: 20 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each stock location of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each stock location of the result. + schema: + type: string + x-codegen: + method: list + queryParams: AdminGetStockLocationsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.stockLocations.list() + .then(({ stock_locations, limit, offset, count }) => { + console.log(stock_locations.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/stock-locations' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStockLocationsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostStockLocations + summary: Create a Stock Location + description: Creates a Stock Location. + x-authenticated: true + parameters: + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostStockLocationsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.stockLocations.create({ + name: 'Main Warehouse', + location_id: 'sloc' + }) + .then(({ stock_location }) => { + console.log(stock_location.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/stock-locations' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "App" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStockLocationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/stock-locations/{id}: + get: + operationId: GetStockLocationsStockLocation + summary: Get a Stock Location + description: Retrieves the Stock Location. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Stock Location. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetStockLocationsLocationParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.stockLocations.retrieve(stock_location_id) + .then(({ stock_location }) => { + console.log(stock_location.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/stock-locations/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStockLocationsRes' + post: + operationId: PostStockLocationsStockLocation + summary: Update a Stock Location + description: Updates a Stock Location. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Stock Location. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostStockLocationsLocationReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.stockLocations.update(stock_location_id, { + name: 'App' + }) + .then(({ stock_location }) => { + console.log(stock_location.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/stock-locations/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "App" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStockLocationsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteStockLocationsStockLocation + summary: Delete a Stock Location + description: Delete a Stock Location + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Stock Location to delete. + schema: + type: string + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.stockLocations.delete(stock_location_id) + .then(({ id, object, deleted }) => { + console.log(id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/stock-locations/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + description: The ID of the deleted Stock Location. + object: + type: string + description: The type of the object that was deleted. + format: stock_location + deleted: + type: boolean + description: Whether or not the Stock Location was deleted. + default: true + '400': + $ref: '#/components/responses/400_error' + /admin/store: + get: + operationId: GetStore + summary: Get Store details + description: Retrieves the Store details + x-authenticated: true + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.retrieve() + .then(({ store }) => { + console.log(store.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/store' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminExtendedStoresRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostStore + summary: Update Store Details + description: Updates the Store details + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostStoreReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.update({ + name: 'Medusa Store' + }) + .then(({ store }) => { + console.log(store.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/store' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "Medusa Store" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStoresRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/store/currencies/{code}: + post: + operationId: PostStoreCurrenciesCode + summary: Add a Currency Code + description: Adds a Currency Code to the available currencies. + x-authenticated: true + parameters: + - in: path + name: code + required: true + description: The 3 character ISO currency code. + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + x-codegen: + method: addCurrency + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.addCurrency('eur') + .then(({ store }) => { + console.log(store.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/store/currencies/eur' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStoresRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteStoreCurrenciesCode + summary: Delete a Currency Code + description: Removes a Currency Code from the available currencies. + x-authenticated: true + parameters: + - in: path + name: code + required: true + description: The 3 character ISO currency code. + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + x-codegen: + method: deleteCurrency + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.deleteCurrency('eur') + .then(({ store }) => { + console.log(store.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/store/currencies/eur' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminStoresRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/store/payment-providers: + get: + operationId: GetStorePaymentProviders + summary: List Payment Providers + description: Retrieves the configured Payment Providers + x-authenticated: true + x-codegen: + method: listPaymentProviders + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.listPaymentProviders() + .then(({ payment_providers }) => { + console.log(payment_providers.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/store/payment-providers' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPaymentProvidersList' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/store/tax-providers: + get: + operationId: GetStoreTaxProviders + summary: List Tax Providers + description: Retrieves the configured Tax Providers + x-authenticated: true + x-codegen: + method: listTaxProviders + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.store.listTaxProviders() + .then(({ tax_providers }) => { + console.log(tax_providers.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/store/tax-providers' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Store + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxProvidersList' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/swaps: + get: + operationId: GetSwaps + summary: List Swaps + description: Retrieves a list of Swaps. + parameters: + - in: query + name: limit + description: The upper limit for the amount of responses returned. + schema: + type: number + default: '50' + - in: query + name: offset + description: The offset of the list returned. + schema: + type: number + default: '0' + x-authenticated: true + x-codegen: + method: list + queryParams: AdminGetSwapsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.swaps.list() + .then(({ swaps }) => { + console.log(swaps.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/swaps' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Swaps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSwapsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/swaps/{id}: + get: + operationId: GetSwapsSwap + summary: Get a Swap + description: Retrieves a Swap. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Swap. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.swaps.retrieve(swap_id) + .then(({ swap }) => { + console.log(swap.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/swaps/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Swaps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminSwapsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/tax-rates: + get: + operationId: GetTaxRates + summary: List Tax Rates + description: Retrieves a list of TaxRates + x-authenticated: true + parameters: + - in: query + name: name + description: Name of tax rate to retrieve + schema: + type: string + - in: query + name: region_id + style: form + explode: false + description: Filter by Region ID + schema: + oneOf: + - type: string + - type: array + items: + type: string + - in: query + name: code + description: code to search for. + schema: + type: string + - in: query + name: rate + style: form + explode: false + description: Filter by Rate + schema: + oneOf: + - type: number + - type: object + properties: + lt: + type: number + description: filter by rates less than this number + gt: + type: number + description: filter by rates greater than this number + lte: + type: number + description: filter by rates less than or equal to this number + gte: + type: number + description: filter by rates greater than or equal to this number + - in: query + name: offset + description: How many tax rates to skip before retrieving the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of tax rates returned. + schema: + type: integer + default: 50 + - in: query + name: fields + description: Which fields should be included in each item. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved for each item. + style: form + explode: false + schema: + type: array + items: + type: string + x-codegen: + method: list + queryParams: AdminGetTaxRatesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.list() + .then(({ tax_rates, limit, offset, count }) => { + console.log(tax_rates.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/tax-rates' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostTaxRates + summary: Create a Tax Rate + description: Creates a Tax Rate + parameters: + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostTaxRatesReq' + x-codegen: + method: create + queryParams: AdminPostTaxRatesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.create({ + code: 'TEST', + name: 'New Tax Rate', + region_id + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/tax-rates' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "code": "TEST", + "name": "New Tax Rate", + "region_id": "{region_id}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/tax-rates/{id}: + get: + operationId: GetTaxRatesTaxRate + summary: Get a Tax Rate + description: Retrieves a TaxRate + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + x-codegen: + method: retrieve + queryParams: AdminGetTaxRatesTaxRateParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.retrieve(tax_rate_id) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/tax-rates/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostTaxRatesTaxRate + summary: Update a Tax Rate + description: Updates a Tax Rate + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostTaxRatesTaxRateReq' + x-codegen: + method: update + queryParams: AdminPostTaxRatesTaxRateParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.update(tax_rate_id, { + name: 'New Tax Rate' + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "name": "New Tax Rate" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteTaxRatesTaxRate + summary: Delete a Tax Rate + description: Deletes a Tax Rate + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.delete(tax_rate_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesDeleteRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/tax-rates/{id}/product-types/batch: + post: + operationId: PostTaxRatesTaxRateProductTypes + summary: Add to Product Types + description: Associates a Tax Rate with a list of Product Types + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostTaxRatesTaxRateProductTypesReq' + x-codegen: + method: addProductTypes + queryParams: AdminPostTaxRatesTaxRateProductTypesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.addProductTypes(tax_rate_id, { + product_types: [ + product_type_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/product-types/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_types": [ + "{product_type_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteTaxRatesTaxRateProductTypes + summary: Delete from Product Types + description: Removes a Tax Rate from a list of Product Types + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateProductTypesReq' + x-codegen: + method: removeProductTypes + queryParams: AdminDeleteTaxRatesTaxRateProductTypesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.removeProductTypes(tax_rate_id, { + product_types: [ + product_type_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/product-types/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "product_types": [ + "{product_type_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/tax-rates/{id}/products/batch: + post: + operationId: PostTaxRatesTaxRateProducts + summary: Add to Products + description: Associates a Tax Rate with a list of Products + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostTaxRatesTaxRateProductsReq' + x-codegen: + method: addProducts + queryParams: AdminPostTaxRatesTaxRateProductsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.addProducts(tax_rate_id, { + products: [ + product_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "products": [ + "{product_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteTaxRatesTaxRateProducts + summary: Delete from Products + description: Removes a Tax Rate from a list of Products + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateProductsReq' + x-codegen: + method: removeProducts + queryParams: AdminDeleteTaxRatesTaxRateProductsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.removeProducts(tax_rate_id, { + products: [ + product_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/products/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "products": [ + "{product_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/tax-rates/{id}/shipping-options/batch: + post: + operationId: PostTaxRatesTaxRateShippingOptions + summary: Add to Shipping Options + description: Associates a Tax Rate with a list of Shipping Options + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostTaxRatesTaxRateShippingOptionsReq' + x-codegen: + method: addShippingOptions + queryParams: AdminPostTaxRatesTaxRateShippingOptionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.addShippingOptions(tax_rate_id, { + shipping_options: [ + shipping_option_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/tax-rates/{id}/shipping-options/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "shipping_options": [ + "{shipping_option_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteTaxRatesTaxRateShippingOptions + summary: Del. for Shipping Options + description: Removes a Tax Rate from a list of Shipping Options + parameters: + - in: path + name: id + required: true + description: ID of the tax rate. + schema: + type: string + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteTaxRatesTaxRateShippingOptionsReq' + x-codegen: + method: removeShippingOptions + queryParams: AdminDeleteTaxRatesTaxRateShippingOptionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.taxRates.removeShippingOptions(tax_rate_id, { + shipping_options: [ + shipping_option_id + ] + }) + .then(({ tax_rate }) => { + console.log(tax_rate.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/tax-rates/{id}/shipping-options/batch' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "shipping_options": [ + "{shipping_option_id}" + ] + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminTaxRatesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/uploads: + post: + operationId: PostUploads + summary: Upload files + description: Uploads at least one file to the specific fileservice that is installed in Medusa. + x-authenticated: true + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + files: + type: string + format: binary + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.uploads.create(file) + .then(({ uploads }) => { + console.log(uploads.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/uploads' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: image/jpeg' \ + --form 'files=@""' \ + --form 'files=@""' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Uploads + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUploadsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteUploads + summary: Delete an Uploaded File + description: Removes an uploaded file using the installed fileservice + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteUploadsReq' + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.uploads.delete({ + file_key + }) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/uploads' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "file_key": "{file_key}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Uploads + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteUploadsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/uploads/download-url: + post: + operationId: PostUploadsDownloadUrl + summary: Get a File's Download URL + description: Creates a presigned download url for a file + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminPostUploadsDownloadUrlReq' + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.uploads.getPresignedDownloadUrl({ + file_key + }) + .then(({ download_url }) => { + console.log(download_url); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/uploads/download-url' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "file_key": "{file_key}" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Uploads + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUploadsDownloadUrlRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/uploads/protected: + post: + operationId: PostUploadsProtected + summary: Protected File Upload + description: Uploads at least one file with ACL or a non-public bucket to the specific fileservice that is installed in Medusa. + x-authenticated: true + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + files: + type: string + format: binary + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.uploads.createProtected(file) + .then(({ uploads }) => { + console.log(uploads.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/uploads/protected' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: image/jpeg' \ + --form 'files=@""' \ + --form 'files=@""' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Uploads + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUploadsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/users: + get: + operationId: GetUsers + summary: List Users + description: Retrieves all users. + x-authenticated: true + x-codegen: + method: list + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.list() + .then(({ users }) => { + console.log(users.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/users' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUsersListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostUsers + summary: Create a User + description: Creates a User + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCreateUserRequest' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.create({ + email: 'user@example.com', + password: 'supersecret' + }) + .then(({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/users' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUserRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/users/password-token: + post: + operationId: PostUsersUserPasswordToken + summary: Request Password Reset + description: Generates a password token for a User with a given email. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminResetPasswordTokenRequest' + x-codegen: + method: sendResetPasswordToken + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.sendResetPasswordToken({ + email: 'user@example.com' + }) + .then(() => { + // successful + }) + .catch(() => { + // error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/users/password-token' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '204': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/users/reset-password: + post: + operationId: PostUsersUserPassword + summary: Reset Password + description: Sets the password for a User given the correct token. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminResetPasswordRequest' + x-codegen: + method: resetPassword + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.resetPassword({ + token: 'supersecrettoken', + password: 'supersecret' + }) + .then(({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/users/reset-password' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "token": "supersecrettoken", + "password": "supersecret" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUserRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/users/{id}: + get: + operationId: GetUsersUser + summary: Get a User + description: Retrieves a User. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the User. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.retrieve(user_id) + .then(({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/users/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUserRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostUsersUser + summary: Update a User + description: Updates a User + parameters: + - in: path + name: id + required: true + description: The ID of the User. + schema: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUpdateUserRequest' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.update(user_id, { + first_name: 'Marcellus' + }) + .then(({ user }) => { + console.log(user.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/admin/users/{id}' \ + --header 'Authorization: Bearer {api_token}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "first_name": "Marcellus" + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUserRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteUsersUser + summary: Delete a User + description: Deletes a User + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the User. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.users.delete(user_id) + .then(({ id, object, deleted }) => { + console.log(id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/admin/users/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminDeleteUserRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/variants: + get: + operationId: GetVariants + summary: List Product Variants + description: Retrieves a list of Product Variants + x-authenticated: true + parameters: + - in: query + name: id + description: A Product Variant id to filter by. + schema: + type: string + - in: query + name: ids + description: A comma separated list of Product Variant ids to filter by. + schema: + type: string + - in: query + name: expand + description: A comma separated list of Product Variant relations to load. + schema: + type: string + - in: query + name: fields + description: A comma separated list of Product Variant fields to include. + schema: + type: string + - in: query + name: offset + description: How many product variants to skip in the result. + schema: + type: number + default: '0' + - in: query + name: limit + description: Maximum number of Product Variants to return. + schema: + type: number + default: '100' + - in: query + name: cart_id + description: The id of the cart to use for price selection. + schema: + type: string + - in: query + name: region_id + description: The id of the region to use for price selection. + schema: + type: string + - in: query + name: currency_code + description: The currency code to use for price selection. + schema: + type: string + - in: query + name: customer_id + description: The id of the customer to use for price selection. + schema: + type: string + - in: query + name: title + style: form + explode: false + description: product variant title to search for. + schema: + oneOf: + - type: string + description: a single title to search by + - type: array + description: multiple titles to search by + items: + type: string + - in: query + name: inventory_quantity + description: Filter by available inventory quantity + schema: + oneOf: + - type: number + description: a specific number to search by. + - type: object + description: search using less and greater than comparisons. + properties: + lt: + type: number + description: filter by inventory quantity less than this number + gt: + type: number + description: filter by inventory quantity greater than this number + lte: + type: number + description: filter by inventory quantity less than or equal to this number + gte: + type: number + description: filter by inventory quantity greater than or equal to this number + x-codegen: + method: list + queryParams: AdminGetVariantsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.variants.list() + .then(({ variants, limit, offset, count }) => { + console.log(variants.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/variants' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Variants + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminVariantsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/variants/{id}: + get: + operationId: GetVariantsVariant + summary: Get a Product variant + description: Retrieves a Product variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the variant. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded the order of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included the order of the result. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetVariantParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.variants.retrieve(product_id) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/variants/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AdminVariantsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /admin/variants/{id}/inventory: + get: + operationId: GetVariantsVariantInventory + summary: Get inventory of Variant. + description: Returns the available inventory of a Variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The Product Variant id to get inventory for. + schema: + type: string + x-codegen: + method: getInventory + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.admin.variants.list() + .then(({ variants, limit, offset, count }) => { + console.log(variants.length) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/admin/variants' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Variants + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + variant: + type: object + $ref: '#/components/schemas/AdminGetVariantsVariantInventoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' +components: + responses: + default_error: + description: Default Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: unknown_error + message: An unknown error occurred. + type: unknown_error + invalid_state_error: + description: Invalid State Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: unknown_error + message: The request conflicted with another request. You may retry the request with the provided Idempotency-Key. + type: QueryRunnerAlreadyReleasedError + invalid_request_error: + description: Invalid Request Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: invalid_request_error + message: Discount with code TEST already exists. + type: duplicate_error + not_found_error: + description: Not Found Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + message: Entity with id 1 was not found + type: not_found + 400_error: + description: Client Error or Multiple Errors + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Error' + - $ref: '#/components/schemas/MultipleErrors' + examples: + not_allowed: + $ref: '#/components/examples/not_allowed_error' + invalid_data: + $ref: '#/components/examples/invalid_data_error' + MultipleErrors: + $ref: '#/components/examples/multiple_errors' + 500_error: + description: Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + database: + $ref: '#/components/examples/database_error' + unexpected_state: + $ref: '#/components/examples/unexpected_state_error' + invalid_argument: + $ref: '#/components/examples/invalid_argument_error' + default_error: + $ref: '#/components/examples/default_error' + unauthorized: + description: User is not authorized. Must log in first + content: + text/plain: + schema: + type: string + default: Unauthorized + example: Unauthorized + incorrect_credentials: + description: User does not exist or incorrect credentials + content: + text/plain: + schema: + type: string + default: Unauthorized + example: Unauthorized + examples: + not_allowed_error: + summary: Not Allowed Error + value: + message: Discount must be set to dynamic + type: not_allowed + invalid_data_error: + summary: Invalid Data Error + value: + message: first_name must be a string + type: invalid_data + multiple_errors: + summary: Multiple Errors + value: + message: Provided request body contains errors. Please check the data and retry the request + errors: + - message: first_name must be a string + type: invalid_data + - message: Discount must be set to dynamic + type: not_allowed + database_error: + summary: Database Error + value: + code: api_error + message: An error occured while hashing password + type: database_error + unexpected_state_error: + summary: Unexpected State Error + value: + message: cart.total must be defined + type: unexpected_state + invalid_argument_error: + summary: Invalid Argument Error + value: + message: cart.total must be defined + type: unexpected_state + default_error: + summary: Default Error + value: + code: unknown_error + message: An unknown error occurred. + type: unknown_error + securitySchemes: + api_token: + type: http + x-displayName: API Token + description: | + Use a user's API Token to send authenticated requests. + + ### How to Add API Token to a User + + At the moment, there's no direct way of adding an API Token for a user. The only way it can be done is through directly editing the database. + + If you're using a PostgreSQL database, you can run the following commands in your command line to add API token: + + ```bash + psql -d -U + UPDATE public.user SET api_token='' WHERE email=''; + ``` + + Where: + - `` is the name of the database schema you use for the Medusa server. + - `` is the name of the user that has privileges over the database schema. + - `` is the API token you want to associate with the user. You can use [this tool to generate a random token](https://randomkeygen.com/). + - `` is the email address of the admin user you want to have this API token. + + ### How to Use the API Token + + The API token can be used for Bearer Authentication. It's passed in the `Authorization` header as the following: + + ``` + Authorization: Bearer {api_token} + ``` + + In this API reference, you'll find in the cURL request samples the use of `{api_token}`. This is where you must pass the API token. + + If you're following along with the JS Client request samples, you must provide the `apiKey` option when creating the Medusa client: + + ```ts + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3, apiKey: '{api_token}' }) + ``` + + If you're using Medusa React, you can pass the `apiKey` prop to `MedusaProvider`: + + ```tsx + + ``` + scheme: bearer + cookie_auth: + type: apiKey + in: cookie + name: connect.sid + x-displayName: Cookie Session ID + description: | + Use a cookie session to send authenticated requests. + + ### How to Obtain the Cookie Session + + If you're sending requests through a browser, using JS Client, or using tools like Postman, the cookie session should be automatically set when the admin user is logged in. + + If you're sending requests using cURL, you must set the Session ID in the cookie manually. + + To do that, send a request to [authenticate the user](#tag/Auth/operation/PostAuth) and pass the cURL option `-v`: + + ```bash + curl -v --location --request POST 'https://medusa-url.com/admin/auth' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret" + }' + ``` + + The headers will be logged in the terminal as well as the response. You should find in the headers a Cookie header similar to this: + + ```bash + Set-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM; + ``` + + Copy the value after `connect.sid` (without the `;` at the end) and pass it as a cookie in subsequent requests as the following: + + ```bash + curl --location --request GET 'https://medusa-url.com/admin/products' \ + --header 'Cookie: connect.sid={sid}' + ``` + + Where `{sid}` is the value of `connect.sid` that you copied. + schemas: + Address: + title: Address + description: An address. + type: object + required: + - address_1 + - address_2 + - city + - company + - country_code + - created_at + - customer_id + - deleted_at + - first_name + - id + - last_name + - metadata + - phone + - postal_code + - province + - updated_at + properties: + id: + type: string + description: ID of the address + example: addr_01G8ZC9VS1XVE149MGH2J7QSSH + customer_id: + description: ID of the customer this address belongs to + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: Available if the relation `customer` is expanded. + nullable: true + type: object + company: + description: Company name + nullable: true + type: string + example: Acme + first_name: + description: First name + nullable: true + type: string + example: Arno + last_name: + description: Last name + nullable: true + type: string + example: Willms + address_1: + description: Address line 1 + nullable: true + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + nullable: true + type: string + example: Suite 369 + city: + description: City + nullable: true + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + nullable: true + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + country: + description: A country object. Available if the relation `country` is expanded. + nullable: true + $ref: '#/components/schemas/Country' + province: + description: Province + nullable: true + type: string + example: Kentucky + postal_code: + description: Postal Code + nullable: true + type: string + example: 72093 + phone: + description: Phone Number + nullable: true + type: string + example: 16128234334802 + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + AddressCreatePayload: + type: object + description: Address fields used when creating an address. + required: + - first_name + - last_name + - address_1 + - city + - country_code + - postal_code + properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details + AddressPayload: + type: object + description: Address fields used when creating/updating an address. + properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details + AdminAppsListRes: + type: object + required: + - apps + properties: + apps: + type: array + items: + $ref: '#/components/schemas/OAuth' + AdminAppsRes: + type: object + required: + - apps + properties: + apps: + $ref: '#/components/schemas/OAuth' + AdminAuthRes: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + AdminBatchJobListRes: + type: object + required: + - batch_jobs + - count + - offset + - limit + properties: + batch_jobs: + type: array + items: + $ref: '#/components/schemas/BatchJob' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminBatchJobRes: + type: object + required: + - batch_job + properties: + batch_job: + $ref: '#/components/schemas/BatchJob' + AdminCollectionsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Collection + object: + type: string + description: The type of the object that was deleted. + default: product-collection + deleted: + type: boolean + description: Whether the collection was deleted successfully or not. + default: true + AdminCollectionsListRes: + type: object + required: + - collections + - count + - offset + - limit + properties: + collections: + type: array + items: + $ref: '#/components/schemas/ProductCollection' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminCollectionsRes: + type: object + x-expanded-relations: + field: collection + relations: + - products + required: + - collection + properties: + collection: + $ref: '#/components/schemas/ProductCollection' + AdminCreateUserRequest: + type: object + required: + - email + - password + properties: + email: + description: The Users email. + type: string + format: email + first_name: + description: The name of the User. + type: string + last_name: + description: The name of the User. + type: string + role: + description: Userrole assigned to the user. + type: string + enum: + - admin + - member + - developer + password: + description: The Users password. + type: string + format: password + AdminCurrenciesListRes: + type: object + required: + - currencies + - count + - offset + - limit + properties: + currencies: + type: array + items: + $ref: '#/components/schemas/Currency' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminCurrenciesRes: + type: object + required: + - currency + properties: + currency: + $ref: '#/components/schemas/Currency' + AdminCustomerGroupsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted customer group. + object: + type: string + description: The type of the object that was deleted. + default: customer_group + deleted: + type: boolean + description: Whether the customer group was deleted successfully or not. + default: true + AdminCustomerGroupsListRes: + type: object + required: + - customer_groups + - count + - offset + - limit + properties: + customer_groups: + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminCustomerGroupsRes: + type: object + required: + - customer_group + properties: + customer_group: + $ref: '#/components/schemas/CustomerGroup' + AdminCustomersListRes: + type: object + required: + - customers + - count + - offset + - limit + properties: + customers: + type: array + items: + $ref: '#/components/schemas/Customer' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminCustomersRes: + type: object + x-expanded-relations: + field: customer + relations: + - orders + - shipping_addresses + required: + - customer + properties: + customer: + $ref: '#/components/schemas/Customer' + AdminDeleteCustomerGroupsGroupCustomerBatchReq: + type: object + required: + - customer_ids + properties: + customer_ids: + description: The ids of the customers to remove + type: array + items: + type: object + required: + - id + properties: + id: + description: ID of the customer + type: string + AdminDeleteDiscountsDiscountConditionsConditionBatchReq: + type: object + required: + - resources + properties: + resources: + description: The resources to be deleted from the discount condition + type: array + items: + type: object + required: + - id + properties: + id: + description: The id of the item + type: string + AdminDeletePriceListPricesPricesReq: + type: object + properties: + price_ids: + description: The price id's of the Money Amounts to delete. + type: array + items: + type: string + AdminDeleteProductCategoriesCategoryProductsBatchReq: + type: object + required: + - product_ids + properties: + product_ids: + description: The IDs of the products to delete from the Product Category. + type: array + items: + type: object + required: + - id + properties: + id: + description: The ID of a product + type: string + AdminDeleteProductsFromCollectionReq: + type: object + required: + - product_ids + properties: + product_ids: + description: An array of Product IDs to remove from the Product Collection. + type: array + items: + description: The ID of a Product to add to the Product Collection. + type: string + AdminDeleteProductsFromCollectionRes: + type: object + required: + - id + - object + - removed_products + properties: + id: + type: string + description: The ID of the collection + object: + type: string + description: The type of object the removal was executed on + default: product-collection + removed_products: + description: The IDs of the products removed from the collection + type: array + items: + description: The ID of a Product to add to the Product Collection. + type: string + AdminDeletePublishableApiKeySalesChannelsBatchReq: + type: object + required: + - sales_channel_ids + properties: + sales_channel_ids: + description: The IDs of the sales channels to delete from the publishable api key + type: array + items: + type: object + required: + - id + properties: + id: + type: string + description: The ID of the sales channel + AdminDeleteSalesChannelsChannelProductsBatchReq: + type: object + required: + - product_ids + properties: + product_ids: + description: The IDs of the products to delete from the Sales Channel. + type: array + items: + type: object + required: + - id + properties: + id: + description: The ID of a product + type: string + AdminDeleteSalesChannelsChannelStockLocationsReq: + type: object + required: + - location_id + properties: + location_id: + description: The ID of the stock location + type: string + AdminDeleteShippingProfileRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Shipping Profile. + object: + type: string + description: The type of the object that was deleted. + default: shipping_profile + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminDeleteTaxRatesTaxRateProductTypesReq: + type: object + required: + - product_types + properties: + product_types: + type: array + description: The IDs of the types of products to remove association with this tax rate + items: + type: string + AdminDeleteTaxRatesTaxRateProductsReq: + type: object + required: + - products + properties: + products: + type: array + description: The IDs of the products to remove association with this tax rate + items: + type: string + AdminDeleteTaxRatesTaxRateShippingOptionsReq: + type: object + required: + - shipping_options + properties: + shipping_options: + type: array + description: The IDs of the shipping options to remove association with this tax rate + items: + type: string + AdminDeleteUploadsReq: + type: object + required: + - file_key + properties: + file_key: + description: key of the file to delete + type: string + AdminDeleteUploadsRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The file key of the upload deleted + object: + type: string + description: The type of the object that was deleted. + default: file + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminDeleteUserRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted user. + object: + type: string + description: The type of the object that was deleted. + default: user + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminDiscountConditionsDeleteRes: + type: object + required: + - id + - object + - deleted + - discount + properties: + id: + type: string + description: The ID of the deleted DiscountCondition + object: + type: string + description: The type of the object that was deleted. + default: discount-condition + deleted: + type: boolean + description: Whether the discount condition was deleted successfully or not. + default: true + discount: + description: The Discount to which the condition used to belong + $ref: '#/components/schemas/Discount' + AdminDiscountConditionsRes: + type: object + x-expanded-relations: + field: discount_condition + relations: + - discount_rule + required: + - discount_condition + properties: + discount_condition: + $ref: '#/components/schemas/DiscountCondition' + AdminDiscountsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Discount + object: + type: string + description: The type of the object that was deleted. + default: discount + deleted: + type: boolean + description: Whether the discount was deleted successfully or not. + default: true + AdminDiscountsListRes: + type: object + x-expanded-relations: + field: discounts + relations: + - parent_discount + - regions + - rule + - rule.conditions + required: + - discounts + - count + - offset + - limit + properties: + discounts: + type: array + items: + $ref: '#/components/schemas/Discount' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminDiscountsRes: + type: object + x-expanded-relations: + field: discount + relations: + - parent_discount + - regions + - rule + - rule.conditions + eager: + - regions.fulfillment_providers + - regions.payment_providers + required: + - discount + properties: + discount: + $ref: '#/components/schemas/Discount' + AdminDraftOrdersDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Draft Order. + object: + type: string + description: The type of the object that was deleted. + default: draft-order + deleted: + type: boolean + description: Whether the draft order was deleted successfully or not. + default: true + AdminDraftOrdersListRes: + type: object + x-expanded-relations: + field: draft_orders + relations: + - order + - cart + - cart.items + - cart.items.adjustments + required: + - draft_orders + - count + - offset + - limit + properties: + draft_orders: + type: array + items: + $ref: '#/components/schemas/DraftOrder' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminDraftOrdersRes: + type: object + x-expanded-relations: + field: draft_order + relations: + - order + - cart + - cart.items + - cart.items.adjustments + - cart.billing_address + - cart.customer + - cart.discounts + - cart.discounts.rule + - cart.items + - cart.items.adjustments + - cart.payment + - cart.payment_sessions + - cart.region + - cart.region.payment_providers + - cart.shipping_address + - cart.shipping_methods + - cart.shipping_methods.shipping_option + eager: + - cart.region.fulfillment_providers + - cart.region.payment_providers + - cart.shipping_methods.shipping_option + implicit: + - cart.discounts + - cart.discounts.rule + - cart.gift_cards + - cart.items + - cart.items.adjustments + - cart.items.tax_lines + - cart.items.variant + - cart.items.variant.product + - cart.region + - cart.region.tax_rates + - cart.shipping_address + - cart.shipping_methods + - cart.shipping_methods.tax_lines + totals: + - cart.discount_total + - cart.gift_card_tax_total + - cart.gift_card_total + - cart.item_tax_total + - cart.refundable_amount + - cart.refunded_total + - cart.shipping_tax_total + - cart.shipping_total + - cart.subtotal + - cart.tax_total + - cart.total + - cart.items.discount_total + - cart.items.gift_card_total + - cart.items.original_tax_total + - cart.items.original_total + - cart.items.refundable + - cart.items.subtotal + - cart.items.tax_total + - cart.items.total + required: + - draft_order + properties: + draft_order: + $ref: '#/components/schemas/DraftOrder' + AdminExtendedStoresRes: + type: object + x-expanded-relations: + field: store + relations: + - currencies + - default_currency + required: + - store + properties: + store: + $ref: '#/components/schemas/ExtendedStoreDTO' + AdminGetRegionsRegionFulfillmentOptionsRes: + type: object + required: + - fulfillment_options + properties: + fulfillment_options: + type: array + items: + type: object + required: + - provider_id + - options + properties: + provider_id: + description: ID of the fulfillment provider + type: string + options: + description: fulfillment provider options + type: array + items: + type: object + example: + - id: manual-fulfillment + - id: manual-fulfillment-return + is_return: true + AdminGetVariantsVariantInventoryRes: + type: object + properties: + variant: + type: object + $ref: '#/components/schemas/VariantInventory' + AdminGiftCardsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Gift Card + object: + type: string + description: The type of the object that was deleted. + default: gift-card + deleted: + type: boolean + description: Whether the gift card was deleted successfully or not. + default: true + AdminGiftCardsListRes: + type: object + x-expanded-relations: + field: gift_cards + relations: + - order + - region + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - gift_cards + - count + - offset + - limit + properties: + gift_cards: + type: array + items: + $ref: '#/components/schemas/GiftCard' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminGiftCardsRes: + type: object + x-expanded-relations: + field: gift_card + relations: + - order + - region + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - gift_card + properties: + gift_card: + $ref: '#/components/schemas/GiftCard' + AdminInventoryItemsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Inventory Item. + object: + type: string + description: The type of the object that was deleted. + format: inventory_item + deleted: + type: boolean + description: Whether or not the Inventory Item was deleted. + default: true + AdminInventoryItemsListRes: + type: object + required: + - inventory_items + - count + - offset + - limit + properties: + inventory_items: + type: array + items: + $ref: '#/components/schemas/InventoryItemDTO' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminInventoryItemsListWithVariantsAndLocationLevelsRes: + type: object + required: + - inventory_items + - count + - offset + - limit + properties: + inventory_items: + type: array + items: + allOf: + - $ref: '#/components/schemas/InventoryItemDTO' + - type: object + properties: + location_levels: + type: array + items: + allOf: + - $ref: '#/components/schemas/InventoryLevelDTO' + variants: + type: array + items: + allOf: + - $ref: '#/components/schemas/ProductVariant' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminInventoryItemsLocationLevelsRes: + type: object + required: + - inventory_item + properties: + inventory_item: + type: object + required: + - id + - location_levels + properties: + id: + description: The id of the location + location_levels: + description: List of stock levels at a given location + type: array + items: + $ref: '#/components/schemas/InventoryLevelDTO' + AdminInventoryItemsRes: + type: object + required: + - inventory_item + properties: + inventory_item: + $ref: '#/components/schemas/InventoryItemDTO' + AdminInviteDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Invite. + object: + type: string + description: The type of the object that was deleted. + default: invite + deleted: + type: boolean + description: Whether or not the Invite was deleted. + default: true + AdminListInvitesRes: + type: object + required: + - invites + properties: + invites: + type: array + items: + $ref: '#/components/schemas/Invite' + AdminNotesDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Note. + object: + type: string + description: The type of the object that was deleted. + default: note + deleted: + type: boolean + description: Whether or not the Note was deleted. + default: true + AdminNotesListRes: + type: object + required: + - notes + - count + - offset + - limit + properties: + notes: + type: array + items: + $ref: '#/components/schemas/Note' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminNotesRes: + type: object + required: + - note + properties: + note: + $ref: '#/components/schemas/Note' + AdminNotificationsListRes: + type: object + x-expanded-relations: + field: notifications + relations: + - resends + required: + - notifications + properties: + notifications: + type: array + items: + $ref: '#/components/schemas/Notification' + AdminNotificationsRes: + type: object + x-expanded-relations: + field: notification + relations: + - resends + required: + - notification + properties: + notification: + $ref: '#/components/schemas/Notification' + AdminOrderEditDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Order Edit. + object: + type: string + description: The type of the object that was deleted. + default: order_edit + deleted: + type: boolean + description: Whether or not the Order Edit was deleted. + default: true + AdminOrderEditItemChangeDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Order Edit Item Change. + object: + type: string + description: The type of the object that was deleted. + default: item_change + deleted: + type: boolean + description: Whether or not the Order Edit Item Change was deleted. + default: true + AdminOrderEditsListRes: + type: object + x-expanded-relations: + field: order_edits + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + required: + - order_edits + - count + - offset + - limit + properties: + order_edits: + type: array + items: + $ref: '#/components/schemas/OrderEdit' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminOrderEditsRes: + type: object + x-expanded-relations: + field: order_edit + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + required: + - order_edit + properties: + order_edit: + $ref: '#/components/schemas/OrderEdit' + AdminOrdersListRes: + type: object + x-expanded-relations: + field: orders + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - returns.items + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total + required: + - orders + - count + - offset + - limit + properties: + orders: + type: array + items: + $ref: '#/components/schemas/Order' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminOrdersOrderLineItemReservationReq: + type: object + required: + - location_id + properties: + location_id: + description: The id of the location of the reservation + type: string + quantity: + description: The quantity to reserve + type: number + AdminOrdersRes: + type: object + x-expanded-relations: + field: order + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - returns.items + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total + required: + - order + properties: + order: + $ref: '#/components/schemas/Order' + AdminPaymentCollectionDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Payment Collection. + object: + type: string + description: The type of the object that was deleted. + default: payment_collection + deleted: + type: boolean + description: Whether or not the Payment Collection was deleted. + default: true + AdminPaymentCollectionsRes: + type: object + x-expanded-relations: + field: payment_collection + relations: + - payment_sessions + - payments + - region + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - payment_collection + properties: + payment_collection: + $ref: '#/components/schemas/PaymentCollection' + AdminPaymentProvidersList: + type: object + required: + - payment_providers + properties: + payment_providers: + type: array + items: + $ref: '#/components/schemas/PaymentProvider' + AdminPaymentRes: + type: object + required: + - payment + properties: + payment: + $ref: '#/components/schemas/Payment' + AdminPostAppsReq: + type: object + required: + - application_name + - state + - code + properties: + application_name: + type: string + description: Name of the application for the token to be generated for. + state: + type: string + description: State of the application. + code: + type: string + description: The code for the generated token. + AdminPostAuthReq: + type: object + required: + - email + - password + properties: + email: + type: string + description: The User's email. + format: email + password: + type: string + description: The User's password. + format: password + AdminPostBatchesReq: + type: object + required: + - type + - context + properties: + type: + type: string + description: The type of batch job to start. + example: product-export + context: + type: object + description: Additional infomration regarding the batch to be used for processing. + example: + shape: + prices: + - region: null + currency_code: eur + dynamicImageColumnCount: 4 + dynamicOptionColumnCount: 2 + list_config: + skip: 0 + take: 50 + order: + created_at: DESC + relations: + - variants + - variant.prices + - images + dry_run: + type: boolean + description: Set a batch job in dry_run mode to get some information on what will be done without applying any modifications. + default: false + AdminPostCollectionsCollectionReq: + type: object + properties: + title: + type: string + description: The title to identify the Collection by. + handle: + type: string + description: An optional handle to be used in slugs, if none is provided we will kebab-case the title. + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostCollectionsReq: + type: object + required: + - title + properties: + title: + type: string + description: The title to identify the Collection by. + handle: + type: string + description: An optional handle to be used in slugs, if none is provided we will kebab-case the title. + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostCurrenciesCurrencyReq: + type: object + properties: + includes_tax: + type: boolean + description: '[EXPERIMENTAL] Tax included in prices of currency.' + AdminPostCustomerGroupsGroupCustomersBatchReq: + type: object + required: + - customer_ids + properties: + customer_ids: + description: The ids of the customers to add + type: array + items: + type: object + required: + - id + properties: + id: + description: ID of the customer + type: string + AdminPostCustomerGroupsGroupReq: + type: object + properties: + name: + description: Name of the customer group + type: string + metadata: + description: Metadata for the customer. + type: object + AdminPostCustomerGroupsReq: + type: object + required: + - name + properties: + name: + type: string + description: Name of the customer group + metadata: + type: object + description: Metadata for the customer. + AdminPostCustomersCustomerReq: + type: object + properties: + email: + type: string + description: The Customer's email. + format: email + first_name: + type: string + description: The Customer's first name. + last_name: + type: string + description: The Customer's last name. + phone: + type: string + description: The Customer's phone number. + password: + type: string + description: The Customer's password. + format: password + groups: + type: array + items: + type: object + required: + - id + properties: + id: + description: The ID of a customer group + type: string + description: A list of customer groups to which the customer belongs. + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostCustomersReq: + type: object + required: + - email + - first_name + - last_name + - password + properties: + email: + type: string + description: The customer's email. + format: email + first_name: + type: string + description: The customer's first name. + last_name: + type: string + description: The customer's last name. + password: + type: string + description: The customer's password. + format: password + phone: + type: string + description: The customer's phone number. + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostDiscountsDiscountConditions: + type: object + required: + - operator + properties: + operator: + description: Operator of the condition + type: string + enum: + - in + - not_in + products: + type: array + description: list of product IDs if the condition is applied on products. + items: + type: string + product_types: + type: array + description: list of product type IDs if the condition is applied on product types. + items: + type: string + product_collections: + type: array + description: list of product collection IDs if the condition is applied on product collections. + items: + type: string + product_tags: + type: array + description: list of product tag IDs if the condition is applied on product tags. + items: + type: string + customer_groups: + type: array + description: list of customer group IDs if the condition is applied on customer groups. + items: + type: string + AdminPostDiscountsDiscountConditionsCondition: + type: object + properties: + products: + type: array + description: list of product IDs if the condition is applied on products. + items: + type: string + product_types: + type: array + description: list of product type IDs if the condition is applied on product types. + items: + type: string + product_collections: + type: array + description: list of product collection IDs if the condition is applied on product collections. + items: + type: string + product_tags: + type: array + description: list of product tag IDs if the condition is applied on product tags. + items: + type: string + customer_groups: + type: array + description: list of customer group IDs if the condition is applied on customer groups. + items: + type: string + AdminPostDiscountsDiscountConditionsConditionBatchReq: + type: object + required: + - resources + properties: + resources: + description: The resources to be added to the discount condition + type: array + items: + type: object + required: + - id + properties: + id: + description: The id of the item + type: string + AdminPostDiscountsDiscountDynamicCodesReq: + type: object + required: + - code + properties: + code: + type: string + description: A unique code that will be used to redeem the Discount + usage_limit: + type: number + description: Maximum times the discount can be used + default: 1 + metadata: + type: object + description: An optional set of key-value pairs to hold additional information. + AdminPostDiscountsDiscountReq: + type: object + properties: + code: + type: string + description: A unique code that will be used to redeem the Discount + rule: + description: The Discount Rule that defines how Discounts are calculated + type: object + required: + - id + properties: + id: + type: string + description: The ID of the Rule + description: + type: string + description: A short description of the discount + value: + type: number + description: The value that the discount represents; this will depend on the type of the discount + allocation: + type: string + description: The scope that the discount should apply to. + enum: + - total + - item + conditions: + type: array + description: A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided. + items: + type: object + required: + - operator + properties: + id: + type: string + description: The ID of the Rule + operator: + type: string + description: Operator of the condition + enum: + - in + - not_in + products: + type: array + description: list of product IDs if the condition is applied on products. + items: + type: string + product_types: + type: array + description: list of product type IDs if the condition is applied on product types. + items: + type: string + product_collections: + type: array + description: list of product collection IDs if the condition is applied on product collections. + items: + type: string + product_tags: + type: array + description: list of product tag IDs if the condition is applied on product tags. + items: + type: string + customer_groups: + type: array + description: list of customer group IDs if the condition is applied on customer groups. + items: + type: string + is_disabled: + type: boolean + description: Whether the Discount code is disabled on creation. You will have to enable it later to make it available to Customers. + starts_at: + type: string + format: date-time + description: The time at which the Discount should be available. + ends_at: + type: string + format: date-time + description: The time at which the Discount should no longer be available. + valid_duration: + type: string + description: Duration the discount runs between + example: P3Y6M4DT12H30M5S + usage_limit: + type: number + description: Maximum times the discount can be used + regions: + description: A list of Region ids representing the Regions in which the Discount can be used. + type: array + items: + type: string + metadata: + description: An object containing metadata of the discount + type: object + AdminPostDiscountsReq: + type: object + required: + - code + - rule + - regions + properties: + code: + type: string + description: A unique code that will be used to redeem the Discount + is_dynamic: + type: boolean + description: Whether the Discount should have multiple instances of itself, each with a different code. This can be useful for automatically generated codes that all have to follow a common set of rules. + default: false + rule: + description: The Discount Rule that defines how Discounts are calculated + type: object + required: + - type + - value + - allocation + properties: + description: + type: string + description: A short description of the discount + type: + type: string + description: The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. + enum: + - fixed + - percentage + - free_shipping + value: + type: number + description: The value that the discount represents; this will depend on the type of the discount + allocation: + type: string + description: The scope that the discount should apply to. + enum: + - total + - item + conditions: + type: array + description: A set of conditions that can be used to limit when the discount can be used. Only one of `products`, `product_types`, `product_collections`, `product_tags`, and `customer_groups` should be provided. + items: + type: object + required: + - operator + properties: + operator: + type: string + description: Operator of the condition + enum: + - in + - not_in + products: + type: array + description: list of product IDs if the condition is applied on products. + items: + type: string + product_types: + type: array + description: list of product type IDs if the condition is applied on product types. + items: + type: string + product_collections: + type: array + description: list of product collection IDs if the condition is applied on product collections. + items: + type: string + product_tags: + type: array + description: list of product tag IDs if the condition is applied on product tags. + items: + type: string + customer_groups: + type: array + description: list of customer group IDs if the condition is applied on customer groups. + items: + type: string + is_disabled: + type: boolean + description: Whether the Discount code is disabled on creation. You will have to enable it later to make it available to Customers. + default: false + starts_at: + type: string + format: date-time + description: The time at which the Discount should be available. + ends_at: + type: string + format: date-time + description: The time at which the Discount should no longer be available. + valid_duration: + type: string + description: Duration the discount runs between + example: P3Y6M4DT12H30M5S + regions: + description: A list of Region ids representing the Regions in which the Discount can be used. + type: array + items: + type: string + usage_limit: + type: number + description: Maximum times the discount can be used + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostDraftOrdersDraftOrderLineItemsItemReq: + type: object + properties: + unit_price: + description: The potential custom price of the item. + type: integer + title: + description: The potential custom title of the item. + type: string + quantity: + description: The quantity of the Line Item. + type: integer + metadata: + description: The optional key-value map with additional details about the Line Item. + type: object + AdminPostDraftOrdersDraftOrderLineItemsReq: + type: object + required: + - quantity + properties: + variant_id: + description: The ID of the Product Variant to generate the Line Item from. + type: string + unit_price: + description: The potential custom price of the item. + type: integer + title: + description: The potential custom title of the item. + type: string + default: Custom item + quantity: + description: The quantity of the Line Item. + type: integer + metadata: + description: The optional key-value map with additional details about the Line Item. + type: object + AdminPostDraftOrdersDraftOrderRegisterPaymentRes: + type: object + required: + - order + properties: + order: + $ref: '#/components/schemas/Order' + AdminPostDraftOrdersDraftOrderReq: + type: object + properties: + region_id: + type: string + description: The ID of the Region to create the Draft Order in. + country_code: + type: string + description: The 2 character ISO code for the Country. + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + email: + type: string + description: An email to be used on the Draft Order. + format: email + billing_address: + description: The Address to be used for billing purposes. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + - type: string + shipping_address: + description: The Address to be used for shipping. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + - type: string + discounts: + description: An array of Discount codes to add to the Draft Order. + type: array + items: + type: object + required: + - code + properties: + code: + description: The code that a Discount is identifed by. + type: string + no_notification_order: + description: An optional flag passed to the resulting order to determine use of notifications. + type: boolean + customer_id: + description: The ID of the Customer to associate the Draft Order with. + type: string + AdminPostDraftOrdersReq: + type: object + required: + - email + - region_id + - shipping_methods + properties: + status: + description: The status of the draft order + type: string + enum: + - open + - completed + email: + description: The email of the customer of the draft order + type: string + format: email + billing_address: + description: The Address to be used for billing purposes. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + - type: string + shipping_address: + description: The Address to be used for shipping. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + - type: string + items: + description: The Line Items that have been received. + type: array + items: + type: object + required: + - quantity + properties: + variant_id: + description: The ID of the Product Variant to generate the Line Item from. + type: string + unit_price: + description: The potential custom price of the item. + type: integer + title: + description: The potential custom title of the item. + type: string + quantity: + description: The quantity of the Line Item. + type: integer + metadata: + description: The optional key-value map with additional details about the Line Item. + type: object + region_id: + description: The ID of the region for the draft order + type: string + discounts: + description: The discounts to add on the draft order + type: array + items: + type: object + required: + - code + properties: + code: + description: The code of the discount to apply + type: string + customer_id: + description: The ID of the customer to add on the draft order + type: string + no_notification_order: + description: An optional flag passed to the resulting order to determine use of notifications. + type: boolean + shipping_methods: + description: The shipping methods for the draft order + type: array + items: + type: object + required: + - option_id + properties: + option_id: + description: The ID of the shipping option in use + type: string + data: + description: The optional additional data needed for the shipping method + type: object + price: + description: The potential custom price of the shipping + type: integer + metadata: + description: The optional key-value map with additional details about the Draft Order. + type: object + AdminPostGiftCardsGiftCardReq: + type: object + properties: + balance: + type: integer + description: The value (excluding VAT) that the Gift Card should represent. + is_disabled: + type: boolean + description: Whether the Gift Card is disabled on creation. You will have to enable it later to make it available to Customers. + ends_at: + type: string + format: date-time + description: The time at which the Gift Card should no longer be available. + region_id: + description: The ID of the Region in which the Gift Card can be used. + type: string + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostGiftCardsReq: + type: object + required: + - region_id + properties: + value: + type: integer + description: The value (excluding VAT) that the Gift Card should represent. + is_disabled: + type: boolean + description: Whether the Gift Card is disabled on creation. You will have to enable it later to make it available to Customers. + ends_at: + type: string + format: date-time + description: The time at which the Gift Card should no longer be available. + region_id: + description: The ID of the Region in which the Gift Card can be used. + type: string + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostInventoryItemsInventoryItemReq: + type: object + properties: + hs_code: + description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + origin_country: + description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + material: + description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + weight: + description: The weight of the Inventory Item. May be used in shipping rate calculations. + type: number + height: + description: The height of the Inventory Item. May be used in shipping rate calculations. + type: number + width: + description: The width of the Inventory Item. May be used in shipping rate calculations. + type: number + length: + description: The length of the Inventory Item. May be used in shipping rate calculations. + type: number + requires_shipping: + description: Whether the item requires shipping. + type: boolean + AdminPostInventoryItemsItemLocationLevelsLevelReq: + type: object + properties: + stocked_quantity: + description: the total stock quantity of an inventory item at the given location ID + type: number + incoming_quantity: + description: the incoming stock quantity of an inventory item at the given location ID + type: number + AdminPostInventoryItemsItemLocationLevelsReq: + type: object + required: + - location_id + - stocked_quantity + properties: + location_id: + description: the item location ID + type: string + stocked_quantity: + description: the stock quantity of an inventory item at the given location ID + type: number + incoming_quantity: + description: the incoming stock quantity of an inventory item at the given location ID + type: number + AdminPostInventoryItemsReq: + type: object + properties: + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + default: 0 + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: Whether Medusa should keep track of the inventory for this Product Variant. + type: boolean + default: true + weight: + description: The wieght of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostInvitesInviteAcceptReq: + type: object + required: + - token + - user + properties: + token: + description: The invite token provided by the admin. + type: string + user: + description: The User to create. + type: object + required: + - first_name + - last_name + - password + properties: + first_name: + type: string + description: the first name of the User + last_name: + type: string + description: the last name of the User + password: + description: The desired password for the User + type: string + format: password + AdminPostInvitesReq: + type: object + required: + - user + - role + properties: + user: + description: The email for the user to be created. + type: string + format: email + role: + description: The role of the user to be created. + type: string + enum: + - admin + - member + - developer + AdminPostNotesNoteReq: + type: object + required: + - value + properties: + value: + type: string + description: The updated description of the Note. + AdminPostNotesReq: + type: object + required: + - resource_id + - resource_type + - value + properties: + resource_id: + type: string + description: The ID of the resource which the Note relates to. + resource_type: + type: string + description: The type of resource which the Note relates to. + value: + type: string + description: The content of the Note to create. + AdminPostNotificationsNotificationResendReq: + type: object + properties: + to: + description: A new address or user identifier that the Notification should be sent to + type: string + AdminPostOrderEditsEditLineItemsLineItemReq: + type: object + required: + - quantity + properties: + quantity: + description: The quantity to update + type: number + AdminPostOrderEditsEditLineItemsReq: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + description: The ID of the variant ID to add + type: string + quantity: + description: The quantity to add + type: number + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostOrderEditsOrderEditReq: + type: object + properties: + internal_note: + description: An optional note to create or update for the order edit. + type: string + AdminPostOrderEditsReq: + type: object + required: + - order_id + properties: + order_id: + description: The ID of the order to create the edit for. + type: string + internal_note: + description: An optional note to create for the order edit. + type: string + AdminPostOrdersOrderClaimsClaimFulfillmentsReq: + type: object + properties: + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + no_notification: + description: If set to true no notification will be send related to this Claim. + type: boolean + AdminPostOrdersOrderClaimsClaimReq: + type: object + properties: + claim_items: + description: The Claim Items that the Claim will consist of. + type: array + items: + type: object + required: + - id + - images + - tags + properties: + id: + description: The ID of the Claim Item. + type: string + item_id: + description: The ID of the Line Item that will be claimed. + type: string + quantity: + description: The number of items that will be returned + type: integer + note: + description: Short text describing the Claim Item in further detail. + type: string + reason: + description: The reason for the Claim + type: string + enum: + - missing_item + - wrong_item + - production_failure + - other + tags: + description: A list o tags to add to the Claim Item + type: array + items: + type: object + properties: + id: + type: string + description: Tag ID + value: + type: string + description: Tag value + images: + description: A list of image URL's that will be associated with the Claim + type: array + items: + type: object + properties: + id: + type: string + description: Image ID + url: + type: string + description: Image URL + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + shipping_methods: + description: The Shipping Methods to send the additional Line Items with. + type: array + items: + type: object + properties: + id: + description: The ID of an existing Shipping Method + type: string + option_id: + description: The ID of the Shipping Option to create a Shipping Method from + type: string + price: + description: The price to charge for the Shipping Method + type: integer + data: + description: An optional set of key-value pairs to hold additional information. + type: object + no_notification: + description: If set to true no notification will be send related to this Swap. + type: boolean + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostOrdersOrderClaimsClaimShipmentsReq: + type: object + required: + - fulfillment_id + properties: + fulfillment_id: + description: The ID of the Fulfillment. + type: string + tracking_numbers: + description: The tracking numbers for the shipment. + type: array + items: + type: string + AdminPostOrdersOrderClaimsReq: + type: object + required: + - type + - claim_items + properties: + type: + description: 'The type of the Claim. This will determine how the Claim is treated: `replace` Claims will result in a Fulfillment with new items being created, while a `refund` Claim will refund the amount paid for the claimed items.' + type: string + enum: + - replace + - refund + claim_items: + description: The Claim Items that the Claim will consist of. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item that will be claimed. + type: string + quantity: + description: The number of items that will be returned + type: integer + note: + description: Short text describing the Claim Item in further detail. + type: string + reason: + description: The reason for the Claim + type: string + enum: + - missing_item + - wrong_item + - production_failure + - other + tags: + description: A list o tags to add to the Claim Item + type: array + items: + type: string + images: + description: A list of image URL's that will be associated with the Claim + items: + type: string + return_shipping: + description: Optional details for the Return Shipping Method, if the items are to be sent back. + type: object + properties: + option_id: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + price: + type: integer + description: The price to charge for the Shipping Method. + additional_items: + description: The new items to send to the Customer when the Claim type is Replace. + type: array + items: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + description: The ID of the Product Variant to ship. + type: string + quantity: + description: The quantity of the Product Variant to ship. + type: integer + shipping_methods: + description: The Shipping Methods to send the additional Line Items with. + type: array + items: + type: object + properties: + id: + description: The ID of an existing Shipping Method + type: string + option_id: + description: The ID of the Shipping Option to create a Shipping Method from + type: string + price: + description: The price to charge for the Shipping Method + type: integer + data: + description: An optional set of key-value pairs to hold additional information. + type: object + shipping_address: + description: An optional shipping address to send the claim to. Defaults to the parent order's shipping address + $ref: '#/components/schemas/AddressPayload' + refund_amount: + description: The amount to refund the Customer when the Claim type is `refund`. + type: integer + no_notification: + description: If set to true no notification will be send related to this Claim. + type: boolean + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostOrdersOrderFulfillmentsReq: + type: object + required: + - items + properties: + items: + description: The Line Items to include in the Fulfillment. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of Line Item to fulfill. + type: string + quantity: + description: The quantity of the Line Item to fulfill. + type: integer + no_notification: + description: If set to true no notification will be send related to this Swap. + type: boolean + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminPostOrdersOrderRefundsReq: + type: object + required: + - amount + - reason + properties: + amount: + description: The amount to refund. + type: integer + reason: + description: The reason for the Refund. + type: string + note: + description: A note with additional details about the Refund. + type: string + no_notification: + description: If set to true no notification will be send related to this Refund. + type: boolean + AdminPostOrdersOrderReq: + type: object + properties: + email: + description: the email for the order + type: string + billing_address: + description: Billing address + $ref: '#/components/schemas/AddressPayload' + shipping_address: + description: Shipping address + $ref: '#/components/schemas/AddressPayload' + items: + description: The Line Items for the order + type: array + items: + $ref: '#/components/schemas/LineItem' + region: + description: ID of the region where the order belongs + type: string + discounts: + description: Discounts applied to the order + type: array + items: + $ref: '#/components/schemas/Discount' + customer_id: + description: ID of the customer + type: string + payment_method: + description: payment method chosen for the order + type: object + properties: + provider_id: + type: string + description: ID of the payment provider + data: + description: Data relevant for the given payment method + type: object + shipping_method: + description: The Shipping Method used for shipping the order. + type: object + properties: + provider_id: + type: string + description: The ID of the shipping provider. + profile_id: + type: string + description: The ID of the shipping profile. + price: + type: integer + description: The price of the shipping. + data: + type: object + description: Data relevant to the specific shipping method. + items: + type: array + items: + $ref: '#/components/schemas/LineItem' + description: Items to ship + no_notification: + description: A flag to indicate if no notifications should be emitted related to the updated order. + type: boolean + AdminPostOrdersOrderReturnsReq: + type: object + required: + - items + properties: + items: + description: The Line Items that will be returned. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item. + type: string + reason_id: + description: The ID of the Return Reason to use. + type: string + note: + description: An optional note with information about the Return. + type: string + quantity: + description: The quantity of the Line Item. + type: integer + return_shipping: + description: The Shipping Method to be used to handle the return shipment. + type: object + properties: + option_id: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + price: + type: integer + description: The price to charge for the Shipping Method. + note: + description: An optional note with information about the Return. + type: string + receive_now: + description: A flag to indicate if the Return should be registerd as received immediately. + type: boolean + default: false + no_notification: + description: A flag to indicate if no notifications should be emitted related to the requested Return. + type: boolean + refund: + description: The amount to refund. + type: integer + AdminPostOrdersOrderShipmentReq: + type: object + required: + - fulfillment_id + properties: + fulfillment_id: + description: The ID of the Fulfillment. + type: string + tracking_numbers: + description: The tracking numbers for the shipment. + type: array + items: + type: string + no_notification: + description: If set to true no notification will be send related to this Shipment. + type: boolean + AdminPostOrdersOrderShippingMethodsReq: + type: object + required: + - price + - option_id + properties: + price: + type: number + description: The price (excluding VAT) that should be charged for the Shipping Method + option_id: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + date: + type: object + description: The data required for the Shipping Option to create a Shipping Method. This will depend on the Fulfillment Provider. + AdminPostOrdersOrderSwapsReq: + type: object + required: + - return_items + properties: + return_items: + description: The Line Items to return as part of the Swap. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item that will be claimed. + type: string + quantity: + description: The number of items that will be returned + type: integer + reason_id: + description: The ID of the Return Reason to use. + type: string + note: + description: An optional note with information about the Return. + type: string + return_shipping: + description: How the Swap will be returned. + type: object + required: + - option_id + properties: + option_id: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + price: + type: integer + description: The price to charge for the Shipping Method. + additional_items: + description: The new items to send to the Customer. + type: array + items: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + description: The ID of the Product Variant to ship. + type: string + quantity: + description: The quantity of the Product Variant to ship. + type: integer + custom_shipping_options: + description: The custom shipping options to potentially create a Shipping Method from. + type: array + items: + type: object + required: + - option_id + - price + properties: + option_id: + description: The ID of the Shipping Option to override with a custom price. + type: string + price: + description: The custom price of the Shipping Option. + type: integer + no_notification: + description: If set to true no notification will be send related to this Swap. + type: boolean + allow_backorder: + description: If true, swaps can be completed with items out of stock + type: boolean + default: true + AdminPostOrdersOrderSwapsSwapFulfillmentsReq: + type: object + properties: + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + no_notification: + description: If set to true no notification will be send related to this Claim. + type: boolean + AdminPostOrdersOrderSwapsSwapShipmentsReq: + type: object + required: + - fulfillment_id + properties: + fulfillment_id: + description: The ID of the Fulfillment. + type: string + tracking_numbers: + description: The tracking numbers for the shipment. + type: array + items: + type: string + no_notification: + description: If set to true no notification will be sent related to this Claim. + type: boolean + AdminPostPaymentRefundsReq: + type: object + required: + - amount + - reason + properties: + amount: + description: The amount to refund. + type: integer + reason: + description: The reason for the Refund. + type: string + note: + description: A note with additional details about the Refund. + type: string + AdminPostPriceListPricesPricesReq: + type: object + properties: + prices: + description: The prices to update or add. + type: array + items: + type: object + required: + - amount + - variant_id + properties: + id: + description: The ID of the price. + type: string + region_id: + description: The ID of the Region for which the price is used. Only required if currecny_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + variant_id: + description: The ID of the Variant for which the price is used. + type: string + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + override: + description: If true the prices will replace all existing prices associated with the Price List. + type: boolean + AdminPostPriceListsPriceListPriceListReq: + type: object + properties: + name: + description: The name of the Price List + type: string + description: + description: A description of the Price List. + type: string + starts_at: + description: The date with timezone that the Price List starts being valid. + type: string + format: date + ends_at: + description: The date with timezone that the Price List ends being valid. + type: string + format: date + type: + description: The type of the Price List. + type: string + enum: + - sale + - override + status: + description: The status of the Price List. + type: string + enum: + - active + - draft + prices: + description: The prices of the Price List. + type: array + items: + type: object + required: + - amount + - variant_id + properties: + id: + description: The ID of the price. + type: string + region_id: + description: The ID of the Region for which the price is used. Only required if currecny_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + variant_id: + description: The ID of the Variant for which the price is used. + type: string + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + customer_groups: + type: array + description: A list of customer groups that the Price List applies to. + items: + type: object + required: + - id + properties: + id: + description: The ID of a customer group + type: string + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of price list' + type: boolean + AdminPostPriceListsPriceListReq: + type: object + required: + - name + - description + - type + - prices + properties: + name: + description: The name of the Price List + type: string + description: + description: A description of the Price List. + type: string + starts_at: + description: The date with timezone that the Price List starts being valid. + type: string + format: date + ends_at: + description: The date with timezone that the Price List ends being valid. + type: string + format: date + type: + description: The type of the Price List. + type: string + enum: + - sale + - override + status: + description: The status of the Price List. + type: string + enum: + - active + - draft + prices: + description: The prices of the Price List. + type: array + items: + type: object + required: + - amount + - variant_id + properties: + region_id: + description: The ID of the Region for which the price is used. Only required if currecny_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + amount: + description: The amount to charge for the Product Variant. + type: integer + variant_id: + description: The ID of the Variant for which the price is used. + type: string + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + customer_groups: + type: array + description: A list of customer groups that the Price List applies to. + items: + type: object + required: + - id + properties: + id: + description: The ID of a customer group + type: string + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of price list' + type: boolean + AdminPostProductCategoriesCategoryProductsBatchReq: + type: object + required: + - product_ids + properties: + product_ids: + description: The IDs of the products to add to the Product Category + type: array + items: + type: object + required: + - id + properties: + id: + type: string + description: The ID of the product + AdminPostProductCategoriesCategoryReq: + type: object + properties: + name: + type: string + description: The name to identify the Product Category by. + handle: + type: string + description: A handle to be used in slugs. + is_internal: + type: boolean + description: A flag to make product category an internal category for admins + is_active: + type: boolean + description: A flag to make product category visible/hidden in the store front + parent_category_id: + type: string + description: The ID of the parent product category + rank: + type: number + description: The rank of the category in the tree node (starting from 0) + AdminPostProductCategoriesReq: + type: object + required: + - name + properties: + name: + type: string + description: The name to identify the Product Category by. + handle: + type: string + description: An optional handle to be used in slugs, if none is provided we will kebab-case the title. + is_internal: + type: boolean + description: A flag to make product category an internal category for admins + is_active: + type: boolean + description: A flag to make product category visible/hidden in the store front + parent_category_id: + type: string + description: The ID of the parent product category + AdminPostProductsProductMetadataReq: + type: object + required: + - key + - value + properties: + key: + description: The metadata key + type: string + value: + description: The metadata value + type: string + AdminPostProductsProductOptionsOption: + type: object + required: + - title + properties: + title: + description: The title of the Product Option + type: string + AdminPostProductsProductOptionsReq: + type: object + required: + - title + properties: + title: + description: The title the Product Option will be identified by i.e. "Size" + type: string + AdminPostProductsProductReq: + type: object + properties: + title: + description: The title of the Product + type: string + subtitle: + description: The subtitle of the Product + type: string + description: + description: A description of the Product. + type: string + discountable: + description: A flag to indicate if discounts can be applied to the LineItems generated from this Product + type: boolean + images: + description: Images of the Product. + type: array + items: + type: string + thumbnail: + description: The thumbnail to use for the Product. + type: string + handle: + description: A unique handle to identify the Product by. + type: string + status: + description: The status of the product. + type: string + enum: + - draft + - proposed + - published + - rejected + type: + description: The Product Type to associate the Product with. + type: object + required: + - value + properties: + id: + description: The ID of the Product Type. + type: string + value: + description: The value of the Product Type. + type: string + collection_id: + description: The ID of the Collection the Product should belong to. + type: string + tags: + description: Tags to associate the Product with. + type: array + items: + type: object + required: + - value + properties: + id: + description: The ID of an existing Tag. + type: string + value: + description: The value of the Tag, these will be upserted. + type: string + sales_channels: + description: '[EXPERIMENTAL] Sales channels to associate the Product with.' + type: array + items: + type: object + required: + - id + properties: + id: + description: The ID of an existing Sales channel. + type: string + categories: + description: Categories to add the Product to. + type: array + items: + required: + - id + properties: + id: + description: The ID of a Product Category. + type: string + variants: + description: A list of Product Variants to create with the Product. + type: array + items: + type: object + properties: + id: + description: The ID of the Product Variant. + type: string + title: + description: The title to identify the Product Variant by. + type: string + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: Whether Medusa should keep track of the inventory for this Product Variant. + type: boolean + weight: + description: The wieght of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + prices: + type: array + items: + type: object + required: + - amount + properties: + id: + description: The ID of the Price. + type: string + region_id: + description: The ID of the Region for which the price is used. Only required if currency_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + options: + type: array + items: + type: object + required: + - option_id + - value + properties: + option_id: + description: The ID of the Option. + type: string + value: + description: The value to give for the Product Option at the same index in the Product's `options` field. + type: string + weight: + description: The wieght of the Product. + type: number + length: + description: The length of the Product. + type: number + height: + description: The height of the Product. + type: number + width: + description: The width of the Product. + type: number + origin_country: + description: The country of origin of the Product. + type: string + mid_code: + description: The Manufacturer Identification code for the Product. + type: string + material: + description: The material composition of the Product. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostProductsProductVariantsReq: + type: object + required: + - title + - prices + - options + properties: + title: + description: The title to identify the Product Variant by. + type: string + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + default: 0 + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: Whether Medusa should keep track of the inventory for this Product Variant. + type: boolean + default: true + weight: + description: The wieght of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + prices: + type: array + items: + type: object + required: + - amount + properties: + id: + description: The ID of the price. + type: string + region_id: + description: The ID of the Region for which the price is used. Only required if currency_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + options: + type: array + items: + type: object + required: + - option_id + - value + properties: + option_id: + description: The ID of the Product Option to set the value for. + type: string + value: + description: The value to give for the Product Option. + type: string + AdminPostProductsProductVariantsVariantReq: + type: object + required: + - prices + properties: + title: + description: The title to identify the Product Variant by. + type: string + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: Whether Medusa should keep track of the inventory for this Product Variant. + type: boolean + weight: + description: The weight of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + prices: + type: array + items: + type: object + required: + - amount + properties: + id: + description: The ID of the price. + type: string + region_id: + description: The ID of the Region for which the price is used. Only required if currency_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + options: + type: array + items: + type: object + required: + - option_id + - value + properties: + option_id: + description: The ID of the Product Option to set the value for. + type: string + value: + description: The value to give for the Product Option. + type: string + AdminPostProductsReq: + type: object + required: + - title + properties: + title: + description: The title of the Product + type: string + subtitle: + description: The subtitle of the Product + type: string + description: + description: A description of the Product. + type: string + is_giftcard: + description: A flag to indicate if the Product represents a Gift Card. Purchasing Products with this flag set to `true` will result in a Gift Card being created. + type: boolean + default: false + discountable: + description: A flag to indicate if discounts can be applied to the LineItems generated from this Product + type: boolean + default: true + images: + description: Images of the Product. + type: array + items: + type: string + thumbnail: + description: The thumbnail to use for the Product. + type: string + handle: + description: A unique handle to identify the Product by. + type: string + status: + description: The status of the product. + type: string + enum: + - draft + - proposed + - published + - rejected + default: draft + type: + description: The Product Type to associate the Product with. + type: object + required: + - value + properties: + id: + description: The ID of the Product Type. + type: string + value: + description: The value of the Product Type. + type: string + collection_id: + description: The ID of the Collection the Product should belong to. + type: string + tags: + description: Tags to associate the Product with. + type: array + items: + type: object + required: + - value + properties: + id: + description: The ID of an existing Tag. + type: string + value: + description: The value of the Tag, these will be upserted. + type: string + sales_channels: + description: '[EXPERIMENTAL] Sales channels to associate the Product with.' + type: array + items: + type: object + required: + - id + properties: + id: + description: The ID of an existing Sales channel. + type: string + categories: + description: Categories to add the Product to. + type: array + items: + required: + - id + properties: + id: + description: The ID of a Product Category. + type: string + options: + description: The Options that the Product should have. These define on which properties the Product's Product Variants will differ. + type: array + items: + type: object + required: + - title + properties: + title: + description: The title to identify the Product Option by. + type: string + variants: + description: A list of Product Variants to create with the Product. + type: array + items: + type: object + required: + - title + properties: + title: + description: The title to identify the Product Variant by. + type: string + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + default: 0 + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: Whether Medusa should keep track of the inventory for this Product Variant. + type: boolean + weight: + description: The wieght of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + prices: + type: array + items: + type: object + required: + - amount + properties: + region_id: + description: The ID of the Region for which the price is used. Only required if currency_code is not provided. + type: string + currency_code: + description: The 3 character ISO currency code for which the price will be used. Only required if region_id is not provided. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + amount: + description: The amount to charge for the Product Variant. + type: integer + min_quantity: + description: The minimum quantity for which the price will be used. + type: integer + max_quantity: + description: The maximum quantity for which the price will be used. + type: integer + options: + type: array + items: + type: object + required: + - value + properties: + value: + description: The value to give for the Product Option at the same index in the Product's `options` field. + type: string + weight: + description: The weight of the Product. + type: number + length: + description: The length of the Product. + type: number + height: + description: The height of the Product. + type: number + width: + description: The width of the Product. + type: number + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + origin_country: + description: The country of origin of the Product. + type: string + mid_code: + description: The Manufacturer Identification code for the Product. + type: string + material: + description: The material composition of the Product. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostProductsToCollectionReq: + type: object + required: + - product_ids + properties: + product_ids: + description: An array of Product IDs to add to the Product Collection. + type: array + items: + description: The ID of a Product to add to the Product Collection. + type: string + AdminPostPublishableApiKeySalesChannelsBatchReq: + type: object + required: + - sales_channel_ids + properties: + sales_channel_ids: + description: The IDs of the sales channels to add to the publishable api key + type: array + items: + type: object + required: + - id + properties: + id: + type: string + description: The ID of the sales channel + AdminPostPublishableApiKeysPublishableApiKeyReq: + type: object + properties: + title: + description: A title to update for the key. + type: string + AdminPostPublishableApiKeysReq: + type: object + required: + - title + properties: + title: + description: A title for the publishable api key + type: string + AdminPostRegionsRegionCountriesReq: + type: object + required: + - country_code + properties: + country_code: + description: The 2 character ISO code for the Country. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + AdminPostRegionsRegionFulfillmentProvidersReq: + type: object + required: + - provider_id + properties: + provider_id: + description: The ID of the Fulfillment Provider to add. + type: string + AdminPostRegionsRegionPaymentProvidersReq: + type: object + required: + - provider_id + properties: + provider_id: + description: The ID of the Payment Provider to add. + type: string + AdminPostRegionsRegionReq: + type: object + properties: + name: + description: The name of the Region + type: string + currency_code: + description: The 3 character ISO currency code to use for the Region. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + automatic_taxes: + description: If true Medusa will automatically calculate taxes for carts in this region. If false you have to manually call POST /carts/:id/taxes. + type: boolean + gift_cards_taxable: + description: Whether gift cards in this region should be applied sales tax when purchasing a gift card + type: boolean + tax_provider_id: + description: The ID of the tax provider to use; if null the system tax provider is used + type: string + tax_code: + description: An optional tax code the Region. + type: string + tax_rate: + description: The tax rate to use on Orders in the Region. + type: number + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of region' + type: boolean + payment_providers: + description: A list of Payment Provider IDs that should be enabled for the Region + type: array + items: + type: string + fulfillment_providers: + description: A list of Fulfillment Provider IDs that should be enabled for the Region + type: array + items: + type: string + countries: + description: A list of countries' 2 ISO Characters that should be included in the Region. + type: array + items: + type: string + AdminPostRegionsReq: + type: object + required: + - name + - currency_code + - tax_rate + - payment_providers + - fulfillment_providers + - countries + properties: + name: + description: The name of the Region + type: string + currency_code: + description: The 3 character ISO currency code to use for the Region. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + tax_code: + description: An optional tax code the Region. + type: string + tax_rate: + description: The tax rate to use on Orders in the Region. + type: number + payment_providers: + description: A list of Payment Provider IDs that should be enabled for the Region + type: array + items: + type: string + fulfillment_providers: + description: A list of Fulfillment Provider IDs that should be enabled for the Region + type: array + items: + type: string + countries: + description: A list of countries' 2 ISO Characters that should be included in the Region. + example: + - US + type: array + items: + type: string + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of region' + type: boolean + AdminPostReservationsReq: + type: object + required: + - location_id + - inventory_item_id + - quantity + properties: + line_item_id: + description: The id of the location of the reservation + type: string + location_id: + description: The id of the location of the reservation + type: string + inventory_item_id: + description: The id of the inventory item the reservation relates to + type: string + quantity: + description: The id of the reservation item + type: number + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostReservationsReservationReq: + type: object + properties: + location_id: + description: The id of the location of the reservation + type: string + quantity: + description: The id of the reservation item + type: number + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostReturnReasonsReasonReq: + type: object + properties: + label: + description: The label to display to the Customer. + type: string + value: + description: The value that the Return Reason will be identified by. Must be unique. + type: string + description: + description: An optional description to for the Reason. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostReturnReasonsReq: + type: object + required: + - label + - value + properties: + label: + description: The label to display to the Customer. + type: string + value: + description: The value that the Return Reason will be identified by. Must be unique. + type: string + parent_return_reason_id: + description: The ID of the parent return reason. + type: string + description: + description: An optional description to for the Reason. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostReturnsReturnReceiveReq: + type: object + required: + - items + properties: + items: + description: The Line Items that have been received. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item. + type: string + quantity: + description: The quantity of the Line Item. + type: integer + refund: + description: The amount to refund. + type: number + AdminPostSalesChannelsChannelProductsBatchReq: + type: object + required: + - product_ids + properties: + product_ids: + description: The IDs of the products to add to the Sales Channel + type: array + items: + type: object + required: + - id + properties: + id: + type: string + description: The ID of the product + AdminPostSalesChannelsChannelStockLocationsReq: + type: object + required: + - location_id + properties: + location_id: + description: The ID of the stock location + type: string + AdminPostSalesChannelsReq: + type: object + required: + - name + properties: + name: + description: The name of the Sales Channel + type: string + description: + description: The description of the Sales Channel + type: string + is_disabled: + description: Whether the Sales Channel is disabled or not. + type: boolean + AdminPostSalesChannelsSalesChannelReq: + type: object + properties: + name: + type: string + description: Name of the sales channel. + description: + type: string + description: Sales Channel description. + is_disabled: + type: boolean + description: Indication of if the sales channel is active. + AdminPostShippingOptionsOptionReq: + type: object + required: + - requirements + properties: + name: + description: The name of the Shipping Option + type: string + amount: + description: The amount to charge for the Shipping Option. + type: integer + admin_only: + description: If true, the option can be used for draft orders + type: boolean + metadata: + description: An optional set of key-value pairs with additional information. + type: object + requirements: + description: The requirements that must be satisfied for the Shipping Option to be available. + type: array + items: + type: object + required: + - type + - amount + properties: + id: + description: The ID of the requirement + type: string + type: + description: The type of the requirement + type: string + enum: + - max_subtotal + - min_subtotal + amount: + description: The amount to compare with. + type: integer + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of shipping option' + type: boolean + AdminPostShippingOptionsReq: + type: object + required: + - name + - region_id + - provider_id + - data + - price_type + properties: + name: + description: The name of the Shipping Option + type: string + region_id: + description: The ID of the Region in which the Shipping Option will be available. + type: string + provider_id: + description: The ID of the Fulfillment Provider that handles the Shipping Option. + type: string + profile_id: + description: The ID of the Shipping Profile to add the Shipping Option to. + type: number + data: + description: The data needed for the Fulfillment Provider to handle shipping with this Shipping Option. + type: object + price_type: + description: The type of the Shipping Option price. + type: string + enum: + - flat_rate + - calculated + amount: + description: The amount to charge for the Shipping Option. + type: integer + requirements: + description: The requirements that must be satisfied for the Shipping Option to be available. + type: array + items: + type: object + required: + - type + - amount + properties: + type: + description: The type of the requirement + type: string + enum: + - max_subtotal + - min_subtotal + amount: + description: The amount to compare with. + type: integer + is_return: + description: Whether the Shipping Option defines a return shipment. + type: boolean + default: false + admin_only: + description: If true, the option can be used for draft orders + type: boolean + default: false + metadata: + description: An optional set of key-value pairs with additional information. + type: object + includes_tax: + description: '[EXPERIMENTAL] Tax included in prices of shipping option' + type: boolean + AdminPostShippingProfilesProfileReq: + type: object + properties: + name: + description: The name of the Shipping Profile + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + type: + description: The type of the Shipping Profile + type: string + enum: + - default + - gift_card + - custom + products: + description: An optional array of product ids to associate with the Shipping Profile + type: array + shipping_options: + description: An optional array of shipping option ids to associate with the Shipping Profile + type: array + AdminPostShippingProfilesReq: + type: object + required: + - name + - type + properties: + name: + description: The name of the Shipping Profile + type: string + type: + description: The type of the Shipping Profile + type: string + enum: + - default + - gift_card + - custom + AdminPostStockLocationsLocationReq: + type: object + properties: + name: + description: the name of the stock location + type: string + address_id: + description: the stock location address ID + type: string + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + address: + $ref: '#/components/schemas/StockLocationAddressInput' + AdminPostStockLocationsReq: + type: object + required: + - name + properties: + name: + description: the name of the stock location + type: string + address_id: + description: the stock location address ID + type: string + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + address: + $ref: '#/components/schemas/StockLocationAddressInput' + AdminPostStoreReq: + type: object + properties: + name: + description: The name of the Store + type: string + swap_link_template: + description: A template for Swap links - use `{{cart_id}}` to insert the Swap Cart id + type: string + payment_link_template: + description: A template for payment links links - use `{{cart_id}}` to insert the Cart id + type: string + invite_link_template: + description: A template for invite links - use `{{invite_token}}` to insert the invite token + type: string + default_currency_code: + description: The default currency code for the Store. + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currencies: + description: Array of currencies in 2 character ISO code format. + type: array + items: + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminPostTaxRatesReq: + type: object + required: + - code + - name + - region_id + properties: + code: + type: string + description: A code to identify the tax type by + name: + type: string + description: A human friendly name for the tax + region_id: + type: string + description: The ID of the Region that the rate belongs to + rate: + type: number + description: The numeric rate to charge + products: + type: array + description: The IDs of the products associated with this tax rate + items: + type: string + shipping_options: + type: array + description: The IDs of the shipping options associated with this tax rate + items: + type: string + product_types: + type: array + description: The IDs of the types of products associated with this tax rate + items: + type: string + AdminPostTaxRatesTaxRateProductTypesReq: + type: object + required: + - product_types + properties: + product_types: + type: array + description: The IDs of the types of products to associate with this tax rate + items: + type: string + AdminPostTaxRatesTaxRateProductsReq: + type: object + required: + - products + properties: + products: + type: array + description: The IDs of the products to associate with this tax rate + items: + type: string + AdminPostTaxRatesTaxRateReq: + type: object + properties: + code: + type: string + description: A code to identify the tax type by + name: + type: string + description: A human friendly name for the tax + region_id: + type: string + description: The ID of the Region that the rate belongs to + rate: + type: number + description: The numeric rate to charge + products: + type: array + description: The IDs of the products associated with this tax rate + items: + type: string + shipping_options: + type: array + description: The IDs of the shipping options associated with this tax rate + items: + type: string + product_types: + type: array + description: The IDs of the types of products associated with this tax rate + items: + type: string + AdminPostTaxRatesTaxRateShippingOptionsReq: + type: object + required: + - shipping_options + properties: + shipping_options: + type: array + description: The IDs of the shipping options to associate with this tax rate + items: + type: string + AdminPostUploadsDownloadUrlReq: + type: object + required: + - file_key + properties: + file_key: + description: key of the file to obtain the download link for + type: string + AdminPriceListDeleteBatchRes: + type: object + required: + - ids + - object + - deleted + properties: + ids: + type: array + items: + type: string + description: The IDs of the deleted Money Amounts (Prices). + object: + type: string + description: The type of the object that was deleted. + default: money-amount + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminPriceListDeleteProductPricesRes: + type: object + required: + - ids + - object + - deleted + properties: + ids: + type: array + description: The price ids that have been deleted. + items: + type: string + object: + type: string + description: The type of the object that was deleted. + default: money-amount + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminPriceListDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Price List. + object: + type: string + description: The type of the object that was deleted. + default: price-list + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminPriceListDeleteVariantPricesRes: + type: object + required: + - ids + - object + - deleted + properties: + ids: + type: array + description: The price ids that have been deleted. + items: + type: string + object: + type: string + description: The type of the object that was deleted. + default: money-amount + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminPriceListRes: + type: object + x-expanded-relations: + field: price_list + relations: + - customer_groups + - prices + required: + - price_list + properties: + price_list: + $ref: '#/components/schemas/PriceList' + AdminPriceListsListRes: + type: object + required: + - price_lists + - count + - offset + - limit + properties: + price_lists: + type: array + items: + $ref: '#/components/schemas/PriceList' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminPriceListsProductsListRes: + type: object + x-expanded-relations: + field: products + relations: + - categories + - collection + - images + - options + - tags + - type + - variants + - variants.options + required: + - products + - count + - offset + - limit + properties: + products: + type: array + items: + $ref: '#/components/schemas/Product' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductCategoriesCategoryDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted product category + object: + type: string + description: The type of the object that was deleted. + default: product-category + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminProductCategoriesCategoryRes: + type: object + x-expanded-relations: + field: product_category + relations: + - category_children + - parent_category + required: + - product_category + properties: + product_category: + $ref: '#/components/schemas/ProductCategory' + AdminProductCategoriesListRes: + type: object + x-expanded-relations: + field: product_categories + relations: + - category_children + - parent_category + required: + - product_categories + - count + - offset + - limit + properties: + product_categories: + type: array + items: + $ref: '#/components/schemas/ProductCategory' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductTagsListRes: + type: object + required: + - product_tags + - count + - offset + - limit + properties: + product_tags: + type: array + items: + $ref: '#/components/schemas/ProductTag' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductTypesListRes: + type: object + required: + - product_types + - count + - offset + - limit + properties: + product_types: + type: array + items: + $ref: '#/components/schemas/ProductType' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductsDeleteOptionRes: + type: object + x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices + required: + - option_id + - object + - deleted + - product + properties: + option_id: + type: string + description: The ID of the deleted Product Option + object: + type: string + description: The type of the object that was deleted. + default: option + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + product: + $ref: '#/components/schemas/PricedProduct' + AdminProductsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Product. + object: + type: string + description: The type of the object that was deleted. + default: product + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminProductsDeleteVariantRes: + type: object + x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices + required: + - variant_id + - object + - deleted + - product + properties: + variant_id: + type: string + description: The ID of the deleted Product Variant. + object: + type: string + description: The type of the object that was deleted. + default: product-variant + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + product: + $ref: '#/components/schemas/PricedProduct' + AdminProductsListRes: + type: object + x-expanded-relations: + field: products + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices + required: + - products + - count + - offset + - limit + properties: + products: + type: array + items: + $ref: '#/components/schemas/PricedProduct' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductsListTagsRes: + type: object + required: + - tags + properties: + tags: + type: array + items: + type: object + required: + - id + - usage_count + - value + properties: + id: + description: The ID of the tag. + type: string + usage_count: + description: The number of products that use this tag. + type: string + value: + description: The value of the tag. + type: string + AdminProductsListTypesRes: + type: object + required: + - types + properties: + types: + type: array + items: + $ref: '#/components/schemas/ProductType' + AdminProductsListVariantsRes: + type: object + required: + - variants + - count + - offset + - limit + properties: + variants: + type: array + items: + $ref: '#/components/schemas/ProductVariant' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminProductsRes: + type: object + x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices + required: + - product + properties: + product: + $ref: '#/components/schemas/PricedProduct' + AdminPublishableApiKeyDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted PublishableApiKey. + object: + type: string + description: The type of the object that was deleted. + default: publishable_api_key + deleted: + type: boolean + description: Whether the PublishableApiKeys was deleted. + default: true + AdminPublishableApiKeysListRes: + type: object + required: + - publishable_api_keys + - count + - offset + - limit + properties: + publishable_api_keys: + type: array + items: + $ref: '#/components/schemas/PublishableApiKey' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminPublishableApiKeysListSalesChannelsRes: + type: object + required: + - sales_channels + properties: + sales_channels: + type: array + items: + $ref: '#/components/schemas/SalesChannel' + AdminPublishableApiKeysRes: + type: object + required: + - publishable_api_key + properties: + publishable_api_key: + $ref: '#/components/schemas/PublishableApiKey' + AdminRefundRes: + type: object + required: + - refund + properties: + refund: + $ref: '#/components/schemas/Refund' + AdminRegionsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Region. + object: + type: string + description: The type of the object that was deleted. + default: region + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminRegionsListRes: + type: object + x-expanded-relations: + field: regions + relations: + - countries + - fulfillment_providers + - payment_providers + eager: + - fulfillment_providers + - payment_providers + required: + - regions + - count + - offset + - limit + properties: + regions: + type: array + items: + $ref: '#/components/schemas/Region' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminRegionsRes: + type: object + x-expanded-relations: + field: region + relations: + - countries + - fulfillment_providers + - payment_providers + eager: + - fulfillment_providers + - payment_providers + required: + - region + properties: + region: + $ref: '#/components/schemas/Region' + AdminReservationsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Reservation. + object: + type: string + description: The type of the object that was deleted. + default: reservation + deleted: + type: boolean + description: Whether or not the Reservation was deleted. + default: true + AdminReservationsListRes: + type: object + required: + - reservations + - count + - offset + - limit + properties: + reservations: + type: array + items: + $ref: '#/components/schemas/ReservationItemDTO' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminReservationsRes: + type: object + required: + - reservation + properties: + reservation: + $ref: '#/components/schemas/ReservationItemDTO' + AdminResetPasswordRequest: + type: object + required: + - token + - password + properties: + email: + description: The Users email. + type: string + format: email + token: + description: The token generated from the 'password-token' endpoint. + type: string + password: + description: The Users new password. + type: string + format: password + AdminResetPasswordTokenRequest: + type: object + required: + - email + properties: + email: + description: The Users email. + type: string + format: email + AdminReturnReasonsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted return reason + object: + type: string + description: The type of the object that was deleted. + default: return_reason + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminReturnReasonsListRes: + type: object + x-expanded-relations: + field: return_reasons + relations: + - parent_return_reason + - return_reason_children + required: + - return_reasons + properties: + return_reasons: + type: array + items: + $ref: '#/components/schemas/ReturnReason' + AdminReturnReasonsRes: + type: object + x-expanded-relations: + field: return_reason + relations: + - parent_return_reason + - return_reason_children + required: + - return_reason + properties: + return_reason: + $ref: '#/components/schemas/ReturnReason' + AdminReturnsCancelRes: + type: object + x-expanded-relations: + field: order + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + - swaps + - swaps.additional_items + - swaps.additional_items.variant + - swaps.fulfillments + - swaps.fulfillments.tracking_links + - swaps.payment + - swaps.return_order + - swaps.return_order.shipping_method + - swaps.return_order.shipping_method.tax_lines + - swaps.shipping_address + - swaps.shipping_methods + - swaps.shipping_methods.tax_lines + required: + - order + properties: + order: + $ref: '#/components/schemas/Order' + AdminReturnsListRes: + type: object + x-expanded-relation: + field: returns + relations: + - order + - swap + required: + - returns + - count + - offset + - limit + properties: + returns: + type: array + items: + $ref: '#/components/schemas/Return' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminReturnsRes: + type: object + x-expanded-relation: + field: return + relations: + - swap + required: + - return + properties: + return: + $ref: '#/components/schemas/Return' + AdminSalesChannelsDeleteLocationRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the removed stock location from a sales channel + object: + type: string + description: The type of the object that was removed. + default: stock-location + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminSalesChannelsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted sales channel + object: + type: string + description: The type of the object that was deleted. + default: sales-channel + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminSalesChannelsListRes: + type: object + required: + - sales_channels + - count + - offset + - limit + properties: + sales_channels: + type: array + items: + $ref: '#/components/schemas/SalesChannel' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminSalesChannelsRes: + type: object + required: + - sales_channel + properties: + sales_channel: + $ref: '#/components/schemas/SalesChannel' + AdminShippingOptionsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Shipping Option. + object: + type: string + description: The type of the object that was deleted. + default: shipping-option + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminShippingOptionsListRes: + type: object + x-expanded-relations: + field: shipping_options + relations: + - profile + - region + - requirements + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - shipping_options + - count + - offset + - limit + properties: + shipping_options: + type: array + items: + $ref: '#/components/schemas/ShippingOption' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminShippingOptionsRes: + type: object + x-expanded-relations: + field: shipping_option + relations: + - profile + - region + - requirements + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - shipping_option + properties: + shipping_option: + $ref: '#/components/schemas/ShippingOption' + AdminShippingProfilesListRes: + type: object + required: + - shipping_profiles + properties: + shipping_profiles: + type: array + items: + $ref: '#/components/schemas/ShippingProfile' + AdminShippingProfilesRes: + type: object + x-expanded-relations: + field: shipping_profile + relations: + - products + - shipping_options + required: + - shipping_profile + properties: + shipping_profile: + $ref: '#/components/schemas/ShippingProfile' + AdminStockLocationsDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Stock Location. + object: + type: string + description: The type of the object that was deleted. + default: stock_location + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminStockLocationsListRes: + type: object + required: + - stock_locations + - count + - offset + - limit + properties: + stock_locations: + type: array + items: + $ref: '#/components/schemas/StockLocationExpandedDTO' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminStockLocationsRes: + type: object + required: + - stock_location + properties: + stock_location: + $ref: '#/components/schemas/StockLocationExpandedDTO' + AdminStoresRes: + type: object + required: + - store + properties: + store: + $ref: '#/components/schemas/Store' + AdminSwapsListRes: + type: object + required: + - swaps + - count + - offset + - limit + properties: + swaps: + type: array + items: + $ref: '#/components/schemas/Swap' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminSwapsRes: + type: object + x-expanded-relations: + field: swap + relations: + - additional_items + - additional_items.adjustments + - cart + - cart.items + - cart.items.adjustments + - cart.items.variant + - fulfillments + - order + - payment + - return_order + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - shipping_methods.shipping_option + required: + - swap + properties: + swap: + $ref: '#/components/schemas/Swap' + AdminTaxProvidersList: + type: object + required: + - tax_providers + properties: + tax_providers: + type: array + items: + $ref: '#/components/schemas/TaxProvider' + AdminTaxRatesDeleteRes: + type: object + required: + - id + - object + - deleted + properties: + id: + type: string + description: The ID of the deleted Shipping Option. + object: + type: string + description: The type of the object that was deleted. + default: tax-rate + deleted: + type: boolean + description: Whether or not the items were deleted. + default: true + AdminTaxRatesListRes: + type: object + required: + - tax_rates + - count + - offset + - limit + properties: + tax_rates: + type: array + items: + $ref: '#/components/schemas/TaxRate' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminTaxRatesRes: + type: object + required: + - tax_rate + properties: + tax_rate: + $ref: '#/components/schemas/TaxRate' + AdminUpdatePaymentCollectionsReq: + type: object + properties: + description: + description: An optional description to create or update the payment collection. + type: string + metadata: + description: An optional set of key-value pairs to hold additional information. + type: object + AdminUpdateUserRequest: + type: object + properties: + first_name: + description: The name of the User. + type: string + last_name: + description: The name of the User. + type: string + role: + description: Userrole assigned to the user. + type: string + enum: + - admin + - member + - developer + api_token: + description: The api token of the User. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object + AdminUploadsDownloadUrlRes: + type: object + required: + - download_url + properties: + download_url: + description: The Download URL of the file + type: string + AdminUploadsRes: + type: object + required: + - uploads + properties: + uploads: + type: array + items: + type: object + required: + - url + properties: + url: + description: The URL of the uploaded file. + type: string + format: uri + AdminUserRes: + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + AdminUsersListRes: + type: object + required: + - users + properties: + users: + type: array + items: + $ref: '#/components/schemas/User' + AdminVariantsListRes: + type: object + x-expanded-relations: + field: variants + relations: + - options + - prices + - product + required: + - variants + - count + - offset + - limit + properties: + variants: + type: array + items: + $ref: '#/components/schemas/PricedVariant' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + AdminVariantsRes: + type: object + x-expanded-relations: + field: variant + relations: + - options + - prices + - product + required: + - variant + properties: + variant: + $ref: '#/components/schemas/PricedVariant' + BatchJob: + title: Batch Job + description: A Batch Job. + type: object + required: + - canceled_at + - completed_at + - confirmed_at + - context + - created_at + - created_by + - deleted_at + - dry_run + - failed_at + - id + - pre_processed_at + - processing_at + - result + - status + - type + - updated_at + properties: + id: + description: The unique identifier for the batch job. + type: string + example: batch_01G8T782965PYFG0751G0Z38B4 + type: + description: The type of batch job. + type: string + enum: + - product-import + - product-export + status: + description: The status of the batch job. + type: string + enum: + - created + - pre_processed + - confirmed + - processing + - completed + - canceled + - failed + default: created + created_by: + description: The unique identifier of the user that created the batch job. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + created_by_user: + description: A user object. Available if the relation `created_by_user` is expanded. + nullable: true + $ref: '#/components/schemas/User' + context: + description: The context of the batch job, the type of the batch job determines what the context should contain. + nullable: true + type: object + example: + shape: + prices: + - region: null + currency_code: eur + dynamicImageColumnCount: 4 + dynamicOptionColumnCount: 2 + list_config: + skip: 0 + take: 50 + order: + created_at: DESC + relations: + - variants + - variant.prices + - images + dry_run: + description: Specify if the job must apply the modifications or not. + type: boolean + default: false + result: + description: The result of the batch job. + nullable: true + allOf: + - type: object + example: {} + - type: object + properties: + count: + type: number + advancement_count: + type: number + progress: + type: number + errors: + type: object + properties: + message: + type: string + code: + oneOf: + - type: string + - type: number + err: + type: array + stat_descriptors: + type: object + properties: + key: + type: string + name: + type: string + message: + type: string + file_key: + type: string + file_size: + type: number + example: + errors: + - err: [] + code: unknown + message: Method not implemented. + stat_descriptors: + - key: product-export-count + name: Product count to export + message: There will be 8 products exported by this action + pre_processed_at: + description: The date from which the job has been pre-processed. + nullable: true + type: string + format: date-time + processing_at: + description: The date the job is processing at. + nullable: true + type: string + format: date-time + confirmed_at: + description: The date when the confirmation has been done. + nullable: true + type: string + format: date-time + completed_at: + description: The date of the completion. + nullable: true + type: string + format: date-time + canceled_at: + description: The date of the concellation. + nullable: true + type: string + format: date-time + failed_at: + description: The date when the job failed. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was last updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + Cart: + title: Cart + description: Represents a user cart + type: object + required: + - billing_address_id + - completed_at + - context + - created_at + - customer_id + - deleted_at + - email + - id + - idempotency_key + - metadata + - payment_authorized_at + - payment_id + - payment_session + - region_id + - shipping_address_id + - type + - updated_at + properties: + id: + description: The cart's ID + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + email: + description: The email associated with the cart + nullable: true + type: string + format: email + billing_address_id: + description: The billing address's ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_address_id: + description: The shipping address's ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + items: + description: Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + discounts: + description: Available if the relation `discounts` is expanded. + type: array + items: + $ref: '#/components/schemas/Discount' + gift_cards: + description: Available if the relation `gift_cards` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCard' + customer_id: + description: The customer's ID + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + type: object + payment_session: + description: The selected payment session in the cart. + nullable: true + type: object + payment_sessions: + description: The payment sessions created on the cart. + type: array + items: + type: object + payment_id: + description: The payment's ID if available + nullable: true + type: string + example: pay_01G8ZCC5W42ZNY842124G7P5R9 + payment: + description: Available if the relation `payment` is expanded. + nullable: true + type: object + shipping_methods: + description: The shipping methods added to the cart. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + type: + description: The cart's type. + type: string + enum: + - default + - swap + - draft_order + - payment_link + - claim + default: default + completed_at: + description: The date with timezone at which the cart was completed. + nullable: true + type: string + format: date-time + payment_authorized_at: + description: The date with timezone at which the payment was authorized. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of a cart in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + context: + description: The context of the cart which can include info like IP or user agent. + nullable: true + type: object + example: + ip: '::1' + user_agent: PostmanRuntime/7.29.2 + sales_channel_id: + description: The sales channel ID the cart is associated with. + nullable: true + type: string + example: null + sales_channel: + description: A sales channel object. Available if the relation `sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + shipping_total: + description: The total of shipping + type: integer + example: 1000 + discount_total: + description: The total of discount rounded + type: integer + example: 800 + raw_discount_total: + description: The total of discount + type: integer + example: 800 + item_tax_total: + description: The total of items with taxes + type: integer + example: 8000 + shipping_tax_total: + description: The total of shipping with taxes + type: integer + example: 1000 + tax_total: + description: The total of tax + type: integer + example: 0 + refunded_total: + description: The total amount refunded if the order associated with this cart is returned. + type: integer + example: 0 + total: + description: The total amount of the cart + type: integer + example: 8200 + subtotal: + description: The subtotal of the cart + type: integer + example: 8000 + refundable_amount: + description: The amount that can be refunded + type: integer + example: 8200 + gift_card_total: + description: The total of gift cards + type: integer + example: 0 + gift_card_tax_total: + description: The total of gift cards with taxes + type: integer + example: 0 + ClaimImage: + title: Claim Image + description: Represents photo documentation of a claim. + type: object + required: + - claim_item_id + - created_at + - deleted_at + - id + - metadata + - updated_at + - url + properties: + id: + description: The claim image's ID + type: string + example: cimg_01G8ZH853Y6TFXWPG5EYE81X63 + claim_item_id: + description: The ID of the claim item associated with the image + type: string + claim_item: + description: A claim item object. Available if the relation `claim_item` is expanded. + nullable: true + type: object + url: + description: The URL of the image + type: string + format: uri + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ClaimItem: + title: Claim Item + description: Represents a claimed item along with information about the reasons for the claim. + type: object + required: + - claim_order_id + - created_at + - deleted_at + - id + - item_id + - metadata + - note + - quantity + - reason + - updated_at + - variant_id + properties: + id: + description: The claim item's ID + type: string + example: citm_01G8ZH853Y6TFXWPG5EYE81X63 + images: + description: Available if the relation `images` is expanded. + type: array + items: + $ref: '#/components/schemas/ClaimImage' + claim_order_id: + description: The ID of the claim this item is associated with. + type: string + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + item_id: + description: The ID of the line item that the claim item refers to. + type: string + example: item_01G8ZM25TN49YV9EQBE2NC27KC + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + variant_id: + description: The ID of the product variant that is claimed. + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: A variant object. Available if the relation `variant` is expanded. + nullable: true + $ref: '#/components/schemas/ProductVariant' + reason: + description: The reason for the claim + type: string + enum: + - missing_item + - wrong_item + - production_failure + - other + note: + description: An optional note about the claim, for additional information + nullable: true + type: string + example: I don't like it. + quantity: + description: The quantity of the item that is being claimed; must be less than or equal to the amount purchased in the original order. + type: integer + example: 1 + tags: + description: User defined tags for easy filtering and grouping. Available if the relation 'tags' is expanded. + type: array + items: + $ref: '#/components/schemas/ClaimTag' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ClaimOrder: + title: Claim Order + description: Claim Orders represent a group of faulty or missing items. Each claim order consists of a subset of items associated with an original order, and can contain additional information about fulfillments and returns. + type: object + required: + - canceled_at + - created_at + - deleted_at + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - order_id + - payment_status + - refund_amount + - shipping_address_id + - type + - updated_at + properties: + id: + description: The claim's ID + type: string + example: claim_01G8ZH853Y6TFXWPG5EYE81X63 + type: + description: The claim's type + type: string + enum: + - refund + - replace + payment_status: + description: The status of the claim's payment + type: string + enum: + - na + - not_refunded + - refunded + default: na + fulfillment_status: + description: The claim's fulfillment status + type: string + enum: + - not_fulfilled + - partially_fulfilled + - fulfilled + - partially_shipped + - shipped + - partially_returned + - returned + - canceled + - requires_action + default: not_fulfilled + claim_items: + description: The items that have been claimed + type: array + items: + $ref: '#/components/schemas/ClaimItem' + additional_items: + description: Refers to the new items to be shipped when the claim order has the type `replace` + type: array + items: + $ref: '#/components/schemas/LineItem' + order_id: + description: The ID of the order that the claim comes from. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + return_order: + description: A return object. Holds information about the return if the claim is to be returned. Available if the relation 'return_order' is expanded + nullable: true + type: object + shipping_address_id: + description: The ID of the address that the new items should be shipped to + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_methods: + description: The shipping methods that the claim order will be shipped with. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + fulfillments: + description: The fulfillments of the new items to be shipped + type: array + items: + type: object + refund_amount: + description: The amount that will be refunded in conjunction with the claim + nullable: true + type: integer + example: 1000 + canceled_at: + description: The date with timezone at which the claim was canceled. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + no_notification: + description: Flag for describing whether or not notifications related to this should be send. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the cart associated with the claim in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + ClaimTag: + title: Claim Tag + description: Claim Tags are user defined tags that can be assigned to claim items for easy filtering and grouping. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The claim tag's ID + type: string + example: ctag_01G8ZCC5Y63B95V6B5SHBZ91S4 + value: + description: The value that the claim tag holds + type: string + example: Damaged + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Country: + title: Country + description: Country details + type: object + required: + - display_name + - id + - iso_2 + - iso_3 + - name + - num_code + - region_id + properties: + id: + description: The country's ID + type: string + example: 109 + iso_2: + description: The 2 character ISO code of the country in lower case + type: string + example: it + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + iso_3: + description: The 2 character ISO code of the country in lower case + type: string + example: ita + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements + description: See a list of codes. + num_code: + description: The numerical ISO code for the country. + type: string + example: 380 + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_numeric#Officially_assigned_code_elements + description: See a list of codes. + name: + description: The normalized country name in upper case. + type: string + example: ITALY + display_name: + description: The country name appropriate for display. + type: string + example: Italy + region_id: + description: The region ID this country is associated with. + nullable: true + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + CreateStockLocationInput: + title: Create Stock Location Input + description: Represents the Input to create a Stock Location + type: object + required: + - name + properties: + name: + type: string + description: The stock location name + address_id: + type: string + description: The Stock location address ID + address: + description: Stock location address object + allOf: + - $ref: '#/components/schemas/StockLocationAddressInput' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + Currency: + title: Currency + description: Currency + type: object + required: + - code + - name + - symbol + - symbol_native + properties: + code: + description: The 3 character ISO code for the currency. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + symbol: + description: The symbol used to indicate the currency. + type: string + example: $ + symbol_native: + description: The native symbol used to indicate the currency. + type: string + example: $ + name: + description: The written name of the currency + type: string + example: US Dollar + includes_tax: + description: '[EXPERIMENTAL] Does the currency prices include tax' + type: boolean + default: false + CustomShippingOption: + title: Custom Shipping Option + description: Custom Shipping Options are 'overriden' Shipping Options. Store managers can attach a Custom Shipping Option to a cart in order to set a custom price for a particular Shipping Option + type: object + required: + - cart_id + - created_at + - deleted_at + - id + - metadata + - price + - shipping_option_id + - updated_at + properties: + id: + description: The custom shipping option's ID + type: string + example: cso_01G8X99XNB77DMFBJFWX6DN9V9 + price: + description: The custom price set that will override the shipping option's original price + type: integer + example: 1000 + shipping_option_id: + description: The ID of the Shipping Option that the custom shipping option overrides + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: A shipping option object. Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + cart_id: + description: The ID of the Cart that the custom shipping option is attached to + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + $ref: '#/components/schemas/Cart' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Customer: + title: Customer + description: Represents a customer + type: object + required: + - billing_address_id + - created_at + - deleted_at + - email + - first_name + - has_account + - id + - last_name + - metadata + - phone + - updated_at + properties: + id: + description: The customer's ID + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + email: + description: The customer's email + type: string + format: email + first_name: + description: The customer's first name + nullable: true + type: string + example: Arno + last_name: + description: The customer's last name + nullable: true + type: string + example: Willms + billing_address_id: + description: The customer's billing address ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_addresses: + description: Available if the relation `shipping_addresses` is expanded. + type: array + items: + $ref: '#/components/schemas/Address' + phone: + description: The customer's phone number + nullable: true + type: string + example: 16128234334802 + has_account: + description: Whether the customer has an account or not + type: boolean + default: false + orders: + description: Available if the relation `orders` is expanded. + type: array + items: + type: object + groups: + description: The customer groups the customer belongs to. Available if the relation `groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + CustomerGroup: + title: Customer Group + description: Represents a customer group + type: object + required: + - created_at + - deleted_at + - id + - metadata + - name + - updated_at + properties: + id: + description: The customer group's ID + type: string + example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 + name: + description: The name of the customer group + type: string + example: VIP + customers: + description: The customers that belong to the customer group. Available if the relation `customers` is expanded. + type: array + items: + type: object + price_lists: + description: The price lists that are associated with the customer group. Available if the relation `price_lists` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Discount: + title: Discount + description: Represents a discount that can be applied to a cart for promotional purposes. + type: object + required: + - code + - created_at + - deleted_at + - ends_at + - id + - is_disabled + - is_dynamic + - metadata + - parent_discount_id + - rule_id + - starts_at + - updated_at + - usage_count + - usage_limit + - valid_duration + properties: + id: + description: The discount's ID + type: string + example: disc_01F0YESMW10MGHWJKZSDDMN0VN + code: + description: A unique code for the discount - this will be used by the customer to apply the discount + type: string + example: 10DISC + is_dynamic: + description: A flag to indicate if multiple instances of the discount can be generated. I.e. for newsletter discounts + type: boolean + example: false + rule_id: + description: The Discount Rule that governs the behaviour of the Discount + nullable: true + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + rule: + description: Available if the relation `rule` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountRule' + is_disabled: + description: Whether the Discount has been disabled. Disabled discounts cannot be applied to carts + type: boolean + example: false + parent_discount_id: + description: The Discount that the discount was created from. This will always be a dynamic discount + nullable: true + type: string + example: disc_01G8ZH853YPY9B94857DY91YGW + parent_discount: + description: Available if the relation `parent_discount` is expanded. + nullable: true + type: object + starts_at: + description: The time at which the discount can be used. + type: string + format: date-time + ends_at: + description: The time at which the discount can no longer be used. + nullable: true + type: string + format: date-time + valid_duration: + description: Duration the discount runs between + nullable: true + type: string + example: P3Y6M4DT12H30M5S + regions: + description: The Regions in which the Discount can be used. Available if the relation `regions` is expanded. + type: array + items: + $ref: '#/components/schemas/Region' + usage_limit: + description: The maximum number of times that a discount can be used. + nullable: true + type: integer + example: 100 + usage_count: + description: The number of times a discount has been used. + type: integer + example: 50 + default: 0 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountCondition: + title: Discount Condition + description: Holds rule conditions for when a discount is applicable + type: object + required: + - created_at + - deleted_at + - discount_rule_id + - id + - metadata + - operator + - type + - updated_at + properties: + id: + description: The discount condition's ID + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + type: + description: The type of the Condition + type: string + enum: + - products + - product_types + - product_collections + - product_tags + - customer_groups + operator: + description: The operator of the Condition + type: string + enum: + - in + - not_in + discount_rule_id: + description: The ID of the discount rule associated with the condition + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + discount_rule: + description: Available if the relation `discount_rule` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountRule' + products: + description: products associated with this condition if type = products. Available if the relation `products` is expanded. + type: array + items: + $ref: '#/components/schemas/Product' + product_types: + description: Product types associated with this condition if type = product_types. Available if the relation `product_types` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductType' + product_tags: + description: Product tags associated with this condition if type = product_tags. Available if the relation `product_tags` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductTag' + product_collections: + description: Product collections associated with this condition if type = product_collections. Available if the relation `product_collections` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductCollection' + customer_groups: + description: Customer groups associated with this condition if type = customer_groups. Available if the relation `customer_groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionCustomerGroup: + title: Product Tag Discount Condition + description: Associates a discount condition with a customer group + type: object + required: + - condition_id + - created_at + - customer_group_id + - metadata + - updated_at + properties: + customer_group_id: + description: The ID of the Product Tag + type: string + example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + customer_group: + description: Available if the relation `customer_group` is expanded. + nullable: true + $ref: '#/components/schemas/CustomerGroup' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProduct: + title: Product Discount Condition + description: Associates a discount condition with a product + type: object + required: + - condition_id + - created_at + - metadata + - product_id + - updated_at + properties: + product_id: + description: The ID of the Product Tag + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product: + description: Available if the relation `product` is expanded. + nullable: true + $ref: '#/components/schemas/Product' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductCollection: + title: Product Collection Discount Condition + description: Associates a discount condition with a product collection + type: object + required: + - condition_id + - created_at + - metadata + - product_collection_id + - updated_at + properties: + product_collection_id: + description: The ID of the Product Collection + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_collection: + description: Available if the relation `product_collection` is expanded. + nullable: true + $ref: '#/components/schemas/ProductCollection' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductTag: + title: Product Tag Discount Condition + description: Associates a discount condition with a product tag + type: object + required: + - condition_id + - created_at + - metadata + - product_tag_id + - updated_at + properties: + product_tag_id: + description: The ID of the Product Tag + type: string + example: ptag_01F0YESHPZYY3H4SJ3A5918SBN + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_tag: + description: Available if the relation `product_tag` is expanded. + nullable: true + $ref: '#/components/schemas/ProductTag' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductType: + title: Product Type Discount Condition + description: Associates a discount condition with a product type + type: object + required: + - condition_id + - created_at + - metadata + - product_type_id + - updated_at + properties: + product_type_id: + description: The ID of the Product Tag + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_type: + description: Available if the relation `product_type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountRule: + title: Discount Rule + description: Holds the rules that governs how a Discount is calculated when applied to a Cart. + type: object + required: + - allocation + - created_at + - deleted_at + - description + - id + - metadata + - type + - updated_at + - value + properties: + id: + description: The discount rule's ID + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + type: + description: The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. + type: string + enum: + - fixed + - percentage + - free_shipping + example: percentage + description: + description: A short description of the discount + nullable: true + type: string + example: 10 Percent + value: + description: The value that the discount represents; this will depend on the type of the discount + type: integer + example: 10 + allocation: + description: The scope that the discount should apply to. + nullable: true + type: string + enum: + - total + - item + example: total + conditions: + description: A set of conditions that can be used to limit when the discount can be used. Available if the relation `conditions` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DraftOrder: + title: DraftOrder + description: Represents a draft order + type: object + required: + - canceled_at + - cart_id + - completed_at + - created_at + - display_id + - id + - idempotency_key + - metadata + - no_notification_order + - order_id + - status + - updated_at + properties: + id: + description: The draft order's ID + type: string + example: dorder_01G8TJFKBG38YYFQ035MSVG03C + status: + description: The status of the draft order + type: string + enum: + - open + - completed + default: open + display_id: + description: The draft order's display ID + type: string + example: 2 + cart_id: + description: The ID of the cart associated with the draft order. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the order associated with the draft order. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + canceled_at: + description: The date the draft order was canceled at. + nullable: true + type: string + format: date-time + completed_at: + description: The date the draft order was completed at. + nullable: true + type: string + format: date-time + no_notification_order: + description: Whether to send the customer notifications regarding order updates. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the cart associated with the draft order in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Error: + title: Response Error + type: object + properties: + code: + type: string + description: A slug code to indicate the type of the error. + message: + type: string + description: Description of the error that occurred. + type: + type: string + description: A slug indicating the type of the error. + ExtendedStoreDTO: + allOf: + - $ref: '#/components/schemas/Store' + - type: object + required: + - payment_providers + - fulfillment_providers + - feature_flags + - modules + properties: + payment_providers: + $ref: '#/components/schemas/PaymentProvider' + fulfillment_providers: + $ref: '#/components/schemas/FulfillmentProvider' + feature_flags: + $ref: '#/components/schemas/FeatureFlagsResponse' + modules: + $ref: '#/components/schemas/ModulesResponse' + FeatureFlagsResponse: + type: array + items: + type: object + required: + - key + - value + properties: + key: + description: The key of the feature flag. + type: string + value: + description: The value of the feature flag. + type: boolean + Fulfillment: + title: Fulfillment + description: Fulfillments are created once store operators can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a provider, which is typically an external shipping aggregator, shipping partner og 3PL, most plugins will have asynchronous communications with these providers through webhooks in order to automatically update and synchronize the state of Fulfillments. + type: object + required: + - canceled_at + - claim_order_id + - created_at + - data + - id + - idempotency_key + - location_id + - metadata + - no_notification + - order_id + - provider_id + - shipped_at + - swap_id + - tracking_numbers + - updated_at + properties: + id: + description: The fulfillment's ID + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + claim_order_id: + description: The id of the Claim that the Fulfillment belongs to. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Fulfillment belongs to. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + order_id: + description: The id of the Order that the Fulfillment belongs to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + provider_id: + description: The id of the Fulfillment Provider responsible for handling the fulfillment + type: string + example: manual + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/FulfillmentProvider' + location_id: + description: The id of the stock location the fulfillment will be shipped from + nullable: true + type: string + example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK + items: + description: The Fulfillment Items in the Fulfillment - these hold information about how many of each Line Item has been fulfilled. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/FulfillmentItem' + tracking_links: + description: The Tracking Links that can be used to track the status of the Fulfillment, these will usually be provided by the Fulfillment Provider. Available if the relation `tracking_links` is expanded. + type: array + items: + $ref: '#/components/schemas/TrackingLink' + tracking_numbers: + description: The tracking numbers that can be used to track the status of the fulfillment. + deprecated: true + type: array + items: + type: string + data: + description: This contains all the data necessary for the Fulfillment provider to handle the fulfillment. + type: object + example: {} + shipped_at: + description: The date with timezone at which the Fulfillment was shipped. + nullable: true + type: string + format: date-time + no_notification: + description: Flag for describing whether or not notifications related to this should be sent. + nullable: true + type: boolean + example: false + canceled_at: + description: The date with timezone at which the Fulfillment was canceled. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of the fulfillment in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + FulfillmentItem: + title: Fulfillment Item + description: Correlates a Line Item with a Fulfillment, keeping track of the quantity of the Line Item. + type: object + required: + - fulfillment_id + - item_id + - quantity + properties: + fulfillment_id: + description: The id of the Fulfillment that the Fulfillment Item belongs to. + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + item_id: + description: The id of the Line Item that the Fulfillment Item references. + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + fulfillment: + description: A fulfillment object. Available if the relation `fulfillment` is expanded. + nullable: true + type: object + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + quantity: + description: The quantity of the Line Item that is included in the Fulfillment. + type: integer + example: 1 + FulfillmentProvider: + title: Fulfillment Provider + description: Represents a fulfillment provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the fulfillment provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + GiftCard: + title: Gift Card + description: Gift Cards are redeemable and represent a value that can be used towards the payment of an Order. + type: object + required: + - balance + - code + - created_at + - deleted_at + - ends_at + - id + - is_disabled + - metadata + - order_id + - region_id + - tax_rate + - updated_at + - value + properties: + id: + description: The gift card's ID + type: string + example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ + code: + description: The unique code that identifies the Gift Card. This is used by the Customer to redeem the value of the Gift Card. + type: string + example: 3RFT-MH2C-Y4YZ-XMN4 + value: + description: The value that the Gift Card represents. + type: integer + example: 10 + balance: + description: The remaining value on the Gift Card. + type: integer + example: 10 + region_id: + description: The id of the Region in which the Gift Card is available. + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + order_id: + description: The id of the Order that the Gift Card was purchased in. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + is_disabled: + description: Whether the Gift Card has been disabled. Disabled Gift Cards cannot be applied to carts. + type: boolean + default: false + ends_at: + description: The time at which the Gift Card can no longer be used. + nullable: true + type: string + format: date-time + tax_rate: + description: The gift card's tax rate that will be applied on calculating totals + nullable: true + type: number + example: 0 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + GiftCardTransaction: + title: Gift Card Transaction + description: Gift Card Transactions are created once a Customer uses a Gift Card to pay for their Order + type: object + required: + - amount + - created_at + - gift_card_id + - id + - is_taxable + - order_id + - tax_rate + properties: + id: + description: The gift card transaction's ID + type: string + example: gct_01G8X9A7ESKAJXG2H0E6F1MW7A + gift_card_id: + description: The ID of the Gift Card that was used in the transaction. + type: string + example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ + gift_card: + description: A gift card object. Available if the relation `gift_card` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Gift Card was used to pay for. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + amount: + description: The amount that was used from the Gift Card. + type: integer + example: 10 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + is_taxable: + description: Whether the transaction is taxable or not. + nullable: true + type: boolean + example: false + tax_rate: + description: The tax rate of the transaction + nullable: true + type: number + example: 0 + IdempotencyKey: + title: Idempotency Key + description: Idempotency Key is used to continue a process in case of any failure that might occur. + type: object + required: + - created_at + - id + - idempotency_key + - locked_at + - recovery_point + - response_code + - response_body + - request_method + - request_params + - request_path + properties: + id: + description: The idempotency key's ID + type: string + example: ikey_01G8X9A7ESKAJXG2H0E6F1MW7A + idempotency_key: + description: The unique randomly generated key used to determine the state of a process. + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: Date which the idempotency key was locked. + type: string + format: date-time + locked_at: + description: Date which the idempotency key was locked. + nullable: true + type: string + format: date-time + request_method: + description: The method of the request + nullable: true + type: string + example: POST + request_params: + description: The parameters passed to the request + nullable: true + type: object + example: + id: cart_01G8ZH853Y6TFXWPG5EYE81X63 + request_path: + description: The request's path + nullable: true + type: string + example: /store/carts/cart_01G8ZH853Y6TFXWPG5EYE81X63/complete + response_code: + description: The response's code. + nullable: true + type: string + example: 200 + response_body: + description: The response's body + nullable: true + type: object + example: + id: cart_01G8ZH853Y6TFXWPG5EYE81X63 + recovery_point: + description: Where to continue from. + type: string + default: started + Image: + title: Image + description: Images holds a reference to a URL at which the image file can be found. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - url + properties: + id: + type: string + description: The image's ID + example: img_01G749BFYR6T8JTVW6SGW3K3E6 + url: + description: The URL at which the image file can be found. + type: string + format: uri + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + InventoryItemDTO: + type: object + required: + - sku + properties: + sku: + description: The Stock Keeping Unit (SKU) code of the Inventory Item. + type: string + hs_code: + description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + origin_country: + description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + material: + description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + weight: + description: The weight of the Inventory Item. May be used in shipping rate calculations. + type: number + height: + description: The height of the Inventory Item. May be used in shipping rate calculations. + type: number + width: + description: The width of the Inventory Item. May be used in shipping rate calculations. + type: number + length: + description: The length of the Inventory Item. May be used in shipping rate calculations. + type: number + requires_shipping: + description: Whether the item requires shipping. + type: boolean + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + InventoryLevelDTO: + type: object + required: + - inventory_item_id + - location_id + - stocked_quantity + - reserved_quantity + - incoming_quantity + properties: + location_id: + description: the item location ID + type: string + stocked_quantity: + description: the total stock quantity of an inventory item at the given location ID + type: number + reserved_quantity: + description: the reserved stock quantity of an inventory item at the given location ID + type: number + incoming_quantity: + description: the incoming stock quantity of an inventory item at the given location ID + type: number + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + Invite: + title: Invite + description: Represents an invite + type: object + required: + - accepted + - created_at + - deleted_at + - expires_at + - id + - metadata + - role + - token + - updated_at + - user_email + properties: + id: + type: string + description: The invite's ID + example: invite_01G8TKE4XYCTHSCK2GDEP47RE1 + user_email: + description: The email of the user being invited. + type: string + format: email + role: + description: The user's role. + nullable: true + type: string + enum: + - admin + - member + - developer + default: member + accepted: + description: Whether the invite was accepted or not. + type: boolean + default: false + token: + description: The token used to accept the invite. + type: string + expires_at: + description: The date the invite expires at. + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItem: + title: Line Item + description: Line Items represent purchasable units that can be added to a Cart for checkout. When Line Items are purchased they will get copied to the resulting order and can eventually be referenced in Fulfillments and Returns. Line Items may also be created when processing Swaps and Claims. + type: object + required: + - allow_discounts + - cart_id + - claim_order_id + - created_at + - description + - fulfilled_quantity + - has_shipping + - id + - is_giftcard + - is_return + - metadata + - order_edit_id + - order_id + - original_item_id + - quantity + - returned_quantity + - shipped_quantity + - should_merge + - swap_id + - thumbnail + - title + - unit_price + - updated_at + - variant_id + properties: + id: + description: The line item's ID + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + cart_id: + description: The ID of the Cart that the Line Item belongs to. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Line Item belongs to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Line Item belongs to. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + claim_order_id: + description: The id of the Claim that the Line Item belongs to. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + tax_lines: + description: Available if the relation `tax_lines` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItemTaxLine' + adjustments: + description: Available if the relation `adjustments` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItemAdjustment' + original_item_id: + description: The id of the original line item + nullable: true + type: string + order_edit_id: + description: The ID of the order edit to which a cloned item belongs + nullable: true + type: string + order_edit: + description: The order edit joined. Available if the relation `order_edit` is expanded. + nullable: true + type: object + title: + description: The title of the Line Item, this should be easily identifiable by the Customer. + type: string + example: Medusa Coffee Mug + description: + description: A more detailed description of the contents of the Line Item. + nullable: true + type: string + example: One Size + thumbnail: + description: A URL string to a small image of the contents of the Line Item. + nullable: true + type: string + format: uri + example: https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png + is_return: + description: Is the item being returned + type: boolean + default: false + is_giftcard: + description: Flag to indicate if the Line Item is a Gift Card. + type: boolean + default: false + should_merge: + description: Flag to indicate if new Line Items with the same variant should be merged or added as an additional Line Item. + type: boolean + default: true + allow_discounts: + description: Flag to indicate if the Line Item should be included when doing discount calculations. + type: boolean + default: true + has_shipping: + description: Flag to indicate if the Line Item has fulfillment associated with it. + nullable: true + type: boolean + example: false + unit_price: + description: The price of one unit of the content in the Line Item. This should be in the currency defined by the Cart/Order/Swap/Claim that the Line Item belongs to. + type: integer + example: 8000 + variant_id: + description: The id of the Product Variant contained in the Line Item. + nullable: true + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: A product variant object. The Product Variant contained in the Line Item. Available if the relation `variant` is expanded. + nullable: true + $ref: '#/components/schemas/ProductVariant' + quantity: + description: The quantity of the content in the Line Item. + type: integer + example: 1 + fulfilled_quantity: + description: The quantity of the Line Item that has been fulfilled. + nullable: true + type: integer + example: 0 + returned_quantity: + description: The quantity of the Line Item that has been returned. + nullable: true + type: integer + example: 0 + shipped_quantity: + description: The quantity of the Line Item that has been shipped. + nullable: true + type: integer + example: 0 + refundable: + description: The amount that can be refunded from the given Line Item. Takes taxes and discounts into consideration. + type: integer + example: 0 + subtotal: + description: The subtotal of the line item + type: integer + example: 8000 + tax_total: + description: The total of tax of the line item + type: integer + example: 0 + total: + description: The total amount of the line item + type: integer + example: 8000 + original_total: + description: The original total amount of the line item + type: integer + example: 8000 + original_tax_total: + description: The original tax total amount of the line item + type: integer + example: 0 + discount_total: + description: The total of discount of the line item rounded + type: integer + example: 0 + raw_discount_total: + description: The total of discount of the line item + type: integer + example: 0 + gift_card_total: + description: The total of the gift card of the line item + type: integer + example: 0 + includes_tax: + description: '[EXPERIMENTAL] Indicates if the line item unit_price include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItemAdjustment: + title: Line Item Adjustment + description: Represents a Line Item Adjustment + type: object + required: + - amount + - description + - discount_id + - id + - item_id + - metadata + properties: + id: + description: The Line Item Adjustment's ID + type: string + example: lia_01G8TKE4XYCTHSCK2GDEP47RE1 + item_id: + description: The ID of the line item + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + item: + description: Available if the relation `item` is expanded. + nullable: true + type: object + description: + description: The line item's adjustment description + type: string + example: Adjusted item's price. + discount_id: + description: The ID of the discount associated with the adjustment + nullable: true + type: string + example: disc_01F0YESMW10MGHWJKZSDDMN0VN + discount: + description: Available if the relation `discount` is expanded. + nullable: true + $ref: '#/components/schemas/Discount' + amount: + description: The adjustment amount + type: number + example: 1000 + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItemTaxLine: + title: Line Item Tax Line + description: Represents a Line Item Tax Line + type: object + required: + - code + - created_at + - id + - item_id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The line item tax line's ID + type: string + example: litl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + item_id: + description: The ID of the line item + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + item: + description: Available if the relation `item` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ModulesResponse: + type: array + items: + type: object + required: + - module + - resolution + properties: + module: + description: The key of the module. + type: string + resolution: + description: The resolution path of the module or false if module is not installed. + type: string + MoneyAmount: + title: Money Amount + description: Money Amounts represents an amount that a given Product Variant can be purcased for. Each Money Amount either has a Currency or Region associated with it to indicate the pricing in a given Currency or, for fully region-based pricing, the given price in a specific Region. If region-based pricing is used the amount will be in the currency defined for the Reigon. + type: object + required: + - amount + - created_at + - currency_code + - deleted_at + - id + - max_quantity + - min_quantity + - price_list_id + - region_id + - updated_at + - variant_id + properties: + id: + description: The money amount's ID + type: string + example: ma_01F0YESHRFQNH5S8Q0PK84YYZN + currency_code: + description: The 3 character currency code that the Money Amount is given in. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + amount: + description: The amount in the smallest currecny unit (e.g. cents 100 cents to charge $1) that the Product Variant will cost. + type: integer + example: 100 + min_quantity: + description: The minimum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. + nullable: true + type: integer + example: 1 + max_quantity: + description: The maximum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. + nullable: true + type: integer + example: 1 + price_list_id: + description: The ID of the price list associated with the money amount + nullable: true + type: string + example: pl_01G8X3CKJXCG5VXVZ87H9KC09W + price_list: + description: Available if the relation `price_list` is expanded. + nullable: true + type: object + variant_id: + description: The id of the Product Variant contained in the Line Item. + nullable: true + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: The Product Variant contained in the Line Item. Available if the relation `variant` is expanded. + nullable: true + type: object + region_id: + description: The region's ID + nullable: true + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + MultipleErrors: + title: Multiple Errors + type: object + properties: + errors: + type: array + description: Array of errors + items: + $ref: '#/components/schemas/Error' + message: + type: string + default: Provided request body contains errors. Please check the data and retry the request + Note: + title: Note + description: Notes are elements which we can use in association with different resources to allow users to describe additional information in relation to these. + type: object + required: + - author_id + - created_at + - deleted_at + - id + - metadata + - resource_id + - resource_type + - updated_at + - value + properties: + id: + description: The note's ID + type: string + example: note_01G8TM8ENBMC7R90XRR1G6H26Q + resource_type: + description: The type of resource that the Note refers to. + type: string + example: order + resource_id: + description: The ID of the resource that the Note refers to. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + value: + description: The contents of the note. + type: string + example: This order must be fulfilled on Monday + author_id: + description: The ID of the author (user) + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + author: + description: Available if the relation `author` is expanded. + nullable: true + $ref: '#/components/schemas/User' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Notification: + title: Notification + description: Notifications a communications sent via Notification Providers as a reaction to internal events such as `order.placed`. Notifications can be used to show a chronological timeline for communications sent to a Customer regarding an Order, and enables resends. + type: object + required: + - created_at + - customer_id + - data + - event_name + - id + - parent_id + - provider_id + - resource_type + - resource_id + - to + - updated_at + properties: + id: + description: The notification's ID + type: string + example: noti_01G53V9Y6CKMCGBM1P0X7C28RX + event_name: + description: The name of the event that the notification was sent for. + nullable: true + type: string + example: order.placed + resource_type: + description: The type of resource that the Notification refers to. + type: string + example: order + resource_id: + description: The ID of the resource that the Notification refers to. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + customer_id: + description: The ID of the Customer that the Notification was sent to. + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + $ref: '#/components/schemas/Customer' + to: + description: The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id + type: string + example: user@example.com + data: + description: The data that the Notification was sent with. This contains all the data necessary for the Notification Provider to initiate a resend. + type: object + example: {} + parent_id: + description: The notification's parent ID + nullable: true + type: string + example: noti_01G53V9Y6CKMCGBM1P0X7C28RX + parent_notification: + description: Available if the relation `parent_notification` is expanded. + nullable: true + type: object + resends: + description: The resends that have been completed after the original Notification. Available if the relation `resends` is expanded. + type: array + items: + type: object + provider_id: + description: The id of the Notification Provider that handles the Notification. + nullable: true + type: string + example: sengrid + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/NotificationProvider' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + NotificationProvider: + title: Notification Provider + description: Represents a notification provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the notification provider as given by the plugin. + type: string + example: sendgrid + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + OAuth: + title: OAuth + description: Represent an OAuth app + type: object + required: + - application_name + - data + - display_name + - id + - install_url + - uninstall_url + properties: + id: + description: The app's ID + type: string + example: example_app + display_name: + description: The app's display name + type: string + example: Example app + application_name: + description: The app's name + type: string + example: example + install_url: + description: The URL to install the app + nullable: true + type: string + format: uri + uninstall_url: + description: The URL to uninstall the app + nullable: true + type: string + format: uri + data: + description: Any data necessary to the app. + nullable: true + type: object + example: {} + Order: + title: Order + description: Represents an order + type: object + required: + - billing_address_id + - canceled_at + - cart_id + - created_at + - currency_code + - customer_id + - draft_order_id + - display_id + - email + - external_id + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - object + - payment_status + - region_id + - shipping_address_id + - status + - tax_rate + - updated_at + properties: + id: + description: The order's ID + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + status: + description: The order's status + type: string + enum: + - pending + - completed + - archived + - canceled + - requires_action + default: pending + fulfillment_status: + description: The order's fulfillment status + type: string + enum: + - not_fulfilled + - partially_fulfilled + - fulfilled + - partially_shipped + - shipped + - partially_returned + - returned + - canceled + - requires_action + default: not_fulfilled + payment_status: + description: The order's payment status + type: string + enum: + - not_paid + - awaiting + - captured + - partially_refunded + - refunded + - canceled + - requires_action + default: not_paid + display_id: + description: The order's display ID + type: integer + example: 2 + cart_id: + description: The ID of the cart associated with the order + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + customer_id: + description: The ID of the customer associated with the order + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + type: object + email: + description: The email associated with the order + type: string + format: email + billing_address_id: + description: The ID of the billing address associated with the order + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_address_id: + description: The ID of the shipping address associated with the order + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + currency_code: + description: The 3 character currency code that is used in the order + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + tax_rate: + description: The order's tax rate + nullable: true + type: number + example: 0 + discounts: + description: The discounts used in the order. Available if the relation `discounts` is expanded. + type: array + items: + $ref: '#/components/schemas/Discount' + gift_cards: + description: The gift cards used in the order. Available if the relation `gift_cards` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCard' + shipping_methods: + description: The shipping methods used in the order. Available if the relation `shipping_methods` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + payments: + description: The payments used in the order. Available if the relation `payments` is expanded. + type: array + items: + type: object + fulfillments: + description: The fulfillments used in the order. Available if the relation `fulfillments` is expanded. + type: array + items: + type: object + returns: + description: The returns associated with the order. Available if the relation `returns` is expanded. + type: array + items: + type: object + claims: + description: The claims associated with the order. Available if the relation `claims` is expanded. + type: array + items: + type: object + refunds: + description: The refunds associated with the order. Available if the relation `refunds` is expanded. + type: array + items: + type: object + swaps: + description: The swaps associated with the order. Available if the relation `swaps` is expanded. + type: array + items: + type: object + draft_order_id: + description: The ID of the draft order this order is associated with. + nullable: true + type: string + example: null + draft_order: + description: A draft order object. Available if the relation `draft_order` is expanded. + nullable: true + type: object + items: + description: The line items that belong to the order. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + edits: + description: Order edits done on the order. Available if the relation `edits` is expanded. + type: array + items: + type: object + gift_card_transactions: + description: The gift card transactions used in the order. Available if the relation `gift_card_transactions` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCardTransaction' + canceled_at: + description: The date the order was canceled on. + nullable: true + type: string + format: date-time + no_notification: + description: Flag for describing whether or not notifications related to this should be send. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the processing of the order in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + external_id: + description: The ID of an external order. + nullable: true + type: string + example: null + sales_channel_id: + description: The ID of the sales channel this order is associated with. + nullable: true + type: string + example: null + sales_channel: + description: A sales channel object. Available if the relation `sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + shipping_total: + type: integer + description: The total of shipping + example: 1000 + raw_discount_total: + description: The total of discount + type: integer + example: 800 + discount_total: + description: The total of discount rounded + type: integer + example: 800 + tax_total: + description: The total of tax + type: integer + example: 0 + refunded_total: + description: The total amount refunded if the order is returned. + type: integer + example: 0 + total: + description: The total amount of the order + type: integer + example: 8200 + subtotal: + description: The subtotal of the order + type: integer + example: 8000 + paid_total: + description: The total amount paid + type: integer + example: 8000 + refundable_amount: + description: The amount that can be refunded + type: integer + example: 8200 + gift_card_total: + description: The total of gift cards + type: integer + example: 0 + gift_card_tax_total: + description: The total of gift cards with taxes + type: integer + example: 0 + returnable_items: + description: The items that are returnable as part of the order, order swaps or order claims + type: array + items: + $ref: '#/components/schemas/LineItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + OrderEdit: + title: Order Edit + description: Order edit keeps track of order items changes. + type: object + required: + - canceled_at + - canceled_by + - confirmed_by + - confirmed_at + - created_at + - created_by + - declined_at + - declined_by + - declined_reason + - id + - internal_note + - order_id + - payment_collection_id + - requested_at + - requested_by + - status + - updated_at + properties: + id: + description: The order edit's ID + type: string + example: oe_01G8TJSYT9M6AVS5N4EMNFS1EK + order_id: + description: The ID of the order that is edited + type: string + example: order_01G2SG30J8C85S4A5CHM2S1NS2 + order: + description: Available if the relation `order` is expanded. + nullable: true + type: object + changes: + description: Available if the relation `changes` is expanded. + type: array + items: + $ref: '#/components/schemas/OrderItemChange' + internal_note: + description: An optional note with additional details about the order edit. + nullable: true + type: string + example: Included two more items B to the order. + created_by: + description: The unique identifier of the user or customer who created the order edit. + type: string + requested_by: + description: The unique identifier of the user or customer who requested the order edit. + nullable: true + type: string + requested_at: + description: The date with timezone at which the edit was requested. + nullable: true + type: string + format: date-time + confirmed_by: + description: The unique identifier of the user or customer who confirmed the order edit. + nullable: true + type: string + confirmed_at: + description: The date with timezone at which the edit was confirmed. + nullable: true + type: string + format: date-time + declined_by: + description: The unique identifier of the user or customer who declined the order edit. + nullable: true + type: string + declined_at: + description: The date with timezone at which the edit was declined. + nullable: true + type: string + format: date-time + declined_reason: + description: An optional note why the order edit is declined. + nullable: true + type: string + canceled_by: + description: The unique identifier of the user or customer who cancelled the order edit. + nullable: true + type: string + canceled_at: + description: The date with timezone at which the edit was cancelled. + nullable: true + type: string + format: date-time + subtotal: + description: The total of subtotal + type: integer + example: 8000 + discount_total: + description: The total of discount + type: integer + example: 800 + shipping_total: + description: The total of the shipping amount + type: integer + example: 800 + gift_card_total: + description: The total of the gift card amount + type: integer + example: 800 + gift_card_tax_total: + description: The total of the gift card tax amount + type: integer + example: 800 + tax_total: + description: The total of tax + type: integer + example: 0 + total: + description: The total amount of the edited order. + type: integer + example: 8200 + difference_due: + description: The difference between the total amount of the order and total amount of edited order. + type: integer + example: 8200 + status: + description: The status of the order edit. + type: string + enum: + - confirmed + - declined + - requested + - created + - canceled + items: + description: Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + payment_collection_id: + description: The ID of the payment collection + nullable: true + type: string + example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK + payment_collection: + description: Available if the relation `payment_collection` is expanded. + nullable: true + $ref: '#/components/schemas/PaymentCollection' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + OrderItemChange: + title: Order Item Change + description: Represents an order edit item change + type: object + required: + - created_at + - deleted_at + - id + - line_item_id + - order_edit_id + - original_line_item_id + - type + - updated_at + properties: + id: + description: The order item change's ID + type: string + example: oic_01G8TJSYT9M6AVS5N4EMNFS1EK + type: + description: The order item change's status + type: string + enum: + - item_add + - item_remove + - item_update + order_edit_id: + description: The ID of the order edit + type: string + example: oe_01G2SG30J8C85S4A5CHM2S1NS2 + order_edit: + description: Available if the relation `order_edit` is expanded. + nullable: true + type: object + original_line_item_id: + description: The ID of the original line item in the order + nullable: true + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + original_line_item: + description: Available if the relation `original_line_item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + line_item_id: + description: The ID of the cloned line item. + nullable: true + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + line_item: + description: Available if the relation `line_item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + Payment: + title: Payment + description: Payments represent an amount authorized with a given payment method, Payments can be captured, canceled or refunded. + type: object + required: + - amount + - amount_refunded + - canceled_at + - captured_at + - cart_id + - created_at + - currency_code + - data + - id + - idempotency_key + - metadata + - order_id + - provider_id + - swap_id + - updated_at + properties: + id: + description: The payment's ID + type: string + example: pay_01G2SJNT6DEEWDFNAJ4XWDTHKE + swap_id: + description: The ID of the Swap that the Payment is used for. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + cart_id: + description: The id of the Cart that the Payment Session is created for. + nullable: true + type: string + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Payment is used for. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + amount: + description: The amount that the Payment has been authorized for. + type: integer + example: 100 + currency_code: + description: The 3 character ISO currency code that the Payment is completed in. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + amount_refunded: + description: The amount of the original Payment amount that has been refunded back to the Customer. + type: integer + default: 0 + example: 0 + provider_id: + description: The id of the Payment Provider that is responsible for the Payment + type: string + example: manual + data: + description: The data required for the Payment Provider to identify, modify and process the Payment. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. + type: object + example: {} + captured_at: + description: The date with timezone at which the Payment was captured. + nullable: true + type: string + format: date-time + canceled_at: + description: The date with timezone at which the Payment was canceled. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of a payment in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + PaymentCollection: + title: Payment Collection + description: Payment Collection + type: object + required: + - amount + - authorized_amount + - created_at + - created_by + - currency_code + - deleted_at + - description + - id + - metadata + - region_id + - status + - type + - updated_at + properties: + id: + description: The payment collection's ID + type: string + example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK + type: + description: The type of the payment collection + type: string + enum: + - order_edit + status: + description: The type of the payment collection + type: string + enum: + - not_paid + - awaiting + - authorized + - partially_authorized + - canceled + description: + description: Description of the payment collection + nullable: true + type: string + amount: + description: Amount of the payment collection. + type: integer + authorized_amount: + description: Authorized amount of the payment collection. + nullable: true + type: integer + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + currency_code: + description: The 3 character ISO code for the currency. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + payment_sessions: + description: Available if the relation `payment_sessions` is expanded. + type: array + items: + $ref: '#/components/schemas/PaymentSession' + payments: + description: Available if the relation `payments` is expanded. + type: array + items: + $ref: '#/components/schemas/Payment' + created_by: + description: The ID of the user that created the payment collection. + type: string + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + PaymentProvider: + title: Payment Provider + description: Represents a Payment Provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the payment provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + PaymentSession: + title: Payment Session + description: Payment Sessions are created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, who is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for capture/refunds/etc. + type: object + required: + - amount + - cart_id + - created_at + - data + - id + - is_initiated + - is_selected + - idempotency_key + - payment_authorized_at + - provider_id + - status + - updated_at + properties: + id: + description: The payment session's ID + type: string + example: ps_01G901XNSRM2YS3ASN9H5KG3FZ + cart_id: + description: The id of the Cart that the Payment Session is created for. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + $ref: '#/components/schemas/Cart' + provider_id: + description: The id of the Payment Provider that is responsible for the Payment Session + type: string + example: manual + is_selected: + description: A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase. + nullable: true + type: boolean + example: true + is_initiated: + description: A flag to indicate if a communication with the third party provider has been initiated. + type: boolean + default: false + example: true + status: + description: Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer. + type: string + enum: + - authorized + - pending + - requires_more + - error + - canceled + example: pending + data: + description: The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. + type: object + example: {} + idempotency_key: + description: Randomly generated key used to continue the completion of a cart in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + amount: + description: The amount that the Payment Session has been authorized for. + nullable: true + type: integer + example: 100 + payment_authorized_at: + description: The date with timezone at which the Payment Session was authorized. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + PriceList: + title: Price List + description: Price Lists represents a set of prices that overrides the default price for one or more product variants. + type: object + required: + - created_at + - deleted_at + - description + - ends_at + - id + - name + - starts_at + - status + - type + - updated_at + properties: + id: + description: The price list's ID + type: string + example: pl_01G8X3CKJXCG5VXVZ87H9KC09W + name: + description: The price list's name + type: string + example: VIP Prices + description: + description: The price list's description + type: string + example: Prices for VIP customers + type: + description: The type of Price List. This can be one of either `sale` or `override`. + type: string + enum: + - sale + - override + default: sale + status: + description: The status of the Price List + type: string + enum: + - active + - draft + default: draft + starts_at: + description: The date with timezone that the Price List starts being valid. + nullable: true + type: string + format: date-time + ends_at: + description: The date with timezone that the Price List stops being valid. + nullable: true + type: string + format: date-time + customer_groups: + description: The Customer Groups that the Price List applies to. Available if the relation `customer_groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + prices: + description: The Money Amounts that are associated with the Price List. Available if the relation `prices` is expanded. + type: array + items: + $ref: '#/components/schemas/MoneyAmount' + includes_tax: + description: '[EXPERIMENTAL] Does the price list prices include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + PricedProduct: + title: Priced Product + type: object + allOf: + - $ref: '#/components/schemas/Product' + - type: object + properties: + variants: + type: array + items: + $ref: '#/components/schemas/PricedVariant' + PricedShippingOption: + title: Priced Shipping Option + type: object + allOf: + - $ref: '#/components/schemas/ShippingOption' + - type: object + properties: + price_incl_tax: + type: number + description: Price including taxes + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + tax_amount: + type: number + description: The taxes applied. + PricedVariant: + title: Priced Product Variant + type: object + allOf: + - $ref: '#/components/schemas/ProductVariant' + - type: object + properties: + original_price: + type: number + description: The original price of the variant without any discounted prices applied. + calculated_price: + type: number + description: The calculated price of the variant. Can be a discounted price. + original_price_incl_tax: + type: number + description: The original price of the variant including taxes. + calculated_price_incl_tax: + type: number + description: The calculated price of the variant including taxes. + original_tax: + type: number + description: The taxes applied on the original price. + calculated_tax: + type: number + description: The taxes applied on the calculated price. + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + Product: + title: Product + description: Products are a grouping of Product Variants that have common properties such as images and descriptions. Products can have multiple options which define the properties that Product Variants differ by. + type: object + required: + - collection_id + - created_at + - deleted_at + - description + - discountable + - external_id + - handle + - height + - hs_code + - id + - is_giftcard + - length + - material + - metadata + - mid_code + - origin_country + - profile_id + - status + - subtitle + - type_id + - thumbnail + - title + - updated_at + - weight + - width + properties: + id: + description: The product's ID + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + title: + description: A title that can be displayed for easy identification of the Product. + type: string + example: Medusa Coffee Mug + subtitle: + description: An optional subtitle that can be used to further specify the Product. + nullable: true + type: string + description: + description: A short description of the Product. + nullable: true + type: string + example: Every programmer's best friend. + handle: + description: A unique identifier for the Product (e.g. for slug structure). + nullable: true + type: string + example: coffee-mug + is_giftcard: + description: Whether the Product represents a Gift Card. Products that represent Gift Cards will automatically generate a redeemable Gift Card code once they are purchased. + type: boolean + default: false + status: + description: The status of the product + type: string + enum: + - draft + - proposed + - published + - rejected + default: draft + images: + description: Images of the Product. Available if the relation `images` is expanded. + type: array + items: + $ref: '#/components/schemas/Image' + thumbnail: + description: A URL to an image file that can be used to identify the Product. + nullable: true + type: string + format: uri + options: + description: The Product Options that are defined for the Product. Product Variants of the Product will have a unique combination of Product Option Values. Available if the relation `options` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOption' + variants: + description: The Product Variants that belong to the Product. Each will have a unique combination of Product Option Values. Available if the relation `variants` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductVariant' + categories: + description: The product's associated categories. Available if the relation `categories` are expanded. + type: array + items: + $ref: '#/components/schemas/ProductCategory' + profile_id: + description: The ID of the Shipping Profile that the Product belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products. + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + profile: + description: Available if the relation `profile` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingProfile' + weight: + description: The weight of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + length: + description: The length of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + height: + description: The height of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + width: + description: The width of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + hs_code: + description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + origin_country: + description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + material: + description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + collection_id: + description: The Product Collection that the Product belongs to + nullable: true + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + collection: + description: A product collection object. Available if the relation `collection` is expanded. + nullable: true + $ref: '#/components/schemas/ProductCollection' + type_id: + description: The Product type that the Product belongs to + nullable: true + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + type: + description: Available if the relation `type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + tags: + description: The Product Tags assigned to the Product. Available if the relation `tags` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductTag' + discountable: + description: Whether the Product can be discounted. Discounts will not apply to Line Items of this Product when this flag is set to `false`. + type: boolean + default: true + external_id: + description: The external ID of the product + nullable: true + type: string + example: null + sales_channels: + description: The sales channels the product is associated with. Available if the relation `sales_channels` is expanded. + type: array + items: + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductCategory: + title: ProductCategory + description: Represents a product category + x-resourceId: ProductCategory + type: object + required: + - category_children + - created_at + - handle + - id + - is_active + - is_internal + - mpath + - name + - parent_category_id + - updated_at + properties: + id: + description: The product category's ID + type: string + example: pcat_01G2SG30J8C85S4A5CHM2S1NS2 + name: + description: The product category's name + type: string + example: Regular Fit + handle: + description: A unique string that identifies the Product Category - can for example be used in slug structures. + type: string + example: regular-fit + mpath: + description: A string for Materialized Paths - used for finding ancestors and descendents + nullable: true + type: string + example: pcat_id1.pcat_id2.pcat_id3 + is_internal: + type: boolean + description: A flag to make product category an internal category for admins + default: false + is_active: + type: boolean + description: A flag to make product category visible/hidden in the store front + default: false + rank: + type: integer + description: An integer that depicts the rank of category in a tree node + default: 0 + category_children: + description: Available if the relation `category_children` are expanded. + type: array + items: + type: object + parent_category_id: + description: The ID of the parent category. + nullable: true + type: string + default: null + parent_category: + description: A product category object. Available if the relation `parent_category` is expanded. + nullable: true + type: object + products: + description: Products associated with category. Available if the relation `products` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + ProductCollection: + title: Product Collection + description: Product Collections represents a group of Products that are related. + type: object + required: + - created_at + - deleted_at + - handle + - id + - metadata + - title + - updated_at + properties: + id: + description: The product collection's ID + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + title: + description: The title that the Product Collection is identified by. + type: string + example: Summer Collection + handle: + description: A unique string that identifies the Product Collection - can for example be used in slug structures. + nullable: true + type: string + example: summer-collection + products: + description: The Products contained in the Product Collection. Available if the relation `products` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductOption: + title: Product Option + description: Product Options define properties that may vary between different variants of a Product. Common Product Options are "Size" and "Color", but Medusa doesn't limit what Product Options that can be defined. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - product_id + - title + - updated_at + properties: + id: + description: The product option's ID + type: string + example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 + title: + description: The title that the Product Option is defined by (e.g. `Size`). + type: string + example: Size + values: + description: The Product Option Values that are defined for the Product Option. Available if the relation `values` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOptionValue' + product_id: + description: The ID of the Product that the Product Option is defined for. + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: A product object. Available if the relation `product` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductOptionValue: + title: Product Option Value + description: A value given to a Product Variant's option set. Product Variant have a Product Option Value for each of the Product Options defined on the Product. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - option_id + - updated_at + - value + - variant_id + properties: + id: + description: The product option value's ID + type: string + example: optval_01F0YESHR7S6ECD03RF6W12DSJ + value: + description: The value that the Product Variant has defined for the specific Product Option (e.g. if the Product Option is \"Size\" this value could be `Small`, `Medium` or `Large`). + type: string + example: large + option_id: + description: The ID of the Product Option that the Product Option Value is defined for. + type: string + example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 + option: + description: Available if the relation `option` is expanded. + nullable: true + type: object + variant_id: + description: The ID of the Product Variant that the Product Option Value is defined for. + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: Available if the relation `variant` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTag: + title: Product Tag + description: Product Tags can be added to Products for easy filtering and grouping. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The product tag's ID + type: string + example: ptag_01G8K2MTMG9168F2B70S1TAVK3 + value: + description: The value that the Product Tag represents + type: string + example: Pants + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTaxRate: + title: Product Tax Rate + description: Associates a tax rate with a product to indicate that the product is taxed in a certain way + type: object + required: + - created_at + - metadata + - product_id + - rate_id + - updated_at + properties: + product_id: + description: The ID of the Product + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: Available if the relation `product` is expanded. + nullable: true + $ref: '#/components/schemas/Product' + rate_id: + description: The ID of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductType: + title: Product Type + description: Product Type can be added to Products for filtering and reporting purposes. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The product type's ID + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + value: + description: The value that the Product Type represents. + type: string + example: Clothing + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTypeTaxRate: + title: Product Type Tax Rate + description: Associates a tax rate with a product type to indicate that the product type is taxed in a certain way + type: object + required: + - created_at + - metadata + - product_type_id + - rate_id + - updated_at + properties: + product_type_id: + description: The ID of the Product type + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + product_type: + description: Available if the relation `product_type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + rate_id: + description: The id of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductVariant: + title: Product Variant + description: Product Variants represent a Product with a specific set of Product Option configurations. The maximum number of Product Variants that a Product can have is given by the number of available Product Option combinations. + type: object + required: + - allow_backorder + - barcode + - created_at + - deleted_at + - ean + - height + - hs_code + - id + - inventory_quantity + - length + - manage_inventory + - material + - metadata + - mid_code + - origin_country + - product_id + - sku + - title + - upc + - updated_at + - weight + - width + properties: + id: + description: The product variant's ID + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + title: + description: A title that can be displayed for easy identification of the Product Variant. + type: string + example: Small + product_id: + description: The ID of the Product that the Product Variant belongs to. + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: A product object. Available if the relation `product` is expanded. + nullable: true + type: object + prices: + description: The Money Amounts defined for the Product Variant. Each Money Amount represents a price in a given currency or a price in a specific Region. Available if the relation `prices` is expanded. + type: array + items: + $ref: '#/components/schemas/MoneyAmount' + sku: + description: The unique stock keeping unit used to identify the Product Variant. This will usually be a unqiue identifer for the item that is to be shipped, and can be referenced across multiple systems. + nullable: true + type: string + example: shirt-123 + barcode: + description: A generic field for a GTIN number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + ean: + description: An EAN barcode number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + upc: + description: A UPC barcode number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + variant_rank: + description: The ranking of this variant + nullable: true + type: number + default: 0 + inventory_quantity: + description: The current quantity of the item that is stocked. + type: integer + example: 100 + allow_backorder: + description: Whether the Product Variant should be purchasable when `inventory_quantity` is 0. + type: boolean + default: false + manage_inventory: + description: Whether Medusa should manage inventory for the Product Variant. + type: boolean + default: true + hs_code: + description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + origin_country: + description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + material: + description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + weight: + description: The weight of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + length: + description: The length of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + height: + description: The height of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + width: + description: The width of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + options: + description: The Product Option Values specified for the Product Variant. Available if the relation `options` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOptionValue' + inventory_items: + description: The Inventory Items related to the product variant. Available if the relation `inventory_items` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductVariantInventoryItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductVariantInventoryItem: + title: Product Variant Inventory Item + description: Product Variant Inventory Items link variants with inventory items and denote the number of inventory items constituting a variant. + type: object + required: + - created_at + - deleted_at + - id + - inventory_item_id + - required_quantity + - updated_at + - variant_id + properties: + id: + description: The product variant inventory item's ID + type: string + example: pvitem_01G8X9A7ESKAJXG2H0E6F1MW7A + inventory_item_id: + description: The id of the inventory item + type: string + variant_id: + description: The id of the variant. + type: string + variant: + description: A ProductVariant object. Available if the relation `variant` is expanded. + nullable: true + type: object + required_quantity: + description: The quantity of an inventory item required for one quantity of the variant. + type: integer + default: 1 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + PublishableApiKey: + title: Publishable API key + description: Publishable API key defines scopes (i.e. resources) that are available within a request. + type: object + required: + - created_at + - created_by + - id + - revoked_by + - revoked_at + - title + - updated_at + properties: + id: + description: The key's ID + type: string + example: pk_01G1G5V27GYX4QXNARRQCW1N8T + created_by: + description: The unique identifier of the user that created the key. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + revoked_by: + description: The unique identifier of the user that revoked the key. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + revoked_at: + description: The date with timezone at which the key was revoked. + nullable: true + type: string + format: date-time + title: + description: The key's title. + type: string + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + PublishableApiKeySalesChannel: + title: Publishable API key sales channel + description: Holds mapping between Publishable API keys and Sales Channels + type: object + required: + - publishable_key_id + - sales_channel_id + properties: + sales_channel_id: + description: The sales channel's ID + type: string + example: sc_01G1G5V21KADXNGH29BJMAJ4B4 + publishable_key_id: + description: The publishable API key's ID + type: string + example: pak_01G1G5V21KADXNGH29BJMAJ4B4 + Refund: + title: Refund + description: Refund represent an amount of money transfered back to the Customer for a given reason. Refunds may occur in relation to Returns, Swaps and Claims, but can also be initiated by a store operator. + type: object + required: + - amount + - created_at + - id + - idempotency_key + - metadata + - note + - order_id + - payment_id + - reason + - updated_at + properties: + id: + description: The refund's ID + type: string + example: ref_01G1G5V27GYX4QXNARRQCW1N8T + order_id: + description: The id of the Order that the Refund is related to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + payment_id: + description: The payment's ID if available + nullable: true + type: string + example: pay_01G8ZCC5W42ZNY842124G7P5R9 + payment: + description: Available if the relation `payment` is expanded. + nullable: true + type: object + amount: + description: The amount that has be refunded to the Customer. + type: integer + example: 1000 + note: + description: An optional note explaining why the amount was refunded. + nullable: true + type: string + example: I didn't like it + reason: + description: The reason given for the Refund, will automatically be set when processed as part of a Swap, Claim or Return. + type: string + enum: + - discount + - return + - swap + - claim + - other + example: return + idempotency_key: + description: Randomly generated key used to continue the completion of the refund in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Region: + title: Region + description: Regions hold settings for how Customers in a given geographical location shop. The is, for example, where currencies and tax rates are defined. A Region can consist of multiple countries to accomodate common shopping settings across countries. + type: object + required: + - automatic_taxes + - created_at + - currency_code + - deleted_at + - gift_cards_taxable + - id + - metadata + - name + - tax_code + - tax_provider_id + - tax_rate + - updated_at + properties: + id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + name: + description: The name of the region as displayed to the customer. If the Region only has one country it is recommended to write the country name. + type: string + example: EU + currency_code: + description: The 3 character currency code that the Region uses. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + tax_rate: + description: The tax rate that should be charged on purchases in the Region. + type: number + example: 0 + tax_rates: + description: The tax rates that are included in the Region. Available if the relation `tax_rates` is expanded. + type: array + items: + $ref: '#/components/schemas/TaxRate' + tax_code: + description: The tax code used on purchases in the Region. This may be used by other systems for accounting purposes. + nullable: true + type: string + example: null + gift_cards_taxable: + description: Whether the gift cards are taxable or not in this region. + type: boolean + default: true + automatic_taxes: + description: Whether taxes should be automated in this region. + type: boolean + default: true + countries: + description: The countries that are included in the Region. Available if the relation `countries` is expanded. + type: array + items: + $ref: '#/components/schemas/Country' + tax_provider_id: + description: The ID of the tax provider used in this region + nullable: true + type: string + example: null + tax_provider: + description: Available if the relation `tax_provider` is expanded. + nullable: true + $ref: '#/components/schemas/TaxProvider' + payment_providers: + description: The Payment Providers that can be used to process Payments in the Region. Available if the relation `payment_providers` is expanded. + type: array + items: + $ref: '#/components/schemas/PaymentProvider' + fulfillment_providers: + description: The Fulfillment Providers that can be used to fulfill orders in the Region. Available if the relation `fulfillment_providers` is expanded. + type: array + items: + $ref: '#/components/schemas/FulfillmentProvider' + includes_tax: + description: '[EXPERIMENTAL] Does the prices for the region include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReservationItemDTO: + title: Reservation item + description: Represents a reservation of an inventory item at a stock location + type: object + required: + - id + - location_id + - inventory_item_id + - quantity + properties: + id: + description: The id of the reservation item + type: string + location_id: + description: The id of the location of the reservation + type: string + inventory_item_id: + description: The id of the inventory item the reservation relates to + type: string + quantity: + description: The id of the reservation item + type: number + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + ResponseInventoryItem: + allOf: + - $ref: '#/components/schemas/InventoryItemDTO' + - type: object + required: + - available_quantity + properties: + available_quantity: + type: number + Return: + title: Return + description: Return orders hold information about Line Items that a Customer wishes to send back, along with how the items will be returned. Returns can be used as part of a Swap. + type: object + required: + - claim_order_id + - created_at + - id + - idempotency_key + - location_id + - metadata + - no_notification + - order_id + - received_at + - refund_amount + - shipping_data + - status + - swap_id + - updated_at + properties: + id: + description: The return's ID + type: string + example: ret_01F0YET7XPCMF8RZ0Y151NZV2V + status: + description: Status of the Return. + type: string + enum: + - requested + - received + - requires_action + - canceled + default: requested + items: + description: The Return Items that will be shipped back to the warehouse. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/ReturnItem' + swap_id: + description: The ID of the Swap that the Return is a part of. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + claim_order_id: + description: The ID of the Claim that the Return is a part of. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Return is made from. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + shipping_method: + description: The Shipping Method that will be used to send the Return back. Can be null if the Customer facilitates the return shipment themselves. Available if the relation `shipping_method` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingMethod' + shipping_data: + description: Data about the return shipment as provided by the Fulfilment Provider that handles the return shipment. + nullable: true + type: object + example: {} + location_id: + description: The id of the stock location the return will be added back. + nullable: true + type: string + example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK + refund_amount: + description: The amount that should be refunded as a result of the return. + type: integer + example: 1000 + no_notification: + description: When set to true, no notification will be sent related to this return. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the return in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + received_at: + description: The date with timezone at which the return was received. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReturnItem: + title: Return Item + description: Correlates a Line Item with a Return, keeping track of the quantity of the Line Item that will be returned. + type: object + required: + - is_requested + - item_id + - metadata + - note + - quantity + - reason_id + - received_quantity + - requested_quantity + - return_id + properties: + return_id: + description: The id of the Return that the Return Item belongs to. + type: string + example: ret_01F0YET7XPCMF8RZ0Y151NZV2V + item_id: + description: The id of the Line Item that the Return Item references. + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + return_order: + description: Available if the relation `return_order` is expanded. + nullable: true + type: object + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + quantity: + description: The quantity of the Line Item that is included in the Return. + type: integer + example: 1 + is_requested: + description: Whether the Return Item was requested initially or received unexpectedly in the warehouse. + type: boolean + default: true + requested_quantity: + description: The quantity that was originally requested to be returned. + nullable: true + type: integer + example: 1 + received_quantity: + description: The quantity that was received in the warehouse. + nullable: true + type: integer + example: 1 + reason_id: + description: The ID of the reason for returning the item. + nullable: true + type: string + example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ + reason: + description: Available if the relation `reason` is expanded. + nullable: true + $ref: '#/components/schemas/ReturnReason' + note: + description: An optional note with additional details about the Return. + nullable: true + type: string + example: I didn't like it. + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReturnReason: + title: Return Reason + description: A Reason for why a given product is returned. A Return Reason can be used on Return Items in order to indicate why a Line Item was returned. + type: object + required: + - created_at + - deleted_at + - description + - id + - label + - metadata + - parent_return_reason_id + - updated_at + - value + properties: + id: + description: The return reason's ID + type: string + example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ + value: + description: The value to identify the reason by. + type: string + example: damaged + label: + description: A text that can be displayed to the Customer as a reason. + type: string + example: Damaged goods + description: + description: A description of the Reason. + nullable: true + type: string + example: Items that are damaged + parent_return_reason_id: + description: The ID of the parent reason. + nullable: true + type: string + example: null + parent_return_reason: + description: Available if the relation `parent_return_reason` is expanded. + nullable: true + type: object + return_reason_children: + description: Available if the relation `return_reason_children` is expanded. + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + SalesChannel: + title: Sales Channel + description: A Sales Channel + type: object + required: + - created_at + - deleted_at + - description + - id + - is_disabled + - name + - updated_at + properties: + id: + description: The sales channel's ID + type: string + example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A + name: + description: The name of the sales channel. + type: string + example: Market + description: + description: The description of the sales channel. + nullable: true + type: string + example: Multi-vendor market + is_disabled: + description: Specify if the sales channel is enabled or disabled. + type: boolean + default: false + locations: + description: The Stock Locations related to the sales channel. Available if the relation `locations` is expanded. + type: array + items: + $ref: '#/components/schemas/SalesChannelLocation' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + SalesChannelLocation: + title: Sales Channel Stock Location + description: Sales Channel Stock Location link sales channels with stock locations. + type: object + required: + - created_at + - deleted_at + - id + - location_id + - sales_channel_id + - updated_at + properties: + id: + description: The Sales Channel Stock Location's ID + type: string + example: scloc_01G8X9A7ESKAJXG2H0E6F1MW7A + sales_channel_id: + description: The id of the Sales Channel + type: string + example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A + location_id: + description: The id of the Location Stock. + type: string + sales_channel: + description: The sales channel the location is associated with. Available if the relation `sales_channel` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + ShippingMethod: + title: Shipping Method + description: Shipping Methods represent a way in which an Order or Return can be shipped. Shipping Methods are built from a Shipping Option, but may contain additional details, that can be necessary for the Fulfillment Provider to handle the shipment. + type: object + required: + - cart_id + - claim_order_id + - data + - id + - order_id + - price + - return_id + - shipping_option_id + - swap_id + properties: + id: + description: The shipping method's ID + type: string + example: sm_01F0YET7DR2E7CYVSDHM593QG2 + shipping_option_id: + description: The id of the Shipping Option that the Shipping Method is built from. + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + order_id: + description: The id of the Order that the Shipping Method is used on. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + claim_order_id: + description: The id of the Claim that the Shipping Method is used on. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + cart_id: + description: The id of the Cart that the Shipping Method is used on. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Shipping Method is used on. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + return_id: + description: The id of the Return that the Shipping Method is used on. + nullable: true + type: string + example: null + return_order: + description: A return object. Available if the relation `return_order` is expanded. + nullable: true + type: object + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + tax_lines: + description: Available if the relation `tax_lines` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethodTaxLine' + price: + description: The amount to charge for the Shipping Method. The currency of the price is defined by the Region that the Order that the Shipping Method belongs to is a part of. + type: integer + example: 200 + data: + description: Additional data that the Fulfillment Provider needs to fulfill the shipment. This is used in combination with the Shipping Options data, and may contain information such as a drop point id. + type: object + example: {} + includes_tax: + description: '[EXPERIMENTAL] Indicates if the shipping method price include tax' + type: boolean + default: false + subtotal: + description: The subtotal of the shipping + type: integer + example: 8000 + total: + description: The total amount of the shipping + type: integer + example: 8200 + tax_total: + description: The total of tax + type: integer + example: 0 + ShippingMethodTaxLine: + title: Shipping Method Tax Line + description: Shipping Method Tax Line + type: object + required: + - code + - created_at + - id + - shipping_method_id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The line item tax line's ID + type: string + example: smtl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + shipping_method_id: + description: The ID of the line item + type: string + example: sm_01F0YET7DR2E7CYVSDHM593QG2 + shipping_method: + description: Available if the relation `shipping_method` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingOption: + title: Shipping Option + description: Shipping Options represent a way in which an Order or Return can be shipped. Shipping Options have an associated Fulfillment Provider that will be used when the fulfillment of an Order is initiated. Shipping Options themselves cannot be added to Carts, but serve as a template for Shipping Methods. This distinction makes it possible to customize individual Shipping Methods with additional information. + type: object + required: + - admin_only + - amount + - created_at + - data + - deleted_at + - id + - is_return + - metadata + - name + - price_type + - profile_id + - provider_id + - region_id + - updated_at + properties: + id: + description: The shipping option's ID + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + name: + description: The name given to the Shipping Option - this may be displayed to the Customer. + type: string + example: PostFake Standard + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + profile_id: + description: The ID of the Shipping Profile that the shipping option belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products. + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + profile: + description: Available if the relation `profile` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingProfile' + provider_id: + description: The id of the Fulfillment Provider, that will be used to process Fulfillments from the Shipping Option. + type: string + example: manual + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/FulfillmentProvider' + price_type: + description: The type of pricing calculation that is used when creatin Shipping Methods from the Shipping Option. Can be `flat_rate` for fixed prices or `calculated` if the Fulfillment Provider can provide price calulations. + type: string + enum: + - flat_rate + - calculated + example: flat_rate + amount: + description: The amount to charge for shipping when the Shipping Option price type is `flat_rate`. + nullable: true + type: integer + example: 200 + is_return: + description: Flag to indicate if the Shipping Option can be used for Return shipments. + type: boolean + default: false + admin_only: + description: Flag to indicate if the Shipping Option usage is restricted to admin users. + type: boolean + default: false + requirements: + description: The requirements that must be satisfied for the Shipping Option to be available for a Cart. Available if the relation `requirements` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingOptionRequirement' + data: + description: The data needed for the Fulfillment Provider to identify the Shipping Option. + type: object + example: {} + includes_tax: + description: '[EXPERIMENTAL] Does the shipping option price include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingOptionRequirement: + title: Shipping Option Requirement + description: A requirement that a Cart must satisfy for the Shipping Option to be available to the Cart. + type: object + required: + - amount + - deleted_at + - id + - shipping_option_id + - type + properties: + id: + description: The shipping option requirement's ID + type: string + example: sor_01G1G5V29AB4CTNDRFSRWSRKWD + shipping_option_id: + description: The id of the Shipping Option that the hipping option requirement belongs to + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + type: object + type: + description: The type of the requirement, this defines how the value will be compared to the Cart's total. `min_subtotal` requirements define the minimum subtotal that is needed for the Shipping Option to be available, while the `max_subtotal` defines the maximum subtotal that the Cart can have for the Shipping Option to be available. + type: string + enum: + - min_subtotal + - max_subtotal + example: min_subtotal + amount: + description: The amount to compare the Cart subtotal to. + type: integer + example: 100 + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + ShippingProfile: + title: Shipping Profile + description: Shipping Profiles have a set of defined Shipping Options that can be used to fulfill a given set of Products. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - name + - type + - updated_at + properties: + id: + description: The shipping profile's ID + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + name: + description: The name given to the Shipping profile - this may be displayed to the Customer. + type: string + example: Default Shipping Profile + type: + description: The type of the Shipping Profile, may be `default`, `gift_card` or `custom`. + type: string + enum: + - default + - gift_card + - custom + example: default + products: + description: The Products that the Shipping Profile defines Shipping Options for. Available if the relation `products` is expanded. + type: array + items: + type: object + shipping_options: + description: The Shipping Options that can be used to fulfill the Products in the Shipping Profile. Available if the relation `shipping_options` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingTaxRate: + title: Shipping Tax Rate + description: Associates a tax rate with a shipping option to indicate that the shipping option is taxed in a certain way + type: object + required: + - created_at + - metadata + - rate_id + - shipping_option_id + - updated_at + properties: + shipping_option_id: + description: The ID of the Shipping Option + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + rate_id: + description: The ID of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + StagedJob: + title: Staged Job + description: A staged job resource + type: object + required: + - data + - event_name + - id + - options + properties: + id: + description: The staged job's ID + type: string + example: job_01F0YET7BZTARY9MKN1SJ7AAXF + event_name: + description: The name of the event + type: string + example: order.placed + data: + description: Data necessary for the job + type: object + example: {} + option: + description: The staged job's option + type: object + example: {} + StockLocationAddressDTO: + title: Stock Location Address + description: Represents a Stock Location Address + type: object + required: + - address_1 + - country_code + - created_at + - updated_at + properties: + id: + type: string + description: The stock location address' ID + example: laddr_51G4ZW853Y6TFXWPG5ENJ81X42 + address_1: + type: string + description: Stock location address + example: 35, Jhon Doe Ave + address_2: + type: string + description: Stock location address' complement + example: apartment 4432 + company: + type: string + description: Stock location company' name + example: Medusa + city: + type: string + description: Stock location address' city + example: Mexico city + country_code: + type: string + description: Stock location address' country + example: MX + phone: + type: string + description: Stock location address' phone number + example: +1 555 61646 + postal_code: + type: string + description: Stock location address' postal code + example: HD3-1G8 + province: + type: string + description: Stock location address' province + example: Sinaloa + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + StockLocationAddressInput: + title: Stock Location Address Input + description: Represents a Stock Location Address Input + type: object + required: + - address_1 + - country_code + properties: + address_1: + type: string + description: Stock location address + example: 35, Jhon Doe Ave + address_2: + type: string + description: Stock location address' complement + example: apartment 4432 + city: + type: string + description: Stock location address' city + example: Mexico city + country_code: + type: string + description: Stock location address' country + example: MX + phone: + type: string + description: Stock location address' phone number + example: +1 555 61646 + postal_code: + type: string + description: Stock location address' postal code + example: HD3-1G8 + province: + type: string + description: Stock location address' province + example: Sinaloa + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + StockLocationDTO: + title: Stock Location + description: Represents a Stock Location + type: object + required: + - id + - name + - address_id + - created_at + - updated_at + properties: + id: + type: string + description: The stock location's ID + example: sloc_51G4ZW853Y6TFXWPG5ENJ81X42 + address_id: + type: string + description: Stock location address' ID + example: laddr_05B2ZE853Y6FTXWPW85NJ81A44 + name: + type: string + description: The name of the stock location + example: Main Warehouse + address: + description: The Address of the Stock Location + allOf: + - $ref: '#/components/schemas/StockLocationAddressDTO' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + StockLocationExpandedDTO: + allOf: + - $ref: '#/components/schemas/StockLocationDTO' + - type: object + properties: + sales_channels: + $ref: '#/components/schemas/SalesChannel' + Store: + title: Store + description: Holds settings for the Store, such as name, currencies, etc. + type: object + required: + - created_at + - default_currency_code + - default_location_id + - id + - invite_link_template + - metadata + - name + - payment_link_template + - swap_link_template + - updated_at + properties: + id: + description: The store's ID + type: string + example: store_01G1G5V21KADXNGH29BJMAJ4B4 + name: + description: The name of the Store - this may be displayed to the Customer. + type: string + example: Medusa Store + default_currency_code: + description: The 3 character currency code that is the default of the store. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + default_currency: + description: Available if the relation `default_currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + currencies: + description: The currencies that are enabled for the Store. Available if the relation `currencies` is expanded. + type: array + items: + $ref: '#/components/schemas/Currency' + swap_link_template: + description: A template to generate Swap links from. Use {{cart_id}} to include the Swap's `cart_id` in the link. + nullable: true + type: string + example: null + payment_link_template: + description: A template to generate Payment links from. Use {{cart_id}} to include the payment's `cart_id` in the link. + nullable: true + type: string + example: null + invite_link_template: + description: A template to generate Invite links from + nullable: true + type: string + example: null + default_location_id: + description: The location ID the store is associated with. + nullable: true + type: string + example: null + default_sales_channel_id: + description: The sales channel ID the cart is associated with. + nullable: true + type: string + example: null + default_sales_channel: + description: A sales channel object. Available if the relation `default_sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Swap: + title: Swap + description: Swaps can be created when a Customer wishes to exchange Products that they have purchased to different Products. Swaps consist of a Return of previously purchased Products and a Fulfillment of new Products, the amount paid for the Products being returned will be used towards payment for the new Products. In the case where the amount paid for the the Products being returned exceed the amount to be paid for the new Products, a Refund will be issued for the difference. + type: object + required: + - allow_backorder + - canceled_at + - cart_id + - confirmed_at + - created_at + - deleted_at + - difference_due + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - order_id + - payment_status + - shipping_address_id + - updated_at + properties: + id: + description: The swap's ID + type: string + example: swap_01F0YET86Y9G92D3YDR9Y6V676 + fulfillment_status: + description: The status of the Fulfillment of the Swap. + type: string + enum: + - not_fulfilled + - fulfilled + - shipped + - partially_shipped + - canceled + - requires_action + example: not_fulfilled + payment_status: + description: The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount. + type: string + enum: + - not_paid + - awaiting + - captured + - confirmed + - canceled + - difference_refunded + - partially_refunded + - refunded + - requires_action + example: not_paid + order_id: + description: The ID of the Order where the Line Items to be returned where purchased. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + additional_items: + description: The new Line Items to ship to the Customer. Available if the relation `additional_items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + return_order: + description: A return order object. The Return that is issued for the return part of the Swap. Available if the relation `return_order` is expanded. + nullable: true + type: object + fulfillments: + description: The Fulfillments used to send the new Line Items. Available if the relation `fulfillments` is expanded. + type: array + items: + type: object + payment: + description: The Payment authorized when the Swap requires an additional amount to be charged from the Customer. Available if the relation `payment` is expanded. + nullable: true + type: object + difference_due: + description: The difference that is paid or refunded as a result of the Swap. May be negative when the amount paid for the returned items exceed the total of the new Products. + nullable: true + type: integer + example: 0 + shipping_address_id: + description: The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order. + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_methods: + description: The Shipping Methods used to fulfill the additional items purchased. Available if the relation `shipping_methods` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + cart_id: + description: The id of the Cart that the Customer will use to confirm the Swap. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + confirmed_at: + description: The date with timezone at which the Swap was confirmed by the Customer. + nullable: true + type: string + format: date-time + canceled_at: + description: The date with timezone at which the Swap was canceled. + nullable: true + type: string + format: date-time + no_notification: + description: If set to true, no notification will be sent related to this swap + nullable: true + type: boolean + example: false + allow_backorder: + description: If true, swaps can be completed with items out of stock + type: boolean + default: false + idempotency_key: + description: Randomly generated key used to continue the completion of the swap in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TaxLine: + title: Tax Line + description: Line item that specifies an amount of tax to add to a line item. + type: object + required: + - code + - created_at + - id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The tax line's ID + type: string + example: tl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TaxProvider: + title: Tax Provider + description: The tax service used to calculate taxes + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the tax provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + TaxRate: + title: Tax Rate + description: A Tax Rate can be used to associate a certain rate to charge on products within a given Region + type: object + required: + - code + - created_at + - id + - metadata + - name + - rate + - region_id + - updated_at + properties: + id: + description: The tax rate's ID + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + rate: + description: The numeric rate to charge + nullable: true + type: number + example: 10 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + region_id: + description: The id of the Region that the rate belongs to + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + products: + description: The products that belong to this tax rate. Available if the relation `products` is expanded. + type: array + items: + $ref: '#/components/schemas/Product' + product_types: + description: The product types that belong to this tax rate. Available if the relation `product_types` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductType' + shipping_options: + type: array + description: The shipping options that belong to this tax rate. Available if the relation `shipping_options` is expanded. + items: + $ref: '#/components/schemas/ShippingOption' + product_count: + description: The count of products + type: integer + example: 10 + product_type_count: + description: The count of product types + type: integer + example: 2 + shipping_option_count: + description: The count of shipping options + type: integer + example: 1 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TrackingLink: + title: Tracking Link + description: Tracking Link holds information about tracking numbers for a Fulfillment. Tracking Links can optionally contain a URL that can be visited to see the status of the shipment. + type: object + required: + - created_at + - deleted_at + - fulfillment_id + - id + - idempotency_key + - metadata + - tracking_number + - updated_at + - url + properties: + id: + description: The tracking link's ID + type: string + example: tlink_01G8ZH853Y6TFXWPG5EYE81X63 + url: + description: The URL at which the status of the shipment can be tracked. + nullable: true + type: string + format: uri + tracking_number: + description: The tracking number given by the shipping carrier. + type: string + format: RH370168054CN + fulfillment_id: + description: The id of the Fulfillment that the Tracking Link references. + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + fulfillment: + description: Available if the relation `fulfillment` is expanded. + nullable: true + type: object + idempotency_key: + description: Randomly generated key used to continue the completion of a process in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + UpdateStockLocationInput: + title: Update Stock Location Input + description: Represents the Input to update a Stock Location + type: object + properties: + name: + type: string + description: The stock location name + address_id: + type: string + description: The Stock location address ID + address: + description: Stock location address object + allOf: + - $ref: '#/components/schemas/StockLocationAddressInput' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + User: + title: User + description: Represents a User who can manage store settings. + type: object + required: + - api_token + - created_at + - deleted_at + - email + - first_name + - id + - last_name + - metadata + - role + - updated_at + properties: + id: + description: The user's ID + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + role: + description: The user's role + type: string + enum: + - admin + - member + - developer + default: member + email: + description: The email of the User + type: string + format: email + first_name: + description: The first name of the User + nullable: true + type: string + example: Levi + last_name: + description: The last name of the User + nullable: true + type: string + example: Bogan + api_token: + description: An API token associated with the user. + nullable: true + type: string + example: null + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + VariantInventory: + type: object + properties: + id: + description: the id of the variant + type: string + inventory: + description: the stock location address ID + $ref: '#/components/schemas/ResponseInventoryItem' + sales_channel_availability: + type: object + description: An optional key-value map with additional details + properties: + channel_name: + description: Sales channel name + type: string + channel_id: + description: Sales channel id + type: string + available_quantity: + description: Available quantity in sales channel + type: number diff --git a/docs/api/admin/code_samples/JavaScript/auth/delete.js b/docs/api/admin/code_samples/JavaScript/admin_auth/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/auth/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_auth/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/auth/get.js b/docs/api/admin/code_samples/JavaScript/admin_auth/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/auth/get.js rename to docs/api/admin/code_samples/JavaScript/admin_auth/get.js diff --git a/docs/api/admin/code_samples/JavaScript/auth/post.js b/docs/api/admin/code_samples/JavaScript/admin_auth/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/auth/post.js rename to docs/api/admin/code_samples/JavaScript/admin_auth/post.js diff --git a/docs/api/admin/code_samples/JavaScript/batch-jobs/get.js b/docs/api/admin/code_samples/JavaScript/admin_batch-jobs/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/batch-jobs/get.js rename to docs/api/admin/code_samples/JavaScript/admin_batch-jobs/get.js diff --git a/docs/api/admin/code_samples/JavaScript/batch-jobs/post.js b/docs/api/admin/code_samples/JavaScript/admin_batch-jobs/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/batch-jobs/post.js rename to docs/api/admin/code_samples/JavaScript/admin_batch-jobs/post.js diff --git a/docs/api/admin/code_samples/JavaScript/batch-jobs_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/batch-jobs_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/batch-jobs_{id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/batch-jobs_{id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/batch-jobs_{id}_confirm/post.js b/docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}_confirm/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/batch-jobs_{id}_confirm/post.js rename to docs/api/admin/code_samples/JavaScript/admin_batch-jobs_{id}_confirm/post.js diff --git a/docs/api/admin/code_samples/JavaScript/collections/get.js b/docs/api/admin/code_samples/JavaScript/admin_collections/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/collections/get.js rename to docs/api/admin/code_samples/JavaScript/admin_collections/get.js diff --git a/docs/api/admin/code_samples/JavaScript/collections/post.js b/docs/api/admin/code_samples/JavaScript/admin_collections/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/collections/post.js rename to docs/api/admin/code_samples/JavaScript/admin_collections/post.js diff --git a/docs/api/admin/code_samples/JavaScript/collections_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_collections_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/collections_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_collections_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/collections_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_collections_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/collections_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_collections_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/collections_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_collections_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/collections_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_collections_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/currencies/get.js b/docs/api/admin/code_samples/JavaScript/admin_currencies/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/currencies/get.js rename to docs/api/admin/code_samples/JavaScript/admin_currencies/get.js diff --git a/docs/api/admin/code_samples/JavaScript/currencies_{code}/post.js b/docs/api/admin/code_samples/JavaScript/admin_currencies_{code}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/currencies_{code}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_currencies_{code}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups/get.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups/get.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups/get.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups/post.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups/post.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups/post.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers/get.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers/get.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers/get.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customer-groups_{id}_customers_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/customers/get.js b/docs/api/admin/code_samples/JavaScript/admin_customers/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customers/get.js rename to docs/api/admin/code_samples/JavaScript/admin_customers/get.js diff --git a/docs/api/admin/code_samples/JavaScript/customers/post.js b/docs/api/admin/code_samples/JavaScript/admin_customers/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customers/post.js rename to docs/api/admin/code_samples/JavaScript/admin_customers/post.js diff --git a/docs/api/admin/code_samples/JavaScript/customers_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_customers_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customers_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_customers_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/customers_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_customers_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/customers_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_customers_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts/get.js b/docs/api/admin/code_samples/JavaScript/admin_discounts/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts/get.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts/get.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_code_{code}/get.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_code_{code}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_code_{code}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_code_{code}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}_dynamic-codes/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_dynamic-codes/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}_dynamic-codes/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_dynamic-codes/post.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}_dynamic-codes_{code}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_dynamic-codes_{code}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}_dynamic-codes_{code}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_dynamic-codes_{code}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}_regions_{region_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}_regions_{region_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/discounts_{id}_regions_{region_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/discounts_{id}_regions_{region_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders/get.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders/get.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders/get.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders/post.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders/post.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders/post.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items/post.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items/post.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items/post.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/draft-orders_{id}_pay/post.js b/docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_pay/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/draft-orders_{id}_pay/post.js rename to docs/api/admin/code_samples/JavaScript/admin_draft-orders_{id}_pay/post.js diff --git a/docs/api/admin/code_samples/JavaScript/gift-cards/get.js b/docs/api/admin/code_samples/JavaScript/admin_gift-cards/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/gift-cards/get.js rename to docs/api/admin/code_samples/JavaScript/admin_gift-cards/get.js diff --git a/docs/api/admin/code_samples/JavaScript/gift-cards/post.js b/docs/api/admin/code_samples/JavaScript/admin_gift-cards/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/gift-cards/post.js rename to docs/api/admin/code_samples/JavaScript/admin_gift-cards/post.js diff --git a/docs/api/admin/code_samples/JavaScript/gift-cards_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/gift-cards_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/gift-cards_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/gift-cards_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/gift-cards_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/gift-cards_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_gift-cards_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items/get.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items/get.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items/get.js diff --git a/docs/api/admin/code_samples/JavaScript/admin_inventory-items/post.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items/post.js new file mode 100644 index 0000000000..9140b639da --- /dev/null +++ b/docs/api/admin/code_samples/JavaScript/admin_inventory-items/post.js @@ -0,0 +1,10 @@ +import Medusa from "@medusajs/medusa-js" +const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) +// must be previously logged in or use api token +medusa.admin.inventoryItems.create(inventoryItemId, { + variant_id: 'variant_123', + sku: "sku-123", +}) +.then(({ inventory_item }) => { + console.log(inventory_item.id); +}); diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels/get.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels/get.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels/get.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels/post.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels/post.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels/post.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/invites/get.js b/docs/api/admin/code_samples/JavaScript/admin_invites/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/invites/get.js rename to docs/api/admin/code_samples/JavaScript/admin_invites/get.js diff --git a/docs/api/admin/code_samples/JavaScript/invites/post.js b/docs/api/admin/code_samples/JavaScript/admin_invites/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/invites/post.js rename to docs/api/admin/code_samples/JavaScript/admin_invites/post.js diff --git a/docs/api/admin/code_samples/JavaScript/invites_accept/post.js b/docs/api/admin/code_samples/JavaScript/admin_invites_accept/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/invites_accept/post.js rename to docs/api/admin/code_samples/JavaScript/admin_invites_accept/post.js diff --git a/docs/api/admin/code_samples/JavaScript/invites_{invite_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_invites_{invite_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/invites_{invite_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_invites_{invite_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/invites_{invite_id}_resend/post.js b/docs/api/admin/code_samples/JavaScript/admin_invites_{invite_id}_resend/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/invites_{invite_id}_resend/post.js rename to docs/api/admin/code_samples/JavaScript/admin_invites_{invite_id}_resend/post.js diff --git a/docs/api/admin/code_samples/JavaScript/notes/get.js b/docs/api/admin/code_samples/JavaScript/admin_notes/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notes/get.js rename to docs/api/admin/code_samples/JavaScript/admin_notes/get.js diff --git a/docs/api/admin/code_samples/JavaScript/notes/post.js b/docs/api/admin/code_samples/JavaScript/admin_notes/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notes/post.js rename to docs/api/admin/code_samples/JavaScript/admin_notes/post.js diff --git a/docs/api/admin/code_samples/JavaScript/notes_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_notes_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notes_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_notes_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/notes_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_notes_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notes_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_notes_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/notes_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_notes_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notes_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_notes_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/notifications/get.js b/docs/api/admin/code_samples/JavaScript/admin_notifications/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notifications/get.js rename to docs/api/admin/code_samples/JavaScript/admin_notifications/get.js diff --git a/docs/api/admin/code_samples/JavaScript/notifications_{id}_resend/post.js b/docs/api/admin/code_samples/JavaScript/admin_notifications_{id}_resend/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/notifications_{id}_resend/post.js rename to docs/api/admin/code_samples/JavaScript/admin_notifications_{id}_resend/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits/get.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits/get.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits/get.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_changes_{change_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_changes_{change_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_changes_{change_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_changes_{change_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_confirm/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_confirm/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_confirm/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_confirm/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_items/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_items/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_items_{item_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_items_{item_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_items_{item_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_items_{item_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order-edits_{id}_request/post.js b/docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_request/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order-edits_{id}_request/post.js rename to docs/api/admin/code_samples/JavaScript/admin_order-edits_{id}_request/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders/get.js b/docs/api/admin/code_samples/JavaScript/admin_orders/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders/get.js rename to docs/api/admin/code_samples/JavaScript/admin_orders/get.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_archive/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_archive/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_archive/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_archive/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_capture/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_capture/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_capture/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_capture/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order_{id}_claims/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order_{id}_claims/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order_{id}_claims_{claim_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order_{id}_claims_{claim_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_shipments/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_shipments/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_claims_{claim_id}_shipments/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_shipments/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_complete/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_complete/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_complete/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_complete/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_fulfillment/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_fulfillment/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_fulfillment/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_fulfillment/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_line-items_{line_item_id}_reserve/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_line-items_{line_item_id}_reserve/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_line-items_{line_item_id}_reserve/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_line-items_{line_item_id}_reserve/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_refund/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_refund/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_refund/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_refund/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_reservations/get.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_reservations/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_reservations/get.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_reservations/get.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_return/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_return/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_return/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_return/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_shipment/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_shipment/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_shipment/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_shipment/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_shipping-methods/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_shipping-methods/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_shipping-methods/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_shipping-methods/post.js diff --git a/docs/api/admin/code_samples/JavaScript/order_{id}_swaps/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/order_{id}_swaps/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_process-payment/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_process-payment/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_process-payment/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_process-payment/post.js diff --git a/docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_shipments/post.js b/docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_shipments/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/orders_{id}_swaps_{swap_id}_shipments/post.js rename to docs/api/admin/code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_shipments/post.js diff --git a/docs/api/admin/code_samples/JavaScript/payment-collections_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payment-collections_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/payment-collections_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payment-collections_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/payment-collections_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payment-collections_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/payment-collections_{id}_authorize/post.js b/docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}_authorize/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payment-collections_{id}_authorize/post.js rename to docs/api/admin/code_samples/JavaScript/admin_payment-collections_{id}_authorize/post.js diff --git a/docs/api/admin/code_samples/JavaScript/payments_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_payments_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payments_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_payments_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/payments_{id}_capture/post.js b/docs/api/admin/code_samples/JavaScript/admin_payments_{id}_capture/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payments_{id}_capture/post.js rename to docs/api/admin/code_samples/JavaScript/admin_payments_{id}_capture/post.js diff --git a/docs/api/admin/code_samples/JavaScript/payments_{id}_refund/post.js b/docs/api/admin/code_samples/JavaScript/admin_payments_{id}_refund/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/payments_{id}_refund/post.js rename to docs/api/admin/code_samples/JavaScript/admin_payments_{id}_refund/post.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists/get.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists/get.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists/get.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists/post.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists/post.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists/post.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}_prices_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_prices_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}_prices_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_prices_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}_prices_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_prices_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}_prices_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_prices_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}_products/get.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_products/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}_products/get.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_products/get.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}_products_{product_id}_prices/delete.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_products_{product_id}_prices/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}_products_{product_id}_prices/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_products_{product_id}_prices/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/price-lists_{id}_variants_{variant_id}_prices/delete.js b/docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_variants_{variant_id}_prices/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/price-lists_{id}_variants_{variant_id}_prices/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_price-lists_{id}_variants_{variant_id}_prices/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories/get.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories/get.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories/get.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories/post.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories/post.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories/post.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories_{id}_products_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}_products_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories_{id}_products_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}_products_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/product-categories_{id}_products_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}_products_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-categories_{id}_products_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_product-categories_{id}_products_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/product-tags/get.js b/docs/api/admin/code_samples/JavaScript/admin_product-tags/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-tags/get.js rename to docs/api/admin/code_samples/JavaScript/admin_product-tags/get.js diff --git a/docs/api/admin/code_samples/JavaScript/product-types/get.js b/docs/api/admin/code_samples/JavaScript/admin_product-types/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/product-types/get.js rename to docs/api/admin/code_samples/JavaScript/admin_product-types/get.js diff --git a/docs/api/admin/code_samples/JavaScript/products/get.js b/docs/api/admin/code_samples/JavaScript/admin_products/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products/get.js rename to docs/api/admin/code_samples/JavaScript/admin_products/get.js diff --git a/docs/api/admin/code_samples/JavaScript/products/post.js b/docs/api/admin/code_samples/JavaScript/admin_products/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_tag-usage/get.js b/docs/api/admin/code_samples/JavaScript/admin_products_tag-usage/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_tag-usage/get.js rename to docs/api/admin/code_samples/JavaScript/admin_products_tag-usage/get.js diff --git a/docs/api/admin/code_samples/JavaScript/products_types/get.js b/docs/api/admin/code_samples/JavaScript/admin_products_types/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_types/get.js rename to docs/api/admin/code_samples/JavaScript/admin_products_types/get.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_metadata/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_metadata/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_metadata/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_metadata/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_options/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_options/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_options/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_options/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_options_{option_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_options_{option_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_options_{option_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_options_{option_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_options_{option_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_options_{option_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_options_{option_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_options_{option_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_variants/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_variants/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants/post.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_variants_{variant_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_variants_{variant_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/products_{id}_variants_{variant_id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/products_{id}_variants_{variant_id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-key_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-key_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-key_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-key_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys/get.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys/get.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys/get.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys/post.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys/post.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys/post.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_revoke/post.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_revoke/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_revoke/post.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_revoke/post.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels/get.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels/get.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels/get.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions/get.js b/docs/api/admin/code_samples/JavaScript/admin_regions/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions/get.js rename to docs/api/admin/code_samples/JavaScript/admin_regions/get.js diff --git a/docs/api/admin/code_samples/JavaScript/regions/post.js b/docs/api/admin/code_samples/JavaScript/admin_regions/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions/post.js rename to docs/api/admin/code_samples/JavaScript/admin_regions/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_countries/post.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_countries/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_countries/post.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_countries/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_countries_{country_code}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_countries_{country_code}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_countries_{country_code}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_countries_{country_code}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-options/get.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-options/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-options/get.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-options/get.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-providers/post.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-providers/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-providers/post.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-providers/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-providers_{provider_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_fulfillment-providers_{provider_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_payment-providers/post.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_payment-providers/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_payment-providers/post.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_payment-providers/post.js diff --git a/docs/api/admin/code_samples/JavaScript/regions_{id}_payment-providers_{provider_id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_regions_{id}_payment-providers_{provider_id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/regions_{id}_payment-providers_{provider_id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_regions_{id}_payment-providers_{provider_id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/reservations/post.js b/docs/api/admin/code_samples/JavaScript/admin_reservations/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/reservations/post.js rename to docs/api/admin/code_samples/JavaScript/admin_reservations/post.js diff --git a/docs/api/admin/code_samples/JavaScript/reservations_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/reservations_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/reservations_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/reservations_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/reservations_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/reservations_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_reservations_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/return-reasons/get.js b/docs/api/admin/code_samples/JavaScript/admin_return-reasons/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/return-reasons/get.js rename to docs/api/admin/code_samples/JavaScript/admin_return-reasons/get.js diff --git a/docs/api/admin/code_samples/JavaScript/return-reasons/post.js b/docs/api/admin/code_samples/JavaScript/admin_return-reasons/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/return-reasons/post.js rename to docs/api/admin/code_samples/JavaScript/admin_return-reasons/post.js diff --git a/docs/api/admin/code_samples/JavaScript/return-reasons_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/return-reasons_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/return-reasons_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/return-reasons_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/return-reasons_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/return-reasons_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_return-reasons_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/returns/get.js b/docs/api/admin/code_samples/JavaScript/admin_returns/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/returns/get.js rename to docs/api/admin/code_samples/JavaScript/admin_returns/get.js diff --git a/docs/api/admin/code_samples/JavaScript/returns_{id}_cancel/post.js b/docs/api/admin/code_samples/JavaScript/admin_returns_{id}_cancel/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/returns_{id}_cancel/post.js rename to docs/api/admin/code_samples/JavaScript/admin_returns_{id}_cancel/post.js diff --git a/docs/api/admin/code_samples/JavaScript/returns_{id}_receive/post.js b/docs/api/admin/code_samples/JavaScript/admin_returns_{id}_receive/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/returns_{id}_receive/post.js rename to docs/api/admin/code_samples/JavaScript/admin_returns_{id}_receive/post.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels/get.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels/get.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels/get.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels/post.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels/post.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels/post.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}_products_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_products_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}_products_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_products_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}_products_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_products_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}_products_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_products_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}_stock-locations/delete.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}_stock-locations/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/sales-channels_{id}_stock-locations/post.js b/docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/sales-channels_{id}_stock-locations/post.js rename to docs/api/admin/code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/post.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-options/get.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-options/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-options/get.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-options/get.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-options/post.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-options/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-options/post.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-options/post.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-options_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-options_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-options_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-options_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-options_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-options_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-options_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-profiles/get.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-profiles/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-profiles/get.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-profiles/get.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-profiles/post.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-profiles/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-profiles/post.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-profiles/post.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/shipping-profiles_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_shipping-profiles_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/stock-locations/get.js b/docs/api/admin/code_samples/JavaScript/admin_stock-locations/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/stock-locations/get.js rename to docs/api/admin/code_samples/JavaScript/admin_stock-locations/get.js diff --git a/docs/api/admin/code_samples/JavaScript/stock-locations/post.js b/docs/api/admin/code_samples/JavaScript/admin_stock-locations/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/stock-locations/post.js rename to docs/api/admin/code_samples/JavaScript/admin_stock-locations/post.js diff --git a/docs/api/admin/code_samples/JavaScript/stock-locations_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/stock-locations_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/stock-locations_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/stock-locations_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/stock-locations_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/stock-locations_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_stock-locations_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/store/get.js b/docs/api/admin/code_samples/JavaScript/admin_store/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store/get.js rename to docs/api/admin/code_samples/JavaScript/admin_store/get.js diff --git a/docs/api/admin/code_samples/JavaScript/store/post.js b/docs/api/admin/code_samples/JavaScript/admin_store/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store/post.js rename to docs/api/admin/code_samples/JavaScript/admin_store/post.js diff --git a/docs/api/admin/code_samples/JavaScript/store_currencies_{code}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_store_currencies_{code}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store_currencies_{code}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_store_currencies_{code}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/store_currencies_{code}/post.js b/docs/api/admin/code_samples/JavaScript/admin_store_currencies_{code}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store_currencies_{code}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_store_currencies_{code}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/store_payment-providers/get.js b/docs/api/admin/code_samples/JavaScript/admin_store_payment-providers/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store_payment-providers/get.js rename to docs/api/admin/code_samples/JavaScript/admin_store_payment-providers/get.js diff --git a/docs/api/admin/code_samples/JavaScript/store_tax-providers/get.js b/docs/api/admin/code_samples/JavaScript/admin_store_tax-providers/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/store_tax-providers/get.js rename to docs/api/admin/code_samples/JavaScript/admin_store_tax-providers/get.js diff --git a/docs/api/admin/code_samples/JavaScript/swaps/get.js b/docs/api/admin/code_samples/JavaScript/admin_swaps/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/swaps/get.js rename to docs/api/admin/code_samples/JavaScript/admin_swaps/get.js diff --git a/docs/api/admin/code_samples/JavaScript/swaps_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_swaps_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/swaps_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_swaps_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates/get.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates/get.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates/get.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates/post.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates/post.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates/post.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_product-types_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_product-types_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_product-types_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_product-types_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_products_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_products_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_products_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_products_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_products_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_products_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_products_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_products_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/delete.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/post.js b/docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/post.js rename to docs/api/admin/code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/post.js diff --git a/docs/api/admin/code_samples/JavaScript/uploads/delete.js b/docs/api/admin/code_samples/JavaScript/admin_uploads/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/uploads/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_uploads/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/uploads/post.js b/docs/api/admin/code_samples/JavaScript/admin_uploads/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/uploads/post.js rename to docs/api/admin/code_samples/JavaScript/admin_uploads/post.js diff --git a/docs/api/admin/code_samples/JavaScript/uploads_download-url/post.js b/docs/api/admin/code_samples/JavaScript/admin_uploads_download-url/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/uploads_download-url/post.js rename to docs/api/admin/code_samples/JavaScript/admin_uploads_download-url/post.js diff --git a/docs/api/admin/code_samples/JavaScript/uploads_protected/post.js b/docs/api/admin/code_samples/JavaScript/admin_uploads_protected/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/uploads_protected/post.js rename to docs/api/admin/code_samples/JavaScript/admin_uploads_protected/post.js diff --git a/docs/api/admin/code_samples/JavaScript/users/get.js b/docs/api/admin/code_samples/JavaScript/admin_users/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users/get.js rename to docs/api/admin/code_samples/JavaScript/admin_users/get.js diff --git a/docs/api/admin/code_samples/JavaScript/users/post.js b/docs/api/admin/code_samples/JavaScript/admin_users/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users/post.js rename to docs/api/admin/code_samples/JavaScript/admin_users/post.js diff --git a/docs/api/admin/code_samples/JavaScript/users_password-token/post.js b/docs/api/admin/code_samples/JavaScript/admin_users_password-token/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users_password-token/post.js rename to docs/api/admin/code_samples/JavaScript/admin_users_password-token/post.js diff --git a/docs/api/admin/code_samples/JavaScript/users_reset-password/post.js b/docs/api/admin/code_samples/JavaScript/admin_users_reset-password/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users_reset-password/post.js rename to docs/api/admin/code_samples/JavaScript/admin_users_reset-password/post.js diff --git a/docs/api/admin/code_samples/JavaScript/users_{id}/delete.js b/docs/api/admin/code_samples/JavaScript/admin_users_{id}/delete.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users_{id}/delete.js rename to docs/api/admin/code_samples/JavaScript/admin_users_{id}/delete.js diff --git a/docs/api/admin/code_samples/JavaScript/users_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_users_{id}/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users_{id}/get.js rename to docs/api/admin/code_samples/JavaScript/admin_users_{id}/get.js diff --git a/docs/api/admin/code_samples/JavaScript/users_{id}/post.js b/docs/api/admin/code_samples/JavaScript/admin_users_{id}/post.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/users_{id}/post.js rename to docs/api/admin/code_samples/JavaScript/admin_users_{id}/post.js diff --git a/docs/api/admin/code_samples/JavaScript/variants/get.js b/docs/api/admin/code_samples/JavaScript/admin_variants/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/variants/get.js rename to docs/api/admin/code_samples/JavaScript/admin_variants/get.js diff --git a/docs/api/admin/code_samples/JavaScript/admin_variants_{id}/get.js b/docs/api/admin/code_samples/JavaScript/admin_variants_{id}/get.js new file mode 100644 index 0000000000..dac4466183 --- /dev/null +++ b/docs/api/admin/code_samples/JavaScript/admin_variants_{id}/get.js @@ -0,0 +1,7 @@ +import Medusa from "@medusajs/medusa-js" +const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) +// must be previously logged in or use api token +medusa.admin.variants.retrieve(product_id) +.then(({ product }) => { + console.log(product.id); +}); diff --git a/docs/api/admin/code_samples/JavaScript/variants_{id}_inventory/get.js b/docs/api/admin/code_samples/JavaScript/admin_variants_{id}_inventory/get.js similarity index 100% rename from docs/api/admin/code_samples/JavaScript/variants_{id}_inventory/get.js rename to docs/api/admin/code_samples/JavaScript/admin_variants_{id}_inventory/get.js diff --git a/docs/api/admin/code_samples/Shell/apps/get.sh b/docs/api/admin/code_samples/Shell/admin_apps/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/apps/get.sh rename to docs/api/admin/code_samples/Shell/admin_apps/get.sh diff --git a/docs/api/admin/code_samples/Shell/apps_authorizations/post.sh b/docs/api/admin/code_samples/Shell/admin_apps_authorizations/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/apps_authorizations/post.sh rename to docs/api/admin/code_samples/Shell/admin_apps_authorizations/post.sh diff --git a/docs/api/admin/code_samples/Shell/auth/delete.sh b/docs/api/admin/code_samples/Shell/admin_auth/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/auth/delete.sh rename to docs/api/admin/code_samples/Shell/admin_auth/delete.sh diff --git a/docs/api/admin/code_samples/Shell/auth/get.sh b/docs/api/admin/code_samples/Shell/admin_auth/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/auth/get.sh rename to docs/api/admin/code_samples/Shell/admin_auth/get.sh diff --git a/docs/api/admin/code_samples/Shell/auth/post.sh b/docs/api/admin/code_samples/Shell/admin_auth/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/auth/post.sh rename to docs/api/admin/code_samples/Shell/admin_auth/post.sh diff --git a/docs/api/admin/code_samples/Shell/batch-jobs/get.sh b/docs/api/admin/code_samples/Shell/admin_batch-jobs/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/batch-jobs/get.sh rename to docs/api/admin/code_samples/Shell/admin_batch-jobs/get.sh diff --git a/docs/api/admin/code_samples/Shell/batch-jobs/post.sh b/docs/api/admin/code_samples/Shell/admin_batch-jobs/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/batch-jobs/post.sh rename to docs/api/admin/code_samples/Shell/admin_batch-jobs/post.sh diff --git a/docs/api/admin/code_samples/Shell/batch-jobs_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/batch-jobs_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/batch-jobs_{id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/batch-jobs_{id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/batch-jobs_{id}_confirm/post.sh b/docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}_confirm/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/batch-jobs_{id}_confirm/post.sh rename to docs/api/admin/code_samples/Shell/admin_batch-jobs_{id}_confirm/post.sh diff --git a/docs/api/admin/code_samples/Shell/collections/get.sh b/docs/api/admin/code_samples/Shell/admin_collections/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections/get.sh rename to docs/api/admin/code_samples/Shell/admin_collections/get.sh diff --git a/docs/api/admin/code_samples/Shell/collections/post.sh b/docs/api/admin/code_samples/Shell/admin_collections/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections/post.sh rename to docs/api/admin/code_samples/Shell/admin_collections/post.sh diff --git a/docs/api/admin/code_samples/Shell/collections_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_collections_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_collections_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/collections_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_collections_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_collections_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/collections_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_collections_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_collections_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/collections_{id}_products_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_collections_{id}_products_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections_{id}_products_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_collections_{id}_products_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/collections_{id}_products_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_collections_{id}_products_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/collections_{id}_products_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_collections_{id}_products_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/currencies/get.sh b/docs/api/admin/code_samples/Shell/admin_currencies/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/currencies/get.sh rename to docs/api/admin/code_samples/Shell/admin_currencies/get.sh diff --git a/docs/api/admin/code_samples/Shell/currencies_{code}/post.sh b/docs/api/admin/code_samples/Shell/admin_currencies_{code}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/currencies_{code}/post.sh rename to docs/api/admin/code_samples/Shell/admin_currencies_{code}/post.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups/get.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups/get.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups/get.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups/post.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups/post.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups/post.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}_customers/get.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}_customers/get.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers/get.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}_customers_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}_customers_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/customer-groups_{id}_customers_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customer-groups_{id}_customers_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_customer-groups_{id}_customers_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/customers/get.sh b/docs/api/admin/code_samples/Shell/admin_customers/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customers/get.sh rename to docs/api/admin/code_samples/Shell/admin_customers/get.sh diff --git a/docs/api/admin/code_samples/Shell/customers/post.sh b/docs/api/admin/code_samples/Shell/admin_customers/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customers/post.sh rename to docs/api/admin/code_samples/Shell/admin_customers/post.sh diff --git a/docs/api/admin/code_samples/Shell/customers_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_customers_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customers_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_customers_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/customers_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_customers_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/customers_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_customers_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts/get.sh b/docs/api/admin/code_samples/Shell/admin_discounts/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts/get.sh rename to docs/api/admin/code_samples/Shell/admin_discounts/get.sh diff --git a/docs/api/admin/code_samples/Shell/discounts/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_code_{code}/get.sh b/docs/api/admin/code_samples/Shell/admin_discounts_code_{code}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_code_{code}/get.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_code_{code}/get.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/get.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}_dynamic-codes/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}_dynamic-codes/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}_dynamic-codes/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}_dynamic-codes/post.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}_dynamic-codes_{code}/delete.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}_dynamic-codes_{code}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}_dynamic-codes_{code}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}_dynamic-codes_{code}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}_regions_{region_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}_regions_{region_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}_regions_{region_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}_regions_{region_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/discounts_{id}_regions_{region_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_discounts_{id}_regions_{region_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/discounts_{id}_regions_{region_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_discounts_{id}_regions_{region_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders/get.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders/get.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders/get.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders/post.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders/post.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders/post.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items/post.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items/post.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items/post.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items_{line_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items_{line_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items_{line_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}_line-items_{line_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/draft-orders_{id}_pay/post.sh b/docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_pay/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/draft-orders_{id}_pay/post.sh rename to docs/api/admin/code_samples/Shell/admin_draft-orders_{id}_pay/post.sh diff --git a/docs/api/admin/code_samples/Shell/gift-cards/get.sh b/docs/api/admin/code_samples/Shell/admin_gift-cards/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/gift-cards/get.sh rename to docs/api/admin/code_samples/Shell/admin_gift-cards/get.sh diff --git a/docs/api/admin/code_samples/Shell/gift-cards/post.sh b/docs/api/admin/code_samples/Shell/admin_gift-cards/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/gift-cards/post.sh rename to docs/api/admin/code_samples/Shell/admin_gift-cards/post.sh diff --git a/docs/api/admin/code_samples/Shell/gift-cards_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/gift-cards_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/gift-cards_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/gift-cards_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/gift-cards_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/gift-cards_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_gift-cards_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items/get.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items/get.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items/get.sh diff --git a/docs/api/admin/code_samples/Shell/admin_inventory-items/post.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items/post.sh new file mode 100644 index 0000000000..ec74487c85 --- /dev/null +++ b/docs/api/admin/code_samples/Shell/admin_inventory-items/post.sh @@ -0,0 +1,7 @@ +curl --location --request POST 'https://medusa-url.com/admin/inventory-items' \ +--header 'Authorization: Bearer {api_token}' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "variant_id": "variant_123", + "sku": "sku-123", +}' diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels/get.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels/get.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels/get.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels/post.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels/post.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels/post.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/invites/get.sh b/docs/api/admin/code_samples/Shell/admin_invites/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/invites/get.sh rename to docs/api/admin/code_samples/Shell/admin_invites/get.sh diff --git a/docs/api/admin/code_samples/Shell/invites/post.sh b/docs/api/admin/code_samples/Shell/admin_invites/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/invites/post.sh rename to docs/api/admin/code_samples/Shell/admin_invites/post.sh diff --git a/docs/api/admin/code_samples/Shell/invites_accept/post.sh b/docs/api/admin/code_samples/Shell/admin_invites_accept/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/invites_accept/post.sh rename to docs/api/admin/code_samples/Shell/admin_invites_accept/post.sh diff --git a/docs/api/admin/code_samples/Shell/invites_{invite_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_invites_{invite_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/invites_{invite_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_invites_{invite_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/invites_{invite_id}_resend/post.sh b/docs/api/admin/code_samples/Shell/admin_invites_{invite_id}_resend/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/invites_{invite_id}_resend/post.sh rename to docs/api/admin/code_samples/Shell/admin_invites_{invite_id}_resend/post.sh diff --git a/docs/api/admin/code_samples/Shell/notes/get.sh b/docs/api/admin/code_samples/Shell/admin_notes/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notes/get.sh rename to docs/api/admin/code_samples/Shell/admin_notes/get.sh diff --git a/docs/api/admin/code_samples/Shell/notes/post.sh b/docs/api/admin/code_samples/Shell/admin_notes/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notes/post.sh rename to docs/api/admin/code_samples/Shell/admin_notes/post.sh diff --git a/docs/api/admin/code_samples/Shell/notes_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_notes_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notes_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_notes_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/notes_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_notes_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notes_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_notes_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/notes_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_notes_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notes_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_notes_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/notifications/get.sh b/docs/api/admin/code_samples/Shell/admin_notifications/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notifications/get.sh rename to docs/api/admin/code_samples/Shell/admin_notifications/get.sh diff --git a/docs/api/admin/code_samples/Shell/notifications_{id}_resend/post.sh b/docs/api/admin/code_samples/Shell/admin_notifications_{id}_resend/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/notifications_{id}_resend/post.sh rename to docs/api/admin/code_samples/Shell/admin_notifications_{id}_resend/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits/get.sh b/docs/api/admin/code_samples/Shell/admin_order-edits/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits/get.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits/get.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_changes_{change_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_changes_{change_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_changes_{change_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_changes_{change_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_confirm/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_confirm/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_confirm/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_confirm/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_items/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_items/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_items_{item_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items_{item_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_items_{item_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items_{item_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_items_{item_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items_{item_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_items_{item_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_items_{item_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/order-edits_{id}_request/post.sh b/docs/api/admin/code_samples/Shell/admin_order-edits_{id}_request/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order-edits_{id}_request/post.sh rename to docs/api/admin/code_samples/Shell/admin_order-edits_{id}_request/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders/get.sh b/docs/api/admin/code_samples/Shell/admin_orders/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders/get.sh rename to docs/api/admin/code_samples/Shell/admin_orders/get.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_archive/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_archive/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_archive/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_archive/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_capture/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_capture/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_capture/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_capture/post.sh diff --git a/docs/api/admin/code_samples/Shell/order_{id}_claims/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order_{id}_claims/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims/post.sh diff --git a/docs/api/admin/code_samples/Shell/order_{id}_claims_{claim_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order_{id}_claims_{claim_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_shipments/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_shipments/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_claims_{claim_id}_shipments/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_claims_{claim_id}_shipments/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_complete/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_complete/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_complete/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_complete/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_fulfillment/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_fulfillment/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_fulfillment/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_fulfillment/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_line-items_{line_item_id}_reserve/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_line-items_{line_item_id}_reserve/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_line-items_{line_item_id}_reserve/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_line-items_{line_item_id}_reserve/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_refund/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_refund/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_refund/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_refund/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_reservations/get.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_reservations/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_reservations/get.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_reservations/get.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_return/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_return/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_return/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_return/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_shipment/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_shipment/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_shipment/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_shipment/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_shipping-methods/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_shipping-methods/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_shipping-methods/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_shipping-methods/post.sh diff --git a/docs/api/admin/code_samples/Shell/order_{id}_swaps/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/order_{id}_swaps/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_process-payment/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_process-payment/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_process-payment/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_process-payment/post.sh diff --git a/docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_shipments/post.sh b/docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_shipments/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/orders_{id}_swaps_{swap_id}_shipments/post.sh rename to docs/api/admin/code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_shipments/post.sh diff --git a/docs/api/admin/code_samples/Shell/payment-collections_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payment-collections_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/payment-collections_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payment-collections_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/payment-collections_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payment-collections_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_payment-collections_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/payment-collections_{id}_authorize/post.sh b/docs/api/admin/code_samples/Shell/admin_payment-collections_{id}_authorize/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payment-collections_{id}_authorize/post.sh rename to docs/api/admin/code_samples/Shell/admin_payment-collections_{id}_authorize/post.sh diff --git a/docs/api/admin/code_samples/Shell/payments_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_payments_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payments_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_payments_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/payments_{id}_capture/post.sh b/docs/api/admin/code_samples/Shell/admin_payments_{id}_capture/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payments_{id}_capture/post.sh rename to docs/api/admin/code_samples/Shell/admin_payments_{id}_capture/post.sh diff --git a/docs/api/admin/code_samples/Shell/payments_{id}_refund/post.sh b/docs/api/admin/code_samples/Shell/admin_payments_{id}_refund/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/payments_{id}_refund/post.sh rename to docs/api/admin/code_samples/Shell/admin_payments_{id}_refund/post.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists/get.sh b/docs/api/admin/code_samples/Shell/admin_price-lists/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists/get.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists/get.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists/post.sh b/docs/api/admin/code_samples/Shell/admin_price-lists/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists/post.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists/post.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}_prices_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}_prices_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}_prices_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}_prices_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}_prices_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}_prices_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}_prices_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}_prices_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}_products/get.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}_products/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}_products/get.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}_products/get.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}_products_{product_id}_prices/delete.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}_products_{product_id}_prices/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}_products_{product_id}_prices/delete.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}_products_{product_id}_prices/delete.sh diff --git a/docs/api/admin/code_samples/Shell/price-lists_{id}_variants_{variant_id}_prices/delete.sh b/docs/api/admin/code_samples/Shell/admin_price-lists_{id}_variants_{variant_id}_prices/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/price-lists_{id}_variants_{variant_id}_prices/delete.sh rename to docs/api/admin/code_samples/Shell/admin_price-lists_{id}_variants_{variant_id}_prices/delete.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories/get.sh b/docs/api/admin/code_samples/Shell/admin_product-categories/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories/get.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories/get.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories/post.sh b/docs/api/admin/code_samples/Shell/admin_product-categories/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories/post.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories/post.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_product-categories_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_product-categories_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_product-categories_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories_{id}_products_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_product-categories_{id}_products_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories_{id}_products_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories_{id}_products_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/product-categories_{id}_products_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_product-categories_{id}_products_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-categories_{id}_products_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_product-categories_{id}_products_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/product-tags/get.sh b/docs/api/admin/code_samples/Shell/admin_product-tags/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-tags/get.sh rename to docs/api/admin/code_samples/Shell/admin_product-tags/get.sh diff --git a/docs/api/admin/code_samples/Shell/product-types/get.sh b/docs/api/admin/code_samples/Shell/admin_product-types/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/product-types/get.sh rename to docs/api/admin/code_samples/Shell/admin_product-types/get.sh diff --git a/docs/api/admin/code_samples/Shell/products/get.sh b/docs/api/admin/code_samples/Shell/admin_products/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products/get.sh rename to docs/api/admin/code_samples/Shell/admin_products/get.sh diff --git a/docs/api/admin/code_samples/Shell/products/post.sh b/docs/api/admin/code_samples/Shell/admin_products/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products/post.sh rename to docs/api/admin/code_samples/Shell/admin_products/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_tag-usage/get.sh b/docs/api/admin/code_samples/Shell/admin_products_tag-usage/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_tag-usage/get.sh rename to docs/api/admin/code_samples/Shell/admin_products_tag-usage/get.sh diff --git a/docs/api/admin/code_samples/Shell/products_types/get.sh b/docs/api/admin/code_samples/Shell/admin_products_types/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_types/get.sh rename to docs/api/admin/code_samples/Shell/admin_products_types/get.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_metadata/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_metadata/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_metadata/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_metadata/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_options/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_options/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_options/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_options/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_options_{option_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_options_{option_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_options_{option_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_options_{option_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_options_{option_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_options_{option_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_options_{option_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_options_{option_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_variants/get.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_variants/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_variants/get.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_variants/get.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_variants/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_variants/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_variants/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_variants/post.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_variants_{variant_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_variants_{variant_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_variants_{variant_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_variants_{variant_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/products_{id}_variants_{variant_id}/post.sh b/docs/api/admin/code_samples/Shell/admin_products_{id}_variants_{variant_id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/products_{id}_variants_{variant_id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_products_{id}_variants_{variant_id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-key_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-key_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-key_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-key_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys/get.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys/get.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys/get.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys/post.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys/post.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys/post.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_revoke/post.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_revoke/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_revoke/post.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_revoke/post.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels/get.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels/get.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels/get.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions/get.sh b/docs/api/admin/code_samples/Shell/admin_regions/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions/get.sh rename to docs/api/admin/code_samples/Shell/admin_regions/get.sh diff --git a/docs/api/admin/code_samples/Shell/regions/post.sh b/docs/api/admin/code_samples/Shell/admin_regions/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions/post.sh rename to docs/api/admin/code_samples/Shell/admin_regions/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_countries/post.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_countries/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_countries/post.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_countries/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_countries_{country_code}/delete.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_countries_{country_code}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_countries_{country_code}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_countries_{country_code}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-options/get.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-options/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-options/get.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-options/get.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-providers/post.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-providers/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-providers/post.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-providers/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-providers_{provider_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_fulfillment-providers_{provider_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_payment-providers/post.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_payment-providers/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_payment-providers/post.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_payment-providers/post.sh diff --git a/docs/api/admin/code_samples/Shell/regions_{id}_payment-providers_{provider_id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_regions_{id}_payment-providers_{provider_id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/regions_{id}_payment-providers_{provider_id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_regions_{id}_payment-providers_{provider_id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/reservations/get.sh b/docs/api/admin/code_samples/Shell/admin_reservations/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/reservations/get.sh rename to docs/api/admin/code_samples/Shell/admin_reservations/get.sh diff --git a/docs/api/admin/code_samples/Shell/reservations/post.sh b/docs/api/admin/code_samples/Shell/admin_reservations/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/reservations/post.sh rename to docs/api/admin/code_samples/Shell/admin_reservations/post.sh diff --git a/docs/api/admin/code_samples/Shell/reservations_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_reservations_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/reservations_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_reservations_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/reservations_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_reservations_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/reservations_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_reservations_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/reservations_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_reservations_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/reservations_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_reservations_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/return-reasons/get.sh b/docs/api/admin/code_samples/Shell/admin_return-reasons/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/return-reasons/get.sh rename to docs/api/admin/code_samples/Shell/admin_return-reasons/get.sh diff --git a/docs/api/admin/code_samples/Shell/return-reasons/post.sh b/docs/api/admin/code_samples/Shell/admin_return-reasons/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/return-reasons/post.sh rename to docs/api/admin/code_samples/Shell/admin_return-reasons/post.sh diff --git a/docs/api/admin/code_samples/Shell/return-reasons_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/return-reasons_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/return-reasons_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/return-reasons_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/return-reasons_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/return-reasons_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_return-reasons_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/returns/get.sh b/docs/api/admin/code_samples/Shell/admin_returns/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/returns/get.sh rename to docs/api/admin/code_samples/Shell/admin_returns/get.sh diff --git a/docs/api/admin/code_samples/Shell/returns_{id}_cancel/post.sh b/docs/api/admin/code_samples/Shell/admin_returns_{id}_cancel/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/returns_{id}_cancel/post.sh rename to docs/api/admin/code_samples/Shell/admin_returns_{id}_cancel/post.sh diff --git a/docs/api/admin/code_samples/Shell/returns_{id}_receive/post.sh b/docs/api/admin/code_samples/Shell/admin_returns_{id}_receive/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/returns_{id}_receive/post.sh rename to docs/api/admin/code_samples/Shell/admin_returns_{id}_receive/post.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels/get.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels/get.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels/get.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels/post.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels/post.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels/post.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}_products_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_products_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}_products_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_products_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}_products_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_products_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}_products_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_products_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}_stock-locations/delete.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_stock-locations/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}_stock-locations/delete.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_stock-locations/delete.sh diff --git a/docs/api/admin/code_samples/Shell/sales-channels_{id}_stock-locations/post.sh b/docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_stock-locations/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/sales-channels_{id}_stock-locations/post.sh rename to docs/api/admin/code_samples/Shell/admin_sales-channels_{id}_stock-locations/post.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-options/get.sh b/docs/api/admin/code_samples/Shell/admin_shipping-options/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-options/get.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-options/get.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-options/post.sh b/docs/api/admin/code_samples/Shell/admin_shipping-options/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-options/post.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-options/post.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-options_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-options_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-options_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-options_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-options_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-options_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-options_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-profiles/get.sh b/docs/api/admin/code_samples/Shell/admin_shipping-profiles/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-profiles/get.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-profiles/get.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-profiles/post.sh b/docs/api/admin/code_samples/Shell/admin_shipping-profiles/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-profiles/post.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-profiles/post.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-profiles_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-profiles_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-profiles_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-profiles_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/shipping-profiles_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/shipping-profiles_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_shipping-profiles_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/stock-locations/get.sh b/docs/api/admin/code_samples/Shell/admin_stock-locations/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/stock-locations/get.sh rename to docs/api/admin/code_samples/Shell/admin_stock-locations/get.sh diff --git a/docs/api/admin/code_samples/Shell/stock-locations/post.sh b/docs/api/admin/code_samples/Shell/admin_stock-locations/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/stock-locations/post.sh rename to docs/api/admin/code_samples/Shell/admin_stock-locations/post.sh diff --git a/docs/api/admin/code_samples/Shell/stock-locations_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/stock-locations_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/stock-locations_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/stock-locations_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/stock-locations_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/stock-locations_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_stock-locations_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/store/get.sh b/docs/api/admin/code_samples/Shell/admin_store/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store/get.sh rename to docs/api/admin/code_samples/Shell/admin_store/get.sh diff --git a/docs/api/admin/code_samples/Shell/store/post.sh b/docs/api/admin/code_samples/Shell/admin_store/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store/post.sh rename to docs/api/admin/code_samples/Shell/admin_store/post.sh diff --git a/docs/api/admin/code_samples/Shell/store_currencies_{code}/delete.sh b/docs/api/admin/code_samples/Shell/admin_store_currencies_{code}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store_currencies_{code}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_store_currencies_{code}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/store_currencies_{code}/post.sh b/docs/api/admin/code_samples/Shell/admin_store_currencies_{code}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store_currencies_{code}/post.sh rename to docs/api/admin/code_samples/Shell/admin_store_currencies_{code}/post.sh diff --git a/docs/api/admin/code_samples/Shell/store_payment-providers/get.sh b/docs/api/admin/code_samples/Shell/admin_store_payment-providers/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store_payment-providers/get.sh rename to docs/api/admin/code_samples/Shell/admin_store_payment-providers/get.sh diff --git a/docs/api/admin/code_samples/Shell/store_tax-providers/get.sh b/docs/api/admin/code_samples/Shell/admin_store_tax-providers/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/store_tax-providers/get.sh rename to docs/api/admin/code_samples/Shell/admin_store_tax-providers/get.sh diff --git a/docs/api/admin/code_samples/Shell/swaps/get.sh b/docs/api/admin/code_samples/Shell/admin_swaps/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/swaps/get.sh rename to docs/api/admin/code_samples/Shell/admin_swaps/get.sh diff --git a/docs/api/admin/code_samples/Shell/swaps_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_swaps_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/swaps_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_swaps_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates/get.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates/get.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates/get.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates/post.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates/post.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates/post.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_product-types_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_product-types_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_product-types_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_product-types_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_product-types_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_product-types_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_product-types_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_product-types_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_products_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_products_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_products_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_products_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_products_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_products_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_products_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_products_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_shipping-options_batch/delete.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_shipping-options_batch/delete.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/delete.sh diff --git a/docs/api/admin/code_samples/Shell/tax-rates_{id}_shipping-options_batch/post.sh b/docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/tax-rates_{id}_shipping-options_batch/post.sh rename to docs/api/admin/code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/post.sh diff --git a/docs/api/admin/code_samples/Shell/uploads/delete.sh b/docs/api/admin/code_samples/Shell/admin_uploads/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/uploads/delete.sh rename to docs/api/admin/code_samples/Shell/admin_uploads/delete.sh diff --git a/docs/api/admin/code_samples/Shell/uploads/post.sh b/docs/api/admin/code_samples/Shell/admin_uploads/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/uploads/post.sh rename to docs/api/admin/code_samples/Shell/admin_uploads/post.sh diff --git a/docs/api/admin/code_samples/Shell/uploads_download-url/post.sh b/docs/api/admin/code_samples/Shell/admin_uploads_download-url/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/uploads_download-url/post.sh rename to docs/api/admin/code_samples/Shell/admin_uploads_download-url/post.sh diff --git a/docs/api/admin/code_samples/Shell/uploads_protected/post.sh b/docs/api/admin/code_samples/Shell/admin_uploads_protected/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/uploads_protected/post.sh rename to docs/api/admin/code_samples/Shell/admin_uploads_protected/post.sh diff --git a/docs/api/admin/code_samples/Shell/users/get.sh b/docs/api/admin/code_samples/Shell/admin_users/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users/get.sh rename to docs/api/admin/code_samples/Shell/admin_users/get.sh diff --git a/docs/api/admin/code_samples/Shell/users/post.sh b/docs/api/admin/code_samples/Shell/admin_users/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users/post.sh rename to docs/api/admin/code_samples/Shell/admin_users/post.sh diff --git a/docs/api/admin/code_samples/Shell/users_password-token/post.sh b/docs/api/admin/code_samples/Shell/admin_users_password-token/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users_password-token/post.sh rename to docs/api/admin/code_samples/Shell/admin_users_password-token/post.sh diff --git a/docs/api/admin/code_samples/Shell/users_reset-password/post.sh b/docs/api/admin/code_samples/Shell/admin_users_reset-password/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users_reset-password/post.sh rename to docs/api/admin/code_samples/Shell/admin_users_reset-password/post.sh diff --git a/docs/api/admin/code_samples/Shell/users_{id}/delete.sh b/docs/api/admin/code_samples/Shell/admin_users_{id}/delete.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users_{id}/delete.sh rename to docs/api/admin/code_samples/Shell/admin_users_{id}/delete.sh diff --git a/docs/api/admin/code_samples/Shell/users_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_users_{id}/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users_{id}/get.sh rename to docs/api/admin/code_samples/Shell/admin_users_{id}/get.sh diff --git a/docs/api/admin/code_samples/Shell/users_{id}/post.sh b/docs/api/admin/code_samples/Shell/admin_users_{id}/post.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/users_{id}/post.sh rename to docs/api/admin/code_samples/Shell/admin_users_{id}/post.sh diff --git a/docs/api/admin/code_samples/Shell/variants/get.sh b/docs/api/admin/code_samples/Shell/admin_variants/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/variants/get.sh rename to docs/api/admin/code_samples/Shell/admin_variants/get.sh diff --git a/docs/api/admin/code_samples/Shell/admin_variants_{id}/get.sh b/docs/api/admin/code_samples/Shell/admin_variants_{id}/get.sh new file mode 100644 index 0000000000..940e778c5c --- /dev/null +++ b/docs/api/admin/code_samples/Shell/admin_variants_{id}/get.sh @@ -0,0 +1,2 @@ +curl --location --request GET 'https://medusa-url.com/admin/variants/{id}' \ +--header 'Authorization: Bearer {api_token}' diff --git a/docs/api/admin/code_samples/Shell/variants_{id}_inventory/get.sh b/docs/api/admin/code_samples/Shell/admin_variants_{id}_inventory/get.sh similarity index 100% rename from docs/api/admin/code_samples/Shell/variants_{id}_inventory/get.sh rename to docs/api/admin/code_samples/Shell/admin_variants_{id}_inventory/get.sh diff --git a/docs/api/admin/components/schemas/AddressCreatePayload.yaml b/docs/api/admin/components/schemas/AddressCreatePayload.yaml new file mode 100644 index 0000000000..1094c0f176 --- /dev/null +++ b/docs/api/admin/components/schemas/AddressCreatePayload.yaml @@ -0,0 +1,57 @@ +type: object +description: Address fields used when creating an address. +required: + - first_name + - last_name + - address_1 + - city + - country_code + - postal_code +properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: >- + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details diff --git a/docs/api/admin/components/schemas/AddressFields.yaml b/docs/api/admin/components/schemas/AddressPayload.yaml similarity index 94% rename from docs/api/admin/components/schemas/AddressFields.yaml rename to docs/api/admin/components/schemas/AddressPayload.yaml index 6e4c4d6358..89fa9ff576 100644 --- a/docs/api/admin/components/schemas/AddressFields.yaml +++ b/docs/api/admin/components/schemas/AddressPayload.yaml @@ -1,53 +1,50 @@ -title: Address Fields -description: Address fields used when creating/updating an address. type: object +description: Address fields used when creating/updating an address. properties: - company: - type: string - description: Company name - example: Acme first_name: - type: string description: First name + type: string example: Arno last_name: - type: string description: Last name - example: Willms - address_1: type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: description: Address line 1 + type: string example: 14433 Kemmer Court address_2: - type: string description: Address line 2 + type: string example: Suite 369 city: - type: string description: City + type: string example: South Geoffreyview country_code: - type: string description: The 2 character ISO code of the country in lower case + type: string externalDocs: url: >- https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. example: st province: - type: string description: Province + type: string example: Kentucky postal_code: - type: string description: Postal Code - example: 72093 - phone: type: string - description: Phone Number - example: 16128234334802 + example: 72093 metadata: type: object - description: An optional key-value map with additional details example: car: white + description: An optional key-value map with additional details diff --git a/docs/api/admin/components/schemas/AdminAppsListRes.yaml b/docs/api/admin/components/schemas/AdminAppsListRes.yaml index a9759828fe..f145982e38 100644 --- a/docs/api/admin/components/schemas/AdminAppsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminAppsListRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - apps properties: apps: type: array diff --git a/docs/api/admin/components/schemas/AdminAppsRes.yaml b/docs/api/admin/components/schemas/AdminAppsRes.yaml index 2212cbec78..9ccc85746f 100644 --- a/docs/api/admin/components/schemas/AdminAppsRes.yaml +++ b/docs/api/admin/components/schemas/AdminAppsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - apps properties: apps: $ref: ./OAuth.yaml diff --git a/docs/api/admin/components/schemas/AdminAuthRes.yaml b/docs/api/admin/components/schemas/AdminAuthRes.yaml index 34a02f7ad2..1b473f3131 100644 --- a/docs/api/admin/components/schemas/AdminAuthRes.yaml +++ b/docs/api/admin/components/schemas/AdminAuthRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - user properties: user: $ref: ./User.yaml diff --git a/docs/api/admin/components/schemas/AdminBatchJobListRes.yaml b/docs/api/admin/components/schemas/AdminBatchJobListRes.yaml index c947b772d2..81194ab56b 100644 --- a/docs/api/admin/components/schemas/AdminBatchJobListRes.yaml +++ b/docs/api/admin/components/schemas/AdminBatchJobListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - batch_jobs + - count + - offset + - limit properties: batch_jobs: type: array diff --git a/docs/api/admin/components/schemas/AdminBatchJobRes.yaml b/docs/api/admin/components/schemas/AdminBatchJobRes.yaml index 1d742c861a..5148d7f665 100644 --- a/docs/api/admin/components/schemas/AdminBatchJobRes.yaml +++ b/docs/api/admin/components/schemas/AdminBatchJobRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - batch_job properties: batch_job: $ref: ./BatchJob.yaml diff --git a/docs/api/admin/components/schemas/AdminCollectionsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminCollectionsDeleteRes.yaml index 45db8c312b..d739f50061 100644 --- a/docs/api/admin/components/schemas/AdminCollectionsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminCollectionsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminCollectionsListRes.yaml b/docs/api/admin/components/schemas/AdminCollectionsListRes.yaml index 252256786c..32822ecdb6 100644 --- a/docs/api/admin/components/schemas/AdminCollectionsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminCollectionsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - collections + - count + - offset + - limit properties: collections: type: array diff --git a/docs/api/admin/components/schemas/AdminCollectionsRes.yaml b/docs/api/admin/components/schemas/AdminCollectionsRes.yaml index 7802152206..c5b626189c 100644 --- a/docs/api/admin/components/schemas/AdminCollectionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminCollectionsRes.yaml @@ -1,4 +1,10 @@ type: object +x-expanded-relations: + field: collection + relations: + - products +required: + - collection properties: collection: $ref: ./ProductCollection.yaml diff --git a/docs/api/admin/components/schemas/AdminCurrenciesListRes.yaml b/docs/api/admin/components/schemas/AdminCurrenciesListRes.yaml index 7d8433a050..f4dd293fef 100644 --- a/docs/api/admin/components/schemas/AdminCurrenciesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminCurrenciesListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - currencies + - count + - offset + - limit properties: currencies: type: array diff --git a/docs/api/admin/components/schemas/AdminCurrenciesRes.yaml b/docs/api/admin/components/schemas/AdminCurrenciesRes.yaml index 905466e5ee..0dce871edf 100644 --- a/docs/api/admin/components/schemas/AdminCurrenciesRes.yaml +++ b/docs/api/admin/components/schemas/AdminCurrenciesRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - currency properties: currency: $ref: ./Currency.yaml diff --git a/docs/api/admin/components/schemas/AdminCustomerGroupsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminCustomerGroupsDeleteRes.yaml index f6ede8bd97..c71ac29d49 100644 --- a/docs/api/admin/components/schemas/AdminCustomerGroupsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminCustomerGroupsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminCustomerGroupsListRes.yaml b/docs/api/admin/components/schemas/AdminCustomerGroupsListRes.yaml index 9a57b834f2..13c74d86ac 100644 --- a/docs/api/admin/components/schemas/AdminCustomerGroupsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminCustomerGroupsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - customer_groups + - count + - offset + - limit properties: customer_groups: type: array diff --git a/docs/api/admin/components/schemas/AdminCustomerGroupsRes.yaml b/docs/api/admin/components/schemas/AdminCustomerGroupsRes.yaml index a0f75ac4ad..2e324ec54c 100644 --- a/docs/api/admin/components/schemas/AdminCustomerGroupsRes.yaml +++ b/docs/api/admin/components/schemas/AdminCustomerGroupsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - customer_group properties: customer_group: $ref: ./CustomerGroup.yaml diff --git a/docs/api/admin/components/schemas/AdminCustomersListRes.yaml b/docs/api/admin/components/schemas/AdminCustomersListRes.yaml index d5703c84a5..531a0a23d7 100644 --- a/docs/api/admin/components/schemas/AdminCustomersListRes.yaml +++ b/docs/api/admin/components/schemas/AdminCustomersListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - customers + - count + - offset + - limit properties: customers: type: array diff --git a/docs/api/admin/components/schemas/AdminCustomersRes.yaml b/docs/api/admin/components/schemas/AdminCustomersRes.yaml index ffb6903bf2..7bcdcd6186 100644 --- a/docs/api/admin/components/schemas/AdminCustomersRes.yaml +++ b/docs/api/admin/components/schemas/AdminCustomersRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: customer + relations: + - orders + - shipping_addresses +required: + - customer properties: customer: $ref: ./Customer.yaml diff --git a/docs/api/admin/components/schemas/AdminDeleteProductsFromCollectionRes.yaml b/docs/api/admin/components/schemas/AdminDeleteProductsFromCollectionRes.yaml index 338dd63277..c42a782b07 100644 --- a/docs/api/admin/components/schemas/AdminDeleteProductsFromCollectionRes.yaml +++ b/docs/api/admin/components/schemas/AdminDeleteProductsFromCollectionRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - removed_products properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDeleteShippingProfileRes.yaml b/docs/api/admin/components/schemas/AdminDeleteShippingProfileRes.yaml index c558057588..05b2d2c485 100644 --- a/docs/api/admin/components/schemas/AdminDeleteShippingProfileRes.yaml +++ b/docs/api/admin/components/schemas/AdminDeleteShippingProfileRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDeleteUploadsRes.yaml b/docs/api/admin/components/schemas/AdminDeleteUploadsRes.yaml index 1d146d2088..36c221a599 100644 --- a/docs/api/admin/components/schemas/AdminDeleteUploadsRes.yaml +++ b/docs/api/admin/components/schemas/AdminDeleteUploadsRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDeleteUserRes.yaml b/docs/api/admin/components/schemas/AdminDeleteUserRes.yaml index b078d453de..1a0f1e1b90 100644 --- a/docs/api/admin/components/schemas/AdminDeleteUserRes.yaml +++ b/docs/api/admin/components/schemas/AdminDeleteUserRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDiscountConditionsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminDiscountConditionsDeleteRes.yaml index b84ac7be83..189b8eb0cc 100644 --- a/docs/api/admin/components/schemas/AdminDiscountConditionsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminDiscountConditionsDeleteRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - id + - object + - deleted + - discount properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDiscountConditionsRes.yaml b/docs/api/admin/components/schemas/AdminDiscountConditionsRes.yaml index 94ddc8b610..0e77e73048 100644 --- a/docs/api/admin/components/schemas/AdminDiscountConditionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminDiscountConditionsRes.yaml @@ -1,4 +1,10 @@ type: object +x-expanded-relations: + field: discount_condition + relations: + - discount_rule +required: + - discount_condition properties: discount_condition: $ref: ./DiscountCondition.yaml diff --git a/docs/api/admin/components/schemas/AdminDiscountsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminDiscountsDeleteRes.yaml index 54add9e208..d0b4c29790 100644 --- a/docs/api/admin/components/schemas/AdminDiscountsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminDiscountsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDiscountsListRes.yaml b/docs/api/admin/components/schemas/AdminDiscountsListRes.yaml index 5b69366794..981118a2c0 100644 --- a/docs/api/admin/components/schemas/AdminDiscountsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminDiscountsListRes.yaml @@ -1,4 +1,16 @@ type: object +x-expanded-relations: + field: discounts + relations: + - parent_discount + - regions + - rule + - rule.conditions +required: + - discounts + - count + - offset + - limit properties: discounts: type: array diff --git a/docs/api/admin/components/schemas/AdminDiscountsRes.yaml b/docs/api/admin/components/schemas/AdminDiscountsRes.yaml index f8d9aa73a1..b52dcf4784 100644 --- a/docs/api/admin/components/schemas/AdminDiscountsRes.yaml +++ b/docs/api/admin/components/schemas/AdminDiscountsRes.yaml @@ -1,4 +1,16 @@ type: object +x-expanded-relations: + field: discount + relations: + - parent_discount + - regions + - rule + - rule.conditions + eager: + - regions.fulfillment_providers + - regions.payment_providers +required: + - discount properties: discount: $ref: ./Discount.yaml diff --git a/docs/api/admin/components/schemas/AdminDraftOrdersDeleteRes.yaml b/docs/api/admin/components/schemas/AdminDraftOrdersDeleteRes.yaml index 219d3c80e3..542765dfed 100644 --- a/docs/api/admin/components/schemas/AdminDraftOrdersDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminDraftOrdersDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminDraftOrdersListRes.yaml b/docs/api/admin/components/schemas/AdminDraftOrdersListRes.yaml index f85c0a6b3e..134f839693 100644 --- a/docs/api/admin/components/schemas/AdminDraftOrdersListRes.yaml +++ b/docs/api/admin/components/schemas/AdminDraftOrdersListRes.yaml @@ -1,4 +1,16 @@ type: object +x-expanded-relations: + field: draft_orders + relations: + - order + - cart + - cart.items + - cart.items.adjustments +required: + - draft_orders + - count + - offset + - limit properties: draft_orders: type: array diff --git a/docs/api/admin/components/schemas/AdminDraftOrdersRes.yaml b/docs/api/admin/components/schemas/AdminDraftOrdersRes.yaml index e8723460e4..5a495eeb2d 100644 --- a/docs/api/admin/components/schemas/AdminDraftOrdersRes.yaml +++ b/docs/api/admin/components/schemas/AdminDraftOrdersRes.yaml @@ -1,4 +1,64 @@ type: object +x-expanded-relations: + field: draft_order + relations: + - order + - cart + - cart.items + - cart.items.adjustments + - cart.billing_address + - cart.customer + - cart.discounts + - cart.discounts.rule + - cart.items + - cart.items.adjustments + - cart.payment + - cart.payment_sessions + - cart.region + - cart.region.payment_providers + - cart.shipping_address + - cart.shipping_methods + - cart.shipping_methods.shipping_option + eager: + - cart.region.fulfillment_providers + - cart.region.payment_providers + - cart.shipping_methods.shipping_option + implicit: + - cart.discounts + - cart.discounts.rule + - cart.gift_cards + - cart.items + - cart.items.adjustments + - cart.items.tax_lines + - cart.items.variant + - cart.items.variant.product + - cart.region + - cart.region.tax_rates + - cart.shipping_address + - cart.shipping_methods + - cart.shipping_methods.tax_lines + totals: + - cart.discount_total + - cart.gift_card_tax_total + - cart.gift_card_total + - cart.item_tax_total + - cart.refundable_amount + - cart.refunded_total + - cart.shipping_tax_total + - cart.shipping_total + - cart.subtotal + - cart.tax_total + - cart.total + - cart.items.discount_total + - cart.items.gift_card_total + - cart.items.original_tax_total + - cart.items.original_total + - cart.items.refundable + - cart.items.subtotal + - cart.items.tax_total + - cart.items.total +required: + - draft_order properties: draft_order: $ref: ./DraftOrder.yaml diff --git a/docs/api/admin/components/schemas/AdminExtendedStoresRes.yaml b/docs/api/admin/components/schemas/AdminExtendedStoresRes.yaml new file mode 100644 index 0000000000..8b3e0894c2 --- /dev/null +++ b/docs/api/admin/components/schemas/AdminExtendedStoresRes.yaml @@ -0,0 +1,11 @@ +type: object +x-expanded-relations: + field: store + relations: + - currencies + - default_currency +required: + - store +properties: + store: + $ref: ./ExtendedStoreDTO.yaml diff --git a/docs/api/admin/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes.yaml b/docs/api/admin/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes.yaml index 531eb3895d..e26d1debe0 100644 --- a/docs/api/admin/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminGetRegionsRegionFulfillmentOptionsRes.yaml @@ -1,17 +1,24 @@ type: object +required: + - fulfillment_options properties: fulfillment_options: type: array items: type: object + required: + - provider_id + - options properties: provider_id: - type: string description: ID of the fulfillment provider + type: string options: - type: array description: fulfillment provider options - example: - - id: manual-fulfillment - - id: manual-fulfillment-return - is_return: true + type: array + items: + type: object + example: + - id: manual-fulfillment + - id: manual-fulfillment-return + is_return: true diff --git a/docs/api/admin/components/schemas/AdminGetVariantsVariantInventoryRes.yaml b/docs/api/admin/components/schemas/AdminGetVariantsVariantInventoryRes.yaml index 165c290b71..f055f06413 100644 --- a/docs/api/admin/components/schemas/AdminGetVariantsVariantInventoryRes.yaml +++ b/docs/api/admin/components/schemas/AdminGetVariantsVariantInventoryRes.yaml @@ -1,21 +1,5 @@ type: object properties: - id: - description: the id of the variant - type: string - inventory: - description: the stock location address ID - type: string - sales_channel_availability: + variant: type: object - description: An optional key-value map with additional details - properties: - channel_name: - description: Sales channel name - type: string - channel_id: - description: Sales channel id - type: string - available_quantity: - description: Available quantity in sales channel - type: number + $ref: ./VariantInventory.yaml diff --git a/docs/api/admin/components/schemas/AdminGiftCardsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminGiftCardsDeleteRes.yaml index 1076a0f9c7..6f113a2ed4 100644 --- a/docs/api/admin/components/schemas/AdminGiftCardsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminGiftCardsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminGiftCardsListRes.yaml b/docs/api/admin/components/schemas/AdminGiftCardsListRes.yaml index d48cb2935e..1df6eafb6f 100644 --- a/docs/api/admin/components/schemas/AdminGiftCardsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminGiftCardsListRes.yaml @@ -1,4 +1,17 @@ type: object +x-expanded-relations: + field: gift_cards + relations: + - order + - region + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - gift_cards + - count + - offset + - limit properties: gift_cards: type: array diff --git a/docs/api/admin/components/schemas/AdminGiftCardsRes.yaml b/docs/api/admin/components/schemas/AdminGiftCardsRes.yaml index d72a7917c2..90e4caf50d 100644 --- a/docs/api/admin/components/schemas/AdminGiftCardsRes.yaml +++ b/docs/api/admin/components/schemas/AdminGiftCardsRes.yaml @@ -1,4 +1,14 @@ type: object +x-expanded-relations: + field: gift_card + relations: + - order + - region + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - gift_card properties: gift_card: $ref: ./GiftCard.yaml diff --git a/docs/api/admin/components/schemas/AdminInventoryItemsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminInventoryItemsDeleteRes.yaml index e31b73414b..a0ded8e57a 100644 --- a/docs/api/admin/components/schemas/AdminInventoryItemsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminInventoryItemsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminInventoryItemsListRes.yaml b/docs/api/admin/components/schemas/AdminInventoryItemsListRes.yaml index eec764d4b2..4f87fd6629 100644 --- a/docs/api/admin/components/schemas/AdminInventoryItemsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminInventoryItemsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - inventory_items + - count + - offset + - limit properties: inventory_items: type: array diff --git a/docs/api/admin/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes.yaml b/docs/api/admin/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes.yaml index d46c1b70ba..fc2767763d 100644 --- a/docs/api/admin/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes.yaml +++ b/docs/api/admin/components/schemas/AdminInventoryItemsListWithVariantsAndLocationLevelsRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - inventory_items + - count + - offset + - limit properties: inventory_items: type: array diff --git a/docs/api/admin/components/schemas/AdminInventoryItemsLocationLevelsRes.yaml b/docs/api/admin/components/schemas/AdminInventoryItemsLocationLevelsRes.yaml index 4c0077947d..f275fb9d97 100644 --- a/docs/api/admin/components/schemas/AdminInventoryItemsLocationLevelsRes.yaml +++ b/docs/api/admin/components/schemas/AdminInventoryItemsLocationLevelsRes.yaml @@ -1,9 +1,17 @@ type: object +required: + - inventory_item properties: - id: - description: The id of the location - location_levels: - description: List of stock levels at a given location - type: array - items: - $ref: ./InventoryLevelDTO.yaml + inventory_item: + type: object + required: + - id + - location_levels + properties: + id: + description: The id of the location + location_levels: + description: List of stock levels at a given location + type: array + items: + $ref: ./InventoryLevelDTO.yaml diff --git a/docs/api/admin/components/schemas/AdminInventoryItemsRes.yaml b/docs/api/admin/components/schemas/AdminInventoryItemsRes.yaml index 8b0468433e..dacf72e622 100644 --- a/docs/api/admin/components/schemas/AdminInventoryItemsRes.yaml +++ b/docs/api/admin/components/schemas/AdminInventoryItemsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - inventory_item properties: inventory_item: $ref: ./InventoryItemDTO.yaml diff --git a/docs/api/admin/components/schemas/AdminInviteDeleteRes.yaml b/docs/api/admin/components/schemas/AdminInviteDeleteRes.yaml index 17dd571381..d0a91ac8b7 100644 --- a/docs/api/admin/components/schemas/AdminInviteDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminInviteDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminListInvitesRes.yaml b/docs/api/admin/components/schemas/AdminListInvitesRes.yaml index 90af041322..264a1b4e90 100644 --- a/docs/api/admin/components/schemas/AdminListInvitesRes.yaml +++ b/docs/api/admin/components/schemas/AdminListInvitesRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - invites properties: invites: type: array diff --git a/docs/api/admin/components/schemas/AdminNotesDeleteRes.yaml b/docs/api/admin/components/schemas/AdminNotesDeleteRes.yaml index a0703d1f98..679ce92ba8 100644 --- a/docs/api/admin/components/schemas/AdminNotesDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminNotesDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminNotesListRes.yaml b/docs/api/admin/components/schemas/AdminNotesListRes.yaml index b44cb9b77d..9721914a0e 100644 --- a/docs/api/admin/components/schemas/AdminNotesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminNotesListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - notes + - count + - offset + - limit properties: notes: type: array diff --git a/docs/api/admin/components/schemas/AdminNotesRes.yaml b/docs/api/admin/components/schemas/AdminNotesRes.yaml index 9c7d25e1b1..1f495bf7c7 100644 --- a/docs/api/admin/components/schemas/AdminNotesRes.yaml +++ b/docs/api/admin/components/schemas/AdminNotesRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - note properties: note: $ref: ./Note.yaml diff --git a/docs/api/admin/components/schemas/AdminNotificationsListRes.yaml b/docs/api/admin/components/schemas/AdminNotificationsListRes.yaml index c5f9c490df..f114beaaf2 100644 --- a/docs/api/admin/components/schemas/AdminNotificationsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminNotificationsListRes.yaml @@ -1,4 +1,10 @@ type: object +x-expanded-relations: + field: notifications + relations: + - resends +required: + - notifications properties: notifications: type: array diff --git a/docs/api/admin/components/schemas/AdminNotificationsRes.yaml b/docs/api/admin/components/schemas/AdminNotificationsRes.yaml index 607f862759..b3b370452f 100644 --- a/docs/api/admin/components/schemas/AdminNotificationsRes.yaml +++ b/docs/api/admin/components/schemas/AdminNotificationsRes.yaml @@ -1,4 +1,10 @@ type: object +x-expanded-relations: + field: notification + relations: + - resends +required: + - notification properties: notification: $ref: ./Notification.yaml diff --git a/docs/api/admin/components/schemas/AdminOrderEditDeleteRes.yaml b/docs/api/admin/components/schemas/AdminOrderEditDeleteRes.yaml index ea94c0111c..2435bc0769 100644 --- a/docs/api/admin/components/schemas/AdminOrderEditDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrderEditDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminOrderEditItemChangeDeleteRes.yaml b/docs/api/admin/components/schemas/AdminOrderEditItemChangeDeleteRes.yaml index 4889f74d96..b1d52f5627 100644 --- a/docs/api/admin/components/schemas/AdminOrderEditItemChangeDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrderEditItemChangeDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminOrderEditsListRes.yaml b/docs/api/admin/components/schemas/AdminOrderEditsListRes.yaml index 91941a9eff..efa37a0fca 100644 --- a/docs/api/admin/components/schemas/AdminOrderEditsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrderEditsListRes.yaml @@ -1,4 +1,44 @@ type: object +x-expanded-relations: + field: order_edits + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total +required: + - order_edits + - count + - offset + - limit properties: order_edits: type: array diff --git a/docs/api/admin/components/schemas/AdminOrderEditsRes.yaml b/docs/api/admin/components/schemas/AdminOrderEditsRes.yaml index d266863926..4f5087710f 100644 --- a/docs/api/admin/components/schemas/AdminOrderEditsRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrderEditsRes.yaml @@ -1,4 +1,41 @@ type: object +x-expanded-relations: + field: order_edit + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total +required: + - order_edit properties: order_edit: $ref: ./OrderEdit.yaml diff --git a/docs/api/admin/components/schemas/AdminOrdersListRes.yaml b/docs/api/admin/components/schemas/AdminOrdersListRes.yaml index 1b4106242e..d9331dd990 100644 --- a/docs/api/admin/components/schemas/AdminOrdersListRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrdersListRes.yaml @@ -1,4 +1,112 @@ type: object +x-expanded-relations: + field: orders + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - returns.items + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total +required: + - orders + - count + - offset + - limit properties: orders: type: array diff --git a/docs/api/admin/components/schemas/AdminOrdersRes.yaml b/docs/api/admin/components/schemas/AdminOrdersRes.yaml index 43b8e917ca..020e86f931 100644 --- a/docs/api/admin/components/schemas/AdminOrdersRes.yaml +++ b/docs/api/admin/components/schemas/AdminOrdersRes.yaml @@ -1,4 +1,109 @@ type: object +x-expanded-relations: + field: order + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - returns.items + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total +required: + - order properties: order: $ref: ./Order.yaml diff --git a/docs/api/admin/components/schemas/AdminPaymentCollectionDeleteRes.yaml b/docs/api/admin/components/schemas/AdminPaymentCollectionDeleteRes.yaml index ccc45be4d7..46401f7f36 100644 --- a/docs/api/admin/components/schemas/AdminPaymentCollectionDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminPaymentCollectionDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminPaymentCollectionsRes.yaml b/docs/api/admin/components/schemas/AdminPaymentCollectionsRes.yaml index a7748cf4f4..6b57258c43 100644 --- a/docs/api/admin/components/schemas/AdminPaymentCollectionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminPaymentCollectionsRes.yaml @@ -1,4 +1,15 @@ type: object +x-expanded-relations: + field: payment_collection + relations: + - payment_sessions + - payments + - region + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - payment_collection properties: payment_collection: $ref: ./PaymentCollection.yaml diff --git a/docs/api/admin/components/schemas/AdminPaymentProvidersList.yaml b/docs/api/admin/components/schemas/AdminPaymentProvidersList.yaml index fc6042e3fe..db6385af46 100644 --- a/docs/api/admin/components/schemas/AdminPaymentProvidersList.yaml +++ b/docs/api/admin/components/schemas/AdminPaymentProvidersList.yaml @@ -1,4 +1,6 @@ type: object +required: + - payment_providers properties: payment_providers: type: array diff --git a/docs/api/admin/components/schemas/AdminPaymentRes.yaml b/docs/api/admin/components/schemas/AdminPaymentRes.yaml index f063721de0..cba9949004 100644 --- a/docs/api/admin/components/schemas/AdminPaymentRes.yaml +++ b/docs/api/admin/components/schemas/AdminPaymentRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - payment properties: payment: $ref: ./Payment.yaml diff --git a/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes.yaml b/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes.yaml index 43b8e917ca..53497a9af7 100644 --- a/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes.yaml +++ b/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderRegisterPaymentRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - order properties: order: $ref: ./Order.yaml diff --git a/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderReq.yaml b/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderReq.yaml index 05a6d92efc..29179bd29e 100644 --- a/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostDraftOrdersDraftOrderReq.yaml @@ -17,12 +17,12 @@ properties: billing_address: description: The Address to be used for billing purposes. anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml - type: string shipping_address: description: The Address to be used for shipping. anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml - type: string discounts: description: An array of Discount codes to add to the Draft Order. diff --git a/docs/api/admin/components/schemas/AdminPostDraftOrdersReq.yaml b/docs/api/admin/components/schemas/AdminPostDraftOrdersReq.yaml index e2f7db512d..f6b12380f5 100644 --- a/docs/api/admin/components/schemas/AdminPostDraftOrdersReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostDraftOrdersReq.yaml @@ -17,12 +17,12 @@ properties: billing_address: description: The Address to be used for billing purposes. anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml - type: string shipping_address: description: The Address to be used for shipping. anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml - type: string items: description: The Line Items that have been received. diff --git a/docs/api/admin/components/schemas/AdminPostInventoryItemsReq.yaml b/docs/api/admin/components/schemas/AdminPostInventoryItemsReq.yaml new file mode 100644 index 0000000000..b6abd5adde --- /dev/null +++ b/docs/api/admin/components/schemas/AdminPostInventoryItemsReq.yaml @@ -0,0 +1,54 @@ +type: object +properties: + sku: + description: The unique SKU for the Product Variant. + type: string + ean: + description: The EAN number of the item. + type: string + upc: + description: The UPC number of the item. + type: string + barcode: + description: A generic GTIN field for the Product Variant. + type: string + hs_code: + description: The Harmonized System code for the Product Variant. + type: string + inventory_quantity: + description: The amount of stock kept for the Product Variant. + type: integer + default: 0 + allow_backorder: + description: Whether the Product Variant can be purchased when out of stock. + type: boolean + manage_inventory: + description: >- + Whether Medusa should keep track of the inventory for this Product + Variant. + type: boolean + default: true + weight: + description: The wieght of the Product Variant. + type: number + length: + description: The length of the Product Variant. + type: number + height: + description: The height of the Product Variant. + type: number + width: + description: The width of the Product Variant. + type: number + origin_country: + description: The country of origin of the Product Variant. + type: string + mid_code: + description: The Manufacturer Identification code for the Product Variant. + type: string + material: + description: The material composition of the Product Variant. + type: string + metadata: + description: An optional set of key-value pairs with additional information. + type: object diff --git a/docs/api/admin/components/schemas/AdminPostOrdersOrderClaimsReq.yaml b/docs/api/admin/components/schemas/AdminPostOrdersOrderClaimsReq.yaml index 2221e9c16e..70a139b7a5 100644 --- a/docs/api/admin/components/schemas/AdminPostOrdersOrderClaimsReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostOrdersOrderClaimsReq.yaml @@ -94,11 +94,10 @@ properties: description: An optional set of key-value pairs to hold additional information. type: object shipping_address: - type: object description: >- An optional shipping address to send the claim to. Defaults to the parent order's shipping address - $ref: ./Address.yaml + $ref: ./AddressPayload.yaml refund_amount: description: The amount to refund the Customer when the Claim type is `refund`. type: integer diff --git a/docs/api/admin/components/schemas/AdminPostOrdersOrderReq.yaml b/docs/api/admin/components/schemas/AdminPostOrdersOrderReq.yaml index 5a7c57fb2d..62d6722f97 100644 --- a/docs/api/admin/components/schemas/AdminPostOrdersOrderReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostOrdersOrderReq.yaml @@ -5,12 +5,10 @@ properties: type: string billing_address: description: Billing address - anyOf: - - $ref: ./AddressFields.yaml + $ref: ./AddressPayload.yaml shipping_address: description: Shipping address - anyOf: - - $ref: ./AddressFields.yaml + $ref: ./AddressPayload.yaml items: description: The Line Items for the order type: array diff --git a/docs/api/admin/components/schemas/AdminPostProductCategoriesCategoryReq.yaml b/docs/api/admin/components/schemas/AdminPostProductCategoriesCategoryReq.yaml index f185943b26..58dfccf7b9 100644 --- a/docs/api/admin/components/schemas/AdminPostProductCategoriesCategoryReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostProductCategoriesCategoryReq.yaml @@ -15,3 +15,6 @@ properties: parent_category_id: type: string description: The ID of the parent product category + rank: + type: number + description: The rank of the category in the tree node (starting from 0) diff --git a/docs/api/admin/components/schemas/AdminPostReservationsReq.yaml b/docs/api/admin/components/schemas/AdminPostReservationsReq.yaml index 6428010b23..e08aad2afc 100644 --- a/docs/api/admin/components/schemas/AdminPostReservationsReq.yaml +++ b/docs/api/admin/components/schemas/AdminPostReservationsReq.yaml @@ -1,6 +1,21 @@ type: object required: - - reservation + - location_id + - inventory_item_id + - quantity properties: - reservation: - $ref: ./ReservationItemDTO.yaml + line_item_id: + description: The id of the location of the reservation + type: string + location_id: + description: The id of the location of the reservation + type: string + inventory_item_id: + description: The id of the inventory item the reservation relates to + type: string + quantity: + description: The id of the reservation item + type: number + metadata: + description: An optional set of key-value pairs with additional information. + type: object diff --git a/docs/api/admin/components/schemas/AdminPriceListDeleteBatchRes.yaml b/docs/api/admin/components/schemas/AdminPriceListDeleteBatchRes.yaml index a6e7cbc41a..4f128a04d4 100644 --- a/docs/api/admin/components/schemas/AdminPriceListDeleteBatchRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListDeleteBatchRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - ids + - object + - deleted properties: ids: type: array diff --git a/docs/api/admin/components/schemas/AdminPriceListDeleteProductPricesRes.yaml b/docs/api/admin/components/schemas/AdminPriceListDeleteProductPricesRes.yaml index 9e71cf7cf3..23239ef090 100644 --- a/docs/api/admin/components/schemas/AdminPriceListDeleteProductPricesRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListDeleteProductPricesRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - ids + - object + - deleted properties: ids: type: array diff --git a/docs/api/admin/components/schemas/AdminPriceListDeleteRes.yaml b/docs/api/admin/components/schemas/AdminPriceListDeleteRes.yaml index a6727b02e1..0402210313 100644 --- a/docs/api/admin/components/schemas/AdminPriceListDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminPriceListDeleteVariantPricesRes.yaml b/docs/api/admin/components/schemas/AdminPriceListDeleteVariantPricesRes.yaml index 9e71cf7cf3..23239ef090 100644 --- a/docs/api/admin/components/schemas/AdminPriceListDeleteVariantPricesRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListDeleteVariantPricesRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - ids + - object + - deleted properties: ids: type: array diff --git a/docs/api/admin/components/schemas/AdminPriceListRes.yaml b/docs/api/admin/components/schemas/AdminPriceListRes.yaml index c6be0b0caa..53323693f2 100644 --- a/docs/api/admin/components/schemas/AdminPriceListRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: price_list + relations: + - customer_groups + - prices +required: + - price_list properties: price_list: $ref: ./PriceList.yaml diff --git a/docs/api/admin/components/schemas/AdminPriceListsListRes.yaml b/docs/api/admin/components/schemas/AdminPriceListsListRes.yaml index 4da038dd18..e11bd28269 100644 --- a/docs/api/admin/components/schemas/AdminPriceListsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - price_lists + - count + - offset + - limit properties: price_lists: type: array diff --git a/docs/api/admin/components/schemas/AdminPriceListsProductsListRes.yaml b/docs/api/admin/components/schemas/AdminPriceListsProductsListRes.yaml index 57a72f2ef3..9098b75a16 100644 --- a/docs/api/admin/components/schemas/AdminPriceListsProductsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminPriceListsProductsListRes.yaml @@ -1,4 +1,20 @@ type: object +x-expanded-relations: + field: products + relations: + - categories + - collection + - images + - options + - tags + - type + - variants + - variants.options +required: + - products + - count + - offset + - limit properties: products: type: array diff --git a/docs/api/admin/components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml b/docs/api/admin/components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml index 16bdada85e..c9acfd91c0 100644 --- a/docs/api/admin/components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminProductCategoriesCategoryRes.yaml b/docs/api/admin/components/schemas/AdminProductCategoriesCategoryRes.yaml index d343bc439f..eaf81a7222 100644 --- a/docs/api/admin/components/schemas/AdminProductCategoriesCategoryRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductCategoriesCategoryRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: product_category + relations: + - category_children + - parent_category +required: + - product_category properties: product_category: $ref: ./ProductCategory.yaml diff --git a/docs/api/admin/components/schemas/AdminProductCategoriesListRes.yaml b/docs/api/admin/components/schemas/AdminProductCategoriesListRes.yaml index 0b6a32c916..f053d45d1e 100644 --- a/docs/api/admin/components/schemas/AdminProductCategoriesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductCategoriesListRes.yaml @@ -1,4 +1,14 @@ type: object +x-expanded-relations: + field: product_categories + relations: + - category_children + - parent_category +required: + - product_categories + - count + - offset + - limit properties: product_categories: type: array diff --git a/docs/api/admin/components/schemas/AdminProductTagsListRes.yaml b/docs/api/admin/components/schemas/AdminProductTagsListRes.yaml index 6a5ca82bb8..405eac0731 100644 --- a/docs/api/admin/components/schemas/AdminProductTagsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductTagsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - product_tags + - count + - offset + - limit properties: product_tags: type: array diff --git a/docs/api/admin/components/schemas/AdminProductTypesListRes.yaml b/docs/api/admin/components/schemas/AdminProductTypesListRes.yaml index 4cb021af96..774ce804cc 100644 --- a/docs/api/admin/components/schemas/AdminProductTypesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductTypesListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - product_types + - count + - offset + - limit properties: product_types: type: array diff --git a/docs/api/admin/components/schemas/AdminProductsDeleteOptionRes.yaml b/docs/api/admin/components/schemas/AdminProductsDeleteOptionRes.yaml index 30c41d02d7..a30ba74881 100644 --- a/docs/api/admin/components/schemas/AdminProductsDeleteOptionRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsDeleteOptionRes.yaml @@ -1,4 +1,20 @@ type: object +x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices +required: + - option_id + - object + - deleted + - product properties: option_id: type: string @@ -12,4 +28,4 @@ properties: description: Whether or not the items were deleted. default: true product: - $ref: ./Product.yaml + $ref: ./PricedProduct.yaml diff --git a/docs/api/admin/components/schemas/AdminProductsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminProductsDeleteRes.yaml index 6d537a2698..709cb3aef3 100644 --- a/docs/api/admin/components/schemas/AdminProductsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminProductsDeleteVariantRes.yaml b/docs/api/admin/components/schemas/AdminProductsDeleteVariantRes.yaml index 8ed1c8db64..1d4a1c61ac 100644 --- a/docs/api/admin/components/schemas/AdminProductsDeleteVariantRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsDeleteVariantRes.yaml @@ -1,4 +1,20 @@ type: object +x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices +required: + - variant_id + - object + - deleted + - product properties: variant_id: type: string @@ -12,4 +28,4 @@ properties: description: Whether or not the items were deleted. default: true product: - $ref: ./Product.yaml + $ref: ./PricedProduct.yaml diff --git a/docs/api/admin/components/schemas/AdminProductsListRes.yaml b/docs/api/admin/components/schemas/AdminProductsListRes.yaml index ab35016359..a85acdc2bb 100644 --- a/docs/api/admin/components/schemas/AdminProductsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsListRes.yaml @@ -1,11 +1,25 @@ type: object +x-expanded-relations: + field: products + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices +required: + - products + - count + - offset + - limit properties: products: type: array items: - oneOf: - - $ref: ./Product.yaml - - $ref: ./PricedProduct.yaml + $ref: ./PricedProduct.yaml count: type: integer description: The total number of items available diff --git a/docs/api/admin/components/schemas/AdminProductsListTagsRes.yaml b/docs/api/admin/components/schemas/AdminProductsListTagsRes.yaml index 12e422431b..36dee5cf26 100644 --- a/docs/api/admin/components/schemas/AdminProductsListTagsRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsListTagsRes.yaml @@ -1,9 +1,15 @@ type: object +required: + - tags properties: tags: type: array items: type: object + required: + - id + - usage_count + - value properties: id: description: The ID of the tag. diff --git a/docs/api/admin/components/schemas/AdminProductsListTypesRes.yaml b/docs/api/admin/components/schemas/AdminProductsListTypesRes.yaml index 617453260a..b9ce359c5d 100644 --- a/docs/api/admin/components/schemas/AdminProductsListTypesRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsListTypesRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - types properties: types: type: array diff --git a/docs/api/admin/components/schemas/AdminProductsListVariantsRes.yaml b/docs/api/admin/components/schemas/AdminProductsListVariantsRes.yaml index 0dd6293790..9f9bd329d9 100644 --- a/docs/api/admin/components/schemas/AdminProductsListVariantsRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsListVariantsRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - variants + - count + - offset + - limit properties: variants: type: array diff --git a/docs/api/admin/components/schemas/AdminProductsRes.yaml b/docs/api/admin/components/schemas/AdminProductsRes.yaml index 3fbf46b05b..0845416c01 100644 --- a/docs/api/admin/components/schemas/AdminProductsRes.yaml +++ b/docs/api/admin/components/schemas/AdminProductsRes.yaml @@ -1,4 +1,17 @@ type: object +x-expanded-relations: + field: product + relations: + - collection + - images + - options + - tags + - type + - variants + - variants.options + - variants.prices +required: + - product properties: product: - $ref: ./Product.yaml + $ref: ./PricedProduct.yaml diff --git a/docs/api/admin/components/schemas/AdminPublishableApiKeyDeleteRes.yaml b/docs/api/admin/components/schemas/AdminPublishableApiKeyDeleteRes.yaml index 47a0ea7e2a..0714ea5231 100644 --- a/docs/api/admin/components/schemas/AdminPublishableApiKeyDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminPublishableApiKeyDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminPublishableApiKeysListRes.yaml b/docs/api/admin/components/schemas/AdminPublishableApiKeysListRes.yaml index 085a3d7190..59f953bb88 100644 --- a/docs/api/admin/components/schemas/AdminPublishableApiKeysListRes.yaml +++ b/docs/api/admin/components/schemas/AdminPublishableApiKeysListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - publishable_api_keys + - count + - offset + - limit properties: publishable_api_keys: type: array diff --git a/docs/api/admin/components/schemas/AdminPublishableApiKeysListSalesChannelsRes.yaml b/docs/api/admin/components/schemas/AdminPublishableApiKeysListSalesChannelsRes.yaml index 0a9db99c8f..35678ee35a 100644 --- a/docs/api/admin/components/schemas/AdminPublishableApiKeysListSalesChannelsRes.yaml +++ b/docs/api/admin/components/schemas/AdminPublishableApiKeysListSalesChannelsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - sales_channels properties: sales_channels: type: array diff --git a/docs/api/admin/components/schemas/AdminPublishableApiKeysRes.yaml b/docs/api/admin/components/schemas/AdminPublishableApiKeysRes.yaml index c17f539d38..c994cac4db 100644 --- a/docs/api/admin/components/schemas/AdminPublishableApiKeysRes.yaml +++ b/docs/api/admin/components/schemas/AdminPublishableApiKeysRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - publishable_api_key properties: publishable_api_key: $ref: ./PublishableApiKey.yaml diff --git a/docs/api/admin/components/schemas/AdminRefundRes.yaml b/docs/api/admin/components/schemas/AdminRefundRes.yaml index cd621f5f05..9f159d8a63 100644 --- a/docs/api/admin/components/schemas/AdminRefundRes.yaml +++ b/docs/api/admin/components/schemas/AdminRefundRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - refund properties: refund: $ref: ./Refund.yaml diff --git a/docs/api/admin/components/schemas/AdminRegionsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminRegionsDeleteRes.yaml index a75d2e5a48..890f5414e2 100644 --- a/docs/api/admin/components/schemas/AdminRegionsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminRegionsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminRegionsListRes.yaml b/docs/api/admin/components/schemas/AdminRegionsListRes.yaml index efebb681c2..c5ff015351 100644 --- a/docs/api/admin/components/schemas/AdminRegionsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminRegionsListRes.yaml @@ -1,4 +1,18 @@ type: object +x-expanded-relations: + field: regions + relations: + - countries + - fulfillment_providers + - payment_providers + eager: + - fulfillment_providers + - payment_providers +required: + - regions + - count + - offset + - limit properties: regions: type: array diff --git a/docs/api/admin/components/schemas/AdminRegionsRes.yaml b/docs/api/admin/components/schemas/AdminRegionsRes.yaml index b4080ea096..4e52f90323 100644 --- a/docs/api/admin/components/schemas/AdminRegionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminRegionsRes.yaml @@ -1,4 +1,15 @@ type: object +x-expanded-relations: + field: region + relations: + - countries + - fulfillment_providers + - payment_providers + eager: + - fulfillment_providers + - payment_providers +required: + - region properties: region: $ref: ./Region.yaml diff --git a/docs/api/admin/components/schemas/AdminReservationsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminReservationsDeleteRes.yaml new file mode 100644 index 0000000000..7b10d15ecd --- /dev/null +++ b/docs/api/admin/components/schemas/AdminReservationsDeleteRes.yaml @@ -0,0 +1,17 @@ +type: object +required: + - id + - object + - deleted +properties: + id: + type: string + description: The ID of the deleted Reservation. + object: + type: string + description: The type of the object that was deleted. + default: reservation + deleted: + type: boolean + description: Whether or not the Reservation was deleted. + default: true diff --git a/docs/api/admin/components/schemas/AdminGetReservationReservationsReq.yaml b/docs/api/admin/components/schemas/AdminReservationsListRes.yaml similarity index 85% rename from docs/api/admin/components/schemas/AdminGetReservationReservationsReq.yaml rename to docs/api/admin/components/schemas/AdminReservationsListRes.yaml index 0523d76e88..7f2e521066 100644 --- a/docs/api/admin/components/schemas/AdminGetReservationReservationsReq.yaml +++ b/docs/api/admin/components/schemas/AdminReservationsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - reservations + - count + - offset + - limit properties: reservations: type: array diff --git a/docs/api/admin/components/schemas/AdminReservationsRes.yaml b/docs/api/admin/components/schemas/AdminReservationsRes.yaml new file mode 100644 index 0000000000..6428010b23 --- /dev/null +++ b/docs/api/admin/components/schemas/AdminReservationsRes.yaml @@ -0,0 +1,6 @@ +type: object +required: + - reservation +properties: + reservation: + $ref: ./ReservationItemDTO.yaml diff --git a/docs/api/admin/components/schemas/AdminReturnReasonsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminReturnReasonsDeleteRes.yaml index 02bf4792f0..424e73dbab 100644 --- a/docs/api/admin/components/schemas/AdminReturnReasonsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnReasonsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminReturnReasonsListRes.yaml b/docs/api/admin/components/schemas/AdminReturnReasonsListRes.yaml index c52e27f424..0f212752fc 100644 --- a/docs/api/admin/components/schemas/AdminReturnReasonsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnReasonsListRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: return_reasons + relations: + - parent_return_reason + - return_reason_children +required: + - return_reasons properties: return_reasons: type: array diff --git a/docs/api/admin/components/schemas/AdminReturnReasonsRes.yaml b/docs/api/admin/components/schemas/AdminReturnReasonsRes.yaml index ac6e4045bd..f5a1907b17 100644 --- a/docs/api/admin/components/schemas/AdminReturnReasonsRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnReasonsRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: return_reason + relations: + - parent_return_reason + - return_reason_children +required: + - return_reason properties: return_reason: $ref: ./ReturnReason.yaml diff --git a/docs/api/admin/components/schemas/AdminReturnsCancelRes.yaml b/docs/api/admin/components/schemas/AdminReturnsCancelRes.yaml index 43b8e917ca..ab11b5eeb5 100644 --- a/docs/api/admin/components/schemas/AdminReturnsCancelRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnsCancelRes.yaml @@ -1,4 +1,54 @@ type: object +x-expanded-relations: + field: order + relations: + - billing_address + - claims + - claims.additional_items + - claims.additional_items.variant + - claims.claim_items + - claims.claim_items.images + - claims.claim_items.item + - claims.fulfillments + - claims.fulfillments.tracking_links + - claims.return_order + - claims.return_order.shipping_method + - claims.return_order.shipping_method.tax_lines + - claims.shipping_address + - claims.shipping_methods + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.items + - fulfillments.tracking_links + - gift_card_transactions + - gift_cards + - items + - payments + - refunds + - region + - returns + - returns.items + - returns.items.reason + - returns.shipping_method + - returns.shipping_method.tax_lines + - shipping_address + - shipping_methods + - swaps + - swaps.additional_items + - swaps.additional_items.variant + - swaps.fulfillments + - swaps.fulfillments.tracking_links + - swaps.payment + - swaps.return_order + - swaps.return_order.shipping_method + - swaps.return_order.shipping_method.tax_lines + - swaps.shipping_address + - swaps.shipping_methods + - swaps.shipping_methods.tax_lines +required: + - order properties: order: $ref: ./Order.yaml diff --git a/docs/api/admin/components/schemas/AdminReturnsListRes.yaml b/docs/api/admin/components/schemas/AdminReturnsListRes.yaml index b86af7dc39..57b6eb15e5 100644 --- a/docs/api/admin/components/schemas/AdminReturnsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnsListRes.yaml @@ -1,4 +1,14 @@ type: object +x-expanded-relation: + field: returns + relations: + - order + - swap +required: + - returns + - count + - offset + - limit properties: returns: type: array diff --git a/docs/api/admin/components/schemas/AdminReturnsRes.yaml b/docs/api/admin/components/schemas/AdminReturnsRes.yaml index 3291cf0e08..f8000dec9b 100644 --- a/docs/api/admin/components/schemas/AdminReturnsRes.yaml +++ b/docs/api/admin/components/schemas/AdminReturnsRes.yaml @@ -1,4 +1,10 @@ type: object +x-expanded-relation: + field: return + relations: + - swap +required: + - return properties: return: $ref: ./Return.yaml diff --git a/docs/api/admin/components/schemas/AdminSalesChannelsDeleteLocationRes.yaml b/docs/api/admin/components/schemas/AdminSalesChannelsDeleteLocationRes.yaml index 8cc317294e..6d12dbbcec 100644 --- a/docs/api/admin/components/schemas/AdminSalesChannelsDeleteLocationRes.yaml +++ b/docs/api/admin/components/schemas/AdminSalesChannelsDeleteLocationRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminSalesChannelsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminSalesChannelsDeleteRes.yaml index 15a97ff689..c953197736 100644 --- a/docs/api/admin/components/schemas/AdminSalesChannelsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminSalesChannelsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminSalesChannelsListRes.yaml b/docs/api/admin/components/schemas/AdminSalesChannelsListRes.yaml index 7409f4ba18..ed590a4737 100644 --- a/docs/api/admin/components/schemas/AdminSalesChannelsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminSalesChannelsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - sales_channels + - count + - offset + - limit properties: sales_channels: type: array diff --git a/docs/api/admin/components/schemas/AdminSalesChannelsRes.yaml b/docs/api/admin/components/schemas/AdminSalesChannelsRes.yaml index 09c58c3022..fda0b10e76 100644 --- a/docs/api/admin/components/schemas/AdminSalesChannelsRes.yaml +++ b/docs/api/admin/components/schemas/AdminSalesChannelsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - sales_channel properties: sales_channel: $ref: ./SalesChannel.yaml diff --git a/docs/api/admin/components/schemas/AdminShippingOptionsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminShippingOptionsDeleteRes.yaml index d8e319611b..e734f894f8 100644 --- a/docs/api/admin/components/schemas/AdminShippingOptionsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminShippingOptionsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminShippingOptionsListRes.yaml b/docs/api/admin/components/schemas/AdminShippingOptionsListRes.yaml index 539446d9e4..7c8ae6f7ad 100644 --- a/docs/api/admin/components/schemas/AdminShippingOptionsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminShippingOptionsListRes.yaml @@ -1,4 +1,18 @@ type: object +x-expanded-relations: + field: shipping_options + relations: + - profile + - region + - requirements + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - shipping_options + - count + - offset + - limit properties: shipping_options: type: array @@ -7,3 +21,9 @@ properties: count: type: integer description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page diff --git a/docs/api/admin/components/schemas/AdminShippingOptionsRes.yaml b/docs/api/admin/components/schemas/AdminShippingOptionsRes.yaml index ef80497854..4b11048199 100644 --- a/docs/api/admin/components/schemas/AdminShippingOptionsRes.yaml +++ b/docs/api/admin/components/schemas/AdminShippingOptionsRes.yaml @@ -1,4 +1,15 @@ type: object +x-expanded-relations: + field: shipping_option + relations: + - profile + - region + - requirements + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - shipping_option properties: shipping_option: $ref: ./ShippingOption.yaml diff --git a/docs/api/admin/components/schemas/AdminShippingProfilesListRes.yaml b/docs/api/admin/components/schemas/AdminShippingProfilesListRes.yaml index 33cdf0e98f..f0eaa82aac 100644 --- a/docs/api/admin/components/schemas/AdminShippingProfilesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminShippingProfilesListRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - shipping_profiles properties: shipping_profiles: type: array diff --git a/docs/api/admin/components/schemas/AdminShippingProfilesRes.yaml b/docs/api/admin/components/schemas/AdminShippingProfilesRes.yaml index 392791dfa1..9e56d94a2f 100644 --- a/docs/api/admin/components/schemas/AdminShippingProfilesRes.yaml +++ b/docs/api/admin/components/schemas/AdminShippingProfilesRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: shipping_profile + relations: + - products + - shipping_options +required: + - shipping_profile properties: shipping_profile: $ref: ./ShippingProfile.yaml diff --git a/docs/api/admin/components/schemas/AdminStockLocationsDeleteRes.yaml b/docs/api/admin/components/schemas/AdminStockLocationsDeleteRes.yaml index fd827299df..6e5d17e47b 100644 --- a/docs/api/admin/components/schemas/AdminStockLocationsDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminStockLocationsDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminStockLocationsListRes.yaml b/docs/api/admin/components/schemas/AdminStockLocationsListRes.yaml index 47df8c820a..aa29877a00 100644 --- a/docs/api/admin/components/schemas/AdminStockLocationsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminStockLocationsListRes.yaml @@ -1,9 +1,14 @@ type: object +required: + - stock_locations + - count + - offset + - limit properties: stock_locations: type: array items: - $ref: ./StockLocationDTO.yaml + $ref: ./StockLocationExpandedDTO.yaml count: type: integer description: The total number of items available diff --git a/docs/api/admin/components/schemas/AdminStockLocationsRes.yaml b/docs/api/admin/components/schemas/AdminStockLocationsRes.yaml index adef34b4ff..c382f72085 100644 --- a/docs/api/admin/components/schemas/AdminStockLocationsRes.yaml +++ b/docs/api/admin/components/schemas/AdminStockLocationsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - stock_location properties: stock_location: - $ref: ./StockLocationDTO.yaml + $ref: ./StockLocationExpandedDTO.yaml diff --git a/docs/api/admin/components/schemas/AdminStoresRes.yaml b/docs/api/admin/components/schemas/AdminStoresRes.yaml index 2c92fa1211..a02586a781 100644 --- a/docs/api/admin/components/schemas/AdminStoresRes.yaml +++ b/docs/api/admin/components/schemas/AdminStoresRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - store properties: store: $ref: ./Store.yaml diff --git a/docs/api/admin/components/schemas/AdminSwapsListRes.yaml b/docs/api/admin/components/schemas/AdminSwapsListRes.yaml index 94b2b1f075..da2e08617d 100644 --- a/docs/api/admin/components/schemas/AdminSwapsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminSwapsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - swaps + - count + - offset + - limit properties: swaps: type: array diff --git a/docs/api/admin/components/schemas/AdminSwapsRes.yaml b/docs/api/admin/components/schemas/AdminSwapsRes.yaml index 3eaa21eadf..d95facc390 100644 --- a/docs/api/admin/components/schemas/AdminSwapsRes.yaml +++ b/docs/api/admin/components/schemas/AdminSwapsRes.yaml @@ -1,4 +1,24 @@ type: object +x-expanded-relations: + field: swap + relations: + - additional_items + - additional_items.adjustments + - cart + - cart.items + - cart.items.adjustments + - cart.items.variant + - fulfillments + - order + - payment + - return_order + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - shipping_methods.shipping_option +required: + - swap properties: swap: $ref: ./Swap.yaml diff --git a/docs/api/admin/components/schemas/AdminTaxProvidersList.yaml b/docs/api/admin/components/schemas/AdminTaxProvidersList.yaml index 5f97c98d61..e924eba7a3 100644 --- a/docs/api/admin/components/schemas/AdminTaxProvidersList.yaml +++ b/docs/api/admin/components/schemas/AdminTaxProvidersList.yaml @@ -1,4 +1,6 @@ type: object +required: + - tax_providers properties: tax_providers: type: array diff --git a/docs/api/admin/components/schemas/AdminTaxRatesDeleteRes.yaml b/docs/api/admin/components/schemas/AdminTaxRatesDeleteRes.yaml index d3b6b06558..df9ba39e4d 100644 --- a/docs/api/admin/components/schemas/AdminTaxRatesDeleteRes.yaml +++ b/docs/api/admin/components/schemas/AdminTaxRatesDeleteRes.yaml @@ -1,4 +1,8 @@ type: object +required: + - id + - object + - deleted properties: id: type: string diff --git a/docs/api/admin/components/schemas/AdminTaxRatesListRes.yaml b/docs/api/admin/components/schemas/AdminTaxRatesListRes.yaml index e782e3d2c1..5de6ad890f 100644 --- a/docs/api/admin/components/schemas/AdminTaxRatesListRes.yaml +++ b/docs/api/admin/components/schemas/AdminTaxRatesListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - tax_rates + - count + - offset + - limit properties: tax_rates: type: array diff --git a/docs/api/admin/components/schemas/AdminTaxRatesRes.yaml b/docs/api/admin/components/schemas/AdminTaxRatesRes.yaml index 5d4c877a0e..bcd007f2d4 100644 --- a/docs/api/admin/components/schemas/AdminTaxRatesRes.yaml +++ b/docs/api/admin/components/schemas/AdminTaxRatesRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - tax_rate properties: tax_rate: $ref: ./TaxRate.yaml diff --git a/docs/api/admin/components/schemas/AdminUploadsDownloadUrlRes.yaml b/docs/api/admin/components/schemas/AdminUploadsDownloadUrlRes.yaml index 478368e8c5..52469d3c61 100644 --- a/docs/api/admin/components/schemas/AdminUploadsDownloadUrlRes.yaml +++ b/docs/api/admin/components/schemas/AdminUploadsDownloadUrlRes.yaml @@ -1,5 +1,7 @@ type: object +required: + - download_url properties: download_url: - type: string description: The Download URL of the file + type: string diff --git a/docs/api/admin/components/schemas/AdminUploadsRes.yaml b/docs/api/admin/components/schemas/AdminUploadsRes.yaml index 8c248af21c..ed8154b0bc 100644 --- a/docs/api/admin/components/schemas/AdminUploadsRes.yaml +++ b/docs/api/admin/components/schemas/AdminUploadsRes.yaml @@ -1,11 +1,15 @@ type: object +required: + - uploads properties: uploads: type: array items: type: object + required: + - url properties: url: - type: string description: The URL of the uploaded file. + type: string format: uri diff --git a/docs/api/admin/components/schemas/AdminUserRes.yaml b/docs/api/admin/components/schemas/AdminUserRes.yaml index 34a02f7ad2..1b473f3131 100644 --- a/docs/api/admin/components/schemas/AdminUserRes.yaml +++ b/docs/api/admin/components/schemas/AdminUserRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - user properties: user: $ref: ./User.yaml diff --git a/docs/api/admin/components/schemas/AdminUsersListRes.yaml b/docs/api/admin/components/schemas/AdminUsersListRes.yaml index 4549b76e5b..42af2d23e8 100644 --- a/docs/api/admin/components/schemas/AdminUsersListRes.yaml +++ b/docs/api/admin/components/schemas/AdminUsersListRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - users properties: users: type: array diff --git a/docs/api/admin/components/schemas/AdminVariantsListRes.yaml b/docs/api/admin/components/schemas/AdminVariantsListRes.yaml index 0dd6293790..215adc2240 100644 --- a/docs/api/admin/components/schemas/AdminVariantsListRes.yaml +++ b/docs/api/admin/components/schemas/AdminVariantsListRes.yaml @@ -1,9 +1,20 @@ type: object +x-expanded-relations: + field: variants + relations: + - options + - prices + - product +required: + - variants + - count + - offset + - limit properties: variants: type: array items: - $ref: ./ProductVariant.yaml + $ref: ./PricedVariant.yaml count: type: integer description: The total number of items available diff --git a/docs/api/admin/components/schemas/AdminVariantsRes.yaml b/docs/api/admin/components/schemas/AdminVariantsRes.yaml new file mode 100644 index 0000000000..81e344ff80 --- /dev/null +++ b/docs/api/admin/components/schemas/AdminVariantsRes.yaml @@ -0,0 +1,12 @@ +type: object +x-expanded-relations: + field: variant + relations: + - options + - prices + - product +required: + - variant +properties: + variant: + $ref: ./PricedVariant.yaml diff --git a/docs/api/admin/components/schemas/Cart.yaml b/docs/api/admin/components/schemas/Cart.yaml index 92c5146ff8..649b1149fd 100644 --- a/docs/api/admin/components/schemas/Cart.yaml +++ b/docs/api/admin/components/schemas/Cart.yaml @@ -174,6 +174,10 @@ properties: type: integer example: 1000 discount_total: + description: The total of discount rounded + type: integer + example: 800 + raw_discount_total: description: The total of discount type: integer example: 800 diff --git a/docs/api/admin/components/schemas/ExtendedStoreDTO.yaml b/docs/api/admin/components/schemas/ExtendedStoreDTO.yaml new file mode 100644 index 0000000000..af6132c641 --- /dev/null +++ b/docs/api/admin/components/schemas/ExtendedStoreDTO.yaml @@ -0,0 +1,17 @@ +allOf: + - $ref: ./Store.yaml + - type: object + required: + - payment_providers + - fulfillment_providers + - feature_flags + - modules + properties: + payment_providers: + $ref: ./PaymentProvider.yaml + fulfillment_providers: + $ref: ./FulfillmentProvider.yaml + feature_flags: + $ref: ./FeatureFlagsResponse.yaml + modules: + $ref: ./ModulesResponse.yaml diff --git a/docs/api/admin/components/schemas/FeatureFlagsResponse.yaml b/docs/api/admin/components/schemas/FeatureFlagsResponse.yaml new file mode 100644 index 0000000000..ce55d9ccc4 --- /dev/null +++ b/docs/api/admin/components/schemas/FeatureFlagsResponse.yaml @@ -0,0 +1,13 @@ +type: array +items: + type: object + required: + - key + - value + properties: + key: + description: The key of the feature flag. + type: string + value: + description: The value of the feature flag. + type: boolean diff --git a/docs/api/admin/components/schemas/LineItem.yaml b/docs/api/admin/components/schemas/LineItem.yaml index e809ce5e3c..67b1ee5cd0 100644 --- a/docs/api/admin/components/schemas/LineItem.yaml +++ b/docs/api/admin/components/schemas/LineItem.yaml @@ -199,6 +199,10 @@ properties: type: integer example: 0 discount_total: + description: The total of discount of the line item rounded + type: integer + example: 0 + raw_discount_total: description: The total of discount of the line item type: integer example: 0 diff --git a/docs/api/admin/components/schemas/LineItemAdjustment.yaml b/docs/api/admin/components/schemas/LineItemAdjustment.yaml index fe1b9049e8..5dcc6f496f 100644 --- a/docs/api/admin/components/schemas/LineItemAdjustment.yaml +++ b/docs/api/admin/components/schemas/LineItemAdjustment.yaml @@ -36,7 +36,7 @@ properties: $ref: ./Discount.yaml amount: description: The adjustment amount - type: integer + type: number example: 1000 metadata: description: An optional key-value map with additional details diff --git a/docs/api/admin/components/schemas/ModulesResponse.yaml b/docs/api/admin/components/schemas/ModulesResponse.yaml new file mode 100644 index 0000000000..f90e78d9f9 --- /dev/null +++ b/docs/api/admin/components/schemas/ModulesResponse.yaml @@ -0,0 +1,13 @@ +type: array +items: + type: object + required: + - module + - resolution + properties: + module: + description: The key of the module. + type: string + resolution: + description: The resolution path of the module or false if module is not installed. + type: string diff --git a/docs/api/admin/components/schemas/Order.yaml b/docs/api/admin/components/schemas/Order.yaml index 26d73485be..8406e48d2f 100644 --- a/docs/api/admin/components/schemas/Order.yaml +++ b/docs/api/admin/components/schemas/Order.yaml @@ -267,10 +267,14 @@ properties: type: integer description: The total of shipping example: 1000 - discount_total: + raw_discount_total: description: The total of discount type: integer example: 800 + discount_total: + description: The total of discount rounded + type: integer + example: 800 tax_total: description: The total of tax type: integer diff --git a/docs/api/admin/components/schemas/PricedShippingOption.yaml b/docs/api/admin/components/schemas/PricedShippingOption.yaml new file mode 100644 index 0000000000..a5f479328b --- /dev/null +++ b/docs/api/admin/components/schemas/PricedShippingOption.yaml @@ -0,0 +1,27 @@ +title: Priced Shipping Option +type: object +allOf: + - $ref: ./ShippingOption.yaml + - type: object + properties: + price_incl_tax: + type: number + description: Price including taxes + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + tax_amount: + type: number + description: The taxes applied. diff --git a/docs/api/admin/components/schemas/ProductCategory.yaml b/docs/api/admin/components/schemas/ProductCategory.yaml index 9d15054cd5..3dfe3b8ca6 100644 --- a/docs/api/admin/components/schemas/ProductCategory.yaml +++ b/docs/api/admin/components/schemas/ProductCategory.yaml @@ -5,7 +5,6 @@ type: object required: - category_children - created_at - - deleted_at - handle - id - is_active @@ -44,6 +43,10 @@ properties: type: boolean description: A flag to make product category visible/hidden in the store front default: false + rank: + type: integer + description: An integer that depicts the rank of category in a tree node + default: 0 category_children: description: Available if the relation `category_children` are expanded. type: array @@ -75,8 +78,3 @@ properties: description: The date with timezone at which the resource was updated. type: string format: date-time - deleted_at: - description: The date with timezone at which the resource was deleted. - nullable: true - type: string - format: date-time diff --git a/docs/api/admin/components/schemas/ResponseInventoryItem.yaml b/docs/api/admin/components/schemas/ResponseInventoryItem.yaml new file mode 100644 index 0000000000..279316dfc5 --- /dev/null +++ b/docs/api/admin/components/schemas/ResponseInventoryItem.yaml @@ -0,0 +1,8 @@ +allOf: + - $ref: ./InventoryItemDTO.yaml + - type: object + required: + - available_quantity + properties: + available_quantity: + type: number diff --git a/docs/api/admin/components/schemas/StockLocationExpandedDTO.yaml b/docs/api/admin/components/schemas/StockLocationExpandedDTO.yaml new file mode 100644 index 0000000000..e2d6b28a56 --- /dev/null +++ b/docs/api/admin/components/schemas/StockLocationExpandedDTO.yaml @@ -0,0 +1,6 @@ +allOf: + - $ref: ./StockLocationDTO.yaml + - type: object + properties: + sales_channels: + $ref: ./SalesChannel.yaml diff --git a/docs/api/admin/components/schemas/VariantInventory.yaml b/docs/api/admin/components/schemas/VariantInventory.yaml new file mode 100644 index 0000000000..9b7aebc58c --- /dev/null +++ b/docs/api/admin/components/schemas/VariantInventory.yaml @@ -0,0 +1,21 @@ +type: object +properties: + id: + description: the id of the variant + type: string + inventory: + description: the stock location address ID + $ref: ./ResponseInventoryItem.yaml + sales_channel_availability: + type: object + description: An optional key-value map with additional details + properties: + channel_name: + description: Sales channel name + type: string + channel_id: + description: Sales channel id + type: string + available_quantity: + description: Available quantity in sales channel + type: number diff --git a/docs/api/admin/openapi.yaml b/docs/api/admin/openapi.yaml index 76bd91d37f..344994fa4e 100644 --- a/docs/api/admin/openapi.yaml +++ b/docs/api/admin/openapi.yaml @@ -414,391 +414,385 @@ tags: description: >- Auth endpoints that allow authorization of admin Users and manages their sessions. - - name: App + - name: Apps description: App endpoints that allow handling apps in Medusa. - - name: Batch Job + - name: Batch Jobs description: Batch Job endpoints that allow handling batch jobs in Medusa. - - name: Claim - description: Claim endpoints that allow handling claims in Medusa. - - name: Collection + - name: Collections description: Collection endpoints that allow handling collections in Medusa. - - name: Customer + - name: Customers description: Customer endpoints that allow handling customers in Medusa. - - name: Customer Group + - name: Customer Groups description: Customer Group endpoints that allow handling customer groups in Medusa. - - name: Discount + - name: Discounts description: Discount endpoints that allow handling discounts in Medusa. - - name: Discount Condition - description: >- - Discount Condition endpoints that allow handling discount conditions in - Medusa. - - name: Draft Order + - name: Draft Orders description: Draft Order endpoints that allow handling draft orders in Medusa. - - name: Gift Card + - name: Gift Cards description: Gift Card endpoints that allow handling gift cards in Medusa. - - name: Invite + - name: Invites description: Invite endpoints that allow handling invites in Medusa. - - name: Note + - name: Notes description: Note endpoints that allow handling notes in Medusa. - - name: Notification + - name: Notifications description: Notification endpoints that allow handling notifications in Medusa. - - name: Order + - name: Orders description: Order endpoints that allow handling orders in Medusa. - - name: Price List + - name: Price Lists description: Price List endpoints that allow handling price lists in Medusa. - - name: Product + - name: Products description: Product endpoints that allow handling products in Medusa. - - name: Product Tag + - name: Product Tags description: Product Tag endpoints that allow handling product tags in Medusa. - - name: Product Type + - name: Product Types description: Product Types endpoints that allow handling product types in Medusa. - - name: Product Variant - description: Product Variant endpoints that allow handling product variants in Medusa. - - name: Region + - name: Regions description: Region endpoints that allow handling regions in Medusa. - - name: Return Reason + - name: Return Reasons description: Return Reason endpoints that allow handling return reasons in Medusa. - - name: Return + - name: Returns description: Return endpoints that allow handling returns in Medusa. - - name: Sales Channel + - name: Sales Channels description: Sales Channel endpoints that allow handling sales channels in Medusa. - - name: Shipping Option + - name: Shipping Options description: Shipping Option endpoints that allow handling shipping options in Medusa. - - name: Shipping Profile + - name: Shipping Profiles description: >- Shipping Profile endpoints that allow handling shipping profiles in Medusa. - name: Store description: Store endpoints that allow handling stores in Medusa. - - name: Swap + - name: Swaps description: Swap endpoints that allow handling swaps in Medusa. - - name: Tax Rate + - name: Tax Rates description: Tax Rate endpoints that allow handling tax rates in Medusa. - - name: Upload + - name: Uploads description: Upload endpoints that allow handling uploads in Medusa. - - name: User + - name: Users description: User endpoints that allow handling users in Medusa. + - name: Variants + description: Product Variant endpoints that allow handling product variants in Medusa. servers: - - url: https://api.medusa-commerce.com/admin + - url: https://api.medusa-commerce.com paths: - /apps/authorizations: - $ref: paths/apps_authorizations.yaml - /apps: - $ref: paths/apps.yaml - /auth: - $ref: paths/auth.yaml - /batch-jobs/{id}/cancel: - $ref: paths/batch-jobs_{id}_cancel.yaml - /batch-jobs/{id}/confirm: - $ref: paths/batch-jobs_{id}_confirm.yaml - /batch-jobs: - $ref: paths/batch-jobs.yaml - /batch-jobs/{id}: - $ref: paths/batch-jobs_{id}.yaml - /collections/{id}/products/batch: - $ref: paths/collections_{id}_products_batch.yaml - /collections: - $ref: paths/collections.yaml - /collections/{id}: - $ref: paths/collections_{id}.yaml - /currencies: - $ref: paths/currencies.yaml - /currencies/{code}: - $ref: paths/currencies_{code}.yaml - /customer-groups/{id}/customers/batch: - $ref: paths/customer-groups_{id}_customers_batch.yaml - /customer-groups: - $ref: paths/customer-groups.yaml - /customer-groups/{id}: - $ref: paths/customer-groups_{id}.yaml - /customer-groups/{id}/customers: - $ref: paths/customer-groups_{id}_customers.yaml - /customers: - $ref: paths/customers.yaml - /customers/{id}: - $ref: paths/customers_{id}.yaml - /discounts/{id}/regions/{region_id}: - $ref: paths/discounts_{id}_regions_{region_id}.yaml - /discounts/{discount_id}/conditions/{condition_id}/batch: - $ref: paths/discounts_{discount_id}_conditions_{condition_id}_batch.yaml - /discounts/{discount_id}/conditions: - $ref: paths/discounts_{discount_id}_conditions.yaml - /discounts: - $ref: paths/discounts.yaml - /discounts/{id}/dynamic-codes: - $ref: paths/discounts_{id}_dynamic-codes.yaml - /discounts/{discount_id}/conditions/{condition_id}: - $ref: paths/discounts_{discount_id}_conditions_{condition_id}.yaml - /discounts/{id}: - $ref: paths/discounts_{id}.yaml - /discounts/{id}/dynamic-codes/{code}: - $ref: paths/discounts_{id}_dynamic-codes_{code}.yaml - /discounts/code/{code}: - $ref: paths/discounts_code_{code}.yaml - /draft-orders: - $ref: paths/draft-orders.yaml - /draft-orders/{id}/line-items: - $ref: paths/draft-orders_{id}_line-items.yaml - /draft-orders/{id}: - $ref: paths/draft-orders_{id}.yaml - /draft-orders/{id}/line-items/{line_id}: - $ref: paths/draft-orders_{id}_line-items_{line_id}.yaml - /draft-orders/{id}/pay: - $ref: paths/draft-orders_{id}_pay.yaml + /admin/apps: + $ref: paths/admin_apps.yaml + /admin/apps/authorizations: + $ref: paths/admin_apps_authorizations.yaml + /admin/auth: + $ref: paths/admin_auth.yaml + /admin/batch-jobs: + $ref: paths/admin_batch-jobs.yaml + /admin/batch-jobs/{id}: + $ref: paths/admin_batch-jobs_{id}.yaml + /admin/batch-jobs/{id}/cancel: + $ref: paths/admin_batch-jobs_{id}_cancel.yaml + /admin/batch-jobs/{id}/confirm: + $ref: paths/admin_batch-jobs_{id}_confirm.yaml + /admin/collections: + $ref: paths/admin_collections.yaml + /admin/collections/{id}: + $ref: paths/admin_collections_{id}.yaml + /admin/collections/{id}/products/batch: + $ref: paths/admin_collections_{id}_products_batch.yaml + /admin/currencies: + $ref: paths/admin_currencies.yaml + /admin/currencies/{code}: + $ref: paths/admin_currencies_{code}.yaml + /admin/customer-groups: + $ref: paths/admin_customer-groups.yaml + /admin/customer-groups/{id}: + $ref: paths/admin_customer-groups_{id}.yaml + /admin/customer-groups/{id}/customers: + $ref: paths/admin_customer-groups_{id}_customers.yaml + /admin/customer-groups/{id}/customers/batch: + $ref: paths/admin_customer-groups_{id}_customers_batch.yaml + /admin/customers: + $ref: paths/admin_customers.yaml + /admin/customers/{id}: + $ref: paths/admin_customers_{id}.yaml + /admin/discounts: + $ref: paths/admin_discounts.yaml + /admin/discounts/code/{code}: + $ref: paths/admin_discounts_code_{code}.yaml + /admin/discounts/{discount_id}/conditions: + $ref: paths/admin_discounts_{discount_id}_conditions.yaml + /admin/discounts/{discount_id}/conditions/{condition_id}: + $ref: paths/admin_discounts_{discount_id}_conditions_{condition_id}.yaml + /admin/discounts/{discount_id}/conditions/{condition_id}/batch: + $ref: paths/admin_discounts_{discount_id}_conditions_{condition_id}_batch.yaml + /admin/discounts/{id}: + $ref: paths/admin_discounts_{id}.yaml + /admin/discounts/{id}/dynamic-codes: + $ref: paths/admin_discounts_{id}_dynamic-codes.yaml + /admin/discounts/{id}/dynamic-codes/{code}: + $ref: paths/admin_discounts_{id}_dynamic-codes_{code}.yaml + /admin/discounts/{id}/regions/{region_id}: + $ref: paths/admin_discounts_{id}_regions_{region_id}.yaml + /admin/draft-orders: + $ref: paths/admin_draft-orders.yaml /admin/draft-orders/{id}: $ref: paths/admin_draft-orders_{id}.yaml - /gift-cards: - $ref: paths/gift-cards.yaml - /gift-cards/{id}: - $ref: paths/gift-cards_{id}.yaml - /inventory-items/{id}/location-levels: - $ref: paths/inventory-items_{id}_location-levels.yaml - /inventory-items/{id}: - $ref: paths/inventory-items_{id}.yaml - /inventory-items/{id}/location-levels/{location_id}: - $ref: paths/inventory-items_{id}_location-levels_{location_id}.yaml - /inventory-items: - $ref: paths/inventory-items.yaml - /invites/accept: - $ref: paths/invites_accept.yaml - /invites: - $ref: paths/invites.yaml - /invites/{invite_id}: - $ref: paths/invites_{invite_id}.yaml - /invites/{invite_id}/resend: - $ref: paths/invites_{invite_id}_resend.yaml - /notes: - $ref: paths/notes.yaml - /notes/{id}: - $ref: paths/notes_{id}.yaml - /notifications: - $ref: paths/notifications.yaml - /notifications/{id}/resend: - $ref: paths/notifications_{id}_resend.yaml - /order-edits/{id}/items: - $ref: paths/order-edits_{id}_items.yaml - /order-edits/{id}/cancel: - $ref: paths/order-edits_{id}_cancel.yaml - /order-edits/{id}/confirm: - $ref: paths/order-edits_{id}_confirm.yaml - /order-edits: - $ref: paths/order-edits.yaml - /order-edits/{id}/items/{item_id}: - $ref: paths/order-edits_{id}_items_{item_id}.yaml - /order-edits/{id}/changes/{change_id}: - $ref: paths/order-edits_{id}_changes_{change_id}.yaml - /order-edits/{id}: - $ref: paths/order-edits_{id}.yaml - /order-edits/{id}/request: - $ref: paths/order-edits_{id}_request.yaml - /orders/{id}/shipping-methods: - $ref: paths/orders_{id}_shipping-methods.yaml - /orders/{id}/archive: - $ref: paths/orders_{id}_archive.yaml - /orders/{id}/claims/{claim_id}/cancel: - $ref: paths/orders_{id}_claims_{claim_id}_cancel.yaml - /orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel: + /admin/draft-orders/{id}/line-items: + $ref: paths/admin_draft-orders_{id}_line-items.yaml + /admin/draft-orders/{id}/line-items/{line_id}: + $ref: paths/admin_draft-orders_{id}_line-items_{line_id}.yaml + /admin/draft-orders/{id}/pay: + $ref: paths/admin_draft-orders_{id}_pay.yaml + /admin/gift-cards: + $ref: paths/admin_gift-cards.yaml + /admin/gift-cards/{id}: + $ref: paths/admin_gift-cards_{id}.yaml + /admin/inventory-items: + $ref: paths/admin_inventory-items.yaml + /admin/inventory-items/{id}: + $ref: paths/admin_inventory-items_{id}.yaml + /admin/inventory-items/{id}/location-levels: + $ref: paths/admin_inventory-items_{id}_location-levels.yaml + /admin/inventory-items/{id}/location-levels/{location_id}: + $ref: paths/admin_inventory-items_{id}_location-levels_{location_id}.yaml + /admin/invites: + $ref: paths/admin_invites.yaml + /admin/invites/accept: + $ref: paths/admin_invites_accept.yaml + /admin/invites/{invite_id}: + $ref: paths/admin_invites_{invite_id}.yaml + /admin/invites/{invite_id}/resend: + $ref: paths/admin_invites_{invite_id}_resend.yaml + /admin/notes: + $ref: paths/admin_notes.yaml + /admin/notes/{id}: + $ref: paths/admin_notes_{id}.yaml + /admin/notifications: + $ref: paths/admin_notifications.yaml + /admin/notifications/{id}/resend: + $ref: paths/admin_notifications_{id}_resend.yaml + /admin/order-edits: + $ref: paths/admin_order-edits.yaml + /admin/order-edits/{id}: + $ref: paths/admin_order-edits_{id}.yaml + /admin/order-edits/{id}/cancel: + $ref: paths/admin_order-edits_{id}_cancel.yaml + /admin/order-edits/{id}/changes/{change_id}: + $ref: paths/admin_order-edits_{id}_changes_{change_id}.yaml + /admin/order-edits/{id}/confirm: + $ref: paths/admin_order-edits_{id}_confirm.yaml + /admin/order-edits/{id}/items: + $ref: paths/admin_order-edits_{id}_items.yaml + /admin/order-edits/{id}/items/{item_id}: + $ref: paths/admin_order-edits_{id}_items_{item_id}.yaml + /admin/order-edits/{id}/request: + $ref: paths/admin_order-edits_{id}_request.yaml + /admin/orders: + $ref: paths/admin_orders.yaml + /admin/orders/{id}: + $ref: paths/admin_orders_{id}.yaml + /admin/orders/{id}/archive: + $ref: paths/admin_orders_{id}_archive.yaml + /admin/orders/{id}/cancel: + $ref: paths/admin_orders_{id}_cancel.yaml + /admin/orders/{id}/capture: + $ref: paths/admin_orders_{id}_capture.yaml + /admin/orders/{id}/claims: + $ref: paths/admin_orders_{id}_claims.yaml + /admin/orders/{id}/claims/{claim_id}: + $ref: paths/admin_orders_{id}_claims_{claim_id}.yaml + /admin/orders/{id}/claims/{claim_id}/cancel: + $ref: paths/admin_orders_{id}_claims_{claim_id}_cancel.yaml + /admin/orders/{id}/claims/{claim_id}/fulfillments: + $ref: paths/admin_orders_{id}_claims_{claim_id}_fulfillments.yaml + /admin/orders/{id}/claims/{claim_id}/fulfillments/{fulfillment_id}/cancel: $ref: >- - paths/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml - /orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel: + paths/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml + /admin/orders/{id}/claims/{claim_id}/shipments: + $ref: paths/admin_orders_{id}_claims_{claim_id}_shipments.yaml + /admin/orders/{id}/complete: + $ref: paths/admin_orders_{id}_complete.yaml + /admin/orders/{id}/fulfillment: + $ref: paths/admin_orders_{id}_fulfillment.yaml + /admin/orders/{id}/fulfillments/{fulfillment_id}/cancel: + $ref: paths/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml + /admin/orders/{id}/line-items/{line_item_id}/reserve: + $ref: paths/admin_orders_{id}_line-items_{line_item_id}_reserve.yaml + /admin/orders/{id}/refund: + $ref: paths/admin_orders_{id}_refund.yaml + /admin/orders/{id}/reservations: + $ref: paths/admin_orders_{id}_reservations.yaml + /admin/orders/{id}/return: + $ref: paths/admin_orders_{id}_return.yaml + /admin/orders/{id}/shipment: + $ref: paths/admin_orders_{id}_shipment.yaml + /admin/orders/{id}/shipping-methods: + $ref: paths/admin_orders_{id}_shipping-methods.yaml + /admin/orders/{id}/swaps: + $ref: paths/admin_orders_{id}_swaps.yaml + /admin/orders/{id}/swaps/{swap_id}/cancel: + $ref: paths/admin_orders_{id}_swaps_{swap_id}_cancel.yaml + /admin/orders/{id}/swaps/{swap_id}/fulfillments: + $ref: paths/admin_orders_{id}_swaps_{swap_id}_fulfillments.yaml + /admin/orders/{id}/swaps/{swap_id}/fulfillments/{fulfillment_id}/cancel: $ref: >- - paths/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml - /orders/{id}/fulfillments/{fulfillment_id}/cancel: - $ref: paths/orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml - /orders/{id}/cancel: - $ref: paths/orders_{id}_cancel.yaml - /orders/{id}/swaps/{swap_id}/cancel: - $ref: paths/orders_{id}_swaps_{swap_id}_cancel.yaml - /orders/{id}/capture: - $ref: paths/orders_{id}_capture.yaml - /orders/{id}/complete: - $ref: paths/orders_{id}_complete.yaml - /orders/{id}/claims/{claim_id}/shipments: - $ref: paths/orders_{id}_claims_{claim_id}_shipments.yaml - /order/{id}/claims: - $ref: paths/order_{id}_claims.yaml - /orders/{id}/fulfillment: - $ref: paths/orders_{id}_fulfillment.yaml - /orders/{id}/line-items/{line_item_id}/reserve: - $ref: paths/orders_{id}_line-items_{line_item_id}_reserve.yaml - /orders/{id}/shipment: - $ref: paths/orders_{id}_shipment.yaml - /orders/{id}/swaps/{swap_id}/shipments: - $ref: paths/orders_{id}_swaps_{swap_id}_shipments.yaml - /order/{id}/swaps: - $ref: paths/order_{id}_swaps.yaml - /orders/{id}/claims/{claim_id}/fulfillments: - $ref: paths/orders_{id}_claims_{claim_id}_fulfillments.yaml - /orders/{id}/swaps/{swap_id}/fulfillments: - $ref: paths/orders_{id}_swaps_{swap_id}_fulfillments.yaml - /orders/{id}: - $ref: paths/orders_{id}.yaml - /orders/{id}/reservations: - $ref: paths/orders_{id}_reservations.yaml - /orders: - $ref: paths/orders.yaml - /orders/{id}/swaps/{swap_id}/process-payment: - $ref: paths/orders_{id}_swaps_{swap_id}_process-payment.yaml - /orders/{id}/refund: - $ref: paths/orders_{id}_refund.yaml - /orders/{id}/return: - $ref: paths/orders_{id}_return.yaml - /order/{id}/claims/{claim_id}: - $ref: paths/order_{id}_claims_{claim_id}.yaml - /payment-collections/{id}: - $ref: paths/payment-collections_{id}.yaml - /payment-collections/{id}/authorize: - $ref: paths/payment-collections_{id}_authorize.yaml - /payments/{id}/capture: - $ref: paths/payments_{id}_capture.yaml - /payments/{id}: - $ref: paths/payments_{id}.yaml - /payments/{id}/refund: - $ref: paths/payments_{id}_refund.yaml - /price-lists/{id}/prices/batch: - $ref: paths/price-lists_{id}_prices_batch.yaml - /price-lists: - $ref: paths/price-lists.yaml - /price-lists/{id}: - $ref: paths/price-lists_{id}.yaml - /price-lists/{id}/products/{product_id}/prices: - $ref: paths/price-lists_{id}_products_{product_id}_prices.yaml - /price-lists/{id}/variants/{variant_id}/prices: - $ref: paths/price-lists_{id}_variants_{variant_id}_prices.yaml - /price-lists/{id}/products: - $ref: paths/price-lists_{id}_products.yaml - /product-categories/{id}/products/batch: - $ref: paths/product-categories_{id}_products_batch.yaml - /product-categories: - $ref: paths/product-categories.yaml - /product-categories/{id}: - $ref: paths/product-categories_{id}.yaml - /product-tags: - $ref: paths/product-tags.yaml - /product-types: - $ref: paths/product-types.yaml - /products/{id}/options: - $ref: paths/products_{id}_options.yaml - /products: - $ref: paths/products.yaml - /products/{id}/variants: - $ref: paths/products_{id}_variants.yaml - /products/{id}/options/{option_id}: - $ref: paths/products_{id}_options_{option_id}.yaml - /products/{id}: - $ref: paths/products_{id}.yaml - /products/{id}/variants/{variant_id}: - $ref: paths/products_{id}_variants_{variant_id}.yaml - /products/tag-usage: - $ref: paths/products_tag-usage.yaml - /products/types: - $ref: paths/products_types.yaml - /products/{id}/metadata: - $ref: paths/products_{id}_metadata.yaml - /publishable-api-keys/{id}/sales-channels/batch: - $ref: paths/publishable-api-keys_{id}_sales-channels_batch.yaml - /publishable-api-keys: - $ref: paths/publishable-api-keys.yaml - /publishable-api-keys/{id}: - $ref: paths/publishable-api-keys_{id}.yaml - /publishable-api-keys/{id}/sales-channels: - $ref: paths/publishable-api-keys_{id}_sales-channels.yaml - /publishable-api-keys/{id}/revoke: - $ref: paths/publishable-api-keys_{id}_revoke.yaml - /publishable-api-key/{id}: - $ref: paths/publishable-api-key_{id}.yaml - /regions/{id}/countries: - $ref: paths/regions_{id}_countries.yaml - /regions/{id}/fulfillment-providers: - $ref: paths/regions_{id}_fulfillment-providers.yaml - /regions/{id}/payment-providers: - $ref: paths/regions_{id}_payment-providers.yaml - /regions: - $ref: paths/regions.yaml - /regions/{id}: - $ref: paths/regions_{id}.yaml - /regions/{id}/fulfillment-options: - $ref: paths/regions_{id}_fulfillment-options.yaml - /regions/{id}/countries/{country_code}: - $ref: paths/regions_{id}_countries_{country_code}.yaml - /regions/{id}/fulfillment-providers/{provider_id}: - $ref: paths/regions_{id}_fulfillment-providers_{provider_id}.yaml - /regions/{id}/payment-providers/{provider_id}: - $ref: paths/regions_{id}_payment-providers_{provider_id}.yaml - /reservations: - $ref: paths/reservations.yaml - /reservations/{id}: - $ref: paths/reservations_{id}.yaml - /return-reasons: - $ref: paths/return-reasons.yaml - /return-reasons/{id}: - $ref: paths/return-reasons_{id}.yaml - /returns/{id}/cancel: - $ref: paths/returns_{id}_cancel.yaml - /returns: - $ref: paths/returns.yaml - /returns/{id}/receive: - $ref: paths/returns_{id}_receive.yaml - /sales-channels/{id}/products/batch: - $ref: paths/sales-channels_{id}_products_batch.yaml - /sales-channels/{id}/stock-locations: - $ref: paths/sales-channels_{id}_stock-locations.yaml - /sales-channels: - $ref: paths/sales-channels.yaml - /sales-channels/{id}: - $ref: paths/sales-channels_{id}.yaml - /shipping-options: - $ref: paths/shipping-options.yaml - /shipping-options/{id}: - $ref: paths/shipping-options_{id}.yaml - /shipping-profiles: - $ref: paths/shipping-profiles.yaml - /shipping-profiles/{id}: - $ref: paths/shipping-profiles_{id}.yaml - /stock-locations: - $ref: paths/stock-locations.yaml - /stock-locations/{id}: - $ref: paths/stock-locations_{id}.yaml - /store/currencies/{code}: - $ref: paths/store_currencies_{code}.yaml - /store: - $ref: paths/store.yaml - /store/payment-providers: - $ref: paths/store_payment-providers.yaml - /store/tax-providers: - $ref: paths/store_tax-providers.yaml - /swaps/{id}: - $ref: paths/swaps_{id}.yaml - /swaps: - $ref: paths/swaps.yaml - /tax-rates/{id}/product-types/batch: - $ref: paths/tax-rates_{id}_product-types_batch.yaml - /tax-rates/{id}/products/batch: - $ref: paths/tax-rates_{id}_products_batch.yaml - /tax-rates/{id}/shipping-options/batch: - $ref: paths/tax-rates_{id}_shipping-options_batch.yaml - /tax-rates: - $ref: paths/tax-rates.yaml - /tax-rates/{id}: - $ref: paths/tax-rates_{id}.yaml - /uploads/protected: - $ref: paths/uploads_protected.yaml - /uploads: - $ref: paths/uploads.yaml - /uploads/download-url: - $ref: paths/uploads_download-url.yaml - /users: - $ref: paths/users.yaml - /users/{id}: - $ref: paths/users_{id}.yaml - /users/password-token: - $ref: paths/users_password-token.yaml - /users/reset-password: - $ref: paths/users_reset-password.yaml - /variants/{id}/inventory: - $ref: paths/variants_{id}_inventory.yaml - /variants: - $ref: paths/variants.yaml + paths/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml + /admin/orders/{id}/swaps/{swap_id}/process-payment: + $ref: paths/admin_orders_{id}_swaps_{swap_id}_process-payment.yaml + /admin/orders/{id}/swaps/{swap_id}/shipments: + $ref: paths/admin_orders_{id}_swaps_{swap_id}_shipments.yaml + /admin/payment-collections/{id}: + $ref: paths/admin_payment-collections_{id}.yaml + /admin/payment-collections/{id}/authorize: + $ref: paths/admin_payment-collections_{id}_authorize.yaml + /admin/payments/{id}: + $ref: paths/admin_payments_{id}.yaml + /admin/payments/{id}/capture: + $ref: paths/admin_payments_{id}_capture.yaml + /admin/payments/{id}/refund: + $ref: paths/admin_payments_{id}_refund.yaml + /admin/price-lists: + $ref: paths/admin_price-lists.yaml + /admin/price-lists/{id}: + $ref: paths/admin_price-lists_{id}.yaml + /admin/price-lists/{id}/prices/batch: + $ref: paths/admin_price-lists_{id}_prices_batch.yaml + /admin/price-lists/{id}/products: + $ref: paths/admin_price-lists_{id}_products.yaml + /admin/price-lists/{id}/products/{product_id}/prices: + $ref: paths/admin_price-lists_{id}_products_{product_id}_prices.yaml + /admin/price-lists/{id}/variants/{variant_id}/prices: + $ref: paths/admin_price-lists_{id}_variants_{variant_id}_prices.yaml + /admin/product-categories: + $ref: paths/admin_product-categories.yaml + /admin/product-categories/{id}: + $ref: paths/admin_product-categories_{id}.yaml + /admin/product-categories/{id}/products/batch: + $ref: paths/admin_product-categories_{id}_products_batch.yaml + /admin/product-tags: + $ref: paths/admin_product-tags.yaml + /admin/product-types: + $ref: paths/admin_product-types.yaml + /admin/products: + $ref: paths/admin_products.yaml + /admin/products/tag-usage: + $ref: paths/admin_products_tag-usage.yaml + /admin/products/types: + $ref: paths/admin_products_types.yaml + /admin/products/{id}: + $ref: paths/admin_products_{id}.yaml + /admin/products/{id}/metadata: + $ref: paths/admin_products_{id}_metadata.yaml + /admin/products/{id}/options: + $ref: paths/admin_products_{id}_options.yaml + /admin/products/{id}/options/{option_id}: + $ref: paths/admin_products_{id}_options_{option_id}.yaml + /admin/products/{id}/variants: + $ref: paths/admin_products_{id}_variants.yaml + /admin/products/{id}/variants/{variant_id}: + $ref: paths/admin_products_{id}_variants_{variant_id}.yaml + /admin/publishable-api-key/{id}: + $ref: paths/admin_publishable-api-key_{id}.yaml + /admin/publishable-api-keys: + $ref: paths/admin_publishable-api-keys.yaml + /admin/publishable-api-keys/{id}: + $ref: paths/admin_publishable-api-keys_{id}.yaml + /admin/publishable-api-keys/{id}/revoke: + $ref: paths/admin_publishable-api-keys_{id}_revoke.yaml + /admin/publishable-api-keys/{id}/sales-channels: + $ref: paths/admin_publishable-api-keys_{id}_sales-channels.yaml + /admin/publishable-api-keys/{id}/sales-channels/batch: + $ref: paths/admin_publishable-api-keys_{id}_sales-channels_batch.yaml + /admin/regions: + $ref: paths/admin_regions.yaml + /admin/regions/{id}: + $ref: paths/admin_regions_{id}.yaml + /admin/regions/{id}/countries: + $ref: paths/admin_regions_{id}_countries.yaml + /admin/regions/{id}/countries/{country_code}: + $ref: paths/admin_regions_{id}_countries_{country_code}.yaml + /admin/regions/{id}/fulfillment-options: + $ref: paths/admin_regions_{id}_fulfillment-options.yaml + /admin/regions/{id}/fulfillment-providers: + $ref: paths/admin_regions_{id}_fulfillment-providers.yaml + /admin/regions/{id}/fulfillment-providers/{provider_id}: + $ref: paths/admin_regions_{id}_fulfillment-providers_{provider_id}.yaml + /admin/regions/{id}/payment-providers: + $ref: paths/admin_regions_{id}_payment-providers.yaml + /admin/regions/{id}/payment-providers/{provider_id}: + $ref: paths/admin_regions_{id}_payment-providers_{provider_id}.yaml + /admin/reservations: + $ref: paths/admin_reservations.yaml + /admin/reservations/{id}: + $ref: paths/admin_reservations_{id}.yaml + /admin/return-reasons: + $ref: paths/admin_return-reasons.yaml + /admin/return-reasons/{id}: + $ref: paths/admin_return-reasons_{id}.yaml + /admin/returns: + $ref: paths/admin_returns.yaml + /admin/returns/{id}/cancel: + $ref: paths/admin_returns_{id}_cancel.yaml + /admin/returns/{id}/receive: + $ref: paths/admin_returns_{id}_receive.yaml + /admin/sales-channels: + $ref: paths/admin_sales-channels.yaml + /admin/sales-channels/{id}: + $ref: paths/admin_sales-channels_{id}.yaml + /admin/sales-channels/{id}/products/batch: + $ref: paths/admin_sales-channels_{id}_products_batch.yaml + /admin/sales-channels/{id}/stock-locations: + $ref: paths/admin_sales-channels_{id}_stock-locations.yaml + /admin/shipping-options: + $ref: paths/admin_shipping-options.yaml + /admin/shipping-options/{id}: + $ref: paths/admin_shipping-options_{id}.yaml + /admin/shipping-profiles: + $ref: paths/admin_shipping-profiles.yaml + /admin/shipping-profiles/{id}: + $ref: paths/admin_shipping-profiles_{id}.yaml + /admin/stock-locations: + $ref: paths/admin_stock-locations.yaml + /admin/stock-locations/{id}: + $ref: paths/admin_stock-locations_{id}.yaml + /admin/store: + $ref: paths/admin_store.yaml + /admin/store/currencies/{code}: + $ref: paths/admin_store_currencies_{code}.yaml + /admin/store/payment-providers: + $ref: paths/admin_store_payment-providers.yaml + /admin/store/tax-providers: + $ref: paths/admin_store_tax-providers.yaml + /admin/swaps: + $ref: paths/admin_swaps.yaml + /admin/swaps/{id}: + $ref: paths/admin_swaps_{id}.yaml + /admin/tax-rates: + $ref: paths/admin_tax-rates.yaml + /admin/tax-rates/{id}: + $ref: paths/admin_tax-rates_{id}.yaml + /admin/tax-rates/{id}/product-types/batch: + $ref: paths/admin_tax-rates_{id}_product-types_batch.yaml + /admin/tax-rates/{id}/products/batch: + $ref: paths/admin_tax-rates_{id}_products_batch.yaml + /admin/tax-rates/{id}/shipping-options/batch: + $ref: paths/admin_tax-rates_{id}_shipping-options_batch.yaml + /admin/uploads: + $ref: paths/admin_uploads.yaml + /admin/uploads/download-url: + $ref: paths/admin_uploads_download-url.yaml + /admin/uploads/protected: + $ref: paths/admin_uploads_protected.yaml + /admin/users: + $ref: paths/admin_users.yaml + /admin/users/password-token: + $ref: paths/admin_users_password-token.yaml + /admin/users/reset-password: + $ref: paths/admin_users_reset-password.yaml + /admin/users/{id}: + $ref: paths/admin_users_{id}.yaml + /admin/variants: + $ref: paths/admin_variants.yaml + /admin/variants/{id}: + $ref: paths/admin_variants_{id}.yaml + /admin/variants/{id}/inventory: + $ref: paths/admin_variants_{id}_inventory.yaml components: securitySchemes: api_token: diff --git a/docs/api/admin/paths/apps.yaml b/docs/api/admin/paths/admin_apps.yaml similarity index 92% rename from docs/api/admin/paths/apps.yaml rename to docs/api/admin/paths/admin_apps.yaml index e92bf91ab2..9c99d37b74 100644 --- a/docs/api/admin/paths/apps.yaml +++ b/docs/api/admin/paths/admin_apps.yaml @@ -9,12 +9,12 @@ get: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/apps/get.sh + $ref: ../code_samples/Shell/admin_apps/get.sh security: - api_token: [] - cookie_auth: [] tags: - - App + - Apps responses: '200': description: OK diff --git a/docs/api/admin/paths/apps_authorizations.yaml b/docs/api/admin/paths/admin_apps_authorizations.yaml similarity index 92% rename from docs/api/admin/paths/apps_authorizations.yaml rename to docs/api/admin/paths/admin_apps_authorizations.yaml index bea62545f4..92d46e9a8d 100644 --- a/docs/api/admin/paths/apps_authorizations.yaml +++ b/docs/api/admin/paths/admin_apps_authorizations.yaml @@ -14,12 +14,12 @@ post: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/apps_authorizations/post.sh + $ref: ../code_samples/Shell/admin_apps_authorizations/post.sh security: - api_token: [] - cookie_auth: [] tags: - - App + - Apps responses: '200': description: OK diff --git a/docs/api/admin/paths/auth.yaml b/docs/api/admin/paths/admin_auth.yaml similarity index 89% rename from docs/api/admin/paths/auth.yaml rename to docs/api/admin/paths/admin_auth.yaml index 9e69305fc7..295f934faa 100644 --- a/docs/api/admin/paths/auth.yaml +++ b/docs/api/admin/paths/admin_auth.yaml @@ -1,3 +1,43 @@ +get: + operationId: GetAuth + summary: Get Current User + x-authenticated: true + description: Gets the currently logged in User. + x-codegen: + method: getSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_auth/get.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_auth/get.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminAuthRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml post: operationId: PostAuth summary: User Login @@ -25,11 +65,11 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/auth/post.js + $ref: ../code_samples/JavaScript/admin_auth/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/auth/post.sh + $ref: ../code_samples/Shell/admin_auth/post.sh tags: - Auth responses: @@ -62,11 +102,11 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/auth/delete.js + $ref: ../code_samples/JavaScript/admin_auth/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/auth/delete.sh + $ref: ../code_samples/Shell/admin_auth/delete.sh security: - api_token: [] - cookie_auth: [] @@ -87,43 +127,3 @@ delete: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml -get: - operationId: GetAuth - summary: Get Current User - x-authenticated: true - description: Gets the currently logged in User. - x-codegen: - method: getSession - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/auth/get.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/auth/get.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Auth - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminAuthRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/batch-jobs.yaml b/docs/api/admin/paths/admin_batch-jobs.yaml similarity index 96% rename from docs/api/admin/paths/batch-jobs.yaml rename to docs/api/admin/paths/admin_batch-jobs.yaml index b970ce2cc4..a8cbf79f4e 100644 --- a/docs/api/admin/paths/batch-jobs.yaml +++ b/docs/api/admin/paths/admin_batch-jobs.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostBatchJobs - summary: Create a Batch Job - description: Creates a Batch Job. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostBatchesReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/batch-jobs/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/batch-jobs/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Batch Job - responses: - '201': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminBatchJobRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetBatchJobs summary: List Batch Jobs @@ -291,16 +246,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/batch-jobs/get.js + $ref: ../code_samples/JavaScript/admin_batch-jobs/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/batch-jobs/get.sh + $ref: ../code_samples/Shell/admin_batch-jobs/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Batch Job + - Batch Jobs responses: '200': description: OK @@ -320,3 +275,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostBatchJobs + summary: Create a Batch Job + description: Creates a Batch Job. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostBatchesReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_batch-jobs/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_batch-jobs/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Batch Jobs + responses: + '201': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminBatchJobRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/batch-jobs_{id}.yaml b/docs/api/admin/paths/admin_batch-jobs_{id}.yaml similarity index 87% rename from docs/api/admin/paths/batch-jobs_{id}.yaml rename to docs/api/admin/paths/admin_batch-jobs_{id}.yaml index c1c6c734d2..5e263ffaa2 100644 --- a/docs/api/admin/paths/batch-jobs_{id}.yaml +++ b/docs/api/admin/paths/admin_batch-jobs_{id}.yaml @@ -16,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/batch-jobs_{id}/get.js + $ref: ../code_samples/JavaScript/admin_batch-jobs_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/batch-jobs_{id}/get.sh + $ref: ../code_samples/Shell/admin_batch-jobs_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Batch Job + - Batch Jobs responses: '200': description: OK diff --git a/docs/api/admin/paths/batch-jobs_{id}_cancel.yaml b/docs/api/admin/paths/admin_batch-jobs_{id}_cancel.yaml similarity index 86% rename from docs/api/admin/paths/batch-jobs_{id}_cancel.yaml rename to docs/api/admin/paths/admin_batch-jobs_{id}_cancel.yaml index cbd64a2c17..52b2f5c913 100644 --- a/docs/api/admin/paths/batch-jobs_{id}_cancel.yaml +++ b/docs/api/admin/paths/admin_batch-jobs_{id}_cancel.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/batch-jobs_{id}_cancel/post.js + $ref: ../code_samples/JavaScript/admin_batch-jobs_{id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/batch-jobs_{id}_cancel/post.sh + $ref: ../code_samples/Shell/admin_batch-jobs_{id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Batch Job + - Batch Jobs responses: '200': description: OK diff --git a/docs/api/admin/paths/batch-jobs_{id}_confirm.yaml b/docs/api/admin/paths/admin_batch-jobs_{id}_confirm.yaml similarity index 86% rename from docs/api/admin/paths/batch-jobs_{id}_confirm.yaml rename to docs/api/admin/paths/admin_batch-jobs_{id}_confirm.yaml index 96b445516e..495a937aac 100644 --- a/docs/api/admin/paths/batch-jobs_{id}_confirm.yaml +++ b/docs/api/admin/paths/admin_batch-jobs_{id}_confirm.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/batch-jobs_{id}_confirm/post.js + $ref: ../code_samples/JavaScript/admin_batch-jobs_{id}_confirm/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/batch-jobs_{id}_confirm/post.sh + $ref: ../code_samples/Shell/admin_batch-jobs_{id}_confirm/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Batch Job + - Batch Jobs responses: '200': description: OK diff --git a/docs/api/admin/paths/collections.yaml b/docs/api/admin/paths/admin_collections.yaml similarity index 94% rename from docs/api/admin/paths/collections.yaml rename to docs/api/admin/paths/admin_collections.yaml index 2e8818121f..f5880e9cdb 100644 --- a/docs/api/admin/paths/collections.yaml +++ b/docs/api/admin/paths/admin_collections.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostCollections - summary: Create a Collection - description: Creates a Product Collection. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostCollectionsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/collections/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/collections/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Collection - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminCollectionsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetCollections summary: List Collections @@ -154,16 +109,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/collections/get.js + $ref: ../code_samples/JavaScript/admin_collections/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections/get.sh + $ref: ../code_samples/Shell/admin_collections/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Collection + - Collections responses: '200': description: OK @@ -183,3 +138,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostCollections + summary: Create a Collection + description: Creates a Product Collection. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostCollectionsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_collections/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_collections/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminCollectionsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/collections_{id}.yaml b/docs/api/admin/paths/admin_collections_{id}.yaml similarity index 87% rename from docs/api/admin/paths/collections_{id}.yaml rename to docs/api/admin/paths/admin_collections_{id}.yaml index b3add7d148..00be96a064 100644 --- a/docs/api/admin/paths/collections_{id}.yaml +++ b/docs/api/admin/paths/admin_collections_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteCollectionsCollection - summary: Delete a Collection - description: Deletes a Product Collection. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Collection. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/collections_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/collections_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Collection - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminCollectionsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetCollectionsCollection summary: Get a Collection @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/collections_{id}/get.js + $ref: ../code_samples/JavaScript/admin_collections_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections_{id}/get.sh + $ref: ../code_samples/Shell/admin_collections_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Collection + - Collections responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/collections_{id}/post.js + $ref: ../code_samples/JavaScript/admin_collections_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections_{id}/post.sh + $ref: ../code_samples/Shell/admin_collections_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Collection + - Collections responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteCollectionsCollection + summary: Delete a Collection + description: Deletes a Product Collection. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Collection. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_collections_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_collections_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminCollectionsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/collections_{id}_products_batch.yaml b/docs/api/admin/paths/admin_collections_{id}_products_batch.yaml similarity index 92% rename from docs/api/admin/paths/collections_{id}_products_batch.yaml rename to docs/api/admin/paths/admin_collections_{id}_products_batch.yaml index 1746b6ccbe..284840f648 100644 --- a/docs/api/admin/paths/collections_{id}_products_batch.yaml +++ b/docs/api/admin/paths/admin_collections_{id}_products_batch.yaml @@ -21,12 +21,12 @@ post: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections_{id}_products_batch/post.sh + $ref: ../code_samples/Shell/admin_collections_{id}_products_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Collection + - Collections responses: '200': description: OK @@ -69,12 +69,12 @@ delete: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections_{id}_products_batch/delete.sh + $ref: ../code_samples/Shell/admin_collections_{id}_products_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Collection + - Collections responses: '200': description: OK diff --git a/docs/api/admin/paths/currencies.yaml b/docs/api/admin/paths/admin_currencies.yaml similarity index 89% rename from docs/api/admin/paths/currencies.yaml rename to docs/api/admin/paths/admin_currencies.yaml index 56afc700eb..fa5fc77506 100644 --- a/docs/api/admin/paths/currencies.yaml +++ b/docs/api/admin/paths/admin_currencies.yaml @@ -38,13 +38,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/currencies/get.js + $ref: ../code_samples/JavaScript/admin_currencies/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/currencies/get.sh + $ref: ../code_samples/Shell/admin_currencies/get.sh tags: - - Currency + - Currencies responses: '200': description: OK diff --git a/docs/api/admin/paths/currencies_{code}.yaml b/docs/api/admin/paths/admin_currencies_{code}.yaml similarity index 82% rename from docs/api/admin/paths/currencies_{code}.yaml rename to docs/api/admin/paths/admin_currencies_{code}.yaml index f059541bae..948e4e274b 100644 --- a/docs/api/admin/paths/currencies_{code}.yaml +++ b/docs/api/admin/paths/admin_currencies_{code}.yaml @@ -21,13 +21,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/currencies_{code}/post.js + $ref: ../code_samples/JavaScript/admin_currencies_{code}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/currencies_{code}/post.sh + $ref: ../code_samples/Shell/admin_currencies_{code}/post.sh tags: - - Currency + - Currencies responses: '200': description: OK diff --git a/docs/api/admin/paths/customer-groups.yaml b/docs/api/admin/paths/admin_customer-groups.yaml similarity index 94% rename from docs/api/admin/paths/customer-groups.yaml rename to docs/api/admin/paths/admin_customer-groups.yaml index 34919b4e7d..fb9d06d938 100644 --- a/docs/api/admin/paths/customer-groups.yaml +++ b/docs/api/admin/paths/admin_customer-groups.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostCustomerGroups - summary: Create a Customer Group - description: Creates a CustomerGroup. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostCustomerGroupsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/customer-groups/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/customer-groups/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Customer Group - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminCustomerGroupsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetCustomerGroups summary: List Customer Groups @@ -172,16 +127,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customer-groups/get.js + $ref: ../code_samples/JavaScript/admin_customer-groups/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups/get.sh + $ref: ../code_samples/Shell/admin_customer-groups/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK @@ -201,3 +156,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostCustomerGroups + summary: Create a Customer Group + description: Creates a CustomerGroup. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostCustomerGroupsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_customer-groups/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_customer-groups/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminCustomerGroupsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/customer-groups_{id}.yaml b/docs/api/admin/paths/admin_customer-groups_{id}.yaml similarity index 88% rename from docs/api/admin/paths/customer-groups_{id}.yaml rename to docs/api/admin/paths/admin_customer-groups_{id}.yaml index 3dce0d500f..8cf327bc8f 100644 --- a/docs/api/admin/paths/customer-groups_{id}.yaml +++ b/docs/api/admin/paths/admin_customer-groups_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteCustomerGroupsCustomerGroup - summary: Delete a Customer Group - description: Deletes a CustomerGroup. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Customer Group - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/customer-groups_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/customer-groups_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Customer Group - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminCustomerGroupsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetCustomerGroupsGroup summary: Get a Customer Group @@ -74,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customer-groups_{id}/get.js + $ref: ../code_samples/JavaScript/admin_customer-groups_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups_{id}/get.sh + $ref: ../code_samples/Shell/admin_customer-groups_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK @@ -126,16 +79,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customer-groups_{id}/post.js + $ref: ../code_samples/JavaScript/admin_customer-groups_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups_{id}/post.sh + $ref: ../code_samples/Shell/admin_customer-groups_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK @@ -155,3 +108,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteCustomerGroupsCustomerGroup + summary: Delete a Customer Group + description: Deletes a CustomerGroup. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Customer Group + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_customer-groups_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_customer-groups_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customer Groups + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminCustomerGroupsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/customer-groups_{id}_customers.yaml b/docs/api/admin/paths/admin_customer-groups_{id}_customers.yaml similarity index 90% rename from docs/api/admin/paths/customer-groups_{id}_customers.yaml rename to docs/api/admin/paths/admin_customer-groups_{id}_customers.yaml index 9b6fbb1483..6e431ac4e5 100644 --- a/docs/api/admin/paths/customer-groups_{id}_customers.yaml +++ b/docs/api/admin/paths/admin_customer-groups_{id}_customers.yaml @@ -39,16 +39,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customer-groups_{id}_customers/get.js + $ref: ../code_samples/JavaScript/admin_customer-groups_{id}_customers/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups_{id}_customers/get.sh + $ref: ../code_samples/Shell/admin_customer-groups_{id}_customers/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK diff --git a/docs/api/admin/paths/customer-groups_{id}_customers_batch.yaml b/docs/api/admin/paths/admin_customer-groups_{id}_customers_batch.yaml similarity index 86% rename from docs/api/admin/paths/customer-groups_{id}_customers_batch.yaml rename to docs/api/admin/paths/admin_customer-groups_{id}_customers_batch.yaml index 2d30363b1e..098537631c 100644 --- a/docs/api/admin/paths/customer-groups_{id}_customers_batch.yaml +++ b/docs/api/admin/paths/admin_customer-groups_{id}_customers_batch.yaml @@ -23,16 +23,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/customer-groups_{id}_customers_batch/post.js + ../code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups_{id}_customers_batch/post.sh + $ref: >- + ../code_samples/Shell/admin_customer-groups_{id}_customers_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK @@ -77,16 +78,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/customer-groups_{id}_customers_batch/delete.js + ../code_samples/JavaScript/admin_customer-groups_{id}_customers_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customer-groups_{id}_customers_batch/delete.sh + $ref: >- + ../code_samples/Shell/admin_customer-groups_{id}_customers_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer Group + - Customer Groups responses: '200': description: OK diff --git a/docs/api/admin/paths/customers.yaml b/docs/api/admin/paths/admin_customers.yaml similarity index 90% rename from docs/api/admin/paths/customers.yaml rename to docs/api/admin/paths/admin_customers.yaml index 329b08921d..ca668a7b00 100644 --- a/docs/api/admin/paths/customers.yaml +++ b/docs/api/admin/paths/admin_customers.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostCustomers - summary: Create a Customer - description: Creates a Customer. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostCustomersReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/customers/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/customers/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Customer - responses: - '201': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminCustomersRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetCustomers summary: List Customers @@ -78,16 +33,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers/get.js + $ref: ../code_samples/JavaScript/admin_customers/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers/get.sh + $ref: ../code_samples/Shell/admin_customers/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK @@ -107,3 +62,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostCustomers + summary: Create a Customer + description: Creates a Customer. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostCustomersReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_customers/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_customers/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Customers + responses: + '201': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminCustomersRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/customers_{id}.yaml b/docs/api/admin/paths/admin_customers_{id}.yaml similarity index 90% rename from docs/api/admin/paths/customers_{id}.yaml rename to docs/api/admin/paths/admin_customers_{id}.yaml index bbd0e2c8a5..8ec560bb02 100644 --- a/docs/api/admin/paths/customers_{id}.yaml +++ b/docs/api/admin/paths/admin_customers_{id}.yaml @@ -26,16 +26,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_{id}/get.js + $ref: ../code_samples/JavaScript/admin_customers_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_{id}/get.sh + $ref: ../code_samples/Shell/admin_customers_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK @@ -88,16 +88,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_{id}/post.js + $ref: ../code_samples/JavaScript/admin_customers_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_{id}/post.sh + $ref: ../code_samples/Shell/admin_customers_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts.yaml b/docs/api/admin/paths/admin_discounts.yaml similarity index 93% rename from docs/api/admin/paths/discounts.yaml rename to docs/api/admin/paths/admin_discounts.yaml index c9fe101596..183b683690 100644 --- a/docs/api/admin/paths/discounts.yaml +++ b/docs/api/admin/paths/admin_discounts.yaml @@ -1,62 +1,3 @@ -post: - operationId: PostDiscounts - summary: Creates a Discount - x-authenticated: true - description: >- - Creates a Discount with a given set of rules that define how the Discount - behaves. - parameters: - - in: query - name: expand - description: (Comma separated) Which fields should be expanded in the results. - schema: - type: string - - in: query - name: fields - description: (Comma separated) Which fields should be retrieved in the results. - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostDiscountsReq.yaml - x-codegen: - method: create - queryParams: AdminPostDiscountsParams - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/discounts/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/discounts/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Discount - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDiscountsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetDiscounts summary: List Discounts @@ -126,16 +67,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts/get.js + $ref: ../code_samples/JavaScript/admin_discounts/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts/get.sh + $ref: ../code_samples/Shell/admin_discounts/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK @@ -155,3 +96,62 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostDiscounts + summary: Creates a Discount + x-authenticated: true + description: >- + Creates a Discount with a given set of rules that define how the Discount + behaves. + parameters: + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the results. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostDiscountsReq.yaml + x-codegen: + method: create + queryParams: AdminPostDiscountsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_discounts/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_discounts/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDiscountsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/discounts_code_{code}.yaml b/docs/api/admin/paths/admin_discounts_code_{code}.yaml similarity index 89% rename from docs/api/admin/paths/discounts_code_{code}.yaml rename to docs/api/admin/paths/admin_discounts_code_{code}.yaml index ad838dd144..2e318cc8c7 100644 --- a/docs/api/admin/paths/discounts_code_{code}.yaml +++ b/docs/api/admin/paths/admin_discounts_code_{code}.yaml @@ -27,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_code_{code}/get.js + $ref: ../code_samples/JavaScript/admin_discounts_code_{code}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_code_{code}/get.sh + $ref: ../code_samples/Shell/admin_discounts_code_{code}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts_{discount_id}_conditions.yaml b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions.yaml similarity index 89% rename from docs/api/admin/paths/discounts_{discount_id}_conditions.yaml rename to docs/api/admin/paths/admin_discounts_{discount_id}_conditions.yaml index eda9816633..8062ba9ac6 100644 --- a/docs/api/admin/paths/discounts_{discount_id}_conditions.yaml +++ b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions.yaml @@ -39,16 +39,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_{discount_id}_conditions/post.js + $ref: >- + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{discount_id}_conditions/post.sh + $ref: ../code_samples/Shell/admin_discounts_{discount_id}_conditions/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount Condition + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}.yaml b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}.yaml similarity index 89% rename from docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}.yaml rename to docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}.yaml index 5501701835..ea496cba7f 100644 --- a/docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}.yaml +++ b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}.yaml @@ -1,69 +1,3 @@ -delete: - operationId: DeleteDiscountsDiscountConditionsCondition - summary: Delete a Condition - description: Deletes a DiscountCondition - x-authenticated: true - parameters: - - in: path - name: discount_id - required: true - description: The ID of the Discount - schema: - type: string - - in: path - name: condition_id - required: true - description: The ID of the DiscountCondition - schema: - type: string - - in: query - name: expand - description: Comma separated list of relations to include in the results. - schema: - type: string - - in: query - name: fields - description: Comma separated list of fields to include in the results. - schema: - type: string - x-codegen: - method: deleteCondition - queryParams: AdminDeleteDiscountsDiscountConditionsConditionParams - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: >- - ../code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Discount Condition - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDiscountConditionsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetDiscountsDiscountConditionsCondition summary: Get a Condition @@ -100,17 +34,17 @@ get: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/get.js + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/get.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/get.sh + ../code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount Condition + - Discounts responses: '200': description: OK @@ -179,17 +113,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}/post.js + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}/post.sh + ../code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK @@ -209,3 +143,69 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteDiscountsDiscountConditionsCondition + summary: Delete a Condition + description: Deletes a DiscountCondition + x-authenticated: true + parameters: + - in: path + name: discount_id + required: true + description: The ID of the Discount + schema: + type: string + - in: path + name: condition_id + required: true + description: The ID of the DiscountCondition + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: deleteCondition + queryParams: AdminDeleteDiscountsDiscountConditionsConditionParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDiscountConditionsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}_batch.yaml b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}_batch.yaml similarity index 89% rename from docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}_batch.yaml rename to docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}_batch.yaml index 0394b766da..449b2a70aa 100644 --- a/docs/api/admin/paths/discounts_{discount_id}_conditions_{condition_id}_batch.yaml +++ b/docs/api/admin/paths/admin_discounts_{discount_id}_conditions_{condition_id}_batch.yaml @@ -44,17 +44,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/post.js + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/post.sh + ../code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount Condition + - Discounts responses: '200': description: OK @@ -119,17 +119,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{discount_id}_conditions_{condition_id}_batch/delete.js + ../code_samples/JavaScript/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh + ../code_samples/Shell/admin_discounts_{discount_id}_conditions_{condition_id}_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount Condition + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts_{id}.yaml b/docs/api/admin/paths/admin_discounts_{id}.yaml similarity index 90% rename from docs/api/admin/paths/discounts_{id}.yaml rename to docs/api/admin/paths/admin_discounts_{id}.yaml index 605192c2ab..d9003c625b 100644 --- a/docs/api/admin/paths/discounts_{id}.yaml +++ b/docs/api/admin/paths/admin_discounts_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteDiscountsDiscount - summary: Delete a Discount - description: Deletes a Discount. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Discount - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/discounts_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/discounts_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Discount - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDiscountsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetDiscountsDiscount summary: Get a Discount @@ -74,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_{id}/get.js + $ref: ../code_samples/JavaScript/admin_discounts_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}/get.sh + $ref: ../code_samples/Shell/admin_discounts_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK @@ -143,16 +96,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_{id}/post.js + $ref: ../code_samples/JavaScript/admin_discounts_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}/post.sh + $ref: ../code_samples/Shell/admin_discounts_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK @@ -172,3 +125,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteDiscountsDiscount + summary: Delete a Discount + description: Deletes a Discount. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Discount + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_discounts_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_discounts_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Discounts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDiscountsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/discounts_{id}_dynamic-codes.yaml b/docs/api/admin/paths/admin_discounts_{id}_dynamic-codes.yaml similarity index 88% rename from docs/api/admin/paths/discounts_{id}_dynamic-codes.yaml rename to docs/api/admin/paths/admin_discounts_{id}_dynamic-codes.yaml index 9cee3a1389..8418de52f1 100644 --- a/docs/api/admin/paths/discounts_{id}_dynamic-codes.yaml +++ b/docs/api/admin/paths/admin_discounts_{id}_dynamic-codes.yaml @@ -23,16 +23,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_{id}_dynamic-codes/post.js + $ref: ../code_samples/JavaScript/admin_discounts_{id}_dynamic-codes/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}_dynamic-codes/post.sh + $ref: ../code_samples/Shell/admin_discounts_{id}_dynamic-codes/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts_{id}_dynamic-codes_{code}.yaml b/docs/api/admin/paths/admin_discounts_{id}_dynamic-codes_{code}.yaml similarity index 86% rename from docs/api/admin/paths/discounts_{id}_dynamic-codes_{code}.yaml rename to docs/api/admin/paths/admin_discounts_{id}_dynamic-codes_{code}.yaml index 00931f18b1..8c0610f4a3 100644 --- a/docs/api/admin/paths/discounts_{id}_dynamic-codes_{code}.yaml +++ b/docs/api/admin/paths/admin_discounts_{id}_dynamic-codes_{code}.yaml @@ -23,16 +23,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{id}_dynamic-codes_{code}/delete.js + ../code_samples/JavaScript/admin_discounts_{id}_dynamic-codes_{code}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}_dynamic-codes_{code}/delete.sh + $ref: >- + ../code_samples/Shell/admin_discounts_{id}_dynamic-codes_{code}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/discounts_{id}_regions_{region_id}.yaml b/docs/api/admin/paths/admin_discounts_{id}_regions_{region_id}.yaml similarity index 86% rename from docs/api/admin/paths/discounts_{id}_regions_{region_id}.yaml rename to docs/api/admin/paths/admin_discounts_{id}_regions_{region_id}.yaml index 8084d28099..727beddea7 100644 --- a/docs/api/admin/paths/discounts_{id}_regions_{region_id}.yaml +++ b/docs/api/admin/paths/admin_discounts_{id}_regions_{region_id}.yaml @@ -22,16 +22,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/discounts_{id}_regions_{region_id}/post.js + $ref: >- + ../code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}_regions_{region_id}/post.sh + $ref: ../code_samples/Shell/admin_discounts_{id}_regions_{region_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK @@ -76,16 +77,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/discounts_{id}_regions_{region_id}/delete.js + ../code_samples/JavaScript/admin_discounts_{id}_regions_{region_id}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/discounts_{id}_regions_{region_id}/delete.sh + $ref: >- + ../code_samples/Shell/admin_discounts_{id}_regions_{region_id}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Discount + - Discounts responses: '200': description: OK diff --git a/docs/api/admin/paths/draft-orders.yaml b/docs/api/admin/paths/admin_draft-orders.yaml similarity index 89% rename from docs/api/admin/paths/draft-orders.yaml rename to docs/api/admin/paths/admin_draft-orders.yaml index 0f78a3d87d..22681cec9f 100644 --- a/docs/api/admin/paths/draft-orders.yaml +++ b/docs/api/admin/paths/admin_draft-orders.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostDraftOrders - summary: Create a Draft Order - description: Creates a Draft Order - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostDraftOrdersReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/draft-orders/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/draft-orders/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Draft Order - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDraftOrdersRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetDraftOrders summary: List Draft Orders @@ -75,16 +30,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/draft-orders/get.js + $ref: ../code_samples/JavaScript/admin_draft-orders/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/draft-orders/get.sh + $ref: ../code_samples/Shell/admin_draft-orders/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Draft Order + - Draft Orders responses: '200': description: OK @@ -104,3 +59,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostDraftOrders + summary: Create a Draft Order + description: Creates a Draft Order + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostDraftOrdersReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_draft-orders/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_draft-orders/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDraftOrdersRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/admin_draft-orders_{id}.yaml b/docs/api/admin/paths/admin_draft-orders_{id}.yaml index 207be909e2..4bc5310a67 100644 --- a/docs/api/admin/paths/admin_draft-orders_{id}.yaml +++ b/docs/api/admin/paths/admin_draft-orders_{id}.yaml @@ -1,3 +1,50 @@ +get: + operationId: GetDraftOrdersDraftOrder + summary: Get a Draft Order + description: Retrieves a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_draft-orders_{id}/get.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_draft-orders_{id}/get.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDraftOrdersRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml post: operationId: PostDraftOrdersDraftOrder summary: Update a Draft Order @@ -30,7 +77,7 @@ post: - api_token: [] - cookie_auth: [] tags: - - Draft Order + - Draft Orders responses: '200': description: OK @@ -50,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteDraftOrdersDraftOrder + summary: Delete a Draft Order + description: Deletes a Draft Order + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_draft-orders_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_draft-orders_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDraftOrdersDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/draft-orders_{id}_line-items.yaml b/docs/api/admin/paths/admin_draft-orders_{id}_line-items.yaml similarity index 87% rename from docs/api/admin/paths/draft-orders_{id}_line-items.yaml rename to docs/api/admin/paths/admin_draft-orders_{id}_line-items.yaml index ef233bff9b..6326cea449 100644 --- a/docs/api/admin/paths/draft-orders_{id}_line-items.yaml +++ b/docs/api/admin/paths/admin_draft-orders_{id}_line-items.yaml @@ -22,16 +22,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/draft-orders_{id}_line-items/post.js + $ref: ../code_samples/JavaScript/admin_draft-orders_{id}_line-items/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/draft-orders_{id}_line-items/post.sh + $ref: ../code_samples/Shell/admin_draft-orders_{id}_line-items/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Draft Order + - Draft Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/draft-orders_{id}_line-items_{line_id}.yaml b/docs/api/admin/paths/admin_draft-orders_{id}_line-items_{line_id}.yaml similarity index 86% rename from docs/api/admin/paths/draft-orders_{id}_line-items_{line_id}.yaml rename to docs/api/admin/paths/admin_draft-orders_{id}_line-items_{line_id}.yaml index e5a76b1720..03b48621dc 100644 --- a/docs/api/admin/paths/draft-orders_{id}_line-items_{line_id}.yaml +++ b/docs/api/admin/paths/admin_draft-orders_{id}_line-items_{line_id}.yaml @@ -1,57 +1,3 @@ -delete: - operationId: DeleteDraftOrdersDraftOrderLineItemsItem - summary: Delete a Line Item - description: Removes a Line Item from a Draft Order. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Draft Order. - schema: - type: string - - in: path - name: line_id - required: true - description: The ID of the Draft Order. - schema: - type: string - x-codegen: - method: removeLineItem - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/draft-orders_{id}_line-items_{line_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Draft Order - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDraftOrdersRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostDraftOrdersDraftOrderLineItemsItem summary: Update a Line Item @@ -83,16 +29,72 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/draft-orders_{id}_line-items_{line_id}/post.js + ../code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/draft-orders_{id}_line-items_{line_id}/post.sh + $ref: >- + ../code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Draft Order + - Draft Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDraftOrdersRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteDraftOrdersDraftOrderLineItemsItem + summary: Delete a Line Item + description: Removes a Line Item from a Draft Order. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Draft Order. + schema: + type: string + - in: path + name: line_id + required: true + description: The ID of the Draft Order. + schema: + type: string + x-codegen: + method: removeLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_draft-orders_{id}_line-items_{line_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_draft-orders_{id}_line-items_{line_id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Draft Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/draft-orders_{id}_pay.yaml b/docs/api/admin/paths/admin_draft-orders_{id}_pay.yaml similarity index 87% rename from docs/api/admin/paths/draft-orders_{id}_pay.yaml rename to docs/api/admin/paths/admin_draft-orders_{id}_pay.yaml index 8b3888acd3..bb304bca88 100644 --- a/docs/api/admin/paths/draft-orders_{id}_pay.yaml +++ b/docs/api/admin/paths/admin_draft-orders_{id}_pay.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/draft-orders_{id}_pay/post.js + $ref: ../code_samples/JavaScript/admin_draft-orders_{id}_pay/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/draft-orders_{id}_pay/post.sh + $ref: ../code_samples/Shell/admin_draft-orders_{id}_pay/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Draft Order + - Draft Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/gift-cards.yaml b/docs/api/admin/paths/admin_gift-cards.yaml similarity index 89% rename from docs/api/admin/paths/gift-cards.yaml rename to docs/api/admin/paths/admin_gift-cards.yaml index 383e39cf94..df93612ff0 100644 --- a/docs/api/admin/paths/gift-cards.yaml +++ b/docs/api/admin/paths/admin_gift-cards.yaml @@ -1,50 +1,3 @@ -post: - operationId: PostGiftCards - summary: Create a Gift Card - description: >- - Creates a Gift Card that can redeemed by its unique code. The Gift Card is - only valid within 1 region. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostGiftCardsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/gift-cards/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/gift-cards/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Gift Card - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminGiftCardsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetGiftCards summary: List Gift Cards @@ -75,16 +28,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/gift-cards/get.js + $ref: ../code_samples/JavaScript/admin_gift-cards/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/gift-cards/get.sh + $ref: ../code_samples/Shell/admin_gift-cards/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Gift Card + - Gift Cards responses: '200': description: OK @@ -104,3 +57,50 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostGiftCards + summary: Create a Gift Card + description: >- + Creates a Gift Card that can redeemed by its unique code. The Gift Card is + only valid within 1 region. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostGiftCardsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_gift-cards/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_gift-cards/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminGiftCardsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/gift-cards_{id}.yaml b/docs/api/admin/paths/admin_gift-cards_{id}.yaml similarity index 88% rename from docs/api/admin/paths/gift-cards_{id}.yaml rename to docs/api/admin/paths/admin_gift-cards_{id}.yaml index 624d467e80..816439bed2 100644 --- a/docs/api/admin/paths/gift-cards_{id}.yaml +++ b/docs/api/admin/paths/admin_gift-cards_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteGiftCardsGiftCard - summary: Delete a Gift Card - description: Deletes a Gift Card - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Gift Card to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/gift-cards_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/gift-cards_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Gift Card - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminGiftCardsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetGiftCardsGiftCard summary: Get a Gift Card @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/gift-cards_{id}/get.js + $ref: ../code_samples/JavaScript/admin_gift-cards_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/gift-cards_{id}/get.sh + $ref: ../code_samples/Shell/admin_gift-cards_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Gift Card + - Gift Cards responses: '200': description: OK @@ -117,16 +70,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/gift-cards_{id}/post.js + $ref: ../code_samples/JavaScript/admin_gift-cards_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/gift-cards_{id}/post.sh + $ref: ../code_samples/Shell/admin_gift-cards_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Gift Card + - Gift Cards responses: '200': description: OK @@ -146,3 +99,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteGiftCardsGiftCard + summary: Delete a Gift Card + description: Deletes a Gift Card + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Gift Card to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_gift-cards_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_gift-cards_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminGiftCardsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/inventory-items.yaml b/docs/api/admin/paths/admin_inventory-items.yaml similarity index 63% rename from docs/api/admin/paths/inventory-items.yaml rename to docs/api/admin/paths/admin_inventory-items.yaml index e281ed7024..5262a40947 100644 --- a/docs/api/admin/paths/inventory-items.yaml +++ b/docs/api/admin/paths/admin_inventory-items.yaml @@ -95,15 +95,18 @@ get: description: requires_shipping to search for. schema: type: string + x-codegen: + method: list + queryParams: AdminGetInventoryItemsParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/inventory-items/get.js + $ref: ../code_samples/JavaScript/admin_inventory-items/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/inventory-items/get.sh + $ref: ../code_samples/Shell/admin_inventory-items/get.sh security: - api_token: [] - cookie_auth: [] @@ -129,3 +132,60 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostInventoryItems + summary: Create an Inventory Item. + description: Creates an Inventory Item. + x-authenticated: true + parameters: + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostInventoryItemsReq.yaml + x-codegen: + method: create + queryParams: AdminPostInventoryItemsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_inventory-items/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_inventory-items/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminInventoryItemsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/inventory-items_{id}.yaml b/docs/api/admin/paths/admin_inventory-items_{id}.yaml similarity index 84% rename from docs/api/admin/paths/inventory-items_{id}.yaml rename to docs/api/admin/paths/admin_inventory-items_{id}.yaml index c0fa12f028..9d9300a108 100644 --- a/docs/api/admin/paths/inventory-items_{id}.yaml +++ b/docs/api/admin/paths/admin_inventory-items_{id}.yaml @@ -1,38 +1,3 @@ -delete: - operationId: DeleteInventoryItemsInventoryItem - summary: Delete an Inventory Item - description: Delete an Inventory Item - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Inventory Item to delete. - schema: - type: string - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/inventory-items_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/inventory-items_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - InventoryItem - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminInventoryItemsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml get: operationId: GetInventoryItemsInventoryItem summary: Retrive an Inventory Item. @@ -55,15 +20,18 @@ get: description: Comma separated list of fields to include in the results. schema: type: string + x-codegen: + method: retrieve + queryParams: AdminGetInventoryItemsItemParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/inventory-items_{id}/get.js + $ref: ../code_samples/JavaScript/admin_inventory-items_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/inventory-items_{id}/get.sh + $ref: ../code_samples/Shell/admin_inventory-items_{id}/get.sh security: - api_token: [] - cookie_auth: [] @@ -115,15 +83,18 @@ post: application/json: schema: $ref: ../components/schemas/AdminPostInventoryItemsInventoryItemReq.yaml + x-codegen: + method: update + queryParams: AdminPostInventoryItemsInventoryItemParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/inventory-items_{id}/post.js + $ref: ../code_samples/JavaScript/admin_inventory-items_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/inventory-items_{id}/post.sh + $ref: ../code_samples/Shell/admin_inventory-items_{id}/post.sh security: - api_token: [] - cookie_auth: [] @@ -148,3 +119,40 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteInventoryItemsInventoryItem + summary: Delete an Inventory Item + description: Delete an Inventory Item + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_inventory-items_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_inventory-items_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminInventoryItemsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml diff --git a/docs/api/admin/paths/inventory-items_{id}_location-levels.yaml b/docs/api/admin/paths/admin_inventory-items_{id}_location-levels.yaml similarity index 84% rename from docs/api/admin/paths/inventory-items_{id}_location-levels.yaml rename to docs/api/admin/paths/admin_inventory-items_{id}_location-levels.yaml index ae6cdee417..1af91cb642 100644 --- a/docs/api/admin/paths/inventory-items_{id}_location-levels.yaml +++ b/docs/api/admin/paths/admin_inventory-items_{id}_location-levels.yaml @@ -1,65 +1,3 @@ -post: - operationId: PostInventoryItemsInventoryItemLocationLevels - summary: Create an Inventory Location Level for a given Inventory Item. - description: Creates an Inventory Location Level for a given Inventory Item. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Inventory Item. - schema: - type: string - - in: query - name: expand - description: Comma separated list of relations to include in the results. - schema: - type: string - - in: query - name: fields - description: Comma separated list of fields to include in the results. - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: >- - ../components/schemas/AdminPostInventoryItemsItemLocationLevelsReq.yaml - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/inventory-items_{id}_location-levels/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/inventory-items_{id}_location-levels/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Inventory Items - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminInventoryItemsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetInventoryItemsInventoryItemLocationLevels summary: List stock levels of a given location. @@ -94,15 +32,20 @@ get: description: Comma separated list of fields to include in the results. schema: type: string + x-codegen: + method: listLocationLevels + queryParams: AdminGetInventoryItemsItemLocationLevelsParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/inventory-items_{id}_location-levels/get.js + $ref: >- + ../code_samples/JavaScript/admin_inventory-items_{id}_location-levels/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/inventory-items_{id}_location-levels/get.sh + $ref: >- + ../code_samples/Shell/admin_inventory-items_{id}_location-levels/get.sh security: - api_token: [] - cookie_auth: [] @@ -127,3 +70,69 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostInventoryItemsInventoryItemLocationLevels + summary: Create an Inventory Location Level for a given Inventory Item. + description: Creates an Inventory Location Level for a given Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: >- + ../components/schemas/AdminPostInventoryItemsItemLocationLevelsReq.yaml + x-codegen: + method: createLocationLevel + queryParams: AdminPostInventoryItemsItemLocationLevelsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_inventory-items_{id}_location-levels/post.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_inventory-items_{id}_location-levels/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminInventoryItemsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/inventory-items_{id}_location-levels_{location_id}.yaml b/docs/api/admin/paths/admin_inventory-items_{id}_location-levels_{location_id}.yaml similarity index 82% rename from docs/api/admin/paths/inventory-items_{id}_location-levels_{location_id}.yaml rename to docs/api/admin/paths/admin_inventory-items_{id}_location-levels_{location_id}.yaml index 27babb931e..f6263f2c11 100644 --- a/docs/api/admin/paths/inventory-items_{id}_location-levels_{location_id}.yaml +++ b/docs/api/admin/paths/admin_inventory-items_{id}_location-levels_{location_id}.yaml @@ -1,66 +1,3 @@ -delete: - operationId: DeleteInventoryItemsInventoryIteLocationLevelsLocation - summary: Delete a location level of an Inventory Item. - description: Delete a location level of an Inventory Item. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Inventory Item. - schema: - type: string - - in: path - name: location_id - required: true - description: The ID of the location. - schema: - type: string - - in: query - name: expand - description: Comma separated list of relations to include in the results. - schema: - type: string - - in: query - name: fields - description: Comma separated list of fields to include in the results. - schema: - type: string - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: >- - ../code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Inventory Items - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminInventoryItemsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostInventoryItemsInventoryItemLocationLevelsLocationLevel summary: Update an Inventory Location Level for a given Inventory Item. @@ -95,17 +32,75 @@ post: schema: $ref: >- ../components/schemas/AdminPostInventoryItemsItemLocationLevelsLevelReq.yaml + x-codegen: + method: updateLocationLevel + queryParams: AdminPostInventoryItemsItemLocationLevelsLevelParams x-codeSamples: - lang: JavaScript label: JS Client source: $ref: >- - ../code_samples/JavaScript/inventory-items_{id}_location-levels_{location_id}/post.js + ../code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/inventory-items_{id}_location-levels_{location_id}/post.sh + ../code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Inventory Items + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminInventoryItemsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteInventoryItemsInventoryIteLocationLevelsLocation + summary: Delete a location level of an Inventory Item. + description: Delete a location level of an Inventory Item. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Inventory Item. + schema: + type: string + - in: path + name: location_id + required: true + description: The ID of the location. + schema: + type: string + x-codegen: + method: deleteLocationLevel + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_inventory-items_{id}_location-levels_{location_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_inventory-items_{id}_location-levels_{location_id}/delete.sh security: - api_token: [] - cookie_auth: [] diff --git a/docs/api/admin/paths/invites.yaml b/docs/api/admin/paths/admin_invites.yaml similarity index 87% rename from docs/api/admin/paths/invites.yaml rename to docs/api/admin/paths/admin_invites.yaml index ffb958086f..2c1ae42dc4 100644 --- a/docs/api/admin/paths/invites.yaml +++ b/docs/api/admin/paths/admin_invites.yaml @@ -1,44 +1,3 @@ -post: - operationId: PostInvites - summary: Create an Invite - description: Creates an Invite and triggers an 'invite' created event - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostInvitesReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/invites/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/invites/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Invite - responses: - '200': - description: OK - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetInvites summary: Lists Invites @@ -50,16 +9,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/invites/get.js + $ref: ../code_samples/JavaScript/admin_invites/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/invites/get.sh + $ref: ../code_samples/Shell/admin_invites/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Invite + - Invites responses: '200': description: OK @@ -79,3 +38,44 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostInvites + summary: Create an Invite + description: Creates an Invite and triggers an 'invite' created event + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostInvitesReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_invites/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_invites/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Invites + responses: + '200': + description: OK + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/invites_accept.yaml b/docs/api/admin/paths/admin_invites_accept.yaml similarity index 86% rename from docs/api/admin/paths/invites_accept.yaml rename to docs/api/admin/paths/admin_invites_accept.yaml index e6ca3b2278..1341e11ea5 100644 --- a/docs/api/admin/paths/invites_accept.yaml +++ b/docs/api/admin/paths/admin_invites_accept.yaml @@ -13,16 +13,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/invites_accept/post.js + $ref: ../code_samples/JavaScript/admin_invites_accept/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/invites_accept/post.sh + $ref: ../code_samples/Shell/admin_invites_accept/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Invite + - Invites responses: '200': description: OK diff --git a/docs/api/admin/paths/invites_{invite_id}.yaml b/docs/api/admin/paths/admin_invites_{invite_id}.yaml similarity index 86% rename from docs/api/admin/paths/invites_{invite_id}.yaml rename to docs/api/admin/paths/admin_invites_{invite_id}.yaml index aa56da1b65..29af360dce 100644 --- a/docs/api/admin/paths/invites_{invite_id}.yaml +++ b/docs/api/admin/paths/admin_invites_{invite_id}.yaml @@ -16,16 +16,16 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/invites_{invite_id}/delete.js + $ref: ../code_samples/JavaScript/admin_invites_{invite_id}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/invites_{invite_id}/delete.sh + $ref: ../code_samples/Shell/admin_invites_{invite_id}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Invite + - Invites responses: '200': description: OK diff --git a/docs/api/admin/paths/invites_{invite_id}_resend.yaml b/docs/api/admin/paths/admin_invites_{invite_id}_resend.yaml similarity index 85% rename from docs/api/admin/paths/invites_{invite_id}_resend.yaml rename to docs/api/admin/paths/admin_invites_{invite_id}_resend.yaml index b895f752ae..d482c36dbc 100644 --- a/docs/api/admin/paths/invites_{invite_id}_resend.yaml +++ b/docs/api/admin/paths/admin_invites_{invite_id}_resend.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/invites_{invite_id}_resend/post.js + $ref: ../code_samples/JavaScript/admin_invites_{invite_id}_resend/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/invites_{invite_id}_resend/post.sh + $ref: ../code_samples/Shell/admin_invites_{invite_id}_resend/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Invite + - Invites responses: '200': description: OK diff --git a/docs/api/admin/paths/notes.yaml b/docs/api/admin/paths/admin_notes.yaml similarity index 90% rename from docs/api/admin/paths/notes.yaml rename to docs/api/admin/paths/admin_notes.yaml index e78f5b9352..fa32ccac98 100644 --- a/docs/api/admin/paths/notes.yaml +++ b/docs/api/admin/paths/admin_notes.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostNotes - summary: Creates a Note - description: Creates a Note which can be associated with any resource as required. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostNotesReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/notes/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/notes/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Note - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminNotesRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetNotes summary: List Notes @@ -73,16 +28,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/notes/get.js + $ref: ../code_samples/JavaScript/admin_notes/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/notes/get.sh + $ref: ../code_samples/Shell/admin_notes/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Note + - Notes responses: '200': description: OK @@ -102,3 +57,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostNotes + summary: Creates a Note + description: Creates a Note which can be associated with any resource as required. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostNotesReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_notes/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_notes/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminNotesRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/notes_{id}.yaml b/docs/api/admin/paths/admin_notes_{id}.yaml similarity index 88% rename from docs/api/admin/paths/notes_{id}.yaml rename to docs/api/admin/paths/admin_notes_{id}.yaml index b0706086a3..00e5c73ae0 100644 --- a/docs/api/admin/paths/notes_{id}.yaml +++ b/docs/api/admin/paths/admin_notes_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteNotesNote - summary: Delete a Note - description: Deletes a Note. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Note to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/notes_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/notes_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Note - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminNotesDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetNotesNote summary: Get a Note @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/notes_{id}/get.js + $ref: ../code_samples/JavaScript/admin_notes_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/notes_{id}/get.sh + $ref: ../code_samples/Shell/admin_notes_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Note + - Notes responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/notes_{id}/post.js + $ref: ../code_samples/JavaScript/admin_notes_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/notes_{id}/post.sh + $ref: ../code_samples/Shell/admin_notes_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Note + - Notes responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteNotesNote + summary: Delete a Note + description: Deletes a Note. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Note to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_notes_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_notes_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Notes + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminNotesDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/notifications.yaml b/docs/api/admin/paths/admin_notifications.yaml similarity index 94% rename from docs/api/admin/paths/notifications.yaml rename to docs/api/admin/paths/admin_notifications.yaml index 3030528836..583b68cfab 100644 --- a/docs/api/admin/paths/notifications.yaml +++ b/docs/api/admin/paths/admin_notifications.yaml @@ -64,16 +64,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/notifications/get.js + $ref: ../code_samples/JavaScript/admin_notifications/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/notifications/get.sh + $ref: ../code_samples/Shell/admin_notifications/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Notification + - Notifications responses: '200': description: OK diff --git a/docs/api/admin/paths/notifications_{id}_resend.yaml b/docs/api/admin/paths/admin_notifications_{id}_resend.yaml similarity index 88% rename from docs/api/admin/paths/notifications_{id}_resend.yaml rename to docs/api/admin/paths/admin_notifications_{id}_resend.yaml index 29311f9a2d..c219aa7024 100644 --- a/docs/api/admin/paths/notifications_{id}_resend.yaml +++ b/docs/api/admin/paths/admin_notifications_{id}_resend.yaml @@ -24,16 +24,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/notifications_{id}_resend/post.js + $ref: ../code_samples/JavaScript/admin_notifications_{id}_resend/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/notifications_{id}_resend/post.sh + $ref: ../code_samples/Shell/admin_notifications_{id}_resend/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Notification + - Notifications responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits.yaml b/docs/api/admin/paths/admin_order-edits.yaml similarity index 90% rename from docs/api/admin/paths/order-edits.yaml rename to docs/api/admin/paths/admin_order-edits.yaml index 3f4a409171..6468d3b538 100644 --- a/docs/api/admin/paths/order-edits.yaml +++ b/docs/api/admin/paths/admin_order-edits.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostOrderEdits - summary: Create an OrderEdit - description: Creates an OrderEdit. - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostOrderEditsReq.yaml - x-authenticated: true - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/order-edits/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/order-edits/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - OrderEdit - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminOrderEditsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetOrderEdits summary: List OrderEdits @@ -88,16 +43,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits/get.js + $ref: ../code_samples/JavaScript/admin_order-edits/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits/get.sh + $ref: ../code_samples/Shell/admin_order-edits/get.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK @@ -117,3 +72,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostOrderEdits + summary: Create an OrderEdit + description: Creates an OrderEdit. + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostOrderEditsReq.yaml + x-authenticated: true + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_order-edits/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_order-edits/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminOrderEditsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/order-edits_{id}.yaml b/docs/api/admin/paths/admin_order-edits_{id}.yaml similarity index 87% rename from docs/api/admin/paths/order-edits_{id}.yaml rename to docs/api/admin/paths/admin_order-edits_{id}.yaml index 6ec5af4de5..babe0b977d 100644 --- a/docs/api/admin/paths/order-edits_{id}.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}.yaml @@ -1,40 +1,3 @@ -delete: - operationId: DeleteOrderEditsOrderEdit - summary: Delete an Order Edit - description: Delete an Order Edit - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Order Edit to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/order-edits_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/order-edits_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - OrderEdit - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminOrderEditDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml get: operationId: GetOrderEditsOrderEdit summary: Get an OrderEdit @@ -64,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}/get.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}/get.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK @@ -116,16 +79,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}/post.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK @@ -145,3 +108,40 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteOrderEditsOrderEdit + summary: Delete an Order Edit + description: Delete an Order Edit + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_order-edits_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_order-edits_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminOrderEditDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml diff --git a/docs/api/admin/paths/order-edits_{id}_cancel.yaml b/docs/api/admin/paths/admin_order-edits_{id}_cancel.yaml similarity index 84% rename from docs/api/admin/paths/order-edits_{id}_cancel.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_cancel.yaml index f1ef280a37..c96aa11406 100644 --- a/docs/api/admin/paths/order-edits_{id}_cancel.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_cancel.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_cancel/post.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_cancel/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits_{id}_changes_{change_id}.yaml b/docs/api/admin/paths/admin_order-edits_{id}_changes_{change_id}.yaml similarity index 82% rename from docs/api/admin/paths/order-edits_{id}_changes_{change_id}.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_changes_{change_id}.yaml index 492c02d3ed..1d12d2f785 100644 --- a/docs/api/admin/paths/order-edits_{id}_changes_{change_id}.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_changes_{change_id}.yaml @@ -23,16 +23,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/order-edits_{id}_changes_{change_id}/delete.js + ../code_samples/JavaScript/admin_order-edits_{id}_changes_{change_id}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_changes_{change_id}/delete.sh + $ref: >- + ../code_samples/Shell/admin_order-edits_{id}_changes_{change_id}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits_{id}_confirm.yaml b/docs/api/admin/paths/admin_order-edits_{id}_confirm.yaml similarity index 84% rename from docs/api/admin/paths/order-edits_{id}_confirm.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_confirm.yaml index 0d7d0e05e6..712c203243 100644 --- a/docs/api/admin/paths/order-edits_{id}_confirm.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_confirm.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_confirm/post.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}_confirm/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_confirm/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}_confirm/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits_{id}_items.yaml b/docs/api/admin/paths/admin_order-edits_{id}_items.yaml similarity index 87% rename from docs/api/admin/paths/order-edits_{id}_items.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_items.yaml index 1dddf39282..315462160a 100644 --- a/docs/api/admin/paths/order-edits_{id}_items.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_items.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_items/post.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}_items/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_items/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}_items/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits_{id}_items_{item_id}.yaml b/docs/api/admin/paths/admin_order-edits_{id}_items_{item_id}.yaml similarity index 87% rename from docs/api/admin/paths/order-edits_{id}_items_{item_id}.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_items_{item_id}.yaml index 7d9279065d..1c42d69dba 100644 --- a/docs/api/admin/paths/order-edits_{id}_items_{item_id}.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_items_{item_id}.yaml @@ -1,56 +1,3 @@ -delete: - operationId: DeleteOrderEditsOrderEditLineItemsLineItem - summary: Delete a Line Item - description: Delete line items from an order edit and create change item - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Order Edit to delete from. - schema: - type: string - - in: path - name: item_id - required: true - description: The ID of the order edit item to delete from order. - schema: - type: string - x-codegen: - method: removeLineItem - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/order-edits_{id}_items_{item_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/order-edits_{id}_items_{item_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - OrderEdit - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminOrderEditsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostOrderEditsEditLineItemsLineItem summary: Upsert Line Item Change @@ -81,16 +28,71 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_items_{item_id}/post.js + $ref: >- + ../code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_items_{item_id}/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}_items_{item_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminOrderEditsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteOrderEditsOrderEditLineItemsLineItem + summary: Delete a Line Item + description: Delete line items from an order edit and create change item + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit to delete from. + schema: + type: string + - in: path + name: item_id + required: true + description: The ID of the order edit item to delete from order. + schema: + type: string + x-codegen: + method: removeLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_order-edits_{id}_items_{item_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_order-edits_{id}_items_{item_id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/order-edits_{id}_request.yaml b/docs/api/admin/paths/admin_order-edits_{id}_request.yaml similarity index 85% rename from docs/api/admin/paths/order-edits_{id}_request.yaml rename to docs/api/admin/paths/admin_order-edits_{id}_request.yaml index b73c2cbbdc..e2d1cf87a1 100644 --- a/docs/api/admin/paths/order-edits_{id}_request.yaml +++ b/docs/api/admin/paths/admin_order-edits_{id}_request.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_request/post.js + $ref: ../code_samples/JavaScript/admin_order-edits_{id}_request/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_request/post.sh + $ref: ../code_samples/Shell/admin_order-edits_{id}_request/post.sh security: - api_token: [] - cookie_auth: [] tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/admin/paths/orders.yaml b/docs/api/admin/paths/admin_orders.yaml similarity index 98% rename from docs/api/admin/paths/orders.yaml rename to docs/api/admin/paths/admin_orders.yaml index d2eab3db64..7684574ecf 100644 --- a/docs/api/admin/paths/orders.yaml +++ b/docs/api/admin/paths/admin_orders.yaml @@ -224,16 +224,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders/get.js + $ref: ../code_samples/JavaScript/admin_orders/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders/get.sh + $ref: ../code_samples/Shell/admin_orders/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}.yaml b/docs/api/admin/paths/admin_orders_{id}.yaml similarity index 91% rename from docs/api/admin/paths/orders_{id}.yaml rename to docs/api/admin/paths/admin_orders_{id}.yaml index 555f7b277a..332fca38cd 100644 --- a/docs/api/admin/paths/orders_{id}.yaml +++ b/docs/api/admin/paths/admin_orders_{id}.yaml @@ -27,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}/get.js + $ref: ../code_samples/JavaScript/admin_orders_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}/get.sh + $ref: ../code_samples/Shell/admin_orders_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK @@ -90,16 +90,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_archive.yaml b/docs/api/admin/paths/admin_orders_{id}_archive.yaml similarity index 89% rename from docs/api/admin/paths/orders_{id}_archive.yaml rename to docs/api/admin/paths/admin_orders_{id}_archive.yaml index 10fbab9ecc..7d1a27ae62 100644 --- a/docs/api/admin/paths/orders_{id}_archive.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_archive.yaml @@ -27,16 +27,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_archive/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_archive/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_archive/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_archive/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_cancel.yaml similarity index 91% rename from docs/api/admin/paths/orders_{id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_cancel.yaml index 7c499cbd0a..aa327c0ad9 100644 --- a/docs/api/admin/paths/orders_{id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_cancel.yaml @@ -30,16 +30,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_cancel/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_cancel/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_capture.yaml b/docs/api/admin/paths/admin_orders_{id}_capture.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_capture.yaml rename to docs/api/admin/paths/admin_orders_{id}_capture.yaml index 240ae56920..ff87be29a0 100644 --- a/docs/api/admin/paths/orders_{id}_capture.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_capture.yaml @@ -27,16 +27,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_capture/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_capture/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_capture/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_capture/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/order_{id}_claims.yaml b/docs/api/admin/paths/admin_orders_{id}_claims.yaml similarity index 90% rename from docs/api/admin/paths/order_{id}_claims.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims.yaml index b9e5445e8c..29f9c96132 100644 --- a/docs/api/admin/paths/order_{id}_claims.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims.yaml @@ -32,16 +32,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order_{id}_claims/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_claims/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order_{id}_claims/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_claims/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Claim + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/order_{id}_claims_{claim_id}.yaml b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}.yaml similarity index 90% rename from docs/api/admin/paths/order_{id}_claims_{claim_id}.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}.yaml index a91f61b942..bf90d5336e 100644 --- a/docs/api/admin/paths/order_{id}_claims_{claim_id}.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}.yaml @@ -38,16 +38,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order_{id}_claims_{claim_id}/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order_{id}_claims_{claim_id}/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_claims_{claim_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Claim + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_cancel.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_claims_{claim_id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_cancel.yaml index c380d75a35..bdd9327b38 100644 --- a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_cancel.yaml @@ -34,16 +34,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_claims_{claim_id}_cancel/post.js + ../code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_claims_{claim_id}_cancel/post.sh + $ref: >- + ../code_samples/Shell/admin_orders_{id}_claims_{claim_id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Claim + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments.yaml b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments.yaml index 4c0fa7d0a4..b759165741 100644 --- a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments.yaml @@ -40,17 +40,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments/post.js + ../code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments/post.sh + ../code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml index dcfb4b1201..b15fba082b 100644 --- a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel.yaml @@ -40,17 +40,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js + ../code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh + ../code_samples/Shell/admin_orders_{id}_claims_{claim_id}_fulfillments_{fulfillment_id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_shipments.yaml b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_shipments.yaml similarity index 89% rename from docs/api/admin/paths/orders_{id}_claims_{claim_id}_shipments.yaml rename to docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_shipments.yaml index c510f0ac12..9f3414c595 100644 --- a/docs/api/admin/paths/orders_{id}_claims_{claim_id}_shipments.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_claims_{claim_id}_shipments.yaml @@ -40,16 +40,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_claims_{claim_id}_shipments/post.js + ../code_samples/JavaScript/admin_orders_{id}_claims_{claim_id}_shipments/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_claims_{claim_id}_shipments/post.sh + $ref: >- + ../code_samples/Shell/admin_orders_{id}_claims_{claim_id}_shipments/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Claim + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_complete.yaml b/docs/api/admin/paths/admin_orders_{id}_complete.yaml similarity index 89% rename from docs/api/admin/paths/orders_{id}_complete.yaml rename to docs/api/admin/paths/admin_orders_{id}_complete.yaml index 29d3d5a529..05cf138228 100644 --- a/docs/api/admin/paths/orders_{id}_complete.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_complete.yaml @@ -27,16 +27,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_complete/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_complete/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_complete/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_complete/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_fulfillment.yaml b/docs/api/admin/paths/admin_orders_{id}_fulfillment.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_fulfillment.yaml rename to docs/api/admin/paths/admin_orders_{id}_fulfillment.yaml index 78331b8a72..cfe8f822d3 100644 --- a/docs/api/admin/paths/orders_{id}_fulfillment.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_fulfillment.yaml @@ -34,16 +34,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_fulfillment/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_fulfillment/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_fulfillment/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_fulfillment/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml index ad8e739fda..f4dad676ea 100644 --- a/docs/api/admin/paths/orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel.yaml @@ -34,17 +34,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js + ../code_samples/JavaScript/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh + ../code_samples/Shell/admin_orders_{id}_fulfillments_{fulfillment_id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_line-items_{line_item_id}_reserve.yaml b/docs/api/admin/paths/admin_orders_{id}_line-items_{line_item_id}_reserve.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_line-items_{line_item_id}_reserve.yaml rename to docs/api/admin/paths/admin_orders_{id}_line-items_{line_item_id}_reserve.yaml index 4b7fa823ef..de5c19f75c 100644 --- a/docs/api/admin/paths/orders_{id}_line-items_{line_item_id}_reserve.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_line-items_{line_item_id}_reserve.yaml @@ -28,17 +28,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_line-items_{line_item_id}_reserve/post.js + ../code_samples/JavaScript/admin_orders_{id}_line-items_{line_item_id}_reserve/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_line-items_{line_item_id}_reserve/post.sh + ../code_samples/Shell/admin_orders_{id}_line-items_{line_item_id}_reserve/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_refund.yaml b/docs/api/admin/paths/admin_orders_{id}_refund.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_refund.yaml rename to docs/api/admin/paths/admin_orders_{id}_refund.yaml index d05590568a..e7e8c9d5d2 100644 --- a/docs/api/admin/paths/orders_{id}_refund.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_refund.yaml @@ -32,16 +32,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_refund/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_refund/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_refund/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_refund/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_reservations.yaml b/docs/api/admin/paths/admin_orders_{id}_reservations.yaml similarity index 84% rename from docs/api/admin/paths/orders_{id}_reservations.yaml rename to docs/api/admin/paths/admin_orders_{id}_reservations.yaml index 3d45df09ae..ee4eacdca8 100644 --- a/docs/api/admin/paths/orders_{id}_reservations.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_reservations.yaml @@ -26,23 +26,23 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_reservations/get.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_reservations/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_reservations/get.sh + $ref: ../code_samples/Shell/admin_orders_{id}_reservations/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/AdminGetReservationReservationsReq.yaml + $ref: ../components/schemas/AdminReservationsListRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/admin/paths/orders_{id}_return.yaml b/docs/api/admin/paths/admin_orders_{id}_return.yaml similarity index 91% rename from docs/api/admin/paths/orders_{id}_return.yaml rename to docs/api/admin/paths/admin_orders_{id}_return.yaml index d034374384..c7b4d0dd37 100644 --- a/docs/api/admin/paths/orders_{id}_return.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_return.yaml @@ -34,17 +34,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_return/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_return/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_return/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_return/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Return - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_shipment.yaml b/docs/api/admin/paths/admin_orders_{id}_shipment.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_shipment.yaml rename to docs/api/admin/paths/admin_orders_{id}_shipment.yaml index 138e916c1b..7e1db41a59 100644 --- a/docs/api/admin/paths/orders_{id}_shipment.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_shipment.yaml @@ -32,16 +32,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_shipment/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_shipment/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_shipment/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_shipment/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_shipping-methods.yaml b/docs/api/admin/paths/admin_orders_{id}_shipping-methods.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_shipping-methods.yaml rename to docs/api/admin/paths/admin_orders_{id}_shipping-methods.yaml index 27014e6203..20a6337d61 100644 --- a/docs/api/admin/paths/orders_{id}_shipping-methods.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_shipping-methods.yaml @@ -34,16 +34,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_shipping-methods/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_shipping-methods/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_shipping-methods/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_shipping-methods/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/order_{id}_swaps.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps.yaml similarity index 91% rename from docs/api/admin/paths/order_{id}_swaps.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps.yaml index 1aa00a6fb7..79228b7c95 100644 --- a/docs/api/admin/paths/order_{id}_swaps.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps.yaml @@ -38,16 +38,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order_{id}_swaps/post.js + $ref: ../code_samples/JavaScript/admin_orders_{id}_swaps/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order_{id}_swaps/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_swaps/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_cancel.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_swaps_{swap_id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_cancel.yaml index 2dec550158..e757819c8e 100644 --- a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_cancel.yaml @@ -33,16 +33,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}_swaps_{swap_id}_cancel/post.js + $ref: >- + ../code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_swaps_{swap_id}_cancel/post.sh + $ref: ../code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments.yaml similarity index 89% rename from docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments.yaml index cacdf51ac9..71604f75da 100644 --- a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments.yaml @@ -40,16 +40,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments/post.js + ../code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments/post.sh + $ref: >- + ../code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml similarity index 88% rename from docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml index e1a205e7e9..40505d55ec 100644 --- a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel.yaml @@ -40,17 +40,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js + ../code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh + ../code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_fulfillments_{fulfillment_id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Fulfillment + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_process-payment.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_process-payment.yaml similarity index 90% rename from docs/api/admin/paths/orders_{id}_swaps_{swap_id}_process-payment.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_process-payment.yaml index c5aca27e66..9259fe9d9d 100644 --- a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_process-payment.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_process-payment.yaml @@ -37,17 +37,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_swaps_{swap_id}_process-payment/post.js + ../code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_process-payment/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/orders_{id}_swaps_{swap_id}_process-payment/post.sh + ../code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_process-payment/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_shipments.yaml b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_shipments.yaml similarity index 89% rename from docs/api/admin/paths/orders_{id}_swaps_{swap_id}_shipments.yaml rename to docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_shipments.yaml index 8339a2ea01..833e9402bd 100644 --- a/docs/api/admin/paths/orders_{id}_swaps_{swap_id}_shipments.yaml +++ b/docs/api/admin/paths/admin_orders_{id}_swaps_{swap_id}_shipments.yaml @@ -39,16 +39,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/orders_{id}_swaps_{swap_id}_shipments/post.js + ../code_samples/JavaScript/admin_orders_{id}_swaps_{swap_id}_shipments/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}_swaps_{swap_id}_shipments/post.sh + $ref: >- + ../code_samples/Shell/admin_orders_{id}_swaps_{swap_id}_shipments/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Orders responses: '200': description: OK diff --git a/docs/api/admin/paths/payment-collections_{id}.yaml b/docs/api/admin/paths/admin_payment-collections_{id}.yaml similarity index 85% rename from docs/api/admin/paths/payment-collections_{id}.yaml rename to docs/api/admin/paths/admin_payment-collections_{id}.yaml index 164df9dcd2..b6ea47c195 100644 --- a/docs/api/admin/paths/payment-collections_{id}.yaml +++ b/docs/api/admin/paths/admin_payment-collections_{id}.yaml @@ -1,42 +1,3 @@ -delete: - operationId: DeletePaymentCollectionsPaymentCollection - summary: Del a PaymentCollection - description: Deletes a Payment Collection - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Payment Collection to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/payment-collections_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/payment-collections_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - PaymentCollection - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPaymentCollectionDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml get: operationId: GetPaymentCollectionsPaymentCollection summary: Get a PaymentCollection @@ -61,21 +22,21 @@ get: type: string x-codegen: method: retrieve - queryParams: GetPaymentCollectionsParams + queryParams: AdminGetPaymentCollectionsParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payment-collections_{id}/get.js + $ref: ../code_samples/JavaScript/admin_payment-collections_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}/get.sh + $ref: ../code_samples/Shell/admin_payment-collections_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK @@ -118,16 +79,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payment-collections_{id}/post.js + $ref: ../code_samples/JavaScript/admin_payment-collections_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}/post.sh + $ref: ../code_samples/Shell/admin_payment-collections_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK @@ -147,3 +108,42 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeletePaymentCollectionsPaymentCollection + summary: Del a PaymentCollection + description: Deletes a Payment Collection + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collection to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_payment-collections_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_payment-collections_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminPaymentCollectionDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml diff --git a/docs/api/admin/paths/payment-collections_{id}_authorize.yaml b/docs/api/admin/paths/admin_payment-collections_{id}_authorize.yaml similarity index 84% rename from docs/api/admin/paths/payment-collections_{id}_authorize.yaml rename to docs/api/admin/paths/admin_payment-collections_{id}_authorize.yaml index 54779435e2..1d7534f1e0 100644 --- a/docs/api/admin/paths/payment-collections_{id}_authorize.yaml +++ b/docs/api/admin/paths/admin_payment-collections_{id}_authorize.yaml @@ -16,16 +16,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payment-collections_{id}_authorize/post.js + $ref: >- + ../code_samples/JavaScript/admin_payment-collections_{id}_authorize/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}_authorize/post.sh + $ref: ../code_samples/Shell/admin_payment-collections_{id}_authorize/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/admin/paths/payments_{id}.yaml b/docs/api/admin/paths/admin_payments_{id}.yaml similarity index 88% rename from docs/api/admin/paths/payments_{id}.yaml rename to docs/api/admin/paths/admin_payments_{id}.yaml index 6d17d9769a..c746517ef1 100644 --- a/docs/api/admin/paths/payments_{id}.yaml +++ b/docs/api/admin/paths/admin_payments_{id}.yaml @@ -17,16 +17,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payments_{id}/get.js + $ref: ../code_samples/JavaScript/admin_payments_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payments_{id}/get.sh + $ref: ../code_samples/Shell/admin_payments_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Payment + - Payments responses: '200': description: OK diff --git a/docs/api/admin/paths/payments_{id}_capture.yaml b/docs/api/admin/paths/admin_payments_{id}_capture.yaml similarity index 86% rename from docs/api/admin/paths/payments_{id}_capture.yaml rename to docs/api/admin/paths/admin_payments_{id}_capture.yaml index accd276fbd..13d67f1ce7 100644 --- a/docs/api/admin/paths/payments_{id}_capture.yaml +++ b/docs/api/admin/paths/admin_payments_{id}_capture.yaml @@ -16,16 +16,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payments_{id}_capture/post.js + $ref: ../code_samples/JavaScript/admin_payments_{id}_capture/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payments_{id}_capture/post.sh + $ref: ../code_samples/Shell/admin_payments_{id}_capture/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Payment + - Payments responses: '200': description: OK diff --git a/docs/api/admin/paths/payments_{id}_refund.yaml b/docs/api/admin/paths/admin_payments_{id}_refund.yaml similarity index 88% rename from docs/api/admin/paths/payments_{id}_refund.yaml rename to docs/api/admin/paths/admin_payments_{id}_refund.yaml index a3bf0f7140..52ccbc14be 100644 --- a/docs/api/admin/paths/payments_{id}_refund.yaml +++ b/docs/api/admin/paths/admin_payments_{id}_refund.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payments_{id}_refund/post.js + $ref: ../code_samples/JavaScript/admin_payments_{id}_refund/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payments_{id}_refund/post.sh + $ref: ../code_samples/Shell/admin_payments_{id}_refund/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Payment + - Payments responses: '200': description: OK diff --git a/docs/api/admin/paths/price-lists.yaml b/docs/api/admin/paths/admin_price-lists.yaml similarity index 95% rename from docs/api/admin/paths/price-lists.yaml rename to docs/api/admin/paths/admin_price-lists.yaml index 002ea6e12e..0977730c13 100644 --- a/docs/api/admin/paths/price-lists.yaml +++ b/docs/api/admin/paths/admin_price-lists.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostPriceListsPriceList - summary: Create a Price List - description: Creates a Price List - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostPriceListsPriceListReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/price-lists/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/price-lists/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Price List - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPriceListRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetPriceLists summary: List Price Lists @@ -196,16 +151,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists/get.js + $ref: ../code_samples/JavaScript/admin_price-lists/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists/get.sh + $ref: ../code_samples/Shell/admin_price-lists/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK @@ -225,3 +180,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostPriceListsPriceList + summary: Create a Price List + description: Creates a Price List + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostPriceListsPriceListReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_price-lists/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_price-lists/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminPriceListRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/price-lists_{id}.yaml b/docs/api/admin/paths/admin_price-lists_{id}.yaml similarity index 87% rename from docs/api/admin/paths/price-lists_{id}.yaml rename to docs/api/admin/paths/admin_price-lists_{id}.yaml index ac25394799..b3b945aab9 100644 --- a/docs/api/admin/paths/price-lists_{id}.yaml +++ b/docs/api/admin/paths/admin_price-lists_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeletePriceListsPriceList - summary: Delete a Price List - description: Deletes a Price List - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Price List to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/price-lists_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/price-lists_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Price List - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPriceListDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetPriceListsPriceList summary: Get a Price List @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists_{id}/get.js + $ref: ../code_samples/JavaScript/admin_price-lists_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists_{id}/get.sh + $ref: ../code_samples/Shell/admin_price-lists_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists_{id}/post.js + $ref: ../code_samples/JavaScript/admin_price-lists_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists_{id}/post.sh + $ref: ../code_samples/Shell/admin_price-lists_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeletePriceListsPriceList + summary: Delete a Price List + description: Deletes a Price List + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Price List to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_price-lists_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_price-lists_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Price Lists + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminPriceListDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/price-lists_{id}_prices_batch.yaml b/docs/api/admin/paths/admin_price-lists_{id}_prices_batch.yaml similarity index 87% rename from docs/api/admin/paths/price-lists_{id}_prices_batch.yaml rename to docs/api/admin/paths/admin_price-lists_{id}_prices_batch.yaml index 5938b2505a..f270584d8c 100644 --- a/docs/api/admin/paths/price-lists_{id}_prices_batch.yaml +++ b/docs/api/admin/paths/admin_price-lists_{id}_prices_batch.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists_{id}_prices_batch/post.js + $ref: ../code_samples/JavaScript/admin_price-lists_{id}_prices_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists_{id}_prices_batch/post.sh + $ref: ../code_samples/Shell/admin_price-lists_{id}_prices_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK @@ -75,16 +75,17 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists_{id}_prices_batch/delete.js + $ref: >- + ../code_samples/JavaScript/admin_price-lists_{id}_prices_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists_{id}_prices_batch/delete.sh + $ref: ../code_samples/Shell/admin_price-lists_{id}_prices_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK diff --git a/docs/api/admin/paths/price-lists_{id}_products.yaml b/docs/api/admin/paths/admin_price-lists_{id}_products.yaml similarity index 97% rename from docs/api/admin/paths/price-lists_{id}_products.yaml rename to docs/api/admin/paths/admin_price-lists_{id}_products.yaml index b79f613361..16455aaeb7 100644 --- a/docs/api/admin/paths/price-lists_{id}_products.yaml +++ b/docs/api/admin/paths/admin_price-lists_{id}_products.yaml @@ -183,16 +183,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/price-lists_{id}_products/get.js + $ref: ../code_samples/JavaScript/admin_price-lists_{id}_products/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/price-lists_{id}_products/get.sh + $ref: ../code_samples/Shell/admin_price-lists_{id}_products/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK diff --git a/docs/api/admin/paths/price-lists_{id}_products_{product_id}_prices.yaml b/docs/api/admin/paths/admin_price-lists_{id}_products_{product_id}_prices.yaml similarity index 87% rename from docs/api/admin/paths/price-lists_{id}_products_{product_id}_prices.yaml rename to docs/api/admin/paths/admin_price-lists_{id}_products_{product_id}_prices.yaml index f2e06239ba..9ec17f197a 100644 --- a/docs/api/admin/paths/price-lists_{id}_products_{product_id}_prices.yaml +++ b/docs/api/admin/paths/admin_price-lists_{id}_products_{product_id}_prices.yaml @@ -25,17 +25,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/price-lists_{id}_products_{product_id}_prices/delete.js + ../code_samples/JavaScript/admin_price-lists_{id}_products_{product_id}_prices/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/price-lists_{id}_products_{product_id}_prices/delete.sh + ../code_samples/Shell/admin_price-lists_{id}_products_{product_id}_prices/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK diff --git a/docs/api/admin/paths/price-lists_{id}_variants_{variant_id}_prices.yaml b/docs/api/admin/paths/admin_price-lists_{id}_variants_{variant_id}_prices.yaml similarity index 87% rename from docs/api/admin/paths/price-lists_{id}_variants_{variant_id}_prices.yaml rename to docs/api/admin/paths/admin_price-lists_{id}_variants_{variant_id}_prices.yaml index b0f3ba05bc..c5e55267ab 100644 --- a/docs/api/admin/paths/price-lists_{id}_variants_{variant_id}_prices.yaml +++ b/docs/api/admin/paths/admin_price-lists_{id}_variants_{variant_id}_prices.yaml @@ -25,17 +25,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/price-lists_{id}_variants_{variant_id}_prices/delete.js + ../code_samples/JavaScript/admin_price-lists_{id}_variants_{variant_id}_prices/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/price-lists_{id}_variants_{variant_id}_prices/delete.sh + ../code_samples/Shell/admin_price-lists_{id}_variants_{variant_id}_prices/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Price List + - Price Lists responses: '200': description: OK diff --git a/docs/api/admin/paths/product-categories.yaml b/docs/api/admin/paths/admin_product-categories.yaml similarity index 88% rename from docs/api/admin/paths/product-categories.yaml rename to docs/api/admin/paths/admin_product-categories.yaml index 46547aa740..2c276a7b4c 100644 --- a/docs/api/admin/paths/product-categories.yaml +++ b/docs/api/admin/paths/admin_product-categories.yaml @@ -1,60 +1,3 @@ -post: - operationId: PostProductCategories - summary: Create a Product Category - description: Creates a Product Category. - x-authenticated: true - parameters: - - in: query - name: expand - description: (Comma separated) Which fields should be expanded in the results. - schema: - type: string - - in: query - name: fields - description: (Comma separated) Which fields should be retrieved in the results. - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostProductCategoriesReq.yaml - x-codegen: - method: create - queryParams: AdminPostProductCategoriesParams - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/product-categories/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/product-categories/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product Category - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductCategoriesCategoryRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetProductCategories summary: List Product Categories @@ -76,6 +19,11 @@ get: description: Search for only active categories schema: type: boolean + - in: query + name: include_descendants_tree + description: Include all nested descendants of category + schema: + type: boolean - in: query name: parent_category_id description: Returns categories scoped by parent @@ -114,16 +62,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-categories/get.js + $ref: ../code_samples/JavaScript/admin_product-categories/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories/get.sh + $ref: ../code_samples/Shell/admin_product-categories/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK @@ -143,3 +91,60 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostProductCategories + summary: Create a Product Category + description: Creates a Product Category. + x-authenticated: true + parameters: + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the results. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostProductCategoriesReq.yaml + x-codegen: + method: create + queryParams: AdminPostProductCategoriesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_product-categories/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_product-categories/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductCategoriesCategoryRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/product-categories_{id}.yaml b/docs/api/admin/paths/admin_product-categories_{id}.yaml similarity index 88% rename from docs/api/admin/paths/product-categories_{id}.yaml rename to docs/api/admin/paths/admin_product-categories_{id}.yaml index 21620dc360..eb4079c382 100644 --- a/docs/api/admin/paths/product-categories_{id}.yaml +++ b/docs/api/admin/paths/admin_product-categories_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteProductCategoriesCategory - summary: Delete a Product Category - description: Deletes a ProductCategory. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Product Category - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/product-categories_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/product-categories_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product Category - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetProductCategoriesCategory summary: Get a Product Category @@ -74,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-categories_{id}/get.js + $ref: ../code_samples/JavaScript/admin_product-categories_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories_{id}/get.sh + $ref: ../code_samples/Shell/admin_product-categories_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK @@ -141,16 +94,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-categories_{id}/post.js + $ref: ../code_samples/JavaScript/admin_product-categories_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories_{id}/post.sh + $ref: ../code_samples/Shell/admin_product-categories_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK @@ -170,3 +123,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteProductCategoriesCategory + summary: Delete a Product Category + description: Deletes a ProductCategory. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_product-categories_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_product-categories_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductCategoriesCategoryDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/product-categories_{id}_products_batch.yaml b/docs/api/admin/paths/admin_product-categories_{id}_products_batch.yaml similarity index 88% rename from docs/api/admin/paths/product-categories_{id}_products_batch.yaml rename to docs/api/admin/paths/admin_product-categories_{id}_products_batch.yaml index ae45b7c7f2..178c3b328e 100644 --- a/docs/api/admin/paths/product-categories_{id}_products_batch.yaml +++ b/docs/api/admin/paths/admin_product-categories_{id}_products_batch.yaml @@ -34,16 +34,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/product-categories_{id}_products_batch/post.js + ../code_samples/JavaScript/admin_product-categories_{id}_products_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories_{id}_products_batch/post.sh + $ref: >- + ../code_samples/Shell/admin_product-categories_{id}_products_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK @@ -99,16 +100,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/product-categories_{id}_products_batch/delete.js + ../code_samples/JavaScript/admin_product-categories_{id}_products_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories_{id}_products_batch/delete.sh + $ref: >- + ../code_samples/Shell/admin_product-categories_{id}_products_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK diff --git a/docs/api/admin/paths/product-tags.yaml b/docs/api/admin/paths/admin_product-tags.yaml similarity index 95% rename from docs/api/admin/paths/product-tags.yaml rename to docs/api/admin/paths/admin_product-tags.yaml index f933093037..8077cd2da6 100644 --- a/docs/api/admin/paths/product-tags.yaml +++ b/docs/api/admin/paths/admin_product-tags.yaml @@ -100,16 +100,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-tags/get.js + $ref: ../code_samples/JavaScript/admin_product-tags/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-tags/get.sh + $ref: ../code_samples/Shell/admin_product-tags/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Tag + - Product Tags responses: '200': description: OK diff --git a/docs/api/admin/paths/product-types.yaml b/docs/api/admin/paths/admin_product-types.yaml similarity index 95% rename from docs/api/admin/paths/product-types.yaml rename to docs/api/admin/paths/admin_product-types.yaml index 1077ae9426..b31a17e380 100644 --- a/docs/api/admin/paths/product-types.yaml +++ b/docs/api/admin/paths/admin_product-types.yaml @@ -100,16 +100,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-types/get.js + $ref: ../code_samples/JavaScript/admin_product-types/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-types/get.sh + $ref: ../code_samples/Shell/admin_product-types/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Type + - Product Types responses: '200': description: OK diff --git a/docs/api/admin/paths/products.yaml b/docs/api/admin/paths/admin_products.yaml similarity index 96% rename from docs/api/admin/paths/products.yaml rename to docs/api/admin/paths/admin_products.yaml index 7b599fb1fa..015cdbce7c 100644 --- a/docs/api/admin/paths/products.yaml +++ b/docs/api/admin/paths/admin_products.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostProducts - summary: Create a Product - x-authenticated: true - description: Creates a Product - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostProductsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/products/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/products/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetProducts summary: List Products @@ -271,16 +226,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products/get.js + $ref: ../code_samples/JavaScript/admin_products/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products/get.sh + $ref: ../code_samples/Shell/admin_products/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -300,3 +255,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostProducts + summary: Create a Product + x-authenticated: true + description: Creates a Product + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostProductsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_products/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_products/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/products_tag-usage.yaml b/docs/api/admin/paths/admin_products_tag-usage.yaml similarity index 86% rename from docs/api/admin/paths/products_tag-usage.yaml rename to docs/api/admin/paths/admin_products_tag-usage.yaml index 31544af7da..4abbf654ec 100644 --- a/docs/api/admin/paths/products_tag-usage.yaml +++ b/docs/api/admin/paths/admin_products_tag-usage.yaml @@ -9,16 +9,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_tag-usage/get.js + $ref: ../code_samples/JavaScript/admin_products_tag-usage/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_tag-usage/get.sh + $ref: ../code_samples/Shell/admin_products_tag-usage/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Tag + - Products responses: '200': description: OK diff --git a/docs/api/admin/paths/products_types.yaml b/docs/api/admin/paths/admin_products_types.yaml similarity index 86% rename from docs/api/admin/paths/products_types.yaml rename to docs/api/admin/paths/admin_products_types.yaml index 668e7a7609..949a963437 100644 --- a/docs/api/admin/paths/products_types.yaml +++ b/docs/api/admin/paths/admin_products_types.yaml @@ -10,16 +10,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_types/get.js + $ref: ../code_samples/JavaScript/admin_products_types/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_types/get.sh + $ref: ../code_samples/Shell/admin_products_types/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/admin/paths/products_{id}.yaml b/docs/api/admin/paths/admin_products_{id}.yaml similarity index 88% rename from docs/api/admin/paths/products_{id}.yaml rename to docs/api/admin/paths/admin_products_{id}.yaml index 7ecf980012..36cf087796 100644 --- a/docs/api/admin/paths/products_{id}.yaml +++ b/docs/api/admin/paths/admin_products_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteProductsProduct - summary: Delete a Product - description: Deletes a Product and it's associated Product Variants. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Product. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/products_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/products_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetProductsProduct summary: Get a Product @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}/get.js + $ref: ../code_samples/JavaScript/admin_products_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}/get.sh + $ref: ../code_samples/Shell/admin_products_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}/post.js + $ref: ../code_samples/JavaScript/admin_products_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}/post.sh + $ref: ../code_samples/Shell/admin_products_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteProductsProduct + summary: Delete a Product + description: Deletes a Product and it's associated Product Variants. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_products_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_products_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/products_{id}_metadata.yaml b/docs/api/admin/paths/admin_products_{id}_metadata.yaml similarity index 88% rename from docs/api/admin/paths/products_{id}_metadata.yaml rename to docs/api/admin/paths/admin_products_{id}_metadata.yaml index 3440873c7d..5a0b4f1cfe 100644 --- a/docs/api/admin/paths/products_{id}_metadata.yaml +++ b/docs/api/admin/paths/admin_products_{id}_metadata.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}_metadata/post.js + $ref: ../code_samples/JavaScript/admin_products_{id}_metadata/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}_metadata/post.sh + $ref: ../code_samples/Shell/admin_products_{id}_metadata/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/admin/paths/products_{id}_options.yaml b/docs/api/admin/paths/admin_products_{id}_options.yaml similarity index 88% rename from docs/api/admin/paths/products_{id}_options.yaml rename to docs/api/admin/paths/admin_products_{id}_options.yaml index 3712d6bc71..ac1388e566 100644 --- a/docs/api/admin/paths/products_{id}_options.yaml +++ b/docs/api/admin/paths/admin_products_{id}_options.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}_options/post.js + $ref: ../code_samples/JavaScript/admin_products_{id}_options/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}_options/post.sh + $ref: ../code_samples/Shell/admin_products_{id}_options/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/admin/paths/products_{id}_options_{option_id}.yaml b/docs/api/admin/paths/admin_products_{id}_options_{option_id}.yaml similarity index 87% rename from docs/api/admin/paths/products_{id}_options_{option_id}.yaml rename to docs/api/admin/paths/admin_products_{id}_options_{option_id}.yaml index 4250264983..c7c21d88bb 100644 --- a/docs/api/admin/paths/products_{id}_options_{option_id}.yaml +++ b/docs/api/admin/paths/admin_products_{id}_options_{option_id}.yaml @@ -1,59 +1,3 @@ -delete: - operationId: DeleteProductsProductOptionsOption - summary: Delete a Product Option - description: >- - Deletes a Product Option. Before a Product Option can be deleted all Option - Values for the Product Option must be the same. You may, for example, have - to delete some of your variants prior to deleting the Product Option - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Product. - schema: - type: string - - in: path - name: option_id - required: true - description: The ID of the Product Option. - schema: - type: string - x-codegen: - method: deleteOption - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/products_{id}_options_{option_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/products_{id}_options_{option_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductsDeleteOptionRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostProductsProductOptionsOption summary: Update a Product Option @@ -83,16 +27,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}_options_{option_id}/post.js + $ref: >- + ../code_samples/JavaScript/admin_products_{id}_options_{option_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}_options_{option_id}/post.sh + $ref: ../code_samples/Shell/admin_products_{id}_options_{option_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -112,3 +57,61 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteProductsProductOptionsOption + summary: Delete a Product Option + description: >- + Deletes a Product Option. Before a Product Option can be deleted all Option + Values for the Product Option must be the same. You may, for example, have + to delete some of your variants prior to deleting the Product Option + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: option_id + required: true + description: The ID of the Product Option. + schema: + type: string + x-codegen: + method: deleteOption + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_products_{id}_options_{option_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_products_{id}_options_{option_id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductsDeleteOptionRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/products_{id}_variants.yaml b/docs/api/admin/paths/admin_products_{id}_variants.yaml similarity index 92% rename from docs/api/admin/paths/products_{id}_variants.yaml rename to docs/api/admin/paths/admin_products_{id}_variants.yaml index 408793da9a..ebfc2551a2 100644 --- a/docs/api/admin/paths/products_{id}_variants.yaml +++ b/docs/api/admin/paths/admin_products_{id}_variants.yaml @@ -1,57 +1,3 @@ -post: - operationId: PostProductsProductVariants - summary: Create a Product Variant - description: >- - Creates a Product Variant. Each Product Variant must have a unique - combination of Product Option Values. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Product. - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostProductsProductVariantsReq.yaml - x-codegen: - method: createVariant - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/products_{id}_variants/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/products_{id}_variants/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetProductsProductVariants summary: List a Product's Variants @@ -93,12 +39,12 @@ get: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}_variants/get.sh + $ref: ../code_samples/Shell/admin_products_{id}_variants/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -118,3 +64,57 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostProductsProductVariants + summary: Create a Product Variant + description: >- + Creates a Product Variant. Each Product Variant must have a unique + combination of Product Option Values. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostProductsProductVariantsReq.yaml + x-codegen: + method: createVariant + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_products_{id}_variants/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_products_{id}_variants/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/products_{id}_variants_{variant_id}.yaml b/docs/api/admin/paths/admin_products_{id}_variants_{variant_id}.yaml similarity index 86% rename from docs/api/admin/paths/products_{id}_variants_{variant_id}.yaml rename to docs/api/admin/paths/admin_products_{id}_variants_{variant_id}.yaml index 52cead6eca..c42bce30e3 100644 --- a/docs/api/admin/paths/products_{id}_variants_{variant_id}.yaml +++ b/docs/api/admin/paths/admin_products_{id}_variants_{variant_id}.yaml @@ -1,57 +1,3 @@ -delete: - operationId: DeleteProductsProductVariantsVariant - summary: Delete a Product Variant - description: Deletes a Product Variant. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Product. - schema: - type: string - - in: path - name: variant_id - required: true - description: The ID of the Product Variant. - schema: - type: string - x-codegen: - method: deleteVariant - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/products_{id}_variants_{variant_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/products_{id}_variants_{variant_id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Product - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminProductsDeleteVariantRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostProductsProductVariantsVariant summary: Update a Product Variant @@ -82,16 +28,18 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}_variants_{variant_id}/post.js + $ref: >- + ../code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}_variants_{variant_id}/post.sh + $ref: >- + ../code_samples/Shell/admin_products_{id}_variants_{variant_id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Product + - Products responses: '200': description: OK @@ -111,3 +59,58 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteProductsProductVariantsVariant + summary: Delete a Product Variant + description: Deletes a Product Variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Product. + schema: + type: string + - in: path + name: variant_id + required: true + description: The ID of the Product Variant. + schema: + type: string + x-codegen: + method: deleteVariant + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/admin_products_{id}_variants_{variant_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/admin_products_{id}_variants_{variant_id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminProductsDeleteVariantRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/publishable-api-key_{id}.yaml b/docs/api/admin/paths/admin_publishable-api-key_{id}.yaml similarity index 87% rename from docs/api/admin/paths/publishable-api-key_{id}.yaml rename to docs/api/admin/paths/admin_publishable-api-key_{id}.yaml index 18f468adf5..bf53950b68 100644 --- a/docs/api/admin/paths/publishable-api-key_{id}.yaml +++ b/docs/api/admin/paths/admin_publishable-api-key_{id}.yaml @@ -22,16 +22,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/publishable-api-key_{id}/post.js + $ref: ../code_samples/JavaScript/admin_publishable-api-key_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/publishable-api-key_{id}/post.sh + $ref: ../code_samples/Shell/admin_publishable-api-key_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK diff --git a/docs/api/admin/paths/publishable-api-keys.yaml b/docs/api/admin/paths/admin_publishable-api-keys.yaml similarity index 89% rename from docs/api/admin/paths/publishable-api-keys.yaml rename to docs/api/admin/paths/admin_publishable-api-keys.yaml index c70d47abb0..3b2eac0bee 100644 --- a/docs/api/admin/paths/publishable-api-keys.yaml +++ b/docs/api/admin/paths/admin_publishable-api-keys.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostPublishableApiKeys - summary: Create PublishableApiKey - description: Creates a PublishableApiKey. - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostPublishableApiKeysReq.yaml - x-authenticated: true - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/publishable-api-keys/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/publishable-api-keys/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - PublishableApiKey - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPublishableApiKeysRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetPublishableApiKeys summary: List PublishableApiKeys @@ -83,16 +38,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/publishable-api-keys/get.js + $ref: ../code_samples/JavaScript/admin_publishable-api-keys/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/publishable-api-keys/get.sh + $ref: ../code_samples/Shell/admin_publishable-api-keys/get.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK @@ -112,3 +67,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostPublishableApiKeys + summary: Create PublishableApiKey + description: Creates a PublishableApiKey. + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostPublishableApiKeysReq.yaml + x-authenticated: true + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_publishable-api-keys/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_publishable-api-keys/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminPublishableApiKeysRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/publishable-api-keys_{id}.yaml b/docs/api/admin/paths/admin_publishable-api-keys_{id}.yaml similarity index 83% rename from docs/api/admin/paths/publishable-api-keys_{id}.yaml rename to docs/api/admin/paths/admin_publishable-api-keys_{id}.yaml index b220a81531..9cd04da177 100644 --- a/docs/api/admin/paths/publishable-api-keys_{id}.yaml +++ b/docs/api/admin/paths/admin_publishable-api-keys_{id}.yaml @@ -1,40 +1,3 @@ -delete: - operationId: DeletePublishableApiKeysPublishableApiKey - summary: Delete PublishableApiKey - description: Deletes a PublishableApiKeys - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the PublishableApiKeys to delete. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/publishable-api-keys_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/publishable-api-keys_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - PublishableApiKey - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPublishableApiKeyDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml get: operationId: GetPublishableApiKeysPublishableApiKey summary: Get a PublishableApiKey @@ -53,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/publishable-api-keys_{id}/get.js + $ref: ../code_samples/JavaScript/admin_publishable-api-keys_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/publishable-api-keys_{id}/get.sh + $ref: ../code_samples/Shell/admin_publishable-api-keys_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK @@ -82,3 +45,40 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeletePublishableApiKeysPublishableApiKey + summary: Delete PublishableApiKey + description: Deletes a PublishableApiKeys + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the PublishableApiKeys to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_publishable-api-keys_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_publishable-api-keys_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Publishable Api Keys + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminPublishableApiKeyDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml diff --git a/docs/api/admin/paths/publishable-api-keys_{id}_revoke.yaml b/docs/api/admin/paths/admin_publishable-api-keys_{id}_revoke.yaml similarity index 84% rename from docs/api/admin/paths/publishable-api-keys_{id}_revoke.yaml rename to docs/api/admin/paths/admin_publishable-api-keys_{id}_revoke.yaml index 357160386e..76f259ad17 100644 --- a/docs/api/admin/paths/publishable-api-keys_{id}_revoke.yaml +++ b/docs/api/admin/paths/admin_publishable-api-keys_{id}_revoke.yaml @@ -16,16 +16,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/publishable-api-keys_{id}_revoke/post.js + $ref: >- + ../code_samples/JavaScript/admin_publishable-api-keys_{id}_revoke/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/publishable-api-keys_{id}_revoke/post.sh + $ref: ../code_samples/Shell/admin_publishable-api-keys_{id}_revoke/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK diff --git a/docs/api/admin/paths/publishable-api-keys_{id}_sales-channels.yaml b/docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels.yaml similarity index 86% rename from docs/api/admin/paths/publishable-api-keys_{id}_sales-channels.yaml rename to docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels.yaml index 549f69c3e5..1e94dfba13 100644 --- a/docs/api/admin/paths/publishable-api-keys_{id}_sales-channels.yaml +++ b/docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels.yaml @@ -23,16 +23,17 @@ get: label: JS Client source: $ref: >- - ../code_samples/JavaScript/publishable-api-keys_{id}_sales-channels/get.js + ../code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/publishable-api-keys_{id}_sales-channels/get.sh + $ref: >- + ../code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels/get.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK diff --git a/docs/api/admin/paths/publishable-api-keys_{id}_sales-channels_batch.yaml b/docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels_batch.yaml similarity index 86% rename from docs/api/admin/paths/publishable-api-keys_{id}_sales-channels_batch.yaml rename to docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels_batch.yaml index 7e13a1a0a2..6a4b968f3f 100644 --- a/docs/api/admin/paths/publishable-api-keys_{id}_sales-channels_batch.yaml +++ b/docs/api/admin/paths/admin_publishable-api-keys_{id}_sales-channels_batch.yaml @@ -23,17 +23,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/post.js + ../code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/post.sh + ../code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK @@ -78,17 +78,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/publishable-api-keys_{id}_sales-channels_batch/delete.js + ../code_samples/JavaScript/admin_publishable-api-keys_{id}_sales-channels_batch/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/publishable-api-keys_{id}_sales-channels_batch/delete.sh + ../code_samples/Shell/admin_publishable-api-keys_{id}_sales-channels_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - PublishableApiKey + - Publishable Api Keys responses: '200': description: OK diff --git a/docs/api/admin/paths/regions.yaml b/docs/api/admin/paths/admin_regions.yaml similarity index 91% rename from docs/api/admin/paths/regions.yaml rename to docs/api/admin/paths/admin_regions.yaml index 62f76fda96..eb111a0c26 100644 --- a/docs/api/admin/paths/regions.yaml +++ b/docs/api/admin/paths/admin_regions.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostRegions - summary: Create a Region - description: Creates a Region - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostRegionsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/regions/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/regions/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Region - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminRegionsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetRegions summary: List Regions @@ -94,16 +49,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions/get.js + $ref: ../code_samples/JavaScript/admin_regions/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions/get.sh + $ref: ../code_samples/Shell/admin_regions/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK @@ -123,3 +78,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostRegions + summary: Create a Region + description: Creates a Region + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostRegionsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_regions/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_regions/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminRegionsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/regions_{id}.yaml b/docs/api/admin/paths/admin_regions_{id}.yaml similarity index 88% rename from docs/api/admin/paths/regions_{id}.yaml rename to docs/api/admin/paths/admin_regions_{id}.yaml index c0077f6a60..11dddce5f8 100644 --- a/docs/api/admin/paths/regions_{id}.yaml +++ b/docs/api/admin/paths/admin_regions_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteRegionsRegion - summary: Delete a Region - description: Deletes a Region. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Region. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/regions_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/regions_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Region - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminRegionsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetRegionsRegion summary: Get a Region @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}/get.js + $ref: ../code_samples/JavaScript/admin_regions_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}/get.sh + $ref: ../code_samples/Shell/admin_regions_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}/post.js + $ref: ../code_samples/JavaScript/admin_regions_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}/post.sh + $ref: ../code_samples/Shell/admin_regions_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteRegionsRegion + summary: Delete a Region + description: Deletes a Region. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Region. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_regions_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_regions_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminRegionsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/regions_{id}_countries.yaml b/docs/api/admin/paths/admin_regions_{id}_countries.yaml similarity index 88% rename from docs/api/admin/paths/regions_{id}_countries.yaml rename to docs/api/admin/paths/admin_regions_{id}_countries.yaml index f95d51fb16..7216646d2c 100644 --- a/docs/api/admin/paths/regions_{id}_countries.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_countries.yaml @@ -21,16 +21,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}_countries/post.js + $ref: ../code_samples/JavaScript/admin_regions_{id}_countries/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}_countries/post.sh + $ref: ../code_samples/Shell/admin_regions_{id}_countries/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_countries_{country_code}.yaml b/docs/api/admin/paths/admin_regions_{id}_countries_{country_code}.yaml similarity index 87% rename from docs/api/admin/paths/regions_{id}_countries_{country_code}.yaml rename to docs/api/admin/paths/admin_regions_{id}_countries_{country_code}.yaml index 84c6bcdfa3..e653031cbc 100644 --- a/docs/api/admin/paths/regions_{id}_countries_{country_code}.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_countries_{country_code}.yaml @@ -26,16 +26,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/regions_{id}_countries_{country_code}/delete.js + ../code_samples/JavaScript/admin_regions_{id}_countries_{country_code}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}_countries_{country_code}/delete.sh + $ref: >- + ../code_samples/Shell/admin_regions_{id}_countries_{country_code}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_fulfillment-options.yaml b/docs/api/admin/paths/admin_regions_{id}_fulfillment-options.yaml similarity index 85% rename from docs/api/admin/paths/regions_{id}_fulfillment-options.yaml rename to docs/api/admin/paths/admin_regions_{id}_fulfillment-options.yaml index 0a585cdd09..e1c4aee49a 100644 --- a/docs/api/admin/paths/regions_{id}_fulfillment-options.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_fulfillment-options.yaml @@ -16,16 +16,17 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}_fulfillment-options/get.js + $ref: >- + ../code_samples/JavaScript/admin_regions_{id}_fulfillment-options/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}_fulfillment-options/get.sh + $ref: ../code_samples/Shell/admin_regions_{id}_fulfillment-options/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_fulfillment-providers.yaml b/docs/api/admin/paths/admin_regions_{id}_fulfillment-providers.yaml similarity index 86% rename from docs/api/admin/paths/regions_{id}_fulfillment-providers.yaml rename to docs/api/admin/paths/admin_regions_{id}_fulfillment-providers.yaml index 0264a95890..8eba44d0ed 100644 --- a/docs/api/admin/paths/regions_{id}_fulfillment-providers.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_fulfillment-providers.yaml @@ -22,16 +22,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}_fulfillment-providers/post.js + $ref: >- + ../code_samples/JavaScript/admin_regions_{id}_fulfillment-providers/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}_fulfillment-providers/post.sh + $ref: ../code_samples/Shell/admin_regions_{id}_fulfillment-providers/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_fulfillment-providers_{provider_id}.yaml b/docs/api/admin/paths/admin_regions_{id}_fulfillment-providers_{provider_id}.yaml similarity index 86% rename from docs/api/admin/paths/regions_{id}_fulfillment-providers_{provider_id}.yaml rename to docs/api/admin/paths/admin_regions_{id}_fulfillment-providers_{provider_id}.yaml index 4a5bb28931..b0a1479d77 100644 --- a/docs/api/admin/paths/regions_{id}_fulfillment-providers_{provider_id}.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_fulfillment-providers_{provider_id}.yaml @@ -23,17 +23,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/regions_{id}_fulfillment-providers_{provider_id}/delete.js + ../code_samples/JavaScript/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/regions_{id}_fulfillment-providers_{provider_id}/delete.sh + ../code_samples/Shell/admin_regions_{id}_fulfillment-providers_{provider_id}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_payment-providers.yaml b/docs/api/admin/paths/admin_regions_{id}_payment-providers.yaml similarity index 86% rename from docs/api/admin/paths/regions_{id}_payment-providers.yaml rename to docs/api/admin/paths/admin_regions_{id}_payment-providers.yaml index d649d62f1d..b75982b636 100644 --- a/docs/api/admin/paths/regions_{id}_payment-providers.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_payment-providers.yaml @@ -21,16 +21,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}_payment-providers/post.js + $ref: >- + ../code_samples/JavaScript/admin_regions_{id}_payment-providers/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}_payment-providers/post.sh + $ref: ../code_samples/Shell/admin_regions_{id}_payment-providers/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/regions_{id}_payment-providers_{provider_id}.yaml b/docs/api/admin/paths/admin_regions_{id}_payment-providers_{provider_id}.yaml similarity index 86% rename from docs/api/admin/paths/regions_{id}_payment-providers_{provider_id}.yaml rename to docs/api/admin/paths/admin_regions_{id}_payment-providers_{provider_id}.yaml index dc9a42c001..aad8aae415 100644 --- a/docs/api/admin/paths/regions_{id}_payment-providers_{provider_id}.yaml +++ b/docs/api/admin/paths/admin_regions_{id}_payment-providers_{provider_id}.yaml @@ -23,17 +23,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/regions_{id}_payment-providers_{provider_id}/delete.js + ../code_samples/JavaScript/admin_regions_{id}_payment-providers_{provider_id}/delete.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/regions_{id}_payment-providers_{provider_id}/delete.sh + ../code_samples/Shell/admin_regions_{id}_payment-providers_{provider_id}/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/admin/paths/reservations.yaml b/docs/api/admin/paths/admin_reservations.yaml similarity index 89% rename from docs/api/admin/paths/reservations.yaml rename to docs/api/admin/paths/admin_reservations.yaml index 5ab2b611c6..b9e6b80063 100644 --- a/docs/api/admin/paths/reservations.yaml +++ b/docs/api/admin/paths/admin_reservations.yaml @@ -1,46 +1,3 @@ -post: - operationId: PostReservations - summary: Creates a Reservation - description: Creates a Reservation which can be associated with any resource as required. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostReservationsReq.yaml - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/reservations/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/reservations/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Reservation - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostReservationsReq.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetReservations summary: List Reservations @@ -120,23 +77,69 @@ get: category. schema: type: string + x-codegen: + method: list + queryParams: AdminGetReservationsParams x-codeSamples: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/reservations/get.sh + $ref: ../code_samples/Shell/admin_reservations/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Reservations responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/AdminGetReservationReservationsReq.yaml + $ref: ../components/schemas/AdminReservationsListRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +post: + operationId: PostReservations + summary: Creates a Reservation + description: Creates a Reservation which can be associated with any resource as required. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostReservationsReq.yaml + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_reservations/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_reservations/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminReservationsRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/admin/paths/reservations_{id}.yaml b/docs/api/admin/paths/admin_reservations_{id}.yaml similarity index 75% rename from docs/api/admin/paths/reservations_{id}.yaml rename to docs/api/admin/paths/admin_reservations_{id}.yaml index 587a62a1d0..aa0cf2fe6c 100644 --- a/docs/api/admin/paths/reservations_{id}.yaml +++ b/docs/api/admin/paths/admin_reservations_{id}.yaml @@ -1,60 +1,3 @@ -delete: - operationId: DeleteReservationsReservation - summary: Delete a Reservation - description: Deletes a Reservation. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Reservation to delete. - schema: - type: string - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/reservations_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/reservations_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Reservation - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - id: - type: string - description: The ID of the deleted Reservation. - object: - type: string - description: The type of the object that was deleted. - default: reservation - deleted: - type: boolean - description: Whether or not the Reservation was deleted. - default: true - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetReservationsReservation summary: Get a Reservation @@ -71,23 +14,23 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/reservations_{id}/get.js + $ref: ../code_samples/JavaScript/admin_reservations_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/reservations_{id}/get.sh + $ref: ../code_samples/Shell/admin_reservations_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Reservation + - Reservations responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/AdminPostReservationsReq.yaml + $ref: ../components/schemas/AdminReservationsRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': @@ -121,23 +64,70 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/reservations_{id}/post.js + $ref: ../code_samples/JavaScript/admin_reservations_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/reservations_{id}/post.sh + $ref: ../code_samples/Shell/admin_reservations_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Reservation + - Reservations responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/AdminPostReservationsReq.yaml + $ref: ../components/schemas/AdminReservationsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteReservationsReservation + summary: Delete a Reservation + description: Deletes a Reservation. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Reservation to delete. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_reservations_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_reservations_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Reservations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminReservationsDeleteRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/admin/paths/return-reasons.yaml b/docs/api/admin/paths/admin_return-reasons.yaml similarity index 86% rename from docs/api/admin/paths/return-reasons.yaml rename to docs/api/admin/paths/admin_return-reasons.yaml index 5c195c9370..942fcb4ef3 100644 --- a/docs/api/admin/paths/return-reasons.yaml +++ b/docs/api/admin/paths/admin_return-reasons.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostReturnReasons - summary: Create a Return Reason - description: Creates a Return Reason - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostReturnReasonsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/return-reasons/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/return-reasons/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Return Reason - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminReturnReasonsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetReturnReasons summary: List Return Reasons @@ -54,16 +9,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/return-reasons/get.js + $ref: ../code_samples/JavaScript/admin_return-reasons/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/return-reasons/get.sh + $ref: ../code_samples/Shell/admin_return-reasons/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Return Reason + - Return Reasons responses: '200': description: OK @@ -83,3 +38,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostReturnReasons + summary: Create a Return Reason + description: Creates a Return Reason + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostReturnReasonsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_return-reasons/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_return-reasons/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminReturnReasonsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/return-reasons_{id}.yaml b/docs/api/admin/paths/admin_return-reasons_{id}.yaml similarity index 87% rename from docs/api/admin/paths/return-reasons_{id}.yaml rename to docs/api/admin/paths/admin_return-reasons_{id}.yaml index 1de20751f2..5097081744 100644 --- a/docs/api/admin/paths/return-reasons_{id}.yaml +++ b/docs/api/admin/paths/admin_return-reasons_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteReturnReason - summary: Delete a Return Reason - description: Deletes a return reason. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the return reason - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/return-reasons_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/return-reasons_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Return Reason - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminReturnReasonsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetReturnReasonsReason summary: Get a Return Reason @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/return-reasons_{id}/get.js + $ref: ../code_samples/JavaScript/admin_return-reasons_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/return-reasons_{id}/get.sh + $ref: ../code_samples/Shell/admin_return-reasons_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Return Reason + - Return Reasons responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/return-reasons_{id}/post.js + $ref: ../code_samples/JavaScript/admin_return-reasons_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/return-reasons_{id}/post.sh + $ref: ../code_samples/Shell/admin_return-reasons_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Return Reason + - Return Reasons responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteReturnReason + summary: Delete a Return Reason + description: Deletes a return reason. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the return reason + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_return-reasons_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_return-reasons_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminReturnReasonsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/returns.yaml b/docs/api/admin/paths/admin_returns.yaml similarity index 90% rename from docs/api/admin/paths/returns.yaml rename to docs/api/admin/paths/admin_returns.yaml index e7a8aed6de..d716c6583e 100644 --- a/docs/api/admin/paths/returns.yaml +++ b/docs/api/admin/paths/admin_returns.yaml @@ -22,16 +22,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/returns/get.js + $ref: ../code_samples/JavaScript/admin_returns/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/returns/get.sh + $ref: ../code_samples/Shell/admin_returns/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Return + - Returns responses: '200': description: OK diff --git a/docs/api/admin/paths/returns_{id}_cancel.yaml b/docs/api/admin/paths/admin_returns_{id}_cancel.yaml similarity index 86% rename from docs/api/admin/paths/returns_{id}_cancel.yaml rename to docs/api/admin/paths/admin_returns_{id}_cancel.yaml index 62932b8110..fa41d224fa 100644 --- a/docs/api/admin/paths/returns_{id}_cancel.yaml +++ b/docs/api/admin/paths/admin_returns_{id}_cancel.yaml @@ -15,16 +15,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/returns_{id}_cancel/post.js + $ref: ../code_samples/JavaScript/admin_returns_{id}_cancel/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/returns_{id}_cancel/post.sh + $ref: ../code_samples/Shell/admin_returns_{id}_cancel/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Return + - Returns responses: '200': description: OK diff --git a/docs/api/admin/paths/returns_{id}_receive.yaml b/docs/api/admin/paths/admin_returns_{id}_receive.yaml similarity index 88% rename from docs/api/admin/paths/returns_{id}_receive.yaml rename to docs/api/admin/paths/admin_returns_{id}_receive.yaml index 9c253f6378..156c30bfae 100644 --- a/docs/api/admin/paths/returns_{id}_receive.yaml +++ b/docs/api/admin/paths/admin_returns_{id}_receive.yaml @@ -22,16 +22,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/returns_{id}_receive/post.js + $ref: ../code_samples/JavaScript/admin_returns_{id}_receive/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/returns_{id}_receive/post.sh + $ref: ../code_samples/Shell/admin_returns_{id}_receive/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Return + - Returns responses: '200': description: OK diff --git a/docs/api/admin/paths/sales-channels.yaml b/docs/api/admin/paths/admin_sales-channels.yaml similarity index 94% rename from docs/api/admin/paths/sales-channels.yaml rename to docs/api/admin/paths/admin_sales-channels.yaml index e895f39b06..127f968561 100644 --- a/docs/api/admin/paths/sales-channels.yaml +++ b/docs/api/admin/paths/admin_sales-channels.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostSalesChannels - summary: Create a Sales Channel - description: Creates a Sales Channel. - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostSalesChannelsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/sales-channels/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/sales-channels/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Sales Channel - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminSalesChannelsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetSalesChannels summary: List Sales Channels @@ -173,16 +128,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/sales-channels/get.js + $ref: ../code_samples/JavaScript/admin_sales-channels/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels/get.sh + $ref: ../code_samples/Shell/admin_sales-channels/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK @@ -202,3 +157,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostSalesChannels + summary: Create a Sales Channel + description: Creates a Sales Channel. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostSalesChannelsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_sales-channels/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_sales-channels/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminSalesChannelsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/sales-channels_{id}.yaml b/docs/api/admin/paths/admin_sales-channels_{id}.yaml similarity index 87% rename from docs/api/admin/paths/sales-channels_{id}.yaml rename to docs/api/admin/paths/admin_sales-channels_{id}.yaml index 73d5678d53..abd8fbb30b 100644 --- a/docs/api/admin/paths/sales-channels_{id}.yaml +++ b/docs/api/admin/paths/admin_sales-channels_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteSalesChannelsSalesChannel - summary: Delete a Sales Channel - description: Deletes the sales channel. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Sales channel. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/sales-channels_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/sales-channels_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Sales Channel - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminSalesChannelsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetSalesChannelsSalesChannel summary: Get a Sales Channel @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/sales-channels_{id}/get.js + $ref: ../code_samples/JavaScript/admin_sales-channels_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}/get.sh + $ref: ../code_samples/Shell/admin_sales-channels_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/sales-channels_{id}/post.js + $ref: ../code_samples/JavaScript/admin_sales-channels_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}/post.sh + $ref: ../code_samples/Shell/admin_sales-channels_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteSalesChannelsSalesChannel + summary: Delete a Sales Channel + description: Deletes the sales channel. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Sales channel. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_sales-channels_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_sales-channels_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Sales Channels + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminSalesChannelsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/sales-channels_{id}_products_batch.yaml b/docs/api/admin/paths/admin_sales-channels_{id}_products_batch.yaml similarity index 86% rename from docs/api/admin/paths/sales-channels_{id}_products_batch.yaml rename to docs/api/admin/paths/admin_sales-channels_{id}_products_batch.yaml index 459942b185..12fccc67f4 100644 --- a/docs/api/admin/paths/sales-channels_{id}_products_batch.yaml +++ b/docs/api/admin/paths/admin_sales-channels_{id}_products_batch.yaml @@ -22,16 +22,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/sales-channels_{id}_products_batch/post.js + $ref: >- + ../code_samples/JavaScript/admin_sales-channels_{id}_products_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}_products_batch/post.sh + $ref: ../code_samples/Shell/admin_sales-channels_{id}_products_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK @@ -76,16 +77,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/sales-channels_{id}_products_batch/delete.js + ../code_samples/JavaScript/admin_sales-channels_{id}_products_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}_products_batch/delete.sh + $ref: >- + ../code_samples/Shell/admin_sales-channels_{id}_products_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK diff --git a/docs/api/admin/paths/sales-channels_{id}_stock-locations.yaml b/docs/api/admin/paths/admin_sales-channels_{id}_stock-locations.yaml similarity index 86% rename from docs/api/admin/paths/sales-channels_{id}_stock-locations.yaml rename to docs/api/admin/paths/admin_sales-channels_{id}_stock-locations.yaml index 8aadd7fb3a..0f1681ac84 100644 --- a/docs/api/admin/paths/sales-channels_{id}_stock-locations.yaml +++ b/docs/api/admin/paths/admin_sales-channels_{id}_stock-locations.yaml @@ -22,16 +22,18 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/sales-channels_{id}_stock-locations/post.js + $ref: >- + ../code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}_stock-locations/post.sh + $ref: >- + ../code_samples/Shell/admin_sales-channels_{id}_stock-locations/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK @@ -76,16 +78,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/sales-channels_{id}_stock-locations/delete.js + ../code_samples/JavaScript/admin_sales-channels_{id}_stock-locations/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/sales-channels_{id}_stock-locations/delete.sh + $ref: >- + ../code_samples/Shell/admin_sales-channels_{id}_stock-locations/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Sales Channels responses: '200': description: OK diff --git a/docs/api/admin/paths/shipping-options.yaml b/docs/api/admin/paths/admin_shipping-options.yaml similarity index 88% rename from docs/api/admin/paths/shipping-options.yaml rename to docs/api/admin/paths/admin_shipping-options.yaml index e2b6222ae7..4f18704bc7 100644 --- a/docs/api/admin/paths/shipping-options.yaml +++ b/docs/api/admin/paths/admin_shipping-options.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostShippingOptions - summary: Create Shipping Option - description: Creates a Shipping Option - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostShippingOptionsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/shipping-options/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/shipping-options/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Shipping Option - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminShippingOptionsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetShippingOptions summary: List Shipping Options @@ -71,16 +26,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-options/get.js + $ref: ../code_samples/JavaScript/admin_shipping-options/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-options/get.sh + $ref: ../code_samples/Shell/admin_shipping-options/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Option + - Shipping Options responses: '200': description: OK @@ -100,3 +55,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostShippingOptions + summary: Create Shipping Option + description: Creates a Shipping Option + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostShippingOptionsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_shipping-options/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_shipping-options/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminShippingOptionsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/shipping-options_{id}.yaml b/docs/api/admin/paths/admin_shipping-options_{id}.yaml similarity index 86% rename from docs/api/admin/paths/shipping-options_{id}.yaml rename to docs/api/admin/paths/admin_shipping-options_{id}.yaml index af892d47e0..1e60a2fba7 100644 --- a/docs/api/admin/paths/shipping-options_{id}.yaml +++ b/docs/api/admin/paths/admin_shipping-options_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteShippingOptionsOption - summary: Delete a Shipping Option - description: Deletes a Shipping Option. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Shipping Option. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/shipping-options_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/shipping-options_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Shipping Option - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminShippingOptionsDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetShippingOptionsOption summary: Get a Shipping Option @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-options_{id}/get.js + $ref: ../code_samples/JavaScript/admin_shipping-options_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-options_{id}/get.sh + $ref: ../code_samples/Shell/admin_shipping-options_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Option + - Shipping Options responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-options_{id}/post.js + $ref: ../code_samples/JavaScript/admin_shipping-options_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-options_{id}/post.sh + $ref: ../code_samples/Shell/admin_shipping-options_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Option + - Shipping Options responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteShippingOptionsOption + summary: Delete a Shipping Option + description: Deletes a Shipping Option. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_shipping-options_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_shipping-options_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminShippingOptionsDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/shipping-profiles.yaml b/docs/api/admin/paths/admin_shipping-profiles.yaml similarity index 86% rename from docs/api/admin/paths/shipping-profiles.yaml rename to docs/api/admin/paths/admin_shipping-profiles.yaml index 14080c61f1..43ce69665d 100644 --- a/docs/api/admin/paths/shipping-profiles.yaml +++ b/docs/api/admin/paths/admin_shipping-profiles.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostShippingProfiles - summary: Create a Shipping Profile - description: Creates a Shipping Profile - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostShippingProfilesReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/shipping-profiles/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/shipping-profiles/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Shipping Profile - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminShippingProfilesRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetShippingProfiles summary: List Shipping Profiles @@ -54,16 +9,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-profiles/get.js + $ref: ../code_samples/JavaScript/admin_shipping-profiles/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-profiles/get.sh + $ref: ../code_samples/Shell/admin_shipping-profiles/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Profile + - Shipping Profiles responses: '200': description: OK @@ -83,3 +38,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostShippingProfiles + summary: Create a Shipping Profile + description: Creates a Shipping Profile + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostShippingProfilesReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_shipping-profiles/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_shipping-profiles/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminShippingProfilesRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/shipping-profiles_{id}.yaml b/docs/api/admin/paths/admin_shipping-profiles_{id}.yaml similarity index 86% rename from docs/api/admin/paths/shipping-profiles_{id}.yaml rename to docs/api/admin/paths/admin_shipping-profiles_{id}.yaml index 00ed6dbff3..62fffb5901 100644 --- a/docs/api/admin/paths/shipping-profiles_{id}.yaml +++ b/docs/api/admin/paths/admin_shipping-profiles_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteShippingProfilesProfile - summary: Delete a Shipping Profile - description: Deletes a Shipping Profile. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Shipping Profile. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/shipping-profiles_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/shipping-profiles_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Shipping Profile - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDeleteShippingProfileRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetShippingProfilesProfile summary: Get a Shipping Profile @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-profiles_{id}/get.js + $ref: ../code_samples/JavaScript/admin_shipping-profiles_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-profiles_{id}/get.sh + $ref: ../code_samples/Shell/admin_shipping-profiles_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Profile + - Shipping Profiles responses: '200': description: OK @@ -114,16 +67,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-profiles_{id}/post.js + $ref: ../code_samples/JavaScript/admin_shipping-profiles_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-profiles_{id}/post.sh + $ref: ../code_samples/Shell/admin_shipping-profiles_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Shipping Profile + - Shipping Profiles responses: '200': description: OK @@ -143,3 +96,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteShippingProfilesProfile + summary: Delete a Shipping Profile + description: Deletes a Shipping Profile. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Profile. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_shipping-profiles_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_shipping-profiles_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Shipping Profiles + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDeleteShippingProfileRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/stock-locations.yaml b/docs/api/admin/paths/admin_stock-locations.yaml similarity index 94% rename from docs/api/admin/paths/stock-locations.yaml rename to docs/api/admin/paths/admin_stock-locations.yaml index 38f410cf76..25cda8edc9 100644 --- a/docs/api/admin/paths/stock-locations.yaml +++ b/docs/api/admin/paths/admin_stock-locations.yaml @@ -1,59 +1,3 @@ -post: - operationId: PostStockLocations - summary: Create a Stock Location - description: Creates a Stock Location. - x-authenticated: true - parameters: - - in: query - name: expand - description: Comma separated list of relations to include in the results. - schema: - type: string - - in: query - name: fields - description: Comma separated list of fields to include in the results. - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostStockLocationsReq.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/stock-locations/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/stock-locations/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Stock Location - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminStockLocationsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetStockLocations summary: List Stock Locations @@ -174,16 +118,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/stock-locations/get.js + $ref: ../code_samples/JavaScript/admin_stock-locations/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/stock-locations/get.sh + $ref: ../code_samples/Shell/admin_stock-locations/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Sales Channel + - Stock Locations responses: '200': description: OK @@ -203,3 +147,59 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostStockLocations + summary: Create a Stock Location + description: Creates a Stock Location. + x-authenticated: true + parameters: + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostStockLocationsReq.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_stock-locations/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_stock-locations/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminStockLocationsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/stock-locations_{id}.yaml b/docs/api/admin/paths/admin_stock-locations_{id}.yaml similarity index 88% rename from docs/api/admin/paths/stock-locations_{id}.yaml rename to docs/api/admin/paths/admin_stock-locations_{id}.yaml index f22b4cef3d..eb46ce8a80 100644 --- a/docs/api/admin/paths/stock-locations_{id}.yaml +++ b/docs/api/admin/paths/admin_stock-locations_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteStockLocationsStockLocation - summary: Delete a Stock Location - description: Delete a Stock Location - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Stock Location to delete. - schema: - type: string - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/stock-locations_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/stock-locations_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - StockLocation - responses: - '200': - description: OK - content: - application/json: - schema: - type: object - properties: - id: - type: string - description: The ID of the deleted Stock Location. - object: - type: string - description: The type of the object that was deleted. - format: stock_location - deleted: - type: boolean - description: Whether or not the Stock Location was deleted. - default: true - '400': - $ref: ../components/responses/400_error.yaml get: operationId: GetStockLocationsStockLocation summary: Get a Stock Location @@ -74,16 +27,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/stock-locations_{id}/get.js + $ref: ../code_samples/JavaScript/admin_stock-locations_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/stock-locations_{id}/get.sh + $ref: ../code_samples/Shell/admin_stock-locations_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Stock Location + - Stock Locations responses: '200': description: OK @@ -124,16 +77,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/stock-locations_{id}/post.js + $ref: ../code_samples/JavaScript/admin_stock-locations_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/stock-locations_{id}/post.sh + $ref: ../code_samples/Shell/admin_stock-locations_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Stock Location + - Stock Locations responses: '200': description: OK @@ -153,3 +106,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteStockLocationsStockLocation + summary: Delete a Stock Location + description: Delete a Stock Location + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Stock Location to delete. + schema: + type: string + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_stock-locations_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_stock-locations_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Stock Locations + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + id: + type: string + description: The ID of the deleted Stock Location. + object: + type: string + description: The type of the object that was deleted. + format: stock_location + deleted: + type: boolean + description: Whether or not the Stock Location was deleted. + default: true + '400': + $ref: ../components/responses/400_error.yaml diff --git a/docs/api/admin/paths/store.yaml b/docs/api/admin/paths/admin_store.yaml similarity index 86% rename from docs/api/admin/paths/store.yaml rename to docs/api/admin/paths/admin_store.yaml index e8480eb842..ca274f0858 100644 --- a/docs/api/admin/paths/store.yaml +++ b/docs/api/admin/paths/admin_store.yaml @@ -9,11 +9,11 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store/get.js + $ref: ../code_samples/JavaScript/admin_store/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store/get.sh + $ref: ../code_samples/Shell/admin_store/get.sh security: - api_token: [] - cookie_auth: [] @@ -25,7 +25,7 @@ get: content: application/json: schema: - $ref: ../components/schemas/AdminStoresRes.yaml + $ref: ../components/schemas/AdminExtendedStoresRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': @@ -54,11 +54,11 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store/post.js + $ref: ../code_samples/JavaScript/admin_store/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store/post.sh + $ref: ../code_samples/Shell/admin_store/post.sh security: - api_token: [] - cookie_auth: [] diff --git a/docs/api/admin/paths/store_currencies_{code}.yaml b/docs/api/admin/paths/admin_store_currencies_{code}.yaml similarity index 89% rename from docs/api/admin/paths/store_currencies_{code}.yaml rename to docs/api/admin/paths/admin_store_currencies_{code}.yaml index 3c0d9a656b..7de11aecb5 100644 --- a/docs/api/admin/paths/store_currencies_{code}.yaml +++ b/docs/api/admin/paths/admin_store_currencies_{code}.yaml @@ -19,11 +19,11 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store_currencies_{code}/post.js + $ref: ../code_samples/JavaScript/admin_store_currencies_{code}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store_currencies_{code}/post.sh + $ref: ../code_samples/Shell/admin_store_currencies_{code}/post.sh security: - api_token: [] - cookie_auth: [] @@ -69,11 +69,11 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store_currencies_{code}/delete.js + $ref: ../code_samples/JavaScript/admin_store_currencies_{code}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store_currencies_{code}/delete.sh + $ref: ../code_samples/Shell/admin_store_currencies_{code}/delete.sh security: - api_token: [] - cookie_auth: [] diff --git a/docs/api/admin/paths/store_payment-providers.yaml b/docs/api/admin/paths/admin_store_payment-providers.yaml similarity index 86% rename from docs/api/admin/paths/store_payment-providers.yaml rename to docs/api/admin/paths/admin_store_payment-providers.yaml index ed54a9d1d7..3383d39fdc 100644 --- a/docs/api/admin/paths/store_payment-providers.yaml +++ b/docs/api/admin/paths/admin_store_payment-providers.yaml @@ -9,11 +9,11 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store_payment-providers/get.js + $ref: ../code_samples/JavaScript/admin_store_payment-providers/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store_payment-providers/get.sh + $ref: ../code_samples/Shell/admin_store_payment-providers/get.sh security: - api_token: [] - cookie_auth: [] diff --git a/docs/api/admin/paths/store_tax-providers.yaml b/docs/api/admin/paths/admin_store_tax-providers.yaml similarity index 87% rename from docs/api/admin/paths/store_tax-providers.yaml rename to docs/api/admin/paths/admin_store_tax-providers.yaml index 34d18c7f42..92b8f24717 100644 --- a/docs/api/admin/paths/store_tax-providers.yaml +++ b/docs/api/admin/paths/admin_store_tax-providers.yaml @@ -9,11 +9,11 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/store_tax-providers/get.js + $ref: ../code_samples/JavaScript/admin_store_tax-providers/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/store_tax-providers/get.sh + $ref: ../code_samples/Shell/admin_store_tax-providers/get.sh security: - api_token: [] - cookie_auth: [] diff --git a/docs/api/admin/paths/swaps.yaml b/docs/api/admin/paths/admin_swaps.yaml similarity index 90% rename from docs/api/admin/paths/swaps.yaml rename to docs/api/admin/paths/admin_swaps.yaml index 0ef3dc6b43..5900eeddeb 100644 --- a/docs/api/admin/paths/swaps.yaml +++ b/docs/api/admin/paths/admin_swaps.yaml @@ -23,16 +23,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/swaps/get.js + $ref: ../code_samples/JavaScript/admin_swaps/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/swaps/get.sh + $ref: ../code_samples/Shell/admin_swaps/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Swaps responses: '200': description: OK diff --git a/docs/api/admin/paths/swaps_{id}.yaml b/docs/api/admin/paths/admin_swaps_{id}.yaml similarity index 88% rename from docs/api/admin/paths/swaps_{id}.yaml rename to docs/api/admin/paths/admin_swaps_{id}.yaml index 3e015de067..81b6cbb83d 100644 --- a/docs/api/admin/paths/swaps_{id}.yaml +++ b/docs/api/admin/paths/admin_swaps_{id}.yaml @@ -16,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/swaps_{id}/get.js + $ref: ../code_samples/JavaScript/admin_swaps_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/swaps_{id}/get.sh + $ref: ../code_samples/Shell/admin_swaps_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Swap + - Swaps responses: '200': description: OK diff --git a/docs/api/admin/paths/tax-rates.yaml b/docs/api/admin/paths/admin_tax-rates.yaml similarity index 94% rename from docs/api/admin/paths/tax-rates.yaml rename to docs/api/admin/paths/admin_tax-rates.yaml index bffe85c655..5df462522b 100644 --- a/docs/api/admin/paths/tax-rates.yaml +++ b/docs/api/admin/paths/admin_tax-rates.yaml @@ -1,68 +1,3 @@ -post: - operationId: PostTaxRates - summary: Create a Tax Rate - description: Creates a Tax Rate - parameters: - - in: query - name: fields - description: Which fields should be included in the result. - style: form - explode: false - schema: - type: array - items: - type: string - - in: query - name: expand - description: Which fields should be expanded and retrieved in the result. - style: form - explode: false - schema: - type: array - items: - type: string - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminPostTaxRatesReq.yaml - x-codegen: - method: create - queryParams: AdminPostTaxRatesParams - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/tax-rates/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/tax-rates/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Tax Rate - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminTaxRatesRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetTaxRates summary: List Tax Rates @@ -149,16 +84,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates/get.js + $ref: ../code_samples/JavaScript/admin_tax-rates/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates/get.sh + $ref: ../code_samples/Shell/admin_tax-rates/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -178,3 +113,68 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostTaxRates + summary: Create a Tax Rate + description: Creates a Tax Rate + parameters: + - in: query + name: fields + description: Which fields should be included in the result. + style: form + explode: false + schema: + type: array + items: + type: string + - in: query + name: expand + description: Which fields should be expanded and retrieved in the result. + style: form + explode: false + schema: + type: array + items: + type: string + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminPostTaxRatesReq.yaml + x-codegen: + method: create + queryParams: AdminPostTaxRatesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_tax-rates/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_tax-rates/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminTaxRatesRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/tax-rates_{id}.yaml b/docs/api/admin/paths/admin_tax-rates_{id}.yaml similarity index 90% rename from docs/api/admin/paths/tax-rates_{id}.yaml rename to docs/api/admin/paths/admin_tax-rates_{id}.yaml index 82b5173419..55f2fc7c3a 100644 --- a/docs/api/admin/paths/tax-rates_{id}.yaml +++ b/docs/api/admin/paths/admin_tax-rates_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteTaxRatesTaxRate - summary: Delete a Tax Rate - description: Deletes a Tax Rate - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Shipping Option. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/tax-rates_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/tax-rates_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Tax Rate - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminTaxRatesDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetTaxRatesTaxRate summary: Get a Tax Rate @@ -82,16 +35,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates_{id}/get.js + $ref: ../code_samples/JavaScript/admin_tax-rates_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}/get.sh + $ref: ../code_samples/Shell/admin_tax-rates_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -153,16 +106,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates_{id}/post.js + $ref: ../code_samples/JavaScript/admin_tax-rates_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}/post.sh + $ref: ../code_samples/Shell/admin_tax-rates_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -182,3 +135,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteTaxRatesTaxRate + summary: Delete a Tax Rate + description: Deletes a Tax Rate + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the Shipping Option. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_tax-rates_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_tax-rates_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Tax Rates + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminTaxRatesDeleteRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/tax-rates_{id}_product-types_batch.yaml b/docs/api/admin/paths/admin_tax-rates_{id}_product-types_batch.yaml similarity index 89% rename from docs/api/admin/paths/tax-rates_{id}_product-types_batch.yaml rename to docs/api/admin/paths/admin_tax-rates_{id}_product-types_batch.yaml index 0b76709b22..65353a31ff 100644 --- a/docs/api/admin/paths/tax-rates_{id}_product-types_batch.yaml +++ b/docs/api/admin/paths/admin_tax-rates_{id}_product-types_batch.yaml @@ -40,16 +40,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates_{id}_product-types_batch/post.js + $ref: >- + ../code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_product-types_batch/post.sh + $ref: ../code_samples/Shell/admin_tax-rates_{id}_product-types_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -112,16 +113,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/tax-rates_{id}_product-types_batch/delete.js + ../code_samples/JavaScript/admin_tax-rates_{id}_product-types_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_product-types_batch/delete.sh + $ref: >- + ../code_samples/Shell/admin_tax-rates_{id}_product-types_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK diff --git a/docs/api/admin/paths/tax-rates_{id}_products_batch.yaml b/docs/api/admin/paths/admin_tax-rates_{id}_products_batch.yaml similarity index 90% rename from docs/api/admin/paths/tax-rates_{id}_products_batch.yaml rename to docs/api/admin/paths/admin_tax-rates_{id}_products_batch.yaml index 0228525481..6964aae553 100644 --- a/docs/api/admin/paths/tax-rates_{id}_products_batch.yaml +++ b/docs/api/admin/paths/admin_tax-rates_{id}_products_batch.yaml @@ -40,16 +40,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates_{id}_products_batch/post.js + $ref: ../code_samples/JavaScript/admin_tax-rates_{id}_products_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_products_batch/post.sh + $ref: ../code_samples/Shell/admin_tax-rates_{id}_products_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -111,16 +111,17 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/tax-rates_{id}_products_batch/delete.js + $ref: >- + ../code_samples/JavaScript/admin_tax-rates_{id}_products_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_products_batch/delete.sh + $ref: ../code_samples/Shell/admin_tax-rates_{id}_products_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK diff --git a/docs/api/admin/paths/tax-rates_{id}_shipping-options_batch.yaml b/docs/api/admin/paths/admin_tax-rates_{id}_shipping-options_batch.yaml similarity index 89% rename from docs/api/admin/paths/tax-rates_{id}_shipping-options_batch.yaml rename to docs/api/admin/paths/admin_tax-rates_{id}_shipping-options_batch.yaml index abaf54d63f..fb306cbc84 100644 --- a/docs/api/admin/paths/tax-rates_{id}_shipping-options_batch.yaml +++ b/docs/api/admin/paths/admin_tax-rates_{id}_shipping-options_batch.yaml @@ -42,16 +42,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/post.js + ../code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_shipping-options_batch/post.sh + $ref: >- + ../code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK @@ -115,16 +116,17 @@ delete: label: JS Client source: $ref: >- - ../code_samples/JavaScript/tax-rates_{id}_shipping-options_batch/delete.js + ../code_samples/JavaScript/admin_tax-rates_{id}_shipping-options_batch/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/tax-rates_{id}_shipping-options_batch/delete.sh + $ref: >- + ../code_samples/Shell/admin_tax-rates_{id}_shipping-options_batch/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Tax Rate + - Tax Rates responses: '200': description: OK diff --git a/docs/api/admin/paths/uploads.yaml b/docs/api/admin/paths/admin_uploads.yaml similarity index 87% rename from docs/api/admin/paths/uploads.yaml rename to docs/api/admin/paths/admin_uploads.yaml index 3070375714..3a64ca4ea0 100644 --- a/docs/api/admin/paths/uploads.yaml +++ b/docs/api/admin/paths/admin_uploads.yaml @@ -18,16 +18,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/uploads/post.js + $ref: ../code_samples/JavaScript/admin_uploads/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/uploads/post.sh + $ref: ../code_samples/Shell/admin_uploads/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Upload + - Uploads responses: '200': description: OK @@ -48,7 +48,7 @@ post: '500': $ref: ../components/responses/500_error.yaml delete: - operationId: AdminDeleteUploads + operationId: DeleteUploads summary: Delete an Uploaded File description: Removes an uploaded file using the installed fileservice x-authenticated: true @@ -61,16 +61,16 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/uploads/delete.js + $ref: ../code_samples/JavaScript/admin_uploads/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/uploads/delete.sh + $ref: ../code_samples/Shell/admin_uploads/delete.sh security: - api_token: [] - cookie_auth: [] tags: - - Upload + - Uploads responses: '200': description: OK diff --git a/docs/api/admin/paths/uploads_download-url.yaml b/docs/api/admin/paths/admin_uploads_download-url.yaml similarity index 86% rename from docs/api/admin/paths/uploads_download-url.yaml rename to docs/api/admin/paths/admin_uploads_download-url.yaml index a3a34d3688..edbaa161ec 100644 --- a/docs/api/admin/paths/uploads_download-url.yaml +++ b/docs/api/admin/paths/admin_uploads_download-url.yaml @@ -12,16 +12,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/uploads_download-url/post.js + $ref: ../code_samples/JavaScript/admin_uploads_download-url/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/uploads_download-url/post.sh + $ref: ../code_samples/Shell/admin_uploads_download-url/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Upload + - Uploads responses: '200': description: OK diff --git a/docs/api/admin/paths/uploads_protected.yaml b/docs/api/admin/paths/admin_uploads_protected.yaml similarity index 88% rename from docs/api/admin/paths/uploads_protected.yaml rename to docs/api/admin/paths/admin_uploads_protected.yaml index 67e678e526..5abe78c59b 100644 --- a/docs/api/admin/paths/uploads_protected.yaml +++ b/docs/api/admin/paths/admin_uploads_protected.yaml @@ -18,16 +18,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/uploads_protected/post.js + $ref: ../code_samples/JavaScript/admin_uploads_protected/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/uploads_protected/post.sh + $ref: ../code_samples/Shell/admin_uploads_protected/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Upload + - Uploads responses: '200': description: OK diff --git a/docs/api/admin/paths/users.yaml b/docs/api/admin/paths/admin_users.yaml similarity index 88% rename from docs/api/admin/paths/users.yaml rename to docs/api/admin/paths/admin_users.yaml index 3403b55103..d4af942bb4 100644 --- a/docs/api/admin/paths/users.yaml +++ b/docs/api/admin/paths/admin_users.yaml @@ -1,48 +1,3 @@ -post: - operationId: PostUsers - summary: Create a User - description: Creates a User - x-authenticated: true - requestBody: - content: - application/json: - schema: - $ref: ../components/schemas/AdminCreateUserRequest.yaml - x-codegen: - method: create - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/users/post.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/users/post.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - User - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminUserRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetUsers summary: List Users @@ -54,16 +9,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/users/get.js + $ref: ../code_samples/JavaScript/admin_users/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/users/get.sh + $ref: ../code_samples/Shell/admin_users/get.sh security: - api_token: [] - cookie_auth: [] tags: - - User + - Users responses: '200': description: OK @@ -83,3 +38,48 @@ get: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +post: + operationId: PostUsers + summary: Create a User + description: Creates a User + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/AdminCreateUserRequest.yaml + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_users/post.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_users/post.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminUserRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/users_password-token.yaml b/docs/api/admin/paths/admin_users_password-token.yaml similarity index 86% rename from docs/api/admin/paths/users_password-token.yaml rename to docs/api/admin/paths/admin_users_password-token.yaml index d82fb253ef..971f0e252d 100644 --- a/docs/api/admin/paths/users_password-token.yaml +++ b/docs/api/admin/paths/admin_users_password-token.yaml @@ -14,16 +14,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/users_password-token/post.js + $ref: ../code_samples/JavaScript/admin_users_password-token/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/users_password-token/post.sh + $ref: ../code_samples/Shell/admin_users_password-token/post.sh security: - api_token: [] - cookie_auth: [] tags: - - User + - Users responses: '204': description: OK diff --git a/docs/api/admin/paths/users_reset-password.yaml b/docs/api/admin/paths/admin_users_reset-password.yaml similarity index 87% rename from docs/api/admin/paths/users_reset-password.yaml rename to docs/api/admin/paths/admin_users_reset-password.yaml index 24dcae1bda..ac3a677e1d 100644 --- a/docs/api/admin/paths/users_reset-password.yaml +++ b/docs/api/admin/paths/admin_users_reset-password.yaml @@ -14,16 +14,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/users_reset-password/post.js + $ref: ../code_samples/JavaScript/admin_users_reset-password/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/users_reset-password/post.sh + $ref: ../code_samples/Shell/admin_users_reset-password/post.sh security: - api_token: [] - cookie_auth: [] tags: - - User + - Users responses: '200': description: OK diff --git a/docs/api/admin/paths/users_{id}.yaml b/docs/api/admin/paths/admin_users_{id}.yaml similarity index 88% rename from docs/api/admin/paths/users_{id}.yaml rename to docs/api/admin/paths/admin_users_{id}.yaml index 962f3067ee..fa32500a69 100644 --- a/docs/api/admin/paths/users_{id}.yaml +++ b/docs/api/admin/paths/admin_users_{id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteUsersUser - summary: Delete a User - description: Deletes a User - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the User. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/users_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/users_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - User - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDeleteUserRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml get: operationId: GetUsersUser summary: Get a User @@ -63,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/users_{id}/get.js + $ref: ../code_samples/JavaScript/admin_users_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/users_{id}/get.sh + $ref: ../code_samples/Shell/admin_users_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - User + - Users responses: '200': description: OK @@ -115,16 +68,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/users_{id}/post.js + $ref: ../code_samples/JavaScript/admin_users_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/users_{id}/post.sh + $ref: ../code_samples/Shell/admin_users_{id}/post.sh security: - api_token: [] - cookie_auth: [] tags: - - User + - Users responses: '200': description: OK @@ -144,3 +97,50 @@ post: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteUsersUser + summary: Delete a User + description: Deletes a User + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the User. + schema: + type: string + x-codegen: + method: delete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_users_{id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_users_{id}/delete.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Users + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminDeleteUserRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/variants.yaml b/docs/api/admin/paths/admin_variants.yaml similarity index 96% rename from docs/api/admin/paths/variants.yaml rename to docs/api/admin/paths/admin_variants.yaml index 02357455bc..463d26a7e6 100644 --- a/docs/api/admin/paths/variants.yaml +++ b/docs/api/admin/paths/admin_variants.yaml @@ -100,16 +100,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/variants/get.js + $ref: ../code_samples/JavaScript/admin_variants/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/variants/get.sh + $ref: ../code_samples/Shell/admin_variants/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Variant + - Variants responses: '200': description: OK diff --git a/docs/api/admin/paths/admin_variants_{id}.yaml b/docs/api/admin/paths/admin_variants_{id}.yaml new file mode 100644 index 0000000000..dbe1b381c5 --- /dev/null +++ b/docs/api/admin/paths/admin_variants_{id}.yaml @@ -0,0 +1,62 @@ +get: + operationId: GetVariantsVariant + summary: Get a Product variant + description: Retrieves a Product variant. + x-authenticated: true + parameters: + - in: path + name: id + required: true + description: The ID of the variant. + schema: + type: string + - in: query + name: expand + description: >- + (Comma separated) Which fields should be expanded the order of the + result. + schema: + type: string + - in: query + name: fields + description: >- + (Comma separated) Which fields should be included the order of the + result. + schema: + type: string + x-codegen: + method: retrieve + queryParams: AdminGetVariantParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/admin_variants_{id}/get.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/admin_variants_{id}/get.sh + security: + - api_token: [] + - cookie_auth: [] + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AdminVariantsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml diff --git a/docs/api/admin/paths/variants_{id}_inventory.yaml b/docs/api/admin/paths/admin_variants_{id}_inventory.yaml similarity index 88% rename from docs/api/admin/paths/variants_{id}_inventory.yaml rename to docs/api/admin/paths/admin_variants_{id}_inventory.yaml index 0504ea75cf..b2e311fceb 100644 --- a/docs/api/admin/paths/variants_{id}_inventory.yaml +++ b/docs/api/admin/paths/admin_variants_{id}_inventory.yaml @@ -16,16 +16,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/variants_{id}_inventory/get.js + $ref: ../code_samples/JavaScript/admin_variants_{id}_inventory/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/variants_{id}_inventory/get.sh + $ref: ../code_samples/Shell/admin_variants_{id}_inventory/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Variant + - Variants responses: '200': description: OK diff --git a/docs/api/admin/paths/draft-orders_{id}.yaml b/docs/api/admin/paths/draft-orders_{id}.yaml deleted file mode 100644 index 3434fcaf90..0000000000 --- a/docs/api/admin/paths/draft-orders_{id}.yaml +++ /dev/null @@ -1,94 +0,0 @@ -delete: - operationId: DeleteDraftOrdersDraftOrder - summary: Delete a Draft Order - description: Deletes a Draft Order - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Draft Order. - schema: - type: string - x-codegen: - method: delete - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/draft-orders_{id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/draft-orders_{id}/delete.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Draft Order - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDraftOrdersDeleteRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml -get: - operationId: GetDraftOrdersDraftOrder - summary: Get a Draft Order - description: Retrieves a Draft Order. - x-authenticated: true - parameters: - - in: path - name: id - required: true - description: The ID of the Draft Order. - schema: - type: string - x-codegen: - method: retrieve - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/draft-orders_{id}/get.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/draft-orders_{id}/get.sh - security: - - api_token: [] - - cookie_auth: [] - tags: - - Draft Order - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/AdminDraftOrdersRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml diff --git a/docs/api/store.oas.json b/docs/api/store.oas.json new file mode 100644 index 0000000000..9569a3b736 --- /dev/null +++ b/docs/api/store.oas.json @@ -0,0 +1,15557 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "1.0.0", + "title": "Medusa Storefront API", + "description": "API reference for Medusa's Storefront endpoints. All endpoints are prefixed with `/store`.\n\n## Authentication\n\nTo send requests as an authenticated customer, you must use the Cookie Session ID.\n\n\n\n## Expanding Fields\n\nIn many endpoints you'll find an `expand` query parameter that can be passed to the endpoint. You can use the `expand` query parameter to unpack an entity's relations and return them in the response.\n\nPlease note that the relations you pass to `expand` replace any relations that are expanded by default in the request.\n\n### Expanding One Relation\n\nFor example, when you retrieve a product, you can retrieve its collection by passing to the `expand` query parameter the value `collection`:\n\n```bash\ncurl \"http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand=collection\"\n```\n\n### Expanding Multiple Relations\n\nYou can expand more than one relation by separating the relations in the `expand` query parameter with a comma.\n\nFor example, to retrieve both the variants and the collection of a product, pass to the `expand` query parameter the value `variants,collection`:\n\n```bash\ncurl \"http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand=variants,collection\"\n```\n\n### Prevent Expanding Relations\n\nSome requests expand relations by default. You can prevent that by passing an empty expand value to retrieve an entity without any extra relations.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand\"\n```\n\nThis would retrieve the product with only its properties, without any relations like `collection`.\n\n## Selecting Fields\n\nIn many endpoints you'll find a `fields` query parameter that can be passed to the endpoint. You can use the `fields` query parameter to specify which fields in the entity should be returned in the response.\n\nPlease note that if you pass a `fields` query parameter, only the fields you pass in the value along with the `id` of the entity will be returned in the response.\n\nAlso, the `fields` query parameter does not affect the expanded relations. You'll have to use the `expand` parameter instead.\n\n### Selecting One Field\n\nFor example, when you retrieve a list of products, you can retrieve only the titles of the products by passing `title` as a value to the `fields` query parameter:\n\n```bash\ncurl \"http://localhost:9000/store/products?fields=title\"\n```\n\nAs mentioned above, the expanded relations such as `variants` will still be returned as they're not affected by the `fields` parameter.\n\nYou can ensure that only the `title` field is returned by passing an empty value to the `expand` query parameter. For example:\n\n```bash\ncurl \"http://localhost:9000/store/products?fields=title&expand\"\n```\n\n### Selecting Multiple Fields\n\nYou can pass more than one field by seperating the field names in the `fields` query parameter with a comma.\n\nFor example, to select the `title` and `handle` of a product:\n\n```bash\ncurl \"http://localhost:9000/store/products?fields=title,handle\"\n```\n\n### Retrieve Only the ID\n\nYou can pass an empty `fields` query parameter to return only the ID of an entity. For example:\n\n```bash\ncurl \"http://localhost:9000/store/products?fields\"\n```\n\nYou can also pair with an empty `expand` query parameter to ensure that the relations aren't retrieved as well. For example:\n\n```bash\ncurl \"http://localhost:9000/store/products?fields&expand\"\n```\n\n## Query Parameter Types\n\nThis section covers how to pass some common data types as query parameters. This is useful if you're sending requests to the API endpoints and not using our JS Client. For example, when using cURL or Postman.\n\n### Strings\n\nYou can pass a string value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/store/products?title=Shirt\"\n```\n\nIf the string has any characters other than letters and numbers, you must encode them.\n\nFor example, if the string has spaces, you can encode the space with `+` or `%20`:\n\n```bash\ncurl \"http://localhost:9000/store/products?title=Blue%20Shirt\"\n```\n\nYou can use tools like [this one](https://www.urlencoder.org/) to learn how a value can be encoded.\n\n### Integers\n\nYou can pass an integer value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/store/products?offset=1\"\n```\n\n### Boolean\n\nYou can pass a boolean value in the form of `=`.\n\nFor example:\n\n```bash\ncurl \"http://localhost:9000/store/products?is_giftcard=true\"\n```\n\n### Date and DateTime\n\nYou can pass a date value in the form `=`. The date must be in the format `YYYY-MM-DD`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/store/products?created_at[lt]=2023-02-17\"\n```\n\nYou can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please note that the `T` and `Z` here are fixed.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/store/products?created_at[lt]=2023-02-17T07:22:30Z\"\n```\n\n### Array\n\nEach array value must be passed as a separate query parameter in the form `[]=`. You can also specify the index of each parameter in the brackets `[0]=`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/store/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7\"\n```\n\nNote that the `-g` parameter passed to `curl` disables errors being thrown for using the brackets. Read more [here](https://curl.se/docs/manpage.html#-g).\n\n### Object\n\nObject parameters must be passed as separate query parameters in the form `[]=`.\n\nFor example:\n\n```bash\ncurl -g \"http://localhost:9000/store/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17\"\n```\n\n## Pagination\n\n### Query Parameters\n\nIn listing endpoints, such as list customers or list products, you can control the pagination using the query parameters `limit` and `offset`.\n\n`limit` is used to specify the maximum number of items that can be return in the response. `offset` is used to specify how many items to skip before returning the resulting entities.\n\nYou can use the `offset` query parameter to change between pages. For example, if the limit is 50, at page 1 the offset should be 0; at page 2 the offset should be 50, and so on.\n\nFor example, to limit the number of products returned in the List Products endpoint:\n\n```bash\ncurl \"http://localhost:9000/store/products?limit=5\"\n```\n\n### Response Fields\n\nIn the response of listing endpoints, aside from the entities retrieved, there are three pagination-related fields returned: `count`, `limit`, and `offset`.\n\nSimilar to the query parameters, `limit` is the maximum number of items that can be returned in the response, and `field` is the number of items that were skipped before the entities in the result.\n\n`count` is the total number of available items of this entity. It can be used to determine how many pages are there.\n\nFor example, if the `count` is 100 and the `limit` is 50, you can divide the `count` by the `limit` to get the number of pages: `100/50 = 2 pages`.\n", + "license": { + "name": "MIT", + "url": "https://github.com/medusajs/medusa/blob/master/LICENSE" + } + }, + "tags": [ + { + "name": "Auth", + "description": "Auth endpoints that allow authorization of customers and manages their sessions." + }, + { + "name": "Carts", + "description": "Cart endpoints that allow handling carts in Medusa." + }, + { + "name": "Collections", + "description": "Collection endpoints that allow handling collections in Medusa." + }, + { + "name": "Customers", + "description": "Customer endpoints that allow handling customers in Medusa." + }, + { + "name": "Gift Cards", + "description": "Gift Card endpoints that allow handling gift cards in Medusa." + }, + { + "name": "Orders", + "description": "Order endpoints that allow handling orders in Medusa." + }, + { + "name": "Products", + "description": "Product endpoints that allow handling products in Medusa." + }, + { + "name": "Product Variants", + "description": "Product Variant endpoints that allow handling product variants in Medusa." + }, + { + "name": "Regions", + "description": "Region endpoints that allow handling regions in Medusa." + }, + { + "name": "Return Reasons", + "description": "Return Reason endpoints that allow handling return reasons in Medusa." + }, + { + "name": "Returns", + "description": "Return endpoints that allow handling returns in Medusa." + }, + { + "name": "Shipping Options", + "description": "Shipping Option endpoints that allow handling shipping options in Medusa." + }, + { + "name": "Swaps", + "description": "Swap endpoints that allow handling swaps in Medusa." + } + ], + "servers": [ + { + "url": "https://api.medusa-commerce.com" + } + ], + "paths": { + "/store/auth": { + "get": { + "operationId": "GetAuth", + "summary": "Get Current Customer", + "description": "Gets the currently logged in Customer.", + "x-authenticated": true, + "x-codegen": { + "method": "getSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.auth.getSession()\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/auth' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreAuthRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostAuth", + "summary": "Customer Login", + "description": "Logs a Customer in and authorizes them to view their details. Successful authentication will set a session cookie in the Customer's browser.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostAuthReq" + } + } + } + }, + "x-codegen": { + "method": "authenticate" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.auth.authenticate({\n email: 'user@example.com',\n password: 'user@example.com'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/auth' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreAuthRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/incorrect_credentials" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteAuth", + "summary": "Customer Log out", + "description": "Destroys a Customer's authenticated session.", + "x-authenticated": true, + "x-codegen": { + "method": "deleteSession" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/store/auth' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/auth/{email}": { + "get": { + "operationId": "GetAuthEmail", + "summary": "Check if email exists", + "description": "Checks if a Customer with the given email has signed up.", + "parameters": [ + { + "in": "path", + "name": "email", + "schema": { + "type": "string", + "format": "email" + }, + "required": true, + "description": "The email to check if exists." + } + ], + "x-codegen": { + "method": "exists" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.auth.exists('user@example.com')\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/auth/user@example.com' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "tags": [ + "Auth" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreGetAuthEmailRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts": { + "post": { + "summary": "Create a Cart", + "operationId": "PostCart", + "description": "Creates a Cart within the given region and with the initial items. If no `region_id` is provided the cart will be associated with the first Region available. If no items are provided the cart will be empty after creation. If a user is logged in the cart's customer id and email will be set.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.create()\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "Successfully created a new Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}": { + "get": { + "operationId": "GetCartsCart", + "summary": "Get a Cart", + "description": "Retrieves a Cart.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.retrieve(cart_id)\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/carts/{id}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCartsCart", + "summary": "Update a Cart", + "description": "Updates a Cart.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.update(cart_id, {\n email: 'user@example.com'\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\"\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/complete": { + "post": { + "summary": "Complete a Cart", + "operationId": "PostCartsCartComplete", + "description": "Completes a cart. The following steps will be performed. Payment authorization is attempted and if more work is required, we simply return the cart for further updates. If payment is authorized and order is not yet created, we make sure to do so. The completion of a cart can be performed idempotently with a provided header `Idempotency-Key`. If not provided, we will generate one for the request.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The Cart id.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "complete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.complete(cart_id)\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/complete'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "If a cart was successfully authorized, but requires further action from the user the response body will contain the cart with an updated payment session. If the Cart was successfully completed the response body will contain the newly created Order.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCompleteCartRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/discounts/{code}": { + "delete": { + "operationId": "DeleteCartsCartDiscountsDiscount", + "description": "Removes a Discount from a Cart.", + "summary": "Remove Discount", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "code", + "required": true, + "description": "The unique Discount code.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteDiscount" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.deleteDiscount(cart_id, code)\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/discounts/{code}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/line-items": { + "post": { + "operationId": "PostCartsCartLineItems", + "summary": "Add a Line Item", + "description": "Generates a Line Item with a given Product Variant and adds it to the Cart", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart to add the Line Item to.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartLineItemsReq" + } + } + } + }, + "x-codegen": { + "method": "createLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.lineItems.create(cart_id, {\n variant_id,\n quantity: 1\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/line-items' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"variant_id\": \"{variant_id}\",\n \"quantity\": 1\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/line-items/{line_id}": { + "post": { + "operationId": "PostCartsCartLineItemsItem", + "summary": "Update a Line Item", + "description": "Updates a Line Item if the desired quantity can be fulfilled.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "line_id", + "required": true, + "description": "The id of the Line Item.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartLineItemsItemReq" + } + } + } + }, + "x-codegen": { + "method": "updateLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.lineItems.update(cart_id, line_id, {\n quantity: 1\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/line-items/{line_id}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"quantity\": 1\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCartsCartLineItemsItem", + "summary": "Delete a Line Item", + "description": "Removes a Line Item from a Cart.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "line_id", + "required": true, + "description": "The id of the Line Item.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteLineItem" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.lineItems.delete(cart_id, line_id)\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/line-items/{line_id}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/payment-session": { + "post": { + "operationId": "PostCartsCartPaymentSession", + "summary": "Select a Payment Session", + "description": "Selects a Payment Session as the session intended to be used towards the completion of the Cart.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Cart.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartPaymentSessionReq" + } + } + } + }, + "x-codegen": { + "method": "setPaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.setPaymentSession(cart_id, {\n provider_id: 'manual'\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"provider_id\": \"manual\"\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/payment-sessions": { + "post": { + "operationId": "PostCartsCartPaymentSessions", + "summary": "Create Payment Sessions", + "description": "Creates Payment Sessions for each of the available Payment Providers in the Cart's Region.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "createPaymentSessions" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.createPaymentSessions(cart_id)\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/payment-sessions/{provider_id}": { + "post": { + "operationId": "PostCartsCartPaymentSessionUpdate", + "summary": "Update a Payment Session", + "description": "Updates a Payment Session with additional data.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "provider_id", + "required": true, + "description": "The id of the payment provider.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartPaymentSessionUpdateReq" + } + } + } + }, + "x-codegen": { + "method": "updatePaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.updatePaymentSession(cart_id, 'manual', {\n data: {\n\n }\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"data\": {}\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCartsCartPaymentSessionsSession", + "summary": "Delete a Payment Session", + "description": "Deletes a Payment Session on a Cart. May be useful if a payment has failed.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "provider_id", + "required": true, + "description": "The id of the Payment Provider used to create the Payment Session to be deleted.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deletePaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.deletePaymentSession(cart_id, 'manual')\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/payment-sessions/{provider_id}/refresh": { + "post": { + "operationId": "PostCartsCartPaymentSessionsSession", + "summary": "Refresh a Payment Session", + "description": "Refreshes a Payment Session to ensure that it is in sync with the Cart - this is usually not necessary.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "provider_id", + "required": true, + "description": "The id of the Payment Provider that created the Payment Session to be refreshed.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "refreshPaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.refreshPaymentSession(cart_id, 'manual')\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual/refresh'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/shipping-methods": { + "post": { + "operationId": "PostCartsCartShippingMethod", + "description": "Adds a Shipping Method to the Cart.", + "summary": "Add a Shipping Method", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The cart ID.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCartsCartShippingMethodReq" + } + } + } + }, + "x-codegen": { + "method": "addShippingMethod" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.carts.addShippingMethod(cart_id, {\n option_id\n})\n.then(({ cart }) => {\n console.log(cart.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/shipping-methods' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"option_id\": \"{option_id}\",\n}'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/carts/{id}/taxes": { + "post": { + "summary": "Calculate Cart Taxes", + "operationId": "PostCartsCartTaxes", + "description": "Calculates taxes for a cart. Depending on the cart's region this may involve making 3rd party API calls to a Tax Provider service.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The Cart ID.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "calculateTaxes" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/carts/{id}/taxes'\n" + } + ], + "tags": [ + "Carts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/collections": { + "get": { + "operationId": "GetCollections", + "summary": "List Collections", + "description": "Retrieve a list of Product Collection.", + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "The number of collections to skip before starting to collect the collections set", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "The number of collections to return", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "handle", + "style": "form", + "explode": false, + "description": "Filter by the collection handle", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting collections were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting collections were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetCollectionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.collections.list()\n.then(({ collections, limit, offset, count }) => {\n console.log(collections.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/collections'\n" + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCollectionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/collections/{id}": { + "get": { + "operationId": "GetCollectionsCollection", + "summary": "Get a Collection", + "description": "Retrieves a Product Collection.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Product Collection", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.collections.retrieve(collection_id)\n.then(({ collection }) => {\n console.log(collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/collections/{id}'\n" + } + ], + "tags": [ + "Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers": { + "post": { + "operationId": "PostCustomers", + "summary": "Create a Customer", + "description": "Creates a Customer account.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.customers.create({\n first_name: 'Alec',\n last_name: 'Reynolds',\n email: 'user@example.com',\n password: 'supersecret'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"first_name\": \"Alec\",\n \"last_name\": \"Reynolds\",\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n" + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "description": "A customer with the same email exists", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The error code" + }, + "type": { + "type": "string", + "description": "The type of error" + }, + "message": { + "type": "string", + "description": "Human-readable message with details about the error" + } + } + }, + "example": { + "code": "invalid_request_error", + "type": "duplicate_error", + "message": "A customer with the given email already has an account. Log in instead" + } + } + } + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/me": { + "get": { + "operationId": "GetCustomersCustomer", + "summary": "Get a Customer", + "description": "Retrieves a Customer - the Customer must be logged in to retrieve their details.", + "x-authenticated": true, + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.retrieve()\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/customers/me' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "post": { + "operationId": "PostCustomersCustomer", + "summary": "Update Customer", + "description": "Updates a Customer's saved details.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerReq" + } + } + } + }, + "x-codegen": { + "method": "update" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.update({\n first_name: 'Laury'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers/me' \\\n--header 'Cookie: connect.sid={sid}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"first_name\": \"Laury\"\n}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/me/addresses": { + "post": { + "operationId": "PostCustomersCustomerAddresses", + "summary": "Add a Shipping Address", + "description": "Adds a Shipping Address to a Customer's saved addresses.", + "x-authenticated": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerAddressesReq" + } + } + } + }, + "x-codegen": { + "method": "addAddress" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.addresses.addAddress({\n address: {\n first_name: 'Celia',\n last_name: 'Schumm',\n address_1: '225 Bednar Curve',\n city: 'Danielville',\n country_code: 'US',\n postal_code: '85137',\n phone: '981-596-6748 x90188',\n company: 'Wyman LLC',\n address_2: '',\n province: 'Georgia',\n metadata: {}\n }\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers/me/addresses' \\\n--header 'Cookie: connect.sid={sid}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"address\": {\n \"first_name\": \"Celia\",\n \"last_name\": \"Schumm\",\n \"address_1\": \"225 Bednar Curve\",\n \"city\": \"Danielville\",\n \"country_code\": \"US\",\n \"postal_code\": \"85137\"\n }\n}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "A successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/me/addresses/{address_id}": { + "post": { + "operationId": "PostCustomersCustomerAddressesAddress", + "summary": "Update a Shipping Address", + "description": "Updates a Customer's saved Shipping Address.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "address_id", + "required": true, + "description": "The id of the Address to update.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerAddressesAddressReq" + } + } + } + }, + "x-codegen": { + "method": "updateAddress" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.addresses.updateAddress(address_id, {\n first_name: 'Gina'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers/me/addresses/{address_id}' \\\n--header 'Cookie: connect.sid={sid}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"first_name\": \"Gina\"\n}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + }, + "delete": { + "operationId": "DeleteCustomersCustomerAddressesAddress", + "summary": "Delete an Address", + "description": "Removes an Address from the Customer's saved addresses.", + "x-authenticated": true, + "parameters": [ + { + "in": "path", + "name": "address_id", + "required": true, + "description": "The id of the Address to remove.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "deleteAddress" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.addresses.deleteAddress(address_id)\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request DELETE 'https://medusa-url.com/store/customers/me/addresses/{address_id}' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/me/orders": { + "get": { + "operationId": "GetCustomersCustomerOrders", + "summary": "List Orders", + "description": "Retrieves a list of a Customer's Orders.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching orders.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "description": "Id of the order to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "status", + "style": "form", + "explode": false, + "description": "Status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "fulfillment_status", + "style": "form", + "explode": false, + "description": "Fulfillment status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "payment_status", + "style": "form", + "explode": false, + "description": "Payment status to search for.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "display_id", + "description": "Display id to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "email", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "style": "form", + "explode": false, + "description": "The 3 character ISO currency code to set prices based on.", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + }, + { + "in": "query", + "name": "tax_rate", + "description": "to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting collections were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting collections were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "canceled_at", + "description": "Date comparison for when resulting collections were canceled.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "limit", + "description": "How many orders to return.", + "schema": { + "type": "integer", + "default": 10 + } + }, + { + "in": "query", + "name": "offset", + "description": "The offset in the resulting orders.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated string) Which fields should be included in the resulting orders.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated string) Which relations should be expanded in the resulting orders.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listOrders", + "queryParams": "StoreGetCustomersCustomerOrdersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.listOrders()\n.then(({ orders, limit, offset, count }) => {\n console.log(orders);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/customers/me/orders' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersListOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/me/payment-methods": { + "get": { + "operationId": "GetCustomersCustomerPaymentMethods", + "summary": "Get Payment Methods", + "description": "Retrieves a list of a Customer's saved payment methods. Payment methods are saved with Payment Providers and it is their responsibility to fetch saved methods.", + "x-authenticated": true, + "x-codegen": { + "method": "listPaymentMethods" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged\nmedusa.customers.paymentMethods.list()\n.then(({ payment_methods }) => {\n console.log(payment_methods.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/customers/me/payment-methods' \\\n--header 'Cookie: connect.sid={sid}'\n" + } + ], + "security": [ + { + "cookie_auth": [] + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersListPaymentMethodsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/password-reset": { + "post": { + "operationId": "PostCustomersResetPassword", + "summary": "Reset Password", + "description": "Resets a Customer's password using a password token created by a previous /password-token request.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersResetPasswordReq" + } + } + } + }, + "x-codegen": { + "method": "resetPassword" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.customers.resetPassword({\n email: 'user@example.com',\n password: 'supersecret',\n token: 'supersecrettoken'\n})\n.then(({ customer }) => {\n console.log(customer.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers/password-reset' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\",\n \"token\": \"supersecrettoken\"\n}'\n" + } + ], + "tags": [ + "Customers" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCustomersResetPasswordRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/customers/password-token": { + "post": { + "operationId": "PostCustomersCustomerPasswordToken", + "summary": "Request Password Reset", + "description": "Creates a reset password token to be used in a subsequent /reset-password request. The password token should be sent out of band e.g. via email and will not be returned.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerPasswordTokenReq" + } + } + } + }, + "x-codegen": { + "method": "generatePasswordToken" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.customers.generatePasswordToken({\n email: 'user@example.com'\n})\n.then(() => {\n // successful\n})\n.catch(() => {\n // failed\n})\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/customers/password-token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\"\n}'\n" + } + ], + "tags": [ + "Customers" + ], + "responses": { + "204": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/gift-cards/{code}": { + "get": { + "operationId": "GetGiftCardsCode", + "summary": "Get Gift Card by Code", + "description": "Retrieves a Gift Card by its associated unique code.", + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "description": "The unique Gift Card code.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.giftCards.retrieve(code)\n.then(({ gift_card }) => {\n console.log(gift_card.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/gift-cards/{code}'\n" + } + ], + "tags": [ + "Gift Cards" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreGiftCardsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/order-edits/{id}": { + "get": { + "operationId": "GetOrderEditsOrderEdit", + "summary": "Retrieve an OrderEdit", + "description": "Retrieves a OrderEdit.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the OrderEdit.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orderEdits.retrieve(order_edit_id)\n.then(({ order_edit }) => {\n console.log(order_edit.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/order-edits/{id}'\n" + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/order-edits/{id}/complete": { + "post": { + "operationId": "PostOrderEditsOrderEditComplete", + "summary": "Completes an OrderEdit", + "description": "Completes an OrderEdit.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Order Edit.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "complete" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orderEdits.complete(order_edit_id)\n .then(({ order_edit }) => {\n console.log(order_edit.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/order-edits/{id}/complete'\n" + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/order-edits/{id}/decline": { + "post": { + "operationId": "PostOrderEditsOrderEditDecline", + "summary": "Decline an OrderEdit", + "description": "Declines an OrderEdit.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the OrderEdit.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostOrderEditsOrderEditDecline" + } + } + } + }, + "x-codegen": { + "method": "decline" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orderEdits.decline(order_edit_id)\n .then(({ order_edit }) => {\n console.log(order_edit.id);\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/order-edits/{id}/decline'\n" + } + ], + "tags": [ + "Order Edits" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrderEditsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/orders": { + "get": { + "operationId": "GetOrders", + "summary": "Look Up an Order", + "description": "Look up an order using filters.", + "parameters": [ + { + "in": "query", + "name": "display_id", + "required": true, + "description": "The display id given to the Order.", + "schema": { + "type": "number" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "email", + "style": "form", + "explode": false, + "description": "The email associated with this order.", + "required": true, + "schema": { + "type": "string", + "format": "email" + } + }, + { + "in": "query", + "name": "shipping_address", + "style": "form", + "explode": false, + "description": "The shipping address associated with this order.", + "schema": { + "type": "object", + "properties": { + "postal_code": { + "type": "string", + "description": "The postal code of the shipping address" + } + } + } + } + ], + "x-codegen": { + "method": "lookupOrder", + "queryParams": "StoreGetOrdersParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orders.lookupOrder({\n display_id: 1,\n email: 'user@example.com'\n})\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/orders?display_id=1&email=user@example.com'\n" + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/orders/batch/customer/token": { + "post": { + "operationId": "PostOrdersCustomerOrderClaim", + "summary": "Claim an Order", + "description": "Sends an email to emails registered to orders provided with link to transfer order ownership", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerOrderClaimReq" + } + } + } + }, + "x-codegen": { + "method": "requestCustomerOrders" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.orders.claimOrders({\n display_ids,\n})\n.then(() => {\n // successful\n})\n.catch(() => {\n // an error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/batch/customer/token' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"display_ids\": [\"id\"],\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/orders/cart/{cart_id}": { + "get": { + "operationId": "GetOrdersOrderCartId", + "summary": "Get by Cart ID", + "description": "Retrieves an Order by the id of the Cart that was used to create the Order.", + "parameters": [ + { + "in": "path", + "name": "cart_id", + "required": true, + "description": "The ID of Cart.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieveByCartId" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orders.retrieveByCartId(cart_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/orders/cart/{id}'\n" + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/orders/customer/confirm": { + "post": { + "operationId": "PostOrdersCustomerOrderClaimsCustomerOrderClaimAccept", + "summary": "Verify an Order Claim", + "description": "Verifies the claim order token provided to the customer upon request of order ownership", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostCustomersCustomerAcceptClaimReq" + } + } + } + }, + "x-codegen": { + "method": "confirmRequest" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.orders.confirmRequest(\n token,\n)\n.then(() => {\n // successful\n})\n.catch(() => {\n // an error occurred\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/orders/customer/confirm' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"token\": \"{token}\",\n}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/orders/{id}": { + "get": { + "operationId": "GetOrdersOrder", + "summary": "Get an Order", + "description": "Retrieves an Order", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Order.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in the result.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.orders.retrieve(order_id)\n.then(({ order }) => {\n console.log(order.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/orders/{id}'\n" + } + ], + "tags": [ + "Orders" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreOrdersRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}": { + "get": { + "operationId": "GetPaymentCollectionsPaymentCollection", + "summary": "Get a PaymentCollection", + "description": "Get a Payment Collection", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the PaymentCollection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "Comma separated list of relations to include in the results.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "Comma separated list of fields to include in the results.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "StoreGetPaymentCollectionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.paymentCollections.retrieve(paymentCollectionId)\n .then(({ payment_collection }) => {\n console.log(payment_collection.id)\n })\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/payment-collections/{id}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}/sessions": { + "post": { + "operationId": "PostPaymentCollectionsSessions", + "summary": "Manage a Payment Session", + "description": "Manages Payment Sessions from Payment Collections.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment Collection.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionSessionsReq" + } + } + } + }, + "x-codegen": { + "method": "managePaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\n\n// Total amount = 10000\n\n// Adding a payment session\nmedusa.paymentCollections.managePaymentSession(payment_id, { provider_id: \"stripe\" })\n.then(({ payment_collection }) => {\n console.log(payment_collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}/sessions/batch": { + "post": { + "operationId": "PostPaymentCollectionsPaymentCollectionSessionsBatch", + "summary": "Manage Payment Sessions", + "description": "Manages Multiple Payment Sessions from Payment Collections.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment Collections.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostPaymentCollectionsBatchSessionsReq" + } + } + } + }, + "x-codegen": { + "method": "managePaymentSessionsBatch" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\n\n// Total amount = 10000\n\n// Adding two new sessions\nmedusa.paymentCollections.managePaymentSessionsBatch(payment_id, [\n {\n provider_id: \"stripe\",\n amount: 5000,\n },\n {\n provider_id: \"manual\",\n amount: 5000,\n },\n])\n.then(({ payment_collection }) => {\n console.log(payment_collection.id);\n});\n\n// Updating one session and removing the other\nmedusa.paymentCollections.managePaymentSessionsBatch(payment_id, [\n {\n provider_id: \"stripe\",\n amount: 10000,\n session_id: \"ps_123456\"\n },\n])\n.then(({ payment_collection }) => {\n console.log(payment_collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/batch'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}/sessions/batch/authorize": { + "post": { + "operationId": "PostPaymentCollectionsSessionsBatchAuthorize", + "summary": "Authorize PaymentSessions", + "description": "Authorizes Payment Sessions of a Payment Collection.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment Collections.", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostPaymentCollectionsBatchSessionsAuthorizeReq" + } + } + } + }, + "x-codegen": { + "method": "authorizePaymentSessionsBatch" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.paymentCollections.authorize(payment_id)\n.then(({ payment_collection }) => {\n console.log(payment_collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/batch/authorize'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}/sessions/{session_id}": { + "post": { + "operationId": "PostPaymentCollectionsPaymentCollectionPaymentSessionsSession", + "summary": "Refresh a Payment Session", + "description": "Refreshes a Payment Session to ensure that it is in sync with the Payment Collection.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the PaymentCollection.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "session_id", + "required": true, + "description": "The id of the Payment Session to be refreshed.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "refreshPaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.paymentCollections.refreshPaymentSession(payment_collection_id, session_id)\n.then(({ payment_session }) => {\n console.log(payment_session.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/{session_id}'\n" + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsSessionRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/payment-collections/{id}/sessions/{session_id}/authorize": { + "post": { + "operationId": "PostPaymentCollectionsSessionsSessionAuthorize", + "summary": "Authorize Payment Session", + "description": "Authorizes a Payment Session of a Payment Collection.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Payment Collections.", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "session_id", + "required": true, + "description": "The ID of the Payment Session.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "authorizePaymentSession" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.paymentCollections.authorize(payment_id, session_id)\n.then(({ payment_collection }) => {\n console.log(payment_collection.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/{session_id}/authorize'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Payment Collections" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePaymentCollectionsSessionRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/product-categories": { + "get": { + "operationId": "GetProductCategories", + "summary": "List Product Categories", + "description": "Retrieve a list of product categories.", + "x-authenticated": false, + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching product category names or handles.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "parent_category_id", + "description": "Returns categories scoped by parent", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "include_descendants_tree", + "description": "Include all nested descendants of category", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many product categories to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of product categories returned.", + "schema": { + "type": "integer", + "default": 100 + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetProductCategoriesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.productCategories.list()\n.then(({ product_categories, limit, offset, count }) => {\n console.log(product_categories.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/product-categories' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreGetProductCategoriesRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/product-categories/{id}": { + "get": { + "operationId": "GetProductCategoriesCategory", + "summary": "Get a Product Category", + "description": "Retrieves a Product Category.", + "x-authenticated": false, + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The ID of the Product Category", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product category.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be retrieved in each product category.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "StoreGetProductCategoriesCategoryParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.productCategories.retrieve(product_category_id)\n .then(({ product_category }) => {\n console.log(product_category.id);\n });\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/product-categories/{id}' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Categories" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreGetProductCategoriesCategoryRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/product-tags": { + "get": { + "operationId": "GetProductTags", + "summary": "List Product Tags", + "description": "Retrieve a list of Product Tags.", + "x-authenticated": true, + "x-codegen": { + "method": "list", + "queryParams": "StoreGetProductTagsParams" + }, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of types to return.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "order", + "description": "The field to sort items by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the product tags.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "value", + "style": "form", + "explode": false, + "description": "The tag values to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "The tag IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "q", + "description": "A query string to search values for", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting product tags were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting product tags were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.productTags.list()\n.then(({ product_tags }) => {\n console.log(product_tags.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/product-tags'\n" + } + ], + "tags": [ + "Product Tags" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreProductTagsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/product-types": { + "get": { + "operationId": "GetProductTypes", + "summary": "List Product Types", + "description": "Retrieve a list of Product Types.", + "x-authenticated": true, + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "The number of types to return.", + "schema": { + "type": "integer", + "default": 20 + } + }, + { + "in": "query", + "name": "offset", + "description": "The number of items to skip before the results.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "order", + "description": "The field to sort items by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "discount_condition_id", + "description": "The discount condition id on which to filter the product types.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "value", + "style": "form", + "explode": false, + "description": "The type values to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "The type IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "q", + "description": "A query string to search values for", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting product types were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting product types were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetProductTypesParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\n// must be previously logged in or use api token\nmedusa.productTypes.list()\n.then(({ product_types }) => {\n console.log(product_types.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/product-types' \\\n--header 'Authorization: Bearer {api_token}'\n" + } + ], + "security": [ + { + "api_token": [] + }, + { + "cookie_auth": [] + } + ], + "tags": [ + "Product Types" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreProductTypesListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "401": { + "$ref": "#/components/responses/unauthorized" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/products": { + "get": { + "operationId": "GetProducts", + "summary": "List Products", + "description": "Retrieves a list of Products.", + "parameters": [ + { + "in": "query", + "name": "q", + "description": "Query used for searching products by title, description, variant's title, variant's sku, and collection's title", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "id", + "style": "form", + "explode": false, + "description": "product IDs to search for.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + }, + { + "in": "query", + "name": "sales_channel_id", + "style": "form", + "explode": false, + "description": "an array of sales channel IDs to filter the retrieved products by.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "collection_id", + "style": "form", + "explode": false, + "description": "Collection IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "type_id", + "style": "form", + "explode": false, + "description": "Type IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "tags", + "style": "form", + "explode": false, + "description": "Tag IDs to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "title", + "description": "title to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "description", + "description": "description to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "handle", + "description": "handle to search for.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "is_giftcard", + "description": "Search for giftcards using is_giftcard=true.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting products were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting products were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "category_id", + "style": "form", + "explode": false, + "description": "Category ids to filter by.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "include_category_children", + "description": "Include category children when filtering by category_id.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many products to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of products returned.", + "schema": { + "type": "integer", + "default": 100 + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "order", + "description": "the field used to order the products.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "The id of the Cart to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "The id of the Region to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "description": "The currency code to use for price selection.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetProductsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.products.list()\n.then(({ products, limit, offset, count }) => {\n console.log(products.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/products'\n" + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreProductsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/products/search": { + "post": { + "operationId": "PostProductsSearch", + "summary": "Search Products", + "description": "Run a search query on products using the search engine installed on Medusa", + "parameters": [ + { + "in": "query", + "name": "q", + "required": true, + "description": "The query to run the search with.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many products to skip in the result.", + "schema": { + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of products returned.", + "schema": { + "type": "integer" + } + } + ], + "x-codegen": { + "method": "search", + "queryParams": "StorePostSearchReq" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.products.search({\n q: 'Shirt'\n})\n.then(({ hits }) => {\n console.log(hits.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/products/search?q=Shirt'\n" + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostSearchRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/products/{id}": { + "get": { + "operationId": "GetProductsProduct", + "summary": "Get a Product", + "description": "Retrieves a Product.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Product.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sales_channel_id", + "description": "The sales channel used when fetching the product.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "The ID of the customer's cart.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "The ID of the region the customer is using. This is helpful to ensure correct prices are retrieved for a region.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "fields", + "description": "(Comma separated) Which fields should be included in the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "(Comma separated) Which fields should be expanded in each product of the result.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "style": "form", + "explode": false, + "description": "The 3 character ISO currency code to set prices based on. This is helpful to ensure correct prices are retrieved for a currency.", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "StoreGetProductsProductParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.products.retrieve(product_id)\n.then(({ product }) => {\n console.log(product.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/products/{id}'\n" + } + ], + "tags": [ + "Products" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreProductsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/regions": { + "get": { + "operationId": "GetRegions", + "summary": "List Regions", + "description": "Retrieves a list of Regions.", + "parameters": [ + { + "in": "query", + "name": "offset", + "description": "How many regions to skip in the result.", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of regions returned.", + "schema": { + "type": "integer", + "default": 100 + } + }, + { + "in": "query", + "name": "created_at", + "description": "Date comparison for when resulting regions were created.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + }, + { + "in": "query", + "name": "updated_at", + "description": "Date comparison for when resulting regions were updated.", + "schema": { + "type": "object", + "properties": { + "lt": { + "type": "string", + "description": "filter by dates less than this date", + "format": "date" + }, + "gt": { + "type": "string", + "description": "filter by dates greater than this date", + "format": "date" + }, + "lte": { + "type": "string", + "description": "filter by dates less than or equal to this date", + "format": "date" + }, + "gte": { + "type": "string", + "description": "filter by dates greater than or equal to this date", + "format": "date" + } + } + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetRegionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.regions.list()\n.then(({ regions }) => {\n console.log(regions.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/regions'\n" + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreRegionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/regions/{id}": { + "get": { + "operationId": "GetRegionsRegion", + "summary": "Get a Region", + "description": "Retrieves a Region.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Region.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.regions.retrieve(region_id)\n.then(({ region }) => {\n console.log(region.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/regions/{id}'\n" + } + ], + "tags": [ + "Regions" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreRegionsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/return-reasons": { + "get": { + "operationId": "GetReturnReasons", + "summary": "List Return Reasons", + "description": "Retrieves a list of Return Reasons.", + "x-codegen": { + "method": "list" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.returnReasons.list()\n.then(({ return_reasons }) => {\n console.log(return_reasons.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/return-reasons'\n" + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreReturnReasonsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/return-reasons/{id}": { + "get": { + "operationId": "GetReturnReasonsReason", + "summary": "Get a Return Reason", + "description": "Retrieves a Return Reason.", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "description": "The id of the Return Reason.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieve" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.returnReasons.retrieve(reason_id)\n.then(({ return_reason }) => {\n console.log(return_reason.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/return-reasons/{id}'\n" + } + ], + "tags": [ + "Return Reasons" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreReturnReasonsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/returns": { + "post": { + "operationId": "PostReturns", + "summary": "Create Return", + "description": "Creates a Return for an Order.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostReturnsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.returns.create({\n order_id,\n items: [\n {\n item_id,\n quantity: 1\n }\n ]\n})\n.then((data) => {\n console.log(data.return.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/returns' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"order_id\": \"asfasf\",\n \"items\": [\n {\n \"item_id\": \"assfasf\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "tags": [ + "Returns" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreReturnsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/shipping-options": { + "get": { + "operationId": "GetShippingOptions", + "summary": "Get Shipping Options", + "description": "Retrieves a list of Shipping Options.", + "parameters": [ + { + "in": "query", + "name": "is_return", + "description": "Whether return Shipping Options should be included. By default all Shipping Options are returned.", + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "product_ids", + "description": "A comma separated list of Product ids to filter Shipping Options by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "the Region to retrieve Shipping Options from.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetShippingOptionsParams" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.shippingOptions.list()\n.then(({ shipping_options }) => {\n console.log(shipping_options.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/shipping-options'\n" + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreShippingOptionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/shipping-options/{cart_id}": { + "get": { + "operationId": "GetShippingOptionsCartId", + "summary": "List for Cart", + "description": "Retrieves a list of Shipping Options available to a cart.", + "parameters": [ + { + "in": "path", + "name": "cart_id", + "required": true, + "description": "The id of the Cart.", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "listCartOptions" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.shippingOptions.listCartOptions(cart_id)\n.then(({ shipping_options }) => {\n console.log(shipping_options.length);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/shipping-options/{cart_id}'\n" + } + ], + "tags": [ + "Shipping Options" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreCartShippingOptionsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/swaps": { + "post": { + "operationId": "PostSwaps", + "summary": "Create a Swap", + "description": "Creates a Swap on an Order by providing some items to return along with some items to send back", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePostSwapsReq" + } + } + } + }, + "x-codegen": { + "method": "create" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.swaps.create({\n order_id,\n return_items: [\n {\n item_id,\n quantity: 1\n }\n ],\n additional_items: [\n {\n variant_id,\n quantity: 1\n }\n ]\n})\n.then(({ swap }) => {\n console.log(swap.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request POST 'https://medusa-url.com/store/swaps' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"order_id\": \"asfasf\",\n \"return_items\": [\n {\n \"item_id\": \"asfas\",\n \"quantity\": 1\n }\n ],\n \"additional_items\": [\n {\n \"variant_id\": \"asfas\",\n \"quantity\": 1\n }\n ]\n}'\n" + } + ], + "tags": [ + "Swaps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreSwapsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/swaps/{cart_id}": { + "get": { + "operationId": "GetSwapsSwapCartId", + "summary": "Get by Cart ID", + "description": "Retrieves a Swap by the id of the Cart used to confirm the Swap.", + "parameters": [ + { + "in": "path", + "name": "cart_id", + "required": true, + "description": "The id of the Cart", + "schema": { + "type": "string" + } + } + ], + "x-codegen": { + "method": "retrieveByCartId" + }, + "x-codeSamples": [ + { + "lang": "JavaScript", + "label": "JS Client", + "source": "import Medusa from \"@medusajs/medusa-js\"\nconst medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })\nmedusa.swaps.retrieveByCartId(cart_id)\n.then(({ swap }) => {\n console.log(swap.id);\n});\n" + }, + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/swaps/{cart_id}'\n" + } + ], + "tags": [ + "Swaps" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreSwapsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/variants": { + "get": { + "operationId": "GetVariants", + "summary": "Get Product Variants", + "description": "Retrieves a list of Product Variants", + "parameters": [ + { + "in": "query", + "name": "ids", + "description": "A comma separated list of Product Variant ids to filter by.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sales_channel_id", + "description": "A sales channel id for result configuration.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "expand", + "description": "A comma separated list of Product Variant relations to load.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "offset", + "description": "How many product variants to skip in the result.", + "schema": { + "type": "number", + "default": "0" + } + }, + { + "in": "query", + "name": "limit", + "description": "Maximum number of Product Variants to return.", + "schema": { + "type": "number", + "default": "100" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "The id of the Cart to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "The id of the Region to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "description": "The currency code to use for price selection.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "title", + "style": "form", + "explode": false, + "description": "product variant title to search for.", + "schema": { + "oneOf": [ + { + "type": "string", + "description": "a single title to search by" + }, + { + "type": "array", + "description": "multiple titles to search by", + "items": { + "type": "string" + } + } + ] + } + }, + { + "in": "query", + "name": "inventory_quantity", + "description": "Filter by available inventory quantity", + "schema": { + "oneOf": [ + { + "type": "number", + "description": "a specific number to search by." + }, + { + "type": "object", + "description": "search using less and greater than comparisons.", + "properties": { + "lt": { + "type": "number", + "description": "filter by inventory quantity less than this number" + }, + "gt": { + "type": "number", + "description": "filter by inventory quantity greater than this number" + }, + "lte": { + "type": "number", + "description": "filter by inventory quantity less than or equal to this number" + }, + "gte": { + "type": "number", + "description": "filter by inventory quantity greater than or equal to this number" + } + } + } + ] + } + } + ], + "x-codegen": { + "method": "list", + "queryParams": "StoreGetVariantsParams" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/variants'\n" + } + ], + "tags": [ + "Variants" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreVariantsListRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + }, + "/store/variants/{variant_id}": { + "get": { + "operationId": "GetVariantsVariant", + "summary": "Get a Product Variant", + "description": "Retrieves a Product Variant by id", + "parameters": [ + { + "in": "path", + "name": "variant_id", + "required": true, + "description": "The id of the Product Variant.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "cart_id", + "description": "The id of the Cart to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "sales_channel_id", + "description": "A sales channel id for result configuration.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "region_id", + "description": "The id of the Region to set prices based on.", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "currency_code", + "style": "form", + "explode": false, + "description": "The 3 character ISO currency code to set prices based on.", + "schema": { + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + } + } + ], + "x-codegen": { + "method": "retrieve", + "queryParams": "StoreGetVariantsVariantParams" + }, + "x-codeSamples": [ + { + "lang": "Shell", + "label": "cURL", + "source": "curl --location --request GET 'https://medusa-url.com/store/variants/{id}'\n" + } + ], + "tags": [ + "Variants" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreVariantsRes" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400_error" + }, + "404": { + "$ref": "#/components/responses/not_found_error" + }, + "409": { + "$ref": "#/components/responses/invalid_state_error" + }, + "422": { + "$ref": "#/components/responses/invalid_request_error" + }, + "500": { + "$ref": "#/components/responses/500_error" + } + } + } + } + }, + "components": { + "responses": { + "default_error": { + "description": "Default Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "unknown_error", + "message": "An unknown error occurred.", + "type": "unknown_error" + } + } + } + }, + "invalid_state_error": { + "description": "Invalid State Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "unknown_error", + "message": "The request conflicted with another request. You may retry the request with the provided Idempotency-Key.", + "type": "QueryRunnerAlreadyReleasedError" + } + } + } + }, + "invalid_request_error": { + "description": "Invalid Request Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "code": "invalid_request_error", + "message": "Discount with code TEST already exists.", + "type": "duplicate_error" + } + } + } + }, + "not_found_error": { + "description": "Not Found Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "example": { + "message": "Entity with id 1 was not found", + "type": "not_found" + } + } + } + }, + "400_error": { + "description": "Client Error or Multiple Errors", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Error" + }, + { + "$ref": "#/components/schemas/MultipleErrors" + } + ] + }, + "examples": { + "not_allowed": { + "$ref": "#/components/examples/not_allowed_error" + }, + "invalid_data": { + "$ref": "#/components/examples/invalid_data_error" + }, + "MultipleErrors": { + "$ref": "#/components/examples/multiple_errors" + } + } + } + } + }, + "500_error": { + "description": "Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + }, + "examples": { + "database": { + "$ref": "#/components/examples/database_error" + }, + "unexpected_state": { + "$ref": "#/components/examples/unexpected_state_error" + }, + "invalid_argument": { + "$ref": "#/components/examples/invalid_argument_error" + }, + "default_error": { + "$ref": "#/components/examples/default_error" + } + } + } + } + }, + "unauthorized": { + "description": "User is not authorized. Must log in first", + "content": { + "text/plain": { + "schema": { + "type": "string", + "default": "Unauthorized", + "example": "Unauthorized" + } + } + } + }, + "incorrect_credentials": { + "description": "User does not exist or incorrect credentials", + "content": { + "text/plain": { + "schema": { + "type": "string", + "default": "Unauthorized", + "example": "Unauthorized" + } + } + } + } + }, + "examples": { + "not_allowed_error": { + "summary": "Not Allowed Error", + "value": { + "message": "Discount must be set to dynamic", + "type": "not_allowed" + } + }, + "invalid_data_error": { + "summary": "Invalid Data Error", + "value": { + "message": "first_name must be a string", + "type": "invalid_data" + } + }, + "multiple_errors": { + "summary": "Multiple Errors", + "value": { + "message": "Provided request body contains errors. Please check the data and retry the request", + "errors": [ + { + "message": "first_name must be a string", + "type": "invalid_data" + }, + { + "message": "Discount must be set to dynamic", + "type": "not_allowed" + } + ] + } + }, + "database_error": { + "summary": "Database Error", + "value": { + "code": "api_error", + "message": "An error occured while hashing password", + "type": "database_error" + } + }, + "unexpected_state_error": { + "summary": "Unexpected State Error", + "value": { + "message": "cart.total must be defined", + "type": "unexpected_state" + } + }, + "invalid_argument_error": { + "summary": "Invalid Argument Error", + "value": { + "message": "cart.total must be defined", + "type": "unexpected_state" + } + }, + "default_error": { + "summary": "Default Error", + "value": { + "code": "unknown_error", + "message": "An unknown error occurred.", + "type": "unknown_error" + } + } + }, + "securitySchemes": { + "cookie_auth": { + "type": "apiKey", + "x-displayName": "Cookie Session ID", + "in": "cookie", + "name": "connect.sid", + "description": "Use a cookie session to send authenticated requests.\n\n### How to Obtain the Cookie Session\n\nIf you're sending requests through a browser, using JS Client, or using tools like Postman, the cookie session should be automatically set when the customer is logged in.\n\nIf you're sending requests using cURL, you must set the Session ID in the cookie manually.\n\nTo do that, send a request to [authenticate the customer](#tag/Auth/operation/PostAuth) and pass the cURL option `-v`:\n\n```bash\ncurl -v --location --request POST 'https://medusa-url.com/store/auth' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"email\": \"user@example.com\",\n \"password\": \"supersecret\"\n}'\n```\n\nThe headers will be logged in the terminal as well as the response. You should find in the headers a Cookie header similar to this:\n\n```bash\nSet-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM;\n```\n\nCopy the value after `connect.sid` (without the `;` at the end) and pass it as a cookie in subsequent requests as the following:\n\n```bash\ncurl --location --request GET 'https://medusa-url.com/store/customers/me/orders' \\\n--header 'Cookie: connect.sid={sid}'\n```\n\nWhere `{sid}` is the value of `connect.sid` that you copied.\n" + } + }, + "schemas": { + "Address": { + "title": "Address", + "description": "An address.", + "type": "object", + "required": [ + "address_1", + "address_2", + "city", + "company", + "country_code", + "created_at", + "customer_id", + "deleted_at", + "first_name", + "id", + "last_name", + "metadata", + "phone", + "postal_code", + "province", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "ID of the address", + "example": "addr_01G8ZC9VS1XVE149MGH2J7QSSH" + }, + "customer_id": { + "description": "ID of the customer this address belongs to", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "company": { + "description": "Company name", + "nullable": true, + "type": "string", + "example": "Acme" + }, + "first_name": { + "description": "First name", + "nullable": true, + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "nullable": true, + "type": "string", + "example": "Willms" + }, + "address_1": { + "description": "Address line 1", + "nullable": true, + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "nullable": true, + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "nullable": true, + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "country": { + "description": "A country object. Available if the relation `country` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Country" + }, + "province": { + "description": "Province", + "nullable": true, + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "nullable": true, + "type": "string", + "example": 72093 + }, + "phone": { + "description": "Phone Number", + "nullable": true, + "type": "string", + "example": 16128234334802 + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "AddressCreatePayload": { + "type": "object", + "description": "Address fields used when creating an address.", + "required": [ + "first_name", + "last_name", + "address_1", + "city", + "country_code", + "postal_code" + ], + "properties": { + "first_name": { + "description": "First name", + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "type": "string", + "example": "Willms" + }, + "phone": { + "type": "string", + "description": "Phone Number", + "example": 16128234334802 + }, + "company": { + "type": "string" + }, + "address_1": { + "description": "Address line 1", + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "province": { + "description": "Province", + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "type": "string", + "example": 72093 + }, + "metadata": { + "type": "object", + "example": { + "car": "white" + }, + "description": "An optional key-value map with additional details" + } + } + }, + "AddressPayload": { + "type": "object", + "description": "Address fields used when creating/updating an address.", + "properties": { + "first_name": { + "description": "First name", + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "Last name", + "type": "string", + "example": "Willms" + }, + "phone": { + "type": "string", + "description": "Phone Number", + "example": 16128234334802 + }, + "company": { + "type": "string" + }, + "address_1": { + "description": "Address line 1", + "type": "string", + "example": "14433 Kemmer Court" + }, + "address_2": { + "description": "Address line 2", + "type": "string", + "example": "Suite 369" + }, + "city": { + "description": "City", + "type": "string", + "example": "South Geoffreyview" + }, + "country_code": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + }, + "example": "st" + }, + "province": { + "description": "Province", + "type": "string", + "example": "Kentucky" + }, + "postal_code": { + "description": "Postal Code", + "type": "string", + "example": 72093 + }, + "metadata": { + "type": "object", + "example": { + "car": "white" + }, + "description": "An optional key-value map with additional details" + } + } + }, + "BatchJob": { + "title": "Batch Job", + "description": "A Batch Job.", + "type": "object", + "required": [ + "canceled_at", + "completed_at", + "confirmed_at", + "context", + "created_at", + "created_by", + "deleted_at", + "dry_run", + "failed_at", + "id", + "pre_processed_at", + "processing_at", + "result", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The unique identifier for the batch job.", + "type": "string", + "example": "batch_01G8T782965PYFG0751G0Z38B4" + }, + "type": { + "description": "The type of batch job.", + "type": "string", + "enum": [ + "product-import", + "product-export" + ] + }, + "status": { + "description": "The status of the batch job.", + "type": "string", + "enum": [ + "created", + "pre_processed", + "confirmed", + "processing", + "completed", + "canceled", + "failed" + ], + "default": "created" + }, + "created_by": { + "description": "The unique identifier of the user that created the batch job.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "created_by_user": { + "description": "A user object. Available if the relation `created_by_user` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/User" + }, + "context": { + "description": "The context of the batch job, the type of the batch job determines what the context should contain.", + "nullable": true, + "type": "object", + "example": { + "shape": { + "prices": [ + { + "region": null, + "currency_code": "eur" + } + ], + "dynamicImageColumnCount": 4, + "dynamicOptionColumnCount": 2 + }, + "list_config": { + "skip": 0, + "take": 50, + "order": { + "created_at": "DESC" + }, + "relations": [ + "variants", + "variant.prices", + "images" + ] + } + } + }, + "dry_run": { + "description": "Specify if the job must apply the modifications or not.", + "type": "boolean", + "default": false + }, + "result": { + "description": "The result of the batch job.", + "nullable": true, + "allOf": [ + { + "type": "object", + "example": {} + }, + { + "type": "object", + "properties": { + "count": { + "type": "number" + }, + "advancement_count": { + "type": "number" + }, + "progress": { + "type": "number" + }, + "errors": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "err": { + "type": "array" + } + } + }, + "stat_descriptors": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "file_key": { + "type": "string" + }, + "file_size": { + "type": "number" + } + } + } + ], + "example": { + "errors": [ + { + "err": [], + "code": "unknown", + "message": "Method not implemented." + } + ], + "stat_descriptors": [ + { + "key": "product-export-count", + "name": "Product count to export", + "message": "There will be 8 products exported by this action" + } + ] + } + }, + "pre_processed_at": { + "description": "The date from which the job has been pre-processed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "processing_at": { + "description": "The date the job is processing at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "confirmed_at": { + "description": "The date when the confirmation has been done.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "completed_at": { + "description": "The date of the completion.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date of the concellation.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "failed_at": { + "description": "The date when the job failed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was last updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "Cart": { + "title": "Cart", + "description": "Represents a user cart", + "type": "object", + "required": [ + "billing_address_id", + "completed_at", + "context", + "created_at", + "customer_id", + "deleted_at", + "email", + "id", + "idempotency_key", + "metadata", + "payment_authorized_at", + "payment_id", + "payment_session", + "region_id", + "shipping_address_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The cart's ID", + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "email": { + "description": "The email associated with the cart", + "nullable": true, + "type": "string", + "format": "email" + }, + "billing_address_id": { + "description": "The billing address's ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_address_id": { + "description": "The shipping address's ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "items": { + "description": "Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "discounts": { + "description": "Available if the relation `discounts` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "gift_cards": { + "description": "Available if the relation `gift_cards` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCard" + } + }, + "customer_id": { + "description": "The customer's ID", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "payment_session": { + "description": "The selected payment session in the cart.", + "nullable": true, + "$ref": "#/components/schemas/PaymentSession" + }, + "payment_sessions": { + "description": "The payment sessions created on the cart.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentSession" + } + }, + "payment_id": { + "description": "The payment's ID if available", + "nullable": true, + "type": "string", + "example": "pay_01G8ZCC5W42ZNY842124G7P5R9" + }, + "payment": { + "description": "Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "shipping_methods": { + "description": "The shipping methods added to the cart.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "type": { + "description": "The cart's type.", + "type": "string", + "enum": [ + "default", + "swap", + "draft_order", + "payment_link", + "claim" + ], + "default": "default" + }, + "completed_at": { + "description": "The date with timezone at which the cart was completed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "payment_authorized_at": { + "description": "The date with timezone at which the payment was authorized.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a cart in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "context": { + "description": "The context of the cart which can include info like IP or user agent.", + "nullable": true, + "type": "object", + "example": { + "ip": "::1", + "user_agent": "PostmanRuntime/7.29.2" + } + }, + "sales_channel_id": { + "description": "The sales channel ID the cart is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel": { + "description": "A sales channel object. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + }, + "shipping_total": { + "description": "The total of shipping", + "type": "integer", + "example": 1000 + }, + "discount_total": { + "description": "The total of discount rounded", + "type": "integer", + "example": 800 + }, + "raw_discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "item_tax_total": { + "description": "The total of items with taxes", + "type": "integer", + "example": 8000 + }, + "shipping_tax_total": { + "description": "The total of shipping with taxes", + "type": "integer", + "example": 1000 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "refunded_total": { + "description": "The total amount refunded if the order associated with this cart is returned.", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the cart", + "type": "integer", + "example": 8200 + }, + "subtotal": { + "description": "The subtotal of the cart", + "type": "integer", + "example": 8000 + }, + "refundable_amount": { + "description": "The amount that can be refunded", + "type": "integer", + "example": 8200 + }, + "gift_card_total": { + "description": "The total of gift cards", + "type": "integer", + "example": 0 + }, + "gift_card_tax_total": { + "description": "The total of gift cards with taxes", + "type": "integer", + "example": 0 + } + } + }, + "ClaimImage": { + "title": "Claim Image", + "description": "Represents photo documentation of a claim.", + "type": "object", + "required": [ + "claim_item_id", + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "url" + ], + "properties": { + "id": { + "description": "The claim image's ID", + "type": "string", + "example": "cimg_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "claim_item_id": { + "description": "The ID of the claim item associated with the image", + "type": "string" + }, + "claim_item": { + "description": "A claim item object. Available if the relation `claim_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimItem" + }, + "url": { + "description": "The URL of the image", + "type": "string", + "format": "uri" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ClaimItem": { + "title": "Claim Item", + "description": "Represents a claimed item along with information about the reasons for the claim.", + "type": "object", + "required": [ + "claim_order_id", + "created_at", + "deleted_at", + "id", + "item_id", + "metadata", + "note", + "quantity", + "reason", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The claim item's ID", + "type": "string", + "example": "citm_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "images": { + "description": "Available if the relation `images` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimImage" + } + }, + "claim_order_id": { + "description": "The ID of the claim this item is associated with.", + "type": "string" + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "item_id": { + "description": "The ID of the line item that the claim item refers to.", + "type": "string", + "example": "item_01G8ZM25TN49YV9EQBE2NC27KC" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "variant_id": { + "description": "The ID of the product variant that is claimed.", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "A variant object. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "reason": { + "description": "The reason for the claim", + "type": "string", + "enum": [ + "missing_item", + "wrong_item", + "production_failure", + "other" + ] + }, + "note": { + "description": "An optional note about the claim, for additional information", + "nullable": true, + "type": "string", + "example": "I don't like it." + }, + "quantity": { + "description": "The quantity of the item that is being claimed; must be less than or equal to the amount purchased in the original order.", + "type": "integer", + "example": 1 + }, + "tags": { + "description": "User defined tags for easy filtering and grouping. Available if the relation 'tags' is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimTag" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ClaimOrder": { + "title": "Claim Order", + "description": "Claim Orders represent a group of faulty or missing items. Each claim order consists of a subset of items associated with an original order, and can contain additional information about fulfillments and returns.", + "type": "object", + "required": [ + "canceled_at", + "created_at", + "deleted_at", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "order_id", + "payment_status", + "refund_amount", + "shipping_address_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The claim's ID", + "type": "string", + "example": "claim_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "type": { + "description": "The claim's type", + "type": "string", + "enum": [ + "refund", + "replace" + ] + }, + "payment_status": { + "description": "The status of the claim's payment", + "type": "string", + "enum": [ + "na", + "not_refunded", + "refunded" + ], + "default": "na" + }, + "fulfillment_status": { + "description": "The claim's fulfillment status", + "type": "string", + "enum": [ + "not_fulfilled", + "partially_fulfilled", + "fulfilled", + "partially_shipped", + "shipped", + "partially_returned", + "returned", + "canceled", + "requires_action" + ], + "default": "not_fulfilled" + }, + "claim_items": { + "description": "The items that have been claimed", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimItem" + } + }, + "additional_items": { + "description": "Refers to the new items to be shipped when the claim order has the type `replace`", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "order_id": { + "description": "The ID of the order that the claim comes from.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "return_order": { + "description": "A return object. Holds information about the return if the claim is to be returned. Available if the relation 'return_order' is expanded", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "shipping_address_id": { + "description": "The ID of the address that the new items should be shipped to", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_methods": { + "description": "The shipping methods that the claim order will be shipped with.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "fulfillments": { + "description": "The fulfillments of the new items to be shipped", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "refund_amount": { + "description": "The amount that will be refunded in conjunction with the claim", + "nullable": true, + "type": "integer", + "example": 1000 + }, + "canceled_at": { + "description": "The date with timezone at which the claim was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be send.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the cart associated with the claim in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + } + } + }, + "ClaimTag": { + "title": "Claim Tag", + "description": "Claim Tags are user defined tags that can be assigned to claim items for easy filtering and grouping.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The claim tag's ID", + "type": "string", + "example": "ctag_01G8ZCC5Y63B95V6B5SHBZ91S4" + }, + "value": { + "description": "The value that the claim tag holds", + "type": "string", + "example": "Damaged" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Country": { + "title": "Country", + "description": "Country details", + "type": "object", + "required": [ + "display_name", + "id", + "iso_2", + "iso_3", + "name", + "num_code", + "region_id" + ], + "properties": { + "id": { + "description": "The country's ID", + "type": "string", + "example": 109 + }, + "iso_2": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "example": "it", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "iso_3": { + "description": "The 2 character ISO code of the country in lower case", + "type": "string", + "example": "ita", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "num_code": { + "description": "The numerical ISO code for the country.", + "type": "string", + "example": 380, + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_numeric#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "name": { + "description": "The normalized country name in upper case.", + "type": "string", + "example": "ITALY" + }, + "display_name": { + "description": "The country name appropriate for display.", + "type": "string", + "example": "Italy" + }, + "region_id": { + "description": "The region ID this country is associated with.", + "nullable": true, + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + } + } + }, + "CreateStockLocationInput": { + "title": "Create Stock Location Input", + "description": "Represents the Input to create a Stock Location", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "The stock location name" + }, + "address_id": { + "type": "string", + "description": "The Stock location address ID" + }, + "address": { + "description": "Stock location address object", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressInput" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "Currency": { + "title": "Currency", + "description": "Currency", + "type": "object", + "required": [ + "code", + "name", + "symbol", + "symbol_native" + ], + "properties": { + "code": { + "description": "The 3 character ISO code for the currency.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "symbol": { + "description": "The symbol used to indicate the currency.", + "type": "string", + "example": "$" + }, + "symbol_native": { + "description": "The native symbol used to indicate the currency.", + "type": "string", + "example": "$" + }, + "name": { + "description": "The written name of the currency", + "type": "string", + "example": "US Dollar" + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the currency prices include tax", + "type": "boolean", + "default": false + } + } + }, + "CustomShippingOption": { + "title": "Custom Shipping Option", + "description": "Custom Shipping Options are 'overriden' Shipping Options. Store managers can attach a Custom Shipping Option to a cart in order to set a custom price for a particular Shipping Option", + "type": "object", + "required": [ + "cart_id", + "created_at", + "deleted_at", + "id", + "metadata", + "price", + "shipping_option_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The custom shipping option's ID", + "type": "string", + "example": "cso_01G8X99XNB77DMFBJFWX6DN9V9" + }, + "price": { + "description": "The custom price set that will override the shipping option's original price", + "type": "integer", + "example": 1000 + }, + "shipping_option_id": { + "description": "The ID of the Shipping Option that the custom shipping option overrides", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "A shipping option object. Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "cart_id": { + "description": "The ID of the Cart that the custom shipping option is attached to", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Customer": { + "title": "Customer", + "description": "Represents a customer", + "type": "object", + "required": [ + "billing_address_id", + "created_at", + "deleted_at", + "email", + "first_name", + "has_account", + "id", + "last_name", + "metadata", + "phone", + "updated_at" + ], + "properties": { + "id": { + "description": "The customer's ID", + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "email": { + "description": "The customer's email", + "type": "string", + "format": "email" + }, + "first_name": { + "description": "The customer's first name", + "nullable": true, + "type": "string", + "example": "Arno" + }, + "last_name": { + "description": "The customer's last name", + "nullable": true, + "type": "string", + "example": "Willms" + }, + "billing_address_id": { + "description": "The customer's billing address ID", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_addresses": { + "description": "Available if the relation `shipping_addresses` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Address" + } + }, + "phone": { + "description": "The customer's phone number", + "nullable": true, + "type": "string", + "example": 16128234334802 + }, + "has_account": { + "description": "Whether the customer has an account or not", + "type": "boolean", + "default": false + }, + "orders": { + "description": "Available if the relation `orders` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + "groups": { + "description": "The customer groups the customer belongs to. Available if the relation `groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "CustomerGroup": { + "title": "Customer Group", + "description": "Represents a customer group", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "name", + "updated_at" + ], + "properties": { + "id": { + "description": "The customer group's ID", + "type": "string", + "example": "cgrp_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "name": { + "description": "The name of the customer group", + "type": "string", + "example": "VIP" + }, + "customers": { + "description": "The customers that belong to the customer group. Available if the relation `customers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Customer" + } + }, + "price_lists": { + "description": "The price lists that are associated with the customer group. Available if the relation `price_lists` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PriceList" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Discount": { + "title": "Discount", + "description": "Represents a discount that can be applied to a cart for promotional purposes.", + "type": "object", + "required": [ + "code", + "created_at", + "deleted_at", + "ends_at", + "id", + "is_disabled", + "is_dynamic", + "metadata", + "parent_discount_id", + "rule_id", + "starts_at", + "updated_at", + "usage_count", + "usage_limit", + "valid_duration" + ], + "properties": { + "id": { + "description": "The discount's ID", + "type": "string", + "example": "disc_01F0YESMW10MGHWJKZSDDMN0VN" + }, + "code": { + "description": "A unique code for the discount - this will be used by the customer to apply the discount", + "type": "string", + "example": "10DISC" + }, + "is_dynamic": { + "description": "A flag to indicate if multiple instances of the discount can be generated. I.e. for newsletter discounts", + "type": "boolean", + "example": false + }, + "rule_id": { + "description": "The Discount Rule that governs the behaviour of the Discount", + "nullable": true, + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "rule": { + "description": "Available if the relation `rule` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountRule" + }, + "is_disabled": { + "description": "Whether the Discount has been disabled. Disabled discounts cannot be applied to carts", + "type": "boolean", + "example": false + }, + "parent_discount_id": { + "description": "The Discount that the discount was created from. This will always be a dynamic discount", + "nullable": true, + "type": "string", + "example": "disc_01G8ZH853YPY9B94857DY91YGW" + }, + "parent_discount": { + "description": "Available if the relation `parent_discount` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Discount" + }, + "starts_at": { + "description": "The time at which the discount can be used.", + "type": "string", + "format": "date-time" + }, + "ends_at": { + "description": "The time at which the discount can no longer be used.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "valid_duration": { + "description": "Duration the discount runs between", + "nullable": true, + "type": "string", + "example": "P3Y6M4DT12H30M5S" + }, + "regions": { + "description": "The Regions in which the Discount can be used. Available if the relation `regions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Region" + } + }, + "usage_limit": { + "description": "The maximum number of times that a discount can be used.", + "nullable": true, + "type": "integer", + "example": 100 + }, + "usage_count": { + "description": "The number of times a discount has been used.", + "type": "integer", + "example": 50, + "default": 0 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountCondition": { + "title": "Discount Condition", + "description": "Holds rule conditions for when a discount is applicable", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "discount_rule_id", + "id", + "metadata", + "operator", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The discount condition's ID", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "type": { + "description": "The type of the Condition", + "type": "string", + "enum": [ + "products", + "product_types", + "product_collections", + "product_tags", + "customer_groups" + ] + }, + "operator": { + "description": "The operator of the Condition", + "type": "string", + "enum": [ + "in", + "not_in" + ] + }, + "discount_rule_id": { + "description": "The ID of the discount rule associated with the condition", + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "discount_rule": { + "description": "Available if the relation `discount_rule` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountRule" + }, + "products": { + "description": "products associated with this condition if type = products. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "product_types": { + "description": "Product types associated with this condition if type = product_types. Available if the relation `product_types` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "product_tags": { + "description": "Product tags associated with this condition if type = product_tags. Available if the relation `product_tags` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "product_collections": { + "description": "Product collections associated with this condition if type = product_collections. Available if the relation `product_collections` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCollection" + } + }, + "customer_groups": { + "description": "Customer groups associated with this condition if type = customer_groups. Available if the relation `customer_groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionCustomerGroup": { + "title": "Product Tag Discount Condition", + "description": "Associates a discount condition with a customer group", + "type": "object", + "required": [ + "condition_id", + "created_at", + "customer_group_id", + "metadata", + "updated_at" + ], + "properties": { + "customer_group_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "cgrp_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "customer_group": { + "description": "Available if the relation `customer_group` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/CustomerGroup" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProduct": { + "title": "Product Discount Condition", + "description": "Associates a discount condition with a product", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_id", + "updated_at" + ], + "properties": { + "product_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product": { + "description": "Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductCollection": { + "title": "Product Collection Discount Condition", + "description": "Associates a discount condition with a product collection", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_collection_id", + "updated_at" + ], + "properties": { + "product_collection_id": { + "description": "The ID of the Product Collection", + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_collection": { + "description": "Available if the relation `product_collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCollection" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductTag": { + "title": "Product Tag Discount Condition", + "description": "Associates a discount condition with a product tag", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_tag_id", + "updated_at" + ], + "properties": { + "product_tag_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "ptag_01F0YESHPZYY3H4SJ3A5918SBN" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_tag": { + "description": "Available if the relation `product_tag` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductTag" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountConditionProductType": { + "title": "Product Type Discount Condition", + "description": "Associates a discount condition with a product type", + "type": "object", + "required": [ + "condition_id", + "created_at", + "metadata", + "product_type_id", + "updated_at" + ], + "properties": { + "product_type_id": { + "description": "The ID of the Product Tag", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "condition_id": { + "description": "The ID of the Discount Condition", + "type": "string", + "example": "discon_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_type": { + "description": "Available if the relation `product_type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "discount_condition": { + "description": "Available if the relation `discount_condition` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DiscountCondition" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DiscountRule": { + "title": "Discount Rule", + "description": "Holds the rules that governs how a Discount is calculated when applied to a Cart.", + "type": "object", + "required": [ + "allocation", + "created_at", + "deleted_at", + "description", + "id", + "metadata", + "type", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The discount rule's ID", + "type": "string", + "example": "dru_01F0YESMVK96HVX7N419E3CJ7C" + }, + "type": { + "description": "The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers.", + "type": "string", + "enum": [ + "fixed", + "percentage", + "free_shipping" + ], + "example": "percentage" + }, + "description": { + "description": "A short description of the discount", + "nullable": true, + "type": "string", + "example": "10 Percent" + }, + "value": { + "description": "The value that the discount represents; this will depend on the type of the discount", + "type": "integer", + "example": 10 + }, + "allocation": { + "description": "The scope that the discount should apply to.", + "nullable": true, + "type": "string", + "enum": [ + "total", + "item" + ], + "example": "total" + }, + "conditions": { + "description": "A set of conditions that can be used to limit when the discount can be used. Available if the relation `conditions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/DiscountCondition" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "DraftOrder": { + "title": "DraftOrder", + "description": "Represents a draft order", + "type": "object", + "required": [ + "canceled_at", + "cart_id", + "completed_at", + "created_at", + "display_id", + "id", + "idempotency_key", + "metadata", + "no_notification_order", + "order_id", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The draft order's ID", + "type": "string", + "example": "dorder_01G8TJFKBG38YYFQ035MSVG03C" + }, + "status": { + "description": "The status of the draft order", + "type": "string", + "enum": [ + "open", + "completed" + ], + "default": "open" + }, + "display_id": { + "description": "The draft order's display ID", + "type": "string", + "example": 2 + }, + "cart_id": { + "description": "The ID of the cart associated with the draft order.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the order associated with the draft order.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "canceled_at": { + "description": "The date the draft order was canceled at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "completed_at": { + "description": "The date the draft order was completed at.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification_order": { + "description": "Whether to send the customer notifications regarding order updates.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the cart associated with the draft order in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Error": { + "title": "Response Error", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "A slug code to indicate the type of the error." + }, + "message": { + "type": "string", + "description": "Description of the error that occurred." + }, + "type": { + "type": "string", + "description": "A slug indicating the type of the error." + } + } + }, + "ExtendedStoreDTO": { + "allOf": [ + { + "$ref": "#/components/schemas/Store" + }, + { + "type": "object", + "required": [ + "payment_providers", + "fulfillment_providers", + "feature_flags", + "modules" + ], + "properties": { + "payment_providers": { + "$ref": "#/components/schemas/PaymentProvider" + }, + "fulfillment_providers": { + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "feature_flags": { + "$ref": "#/components/schemas/FeatureFlagsResponse" + }, + "modules": { + "$ref": "#/components/schemas/ModulesResponse" + } + } + } + ] + }, + "FeatureFlagsResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "The key of the feature flag.", + "type": "string" + }, + "value": { + "description": "The value of the feature flag.", + "type": "boolean" + } + } + } + }, + "Fulfillment": { + "title": "Fulfillment", + "description": "Fulfillments are created once store operators can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a provider, which is typically an external shipping aggregator, shipping partner og 3PL, most plugins will have asynchronous communications with these providers through webhooks in order to automatically update and synchronize the state of Fulfillments.", + "type": "object", + "required": [ + "canceled_at", + "claim_order_id", + "created_at", + "data", + "id", + "idempotency_key", + "location_id", + "metadata", + "no_notification", + "order_id", + "provider_id", + "shipped_at", + "swap_id", + "tracking_numbers", + "updated_at" + ], + "properties": { + "id": { + "description": "The fulfillment's ID", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "claim_order_id": { + "description": "The id of the Claim that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "swap_id": { + "description": "The id of the Swap that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "order_id": { + "description": "The id of the Order that the Fulfillment belongs to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "provider_id": { + "description": "The id of the Fulfillment Provider responsible for handling the fulfillment", + "type": "string", + "example": "manual" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "location_id": { + "description": "The id of the stock location the fulfillment will be shipped from", + "nullable": true, + "type": "string", + "example": "sloc_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "items": { + "description": "The Fulfillment Items in the Fulfillment - these hold information about how many of each Line Item has been fulfilled. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FulfillmentItem" + } + }, + "tracking_links": { + "description": "The Tracking Links that can be used to track the status of the Fulfillment, these will usually be provided by the Fulfillment Provider. Available if the relation `tracking_links` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TrackingLink" + } + }, + "tracking_numbers": { + "description": "The tracking numbers that can be used to track the status of the fulfillment.", + "deprecated": true, + "type": "array", + "items": { + "type": "string" + } + }, + "data": { + "description": "This contains all the data necessary for the Fulfillment provider to handle the fulfillment.", + "type": "object", + "example": {} + }, + "shipped_at": { + "description": "The date with timezone at which the Fulfillment was shipped.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be sent.", + "nullable": true, + "type": "boolean", + "example": false + }, + "canceled_at": { + "description": "The date with timezone at which the Fulfillment was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the fulfillment in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "FulfillmentItem": { + "title": "Fulfillment Item", + "description": "Correlates a Line Item with a Fulfillment, keeping track of the quantity of the Line Item.", + "type": "object", + "required": [ + "fulfillment_id", + "item_id", + "quantity" + ], + "properties": { + "fulfillment_id": { + "description": "The id of the Fulfillment that the Fulfillment Item belongs to.", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "item_id": { + "description": "The id of the Line Item that the Fulfillment Item references.", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "fulfillment": { + "description": "A fulfillment object. Available if the relation `fulfillment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Fulfillment" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "quantity": { + "description": "The quantity of the Line Item that is included in the Fulfillment.", + "type": "integer", + "example": 1 + } + } + }, + "FulfillmentProvider": { + "title": "Fulfillment Provider", + "description": "Represents a fulfillment provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the fulfillment provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "GiftCard": { + "title": "Gift Card", + "description": "Gift Cards are redeemable and represent a value that can be used towards the payment of an Order.", + "type": "object", + "required": [ + "balance", + "code", + "created_at", + "deleted_at", + "ends_at", + "id", + "is_disabled", + "metadata", + "order_id", + "region_id", + "tax_rate", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The gift card's ID", + "type": "string", + "example": "gift_01G8XKBPBQY2R7RBET4J7E0XQZ" + }, + "code": { + "description": "The unique code that identifies the Gift Card. This is used by the Customer to redeem the value of the Gift Card.", + "type": "string", + "example": "3RFT-MH2C-Y4YZ-XMN4" + }, + "value": { + "description": "The value that the Gift Card represents.", + "type": "integer", + "example": 10 + }, + "balance": { + "description": "The remaining value on the Gift Card.", + "type": "integer", + "example": 10 + }, + "region_id": { + "description": "The id of the Region in which the Gift Card is available.", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "order_id": { + "description": "The id of the Order that the Gift Card was purchased in.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "is_disabled": { + "description": "Whether the Gift Card has been disabled. Disabled Gift Cards cannot be applied to carts.", + "type": "boolean", + "default": false + }, + "ends_at": { + "description": "The time at which the Gift Card can no longer be used.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "tax_rate": { + "description": "The gift card's tax rate that will be applied on calculating totals", + "nullable": true, + "type": "number", + "example": 0 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "GiftCardTransaction": { + "title": "Gift Card Transaction", + "description": "Gift Card Transactions are created once a Customer uses a Gift Card to pay for their Order", + "type": "object", + "required": [ + "amount", + "created_at", + "gift_card_id", + "id", + "is_taxable", + "order_id", + "tax_rate" + ], + "properties": { + "id": { + "description": "The gift card transaction's ID", + "type": "string", + "example": "gct_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "gift_card_id": { + "description": "The ID of the Gift Card that was used in the transaction.", + "type": "string", + "example": "gift_01G8XKBPBQY2R7RBET4J7E0XQZ" + }, + "gift_card": { + "description": "A gift card object. Available if the relation `gift_card` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/GiftCard" + }, + "order_id": { + "description": "The ID of the Order that the Gift Card was used to pay for.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "amount": { + "description": "The amount that was used from the Gift Card.", + "type": "integer", + "example": 10 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "is_taxable": { + "description": "Whether the transaction is taxable or not.", + "nullable": true, + "type": "boolean", + "example": false + }, + "tax_rate": { + "description": "The tax rate of the transaction", + "nullable": true, + "type": "number", + "example": 0 + } + } + }, + "IdempotencyKey": { + "title": "Idempotency Key", + "description": "Idempotency Key is used to continue a process in case of any failure that might occur.", + "type": "object", + "required": [ + "created_at", + "id", + "idempotency_key", + "locked_at", + "recovery_point", + "response_code", + "response_body", + "request_method", + "request_params", + "request_path" + ], + "properties": { + "id": { + "description": "The idempotency key's ID", + "type": "string", + "example": "ikey_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "idempotency_key": { + "description": "The unique randomly generated key used to determine the state of a process.", + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "Date which the idempotency key was locked.", + "type": "string", + "format": "date-time" + }, + "locked_at": { + "description": "Date which the idempotency key was locked.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "request_method": { + "description": "The method of the request", + "nullable": true, + "type": "string", + "example": "POST" + }, + "request_params": { + "description": "The parameters passed to the request", + "nullable": true, + "type": "object", + "example": { + "id": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + } + }, + "request_path": { + "description": "The request's path", + "nullable": true, + "type": "string", + "example": "/store/carts/cart_01G8ZH853Y6TFXWPG5EYE81X63/complete" + }, + "response_code": { + "description": "The response's code.", + "nullable": true, + "type": "string", + "example": 200 + }, + "response_body": { + "description": "The response's body", + "nullable": true, + "type": "object", + "example": { + "id": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + } + }, + "recovery_point": { + "description": "Where to continue from.", + "type": "string", + "default": "started" + } + } + }, + "Image": { + "title": "Image", + "description": "Images holds a reference to a URL at which the image file can be found.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "url" + ], + "properties": { + "id": { + "type": "string", + "description": "The image's ID", + "example": "img_01G749BFYR6T8JTVW6SGW3K3E6" + }, + "url": { + "description": "The URL at which the image file can be found.", + "type": "string", + "format": "uri" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "InventoryItemDTO": { + "type": "object", + "required": [ + "sku" + ], + "properties": { + "sku": { + "description": "The Stock Keeping Unit (SKU) code of the Inventory Item.", + "type": "string" + }, + "hs_code": { + "description": "The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "origin_country": { + "description": "The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "material": { + "description": "The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "type": "string" + }, + "weight": { + "description": "The weight of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "height": { + "description": "The height of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "width": { + "description": "The width of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "length": { + "description": "The length of the Inventory Item. May be used in shipping rate calculations.", + "type": "number" + }, + "requires_shipping": { + "description": "Whether the item requires shipping.", + "type": "boolean" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "InventoryLevelDTO": { + "type": "object", + "required": [ + "inventory_item_id", + "location_id", + "stocked_quantity", + "reserved_quantity", + "incoming_quantity" + ], + "properties": { + "location_id": { + "description": "the item location ID", + "type": "string" + }, + "stocked_quantity": { + "description": "the total stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "reserved_quantity": { + "description": "the reserved stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "incoming_quantity": { + "description": "the incoming stock quantity of an inventory item at the given location ID", + "type": "number" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "Invite": { + "title": "Invite", + "description": "Represents an invite", + "type": "object", + "required": [ + "accepted", + "created_at", + "deleted_at", + "expires_at", + "id", + "metadata", + "role", + "token", + "updated_at", + "user_email" + ], + "properties": { + "id": { + "type": "string", + "description": "The invite's ID", + "example": "invite_01G8TKE4XYCTHSCK2GDEP47RE1" + }, + "user_email": { + "description": "The email of the user being invited.", + "type": "string", + "format": "email" + }, + "role": { + "description": "The user's role.", + "nullable": true, + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ], + "default": "member" + }, + "accepted": { + "description": "Whether the invite was accepted or not.", + "type": "boolean", + "default": false + }, + "token": { + "description": "The token used to accept the invite.", + "type": "string" + }, + "expires_at": { + "description": "The date the invite expires at.", + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItem": { + "title": "Line Item", + "description": "Line Items represent purchasable units that can be added to a Cart for checkout. When Line Items are purchased they will get copied to the resulting order and can eventually be referenced in Fulfillments and Returns. Line Items may also be created when processing Swaps and Claims.", + "type": "object", + "required": [ + "allow_discounts", + "cart_id", + "claim_order_id", + "created_at", + "description", + "fulfilled_quantity", + "has_shipping", + "id", + "is_giftcard", + "is_return", + "metadata", + "order_edit_id", + "order_id", + "original_item_id", + "quantity", + "returned_quantity", + "shipped_quantity", + "should_merge", + "swap_id", + "thumbnail", + "title", + "unit_price", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The line item's ID", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "cart_id": { + "description": "The ID of the Cart that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the Order that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "swap_id": { + "description": "The id of the Swap that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "claim_order_id": { + "description": "The id of the Claim that the Line Item belongs to.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "tax_lines": { + "description": "Available if the relation `tax_lines` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItemTaxLine" + } + }, + "adjustments": { + "description": "Available if the relation `adjustments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItemAdjustment" + } + }, + "original_item_id": { + "description": "The id of the original line item", + "nullable": true, + "type": "string" + }, + "order_edit_id": { + "description": "The ID of the order edit to which a cloned item belongs", + "nullable": true, + "type": "string" + }, + "order_edit": { + "description": "The order edit joined. Available if the relation `order_edit` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/OrderEdit" + }, + "title": { + "description": "The title of the Line Item, this should be easily identifiable by the Customer.", + "type": "string", + "example": "Medusa Coffee Mug" + }, + "description": { + "description": "A more detailed description of the contents of the Line Item.", + "nullable": true, + "type": "string", + "example": "One Size" + }, + "thumbnail": { + "description": "A URL string to a small image of the contents of the Line Item.", + "nullable": true, + "type": "string", + "format": "uri", + "example": "https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png" + }, + "is_return": { + "description": "Is the item being returned", + "type": "boolean", + "default": false + }, + "is_giftcard": { + "description": "Flag to indicate if the Line Item is a Gift Card.", + "type": "boolean", + "default": false + }, + "should_merge": { + "description": "Flag to indicate if new Line Items with the same variant should be merged or added as an additional Line Item.", + "type": "boolean", + "default": true + }, + "allow_discounts": { + "description": "Flag to indicate if the Line Item should be included when doing discount calculations.", + "type": "boolean", + "default": true + }, + "has_shipping": { + "description": "Flag to indicate if the Line Item has fulfillment associated with it.", + "nullable": true, + "type": "boolean", + "example": false + }, + "unit_price": { + "description": "The price of one unit of the content in the Line Item. This should be in the currency defined by the Cart/Order/Swap/Claim that the Line Item belongs to.", + "type": "integer", + "example": 8000 + }, + "variant_id": { + "description": "The id of the Product Variant contained in the Line Item.", + "nullable": true, + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "A product variant object. The Product Variant contained in the Line Item. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "quantity": { + "description": "The quantity of the content in the Line Item.", + "type": "integer", + "example": 1 + }, + "fulfilled_quantity": { + "description": "The quantity of the Line Item that has been fulfilled.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "returned_quantity": { + "description": "The quantity of the Line Item that has been returned.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "shipped_quantity": { + "description": "The quantity of the Line Item that has been shipped.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "refundable": { + "description": "The amount that can be refunded from the given Line Item. Takes taxes and discounts into consideration.", + "type": "integer", + "example": 0 + }, + "subtotal": { + "description": "The subtotal of the line item", + "type": "integer", + "example": 8000 + }, + "tax_total": { + "description": "The total of tax of the line item", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the line item", + "type": "integer", + "example": 8000 + }, + "original_total": { + "description": "The original total amount of the line item", + "type": "integer", + "example": 8000 + }, + "original_tax_total": { + "description": "The original tax total amount of the line item", + "type": "integer", + "example": 0 + }, + "discount_total": { + "description": "The total of discount of the line item rounded", + "type": "integer", + "example": 0 + }, + "raw_discount_total": { + "description": "The total of discount of the line item", + "type": "integer", + "example": 0 + }, + "gift_card_total": { + "description": "The total of the gift card of the line item", + "type": "integer", + "example": 0 + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Indicates if the line item unit_price include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItemAdjustment": { + "title": "Line Item Adjustment", + "description": "Represents a Line Item Adjustment", + "type": "object", + "required": [ + "amount", + "description", + "discount_id", + "id", + "item_id", + "metadata" + ], + "properties": { + "id": { + "description": "The Line Item Adjustment's ID", + "type": "string", + "example": "lia_01G8TKE4XYCTHSCK2GDEP47RE1" + }, + "item_id": { + "description": "The ID of the line item", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "description": { + "description": "The line item's adjustment description", + "type": "string", + "example": "Adjusted item's price." + }, + "discount_id": { + "description": "The ID of the discount associated with the adjustment", + "nullable": true, + "type": "string", + "example": "disc_01F0YESMW10MGHWJKZSDDMN0VN" + }, + "discount": { + "description": "Available if the relation `discount` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Discount" + }, + "amount": { + "description": "The adjustment amount", + "type": "number", + "example": 1000 + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "LineItemTaxLine": { + "title": "Line Item Tax Line", + "description": "Represents a Line Item Tax Line", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "item_id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The line item tax line's ID", + "type": "string", + "example": "litl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "item_id": { + "description": "The ID of the line item", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ModulesResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "module", + "resolution" + ], + "properties": { + "module": { + "description": "The key of the module.", + "type": "string" + }, + "resolution": { + "description": "The resolution path of the module or false if module is not installed.", + "type": "string" + } + } + } + }, + "MoneyAmount": { + "title": "Money Amount", + "description": "Money Amounts represents an amount that a given Product Variant can be purcased for. Each Money Amount either has a Currency or Region associated with it to indicate the pricing in a given Currency or, for fully region-based pricing, the given price in a specific Region. If region-based pricing is used the amount will be in the currency defined for the Reigon.", + "type": "object", + "required": [ + "amount", + "created_at", + "currency_code", + "deleted_at", + "id", + "max_quantity", + "min_quantity", + "price_list_id", + "region_id", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The money amount's ID", + "type": "string", + "example": "ma_01F0YESHRFQNH5S8Q0PK84YYZN" + }, + "currency_code": { + "description": "The 3 character currency code that the Money Amount is given in.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "amount": { + "description": "The amount in the smallest currecny unit (e.g. cents 100 cents to charge $1) that the Product Variant will cost.", + "type": "integer", + "example": 100 + }, + "min_quantity": { + "description": "The minimum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "max_quantity": { + "description": "The maximum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "price_list_id": { + "description": "The ID of the price list associated with the money amount", + "nullable": true, + "type": "string", + "example": "pl_01G8X3CKJXCG5VXVZ87H9KC09W" + }, + "price_list": { + "description": "Available if the relation `price_list` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/PriceList" + }, + "variant_id": { + "description": "The id of the Product Variant contained in the Line Item.", + "nullable": true, + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "The Product Variant contained in the Line Item. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "region_id": { + "description": "The region's ID", + "nullable": true, + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "MultipleErrors": { + "title": "Multiple Errors", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors", + "items": { + "$ref": "#/components/schemas/Error" + } + }, + "message": { + "type": "string", + "default": "Provided request body contains errors. Please check the data and retry the request" + } + } + }, + "Note": { + "title": "Note", + "description": "Notes are elements which we can use in association with different resources to allow users to describe additional information in relation to these.", + "type": "object", + "required": [ + "author_id", + "created_at", + "deleted_at", + "id", + "metadata", + "resource_id", + "resource_type", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The note's ID", + "type": "string", + "example": "note_01G8TM8ENBMC7R90XRR1G6H26Q" + }, + "resource_type": { + "description": "The type of resource that the Note refers to.", + "type": "string", + "example": "order" + }, + "resource_id": { + "description": "The ID of the resource that the Note refers to.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "value": { + "description": "The contents of the note.", + "type": "string", + "example": "This order must be fulfilled on Monday" + }, + "author_id": { + "description": "The ID of the author (user)", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "author": { + "description": "Available if the relation `author` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/User" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Notification": { + "title": "Notification", + "description": "Notifications a communications sent via Notification Providers as a reaction to internal events such as `order.placed`. Notifications can be used to show a chronological timeline for communications sent to a Customer regarding an Order, and enables resends.", + "type": "object", + "required": [ + "created_at", + "customer_id", + "data", + "event_name", + "id", + "parent_id", + "provider_id", + "resource_type", + "resource_id", + "to", + "updated_at" + ], + "properties": { + "id": { + "description": "The notification's ID", + "type": "string", + "example": "noti_01G53V9Y6CKMCGBM1P0X7C28RX" + }, + "event_name": { + "description": "The name of the event that the notification was sent for.", + "nullable": true, + "type": "string", + "example": "order.placed" + }, + "resource_type": { + "description": "The type of resource that the Notification refers to.", + "type": "string", + "example": "order" + }, + "resource_id": { + "description": "The ID of the resource that the Notification refers to.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "customer_id": { + "description": "The ID of the Customer that the Notification was sent to.", + "nullable": true, + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "to": { + "description": "The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id", + "type": "string", + "example": "user@example.com" + }, + "data": { + "description": "The data that the Notification was sent with. This contains all the data necessary for the Notification Provider to initiate a resend.", + "type": "object", + "example": {} + }, + "parent_id": { + "description": "The notification's parent ID", + "nullable": true, + "type": "string", + "example": "noti_01G53V9Y6CKMCGBM1P0X7C28RX" + }, + "parent_notification": { + "description": "Available if the relation `parent_notification` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Notification" + }, + "resends": { + "description": "The resends that have been completed after the original Notification. Available if the relation `resends` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + }, + "provider_id": { + "description": "The id of the Notification Provider that handles the Notification.", + "nullable": true, + "type": "string", + "example": "sengrid" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/NotificationProvider" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "NotificationProvider": { + "title": "Notification Provider", + "description": "Represents a notification provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the notification provider as given by the plugin.", + "type": "string", + "example": "sendgrid" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "OAuth": { + "title": "OAuth", + "description": "Represent an OAuth app", + "type": "object", + "required": [ + "application_name", + "data", + "display_name", + "id", + "install_url", + "uninstall_url" + ], + "properties": { + "id": { + "description": "The app's ID", + "type": "string", + "example": "example_app" + }, + "display_name": { + "description": "The app's display name", + "type": "string", + "example": "Example app" + }, + "application_name": { + "description": "The app's name", + "type": "string", + "example": "example" + }, + "install_url": { + "description": "The URL to install the app", + "nullable": true, + "type": "string", + "format": "uri" + }, + "uninstall_url": { + "description": "The URL to uninstall the app", + "nullable": true, + "type": "string", + "format": "uri" + }, + "data": { + "description": "Any data necessary to the app.", + "nullable": true, + "type": "object", + "example": {} + } + } + }, + "Order": { + "title": "Order", + "description": "Represents an order", + "type": "object", + "required": [ + "billing_address_id", + "canceled_at", + "cart_id", + "created_at", + "currency_code", + "customer_id", + "draft_order_id", + "display_id", + "email", + "external_id", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "object", + "payment_status", + "region_id", + "shipping_address_id", + "status", + "tax_rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The order's ID", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "status": { + "description": "The order's status", + "type": "string", + "enum": [ + "pending", + "completed", + "archived", + "canceled", + "requires_action" + ], + "default": "pending" + }, + "fulfillment_status": { + "description": "The order's fulfillment status", + "type": "string", + "enum": [ + "not_fulfilled", + "partially_fulfilled", + "fulfilled", + "partially_shipped", + "shipped", + "partially_returned", + "returned", + "canceled", + "requires_action" + ], + "default": "not_fulfilled" + }, + "payment_status": { + "description": "The order's payment status", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "captured", + "partially_refunded", + "refunded", + "canceled", + "requires_action" + ], + "default": "not_paid" + }, + "display_id": { + "description": "The order's display ID", + "type": "integer", + "example": 2 + }, + "cart_id": { + "description": "The ID of the cart associated with the order", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "customer_id": { + "description": "The ID of the customer associated with the order", + "type": "string", + "example": "cus_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "customer": { + "description": "A customer object. Available if the relation `customer` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Customer" + }, + "email": { + "description": "The email associated with the order", + "type": "string", + "format": "email" + }, + "billing_address_id": { + "description": "The ID of the billing address associated with the order", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "billing_address": { + "description": "Available if the relation `billing_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_address_id": { + "description": "The ID of the shipping address associated with the order", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "currency_code": { + "description": "The 3 character currency code that is used in the order", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "tax_rate": { + "description": "The order's tax rate", + "nullable": true, + "type": "number", + "example": 0 + }, + "discounts": { + "description": "The discounts used in the order. Available if the relation `discounts` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Discount" + } + }, + "gift_cards": { + "description": "The gift cards used in the order. Available if the relation `gift_cards` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCard" + } + }, + "shipping_methods": { + "description": "The shipping methods used in the order. Available if the relation `shipping_methods` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "payments": { + "description": "The payments used in the order. Available if the relation `payments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Payment" + } + }, + "fulfillments": { + "description": "The fulfillments used in the order. Available if the relation `fulfillments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "returns": { + "description": "The returns associated with the order. Available if the relation `returns` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Return" + } + }, + "claims": { + "description": "The claims associated with the order. Available if the relation `claims` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimOrder" + } + }, + "refunds": { + "description": "The refunds associated with the order. Available if the relation `refunds` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Refund" + } + }, + "swaps": { + "description": "The swaps associated with the order. Available if the relation `swaps` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Swap" + } + }, + "draft_order_id": { + "description": "The ID of the draft order this order is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "draft_order": { + "description": "A draft order object. Available if the relation `draft_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/DraftOrder" + }, + "items": { + "description": "The line items that belong to the order. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "edits": { + "description": "Order edits done on the order. Available if the relation `edits` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderEdit" + } + }, + "gift_card_transactions": { + "description": "The gift card transactions used in the order. Available if the relation `gift_card_transactions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GiftCardTransaction" + } + }, + "canceled_at": { + "description": "The date the order was canceled on.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "Flag for describing whether or not notifications related to this should be send.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the processing of the order in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "external_id": { + "description": "The ID of an external order.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel_id": { + "description": "The ID of the sales channel this order is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channel": { + "description": "A sales channel object. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "shipping_total": { + "type": "integer", + "description": "The total of shipping", + "example": 1000 + }, + "raw_discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "discount_total": { + "description": "The total of discount rounded", + "type": "integer", + "example": 800 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "refunded_total": { + "description": "The total amount refunded if the order is returned.", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the order", + "type": "integer", + "example": 8200 + }, + "subtotal": { + "description": "The subtotal of the order", + "type": "integer", + "example": 8000 + }, + "paid_total": { + "description": "The total amount paid", + "type": "integer", + "example": 8000 + }, + "refundable_amount": { + "description": "The amount that can be refunded", + "type": "integer", + "example": 8200 + }, + "gift_card_total": { + "description": "The total of gift cards", + "type": "integer", + "example": 0 + }, + "gift_card_tax_total": { + "description": "The total of gift cards with taxes", + "type": "integer", + "example": 0 + }, + "returnable_items": { + "description": "The items that are returnable as part of the order, order swaps or order claims", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "OrderEdit": { + "title": "Order Edit", + "description": "Order edit keeps track of order items changes.", + "type": "object", + "required": [ + "canceled_at", + "canceled_by", + "confirmed_by", + "confirmed_at", + "created_at", + "created_by", + "declined_at", + "declined_by", + "declined_reason", + "id", + "internal_note", + "order_id", + "payment_collection_id", + "requested_at", + "requested_by", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The order edit's ID", + "type": "string", + "example": "oe_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order_id": { + "description": "The ID of the order that is edited", + "type": "string", + "example": "order_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "order": { + "description": "Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "changes": { + "description": "Available if the relation `changes` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderItemChange" + } + }, + "internal_note": { + "description": "An optional note with additional details about the order edit.", + "nullable": true, + "type": "string", + "example": "Included two more items B to the order." + }, + "created_by": { + "description": "The unique identifier of the user or customer who created the order edit.", + "type": "string" + }, + "requested_by": { + "description": "The unique identifier of the user or customer who requested the order edit.", + "nullable": true, + "type": "string" + }, + "requested_at": { + "description": "The date with timezone at which the edit was requested.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "confirmed_by": { + "description": "The unique identifier of the user or customer who confirmed the order edit.", + "nullable": true, + "type": "string" + }, + "confirmed_at": { + "description": "The date with timezone at which the edit was confirmed.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "declined_by": { + "description": "The unique identifier of the user or customer who declined the order edit.", + "nullable": true, + "type": "string" + }, + "declined_at": { + "description": "The date with timezone at which the edit was declined.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "declined_reason": { + "description": "An optional note why the order edit is declined.", + "nullable": true, + "type": "string" + }, + "canceled_by": { + "description": "The unique identifier of the user or customer who cancelled the order edit.", + "nullable": true, + "type": "string" + }, + "canceled_at": { + "description": "The date with timezone at which the edit was cancelled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "subtotal": { + "description": "The total of subtotal", + "type": "integer", + "example": 8000 + }, + "discount_total": { + "description": "The total of discount", + "type": "integer", + "example": 800 + }, + "shipping_total": { + "description": "The total of the shipping amount", + "type": "integer", + "example": 800 + }, + "gift_card_total": { + "description": "The total of the gift card amount", + "type": "integer", + "example": 800 + }, + "gift_card_tax_total": { + "description": "The total of the gift card tax amount", + "type": "integer", + "example": 800 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + }, + "total": { + "description": "The total amount of the edited order.", + "type": "integer", + "example": 8200 + }, + "difference_due": { + "description": "The difference between the total amount of the order and total amount of edited order.", + "type": "integer", + "example": 8200 + }, + "status": { + "description": "The status of the order edit.", + "type": "string", + "enum": [ + "confirmed", + "declined", + "requested", + "created", + "canceled" + ] + }, + "items": { + "description": "Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "payment_collection_id": { + "description": "The ID of the payment collection", + "nullable": true, + "type": "string", + "example": "paycol_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "payment_collection": { + "description": "Available if the relation `payment_collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/PaymentCollection" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "OrderItemChange": { + "title": "Order Item Change", + "description": "Represents an order edit item change", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "line_item_id", + "order_edit_id", + "original_line_item_id", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The order item change's ID", + "type": "string", + "example": "oic_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "type": { + "description": "The order item change's status", + "type": "string", + "enum": [ + "item_add", + "item_remove", + "item_update" + ] + }, + "order_edit_id": { + "description": "The ID of the order edit", + "type": "string", + "example": "oe_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "order_edit": { + "description": "Available if the relation `order_edit` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/OrderEdit" + }, + "original_line_item_id": { + "description": "The ID of the original line item in the order", + "nullable": true, + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "original_line_item": { + "description": "Available if the relation `original_line_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "line_item_id": { + "description": "The ID of the cloned line item.", + "nullable": true, + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "line_item": { + "description": "Available if the relation `line_item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "Payment": { + "title": "Payment", + "description": "Payments represent an amount authorized with a given payment method, Payments can be captured, canceled or refunded.", + "type": "object", + "required": [ + "amount", + "amount_refunded", + "canceled_at", + "captured_at", + "cart_id", + "created_at", + "currency_code", + "data", + "id", + "idempotency_key", + "metadata", + "order_id", + "provider_id", + "swap_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment's ID", + "type": "string", + "example": "pay_01G2SJNT6DEEWDFNAJ4XWDTHKE" + }, + "swap_id": { + "description": "The ID of the Swap that the Payment is used for.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "cart_id": { + "description": "The id of the Cart that the Payment Session is created for.", + "nullable": true, + "type": "string" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "order_id": { + "description": "The ID of the Order that the Payment is used for.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "amount": { + "description": "The amount that the Payment has been authorized for.", + "type": "integer", + "example": 100 + }, + "currency_code": { + "description": "The 3 character ISO currency code that the Payment is completed in.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "amount_refunded": { + "description": "The amount of the original Payment amount that has been refunded back to the Customer.", + "type": "integer", + "default": 0, + "example": 0 + }, + "provider_id": { + "description": "The id of the Payment Provider that is responsible for the Payment", + "type": "string", + "example": "manual" + }, + "data": { + "description": "The data required for the Payment Provider to identify, modify and process the Payment. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state.", + "type": "object", + "example": {} + }, + "captured_at": { + "description": "The date with timezone at which the Payment was captured.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date with timezone at which the Payment was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a payment in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "PaymentCollection": { + "title": "Payment Collection", + "description": "Payment Collection", + "type": "object", + "required": [ + "amount", + "authorized_amount", + "created_at", + "created_by", + "currency_code", + "deleted_at", + "description", + "id", + "metadata", + "region_id", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment collection's ID", + "type": "string", + "example": "paycol_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "type": { + "description": "The type of the payment collection", + "type": "string", + "enum": [ + "order_edit" + ] + }, + "status": { + "description": "The type of the payment collection", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "authorized", + "partially_authorized", + "canceled" + ] + }, + "description": { + "description": "Description of the payment collection", + "nullable": true, + "type": "string" + }, + "amount": { + "description": "Amount of the payment collection.", + "type": "integer" + }, + "authorized_amount": { + "description": "Authorized amount of the payment collection.", + "nullable": true, + "type": "integer" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "currency_code": { + "description": "The 3 character ISO code for the currency.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "payment_sessions": { + "description": "Available if the relation `payment_sessions` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentSession" + } + }, + "payments": { + "description": "Available if the relation `payments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Payment" + } + }, + "created_by": { + "description": "The ID of the user that created the payment collection.", + "type": "string" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "PaymentProvider": { + "title": "Payment Provider", + "description": "Represents a Payment Provider plugin and holds its installation status.", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the payment provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "PaymentSession": { + "title": "Payment Session", + "description": "Payment Sessions are created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, who is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for capture/refunds/etc.", + "type": "object", + "required": [ + "amount", + "cart_id", + "created_at", + "data", + "id", + "is_initiated", + "is_selected", + "idempotency_key", + "payment_authorized_at", + "provider_id", + "status", + "updated_at" + ], + "properties": { + "id": { + "description": "The payment session's ID", + "type": "string", + "example": "ps_01G901XNSRM2YS3ASN9H5KG3FZ" + }, + "cart_id": { + "description": "The id of the Cart that the Payment Session is created for.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "provider_id": { + "description": "The id of the Payment Provider that is responsible for the Payment Session", + "type": "string", + "example": "manual" + }, + "is_selected": { + "description": "A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase.", + "nullable": true, + "type": "boolean", + "example": true + }, + "is_initiated": { + "description": "A flag to indicate if a communication with the third party provider has been initiated.", + "type": "boolean", + "default": false, + "example": true + }, + "status": { + "description": "Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer.", + "type": "string", + "enum": [ + "authorized", + "pending", + "requires_more", + "error", + "canceled" + ], + "example": "pending" + }, + "data": { + "description": "The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state.", + "type": "object", + "example": {} + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a cart in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "amount": { + "description": "The amount that the Payment Session has been authorized for.", + "nullable": true, + "type": "integer", + "example": 100 + }, + "payment_authorized_at": { + "description": "The date with timezone at which the Payment Session was authorized.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "PriceList": { + "title": "Price List", + "description": "Price Lists represents a set of prices that overrides the default price for one or more product variants.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "ends_at", + "id", + "name", + "starts_at", + "status", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The price list's ID", + "type": "string", + "example": "pl_01G8X3CKJXCG5VXVZ87H9KC09W" + }, + "name": { + "description": "The price list's name", + "type": "string", + "example": "VIP Prices" + }, + "description": { + "description": "The price list's description", + "type": "string", + "example": "Prices for VIP customers" + }, + "type": { + "description": "The type of Price List. This can be one of either `sale` or `override`.", + "type": "string", + "enum": [ + "sale", + "override" + ], + "default": "sale" + }, + "status": { + "description": "The status of the Price List", + "type": "string", + "enum": [ + "active", + "draft" + ], + "default": "draft" + }, + "starts_at": { + "description": "The date with timezone that the Price List starts being valid.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "ends_at": { + "description": "The date with timezone that the Price List stops being valid.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "customer_groups": { + "description": "The Customer Groups that the Price List applies to. Available if the relation `customer_groups` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerGroup" + } + }, + "prices": { + "description": "The Money Amounts that are associated with the Price List. Available if the relation `prices` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyAmount" + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the price list prices include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "PricedProduct": { + "title": "Priced Product", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/Product" + }, + { + "type": "object", + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedVariant" + } + } + } + } + ] + }, + "PricedShippingOption": { + "title": "Priced Shipping Option", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ShippingOption" + }, + { + "type": "object", + "properties": { + "price_incl_tax": { + "type": "number", + "description": "Price including taxes" + }, + "tax_rates": { + "type": "array", + "description": "An array of applied tax rates", + "items": { + "type": "object", + "properties": { + "rate": { + "type": "number", + "description": "The tax rate value" + }, + "name": { + "type": "string", + "description": "The name of the tax rate" + }, + "code": { + "type": "string", + "description": "The code of the tax rate" + } + } + } + }, + "tax_amount": { + "type": "number", + "description": "The taxes applied." + } + } + } + ] + }, + "PricedVariant": { + "title": "Priced Product Variant", + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ProductVariant" + }, + { + "type": "object", + "properties": { + "original_price": { + "type": "number", + "description": "The original price of the variant without any discounted prices applied." + }, + "calculated_price": { + "type": "number", + "description": "The calculated price of the variant. Can be a discounted price." + }, + "original_price_incl_tax": { + "type": "number", + "description": "The original price of the variant including taxes." + }, + "calculated_price_incl_tax": { + "type": "number", + "description": "The calculated price of the variant including taxes." + }, + "original_tax": { + "type": "number", + "description": "The taxes applied on the original price." + }, + "calculated_tax": { + "type": "number", + "description": "The taxes applied on the calculated price." + }, + "tax_rates": { + "type": "array", + "description": "An array of applied tax rates", + "items": { + "type": "object", + "properties": { + "rate": { + "type": "number", + "description": "The tax rate value" + }, + "name": { + "type": "string", + "description": "The name of the tax rate" + }, + "code": { + "type": "string", + "description": "The code of the tax rate" + } + } + } + } + } + } + ] + }, + "Product": { + "title": "Product", + "description": "Products are a grouping of Product Variants that have common properties such as images and descriptions. Products can have multiple options which define the properties that Product Variants differ by.", + "type": "object", + "required": [ + "collection_id", + "created_at", + "deleted_at", + "description", + "discountable", + "external_id", + "handle", + "height", + "hs_code", + "id", + "is_giftcard", + "length", + "material", + "metadata", + "mid_code", + "origin_country", + "profile_id", + "status", + "subtitle", + "type_id", + "thumbnail", + "title", + "updated_at", + "weight", + "width" + ], + "properties": { + "id": { + "description": "The product's ID", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "title": { + "description": "A title that can be displayed for easy identification of the Product.", + "type": "string", + "example": "Medusa Coffee Mug" + }, + "subtitle": { + "description": "An optional subtitle that can be used to further specify the Product.", + "nullable": true, + "type": "string" + }, + "description": { + "description": "A short description of the Product.", + "nullable": true, + "type": "string", + "example": "Every programmer's best friend." + }, + "handle": { + "description": "A unique identifier for the Product (e.g. for slug structure).", + "nullable": true, + "type": "string", + "example": "coffee-mug" + }, + "is_giftcard": { + "description": "Whether the Product represents a Gift Card. Products that represent Gift Cards will automatically generate a redeemable Gift Card code once they are purchased.", + "type": "boolean", + "default": false + }, + "status": { + "description": "The status of the product", + "type": "string", + "enum": [ + "draft", + "proposed", + "published", + "rejected" + ], + "default": "draft" + }, + "images": { + "description": "Images of the Product. Available if the relation `images` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Image" + } + }, + "thumbnail": { + "description": "A URL to an image file that can be used to identify the Product.", + "nullable": true, + "type": "string", + "format": "uri" + }, + "options": { + "description": "The Product Options that are defined for the Product. Product Variants of the Product will have a unique combination of Product Option Values. Available if the relation `options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOption" + } + }, + "variants": { + "description": "The Product Variants that belong to the Product. Each will have a unique combination of Product Option Values. Available if the relation `variants` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductVariant" + } + }, + "categories": { + "description": "The product's associated categories. Available if the relation `categories` are expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "profile_id": { + "description": "The ID of the Shipping Profile that the Product belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products.", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "profile": { + "description": "Available if the relation `profile` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingProfile" + }, + "weight": { + "description": "The weight of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "length": { + "description": "The length of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "height": { + "description": "The height of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "width": { + "description": "The width of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "hs_code": { + "description": "The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "origin_country": { + "description": "The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "material": { + "description": "The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "collection_id": { + "description": "The Product Collection that the Product belongs to", + "nullable": true, + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "collection": { + "description": "A product collection object. Available if the relation `collection` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCollection" + }, + "type_id": { + "description": "The Product type that the Product belongs to", + "nullable": true, + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "type": { + "description": "Available if the relation `type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "tags": { + "description": "The Product Tags assigned to the Product. Available if the relation `tags` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "discountable": { + "description": "Whether the Product can be discounted. Discounts will not apply to Line Items of this Product when this flag is set to `false`.", + "type": "boolean", + "default": true + }, + "external_id": { + "description": "The external ID of the product", + "nullable": true, + "type": "string", + "example": null + }, + "sales_channels": { + "description": "The sales channels the product is associated with. Available if the relation `sales_channels` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductCategory": { + "title": "ProductCategory", + "description": "Represents a product category", + "x-resourceId": "ProductCategory", + "type": "object", + "required": [ + "category_children", + "created_at", + "handle", + "id", + "is_active", + "is_internal", + "mpath", + "name", + "parent_category_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The product category's ID", + "type": "string", + "example": "pcat_01G2SG30J8C85S4A5CHM2S1NS2" + }, + "name": { + "description": "The product category's name", + "type": "string", + "example": "Regular Fit" + }, + "handle": { + "description": "A unique string that identifies the Product Category - can for example be used in slug structures.", + "type": "string", + "example": "regular-fit" + }, + "mpath": { + "description": "A string for Materialized Paths - used for finding ancestors and descendents", + "nullable": true, + "type": "string", + "example": "pcat_id1.pcat_id2.pcat_id3" + }, + "is_internal": { + "type": "boolean", + "description": "A flag to make product category an internal category for admins", + "default": false + }, + "is_active": { + "type": "boolean", + "description": "A flag to make product category visible/hidden in the store front", + "default": false + }, + "rank": { + "type": "integer", + "description": "An integer that depicts the rank of category in a tree node", + "default": 0 + }, + "category_children": { + "description": "Available if the relation `category_children` are expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "parent_category_id": { + "description": "The ID of the parent category.", + "nullable": true, + "type": "string", + "default": null + }, + "parent_category": { + "description": "A product category object. Available if the relation `parent_category` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductCategory" + }, + "products": { + "description": "Products associated with category. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "ProductCollection": { + "title": "Product Collection", + "description": "Product Collections represents a group of Products that are related.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "handle", + "id", + "metadata", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The product collection's ID", + "type": "string", + "example": "pcol_01F0YESBFAZ0DV6V831JXWH0BG" + }, + "title": { + "description": "The title that the Product Collection is identified by.", + "type": "string", + "example": "Summer Collection" + }, + "handle": { + "description": "A unique string that identifies the Product Collection - can for example be used in slug structures.", + "nullable": true, + "type": "string", + "example": "summer-collection" + }, + "products": { + "description": "The Products contained in the Product Collection. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductOption": { + "title": "Product Option", + "description": "Product Options define properties that may vary between different variants of a Product. Common Product Options are \"Size\" and \"Color\", but Medusa doesn't limit what Product Options that can be defined.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "product_id", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The product option's ID", + "type": "string", + "example": "opt_01F0YESHQBZVKCEXJ24BS6PCX3" + }, + "title": { + "description": "The title that the Product Option is defined by (e.g. `Size`).", + "type": "string", + "example": "Size" + }, + "values": { + "description": "The Product Option Values that are defined for the Product Option. Available if the relation `values` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOptionValue" + } + }, + "product_id": { + "description": "The ID of the Product that the Product Option is defined for.", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "A product object. Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductOptionValue": { + "title": "Product Option Value", + "description": "A value given to a Product Variant's option set. Product Variant have a Product Option Value for each of the Product Options defined on the Product.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "option_id", + "updated_at", + "value", + "variant_id" + ], + "properties": { + "id": { + "description": "The product option value's ID", + "type": "string", + "example": "optval_01F0YESHR7S6ECD03RF6W12DSJ" + }, + "value": { + "description": "The value that the Product Variant has defined for the specific Product Option (e.g. if the Product Option is \\\"Size\\\" this value could be `Small`, `Medium` or `Large`).", + "type": "string", + "example": "large" + }, + "option_id": { + "description": "The ID of the Product Option that the Product Option Value is defined for.", + "type": "string", + "example": "opt_01F0YESHQBZVKCEXJ24BS6PCX3" + }, + "option": { + "description": "Available if the relation `option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductOption" + }, + "variant_id": { + "description": "The ID of the Product Variant that the Product Option Value is defined for.", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "variant": { + "description": "Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTag": { + "title": "Product Tag", + "description": "Product Tags can be added to Products for easy filtering and grouping.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The product tag's ID", + "type": "string", + "example": "ptag_01G8K2MTMG9168F2B70S1TAVK3" + }, + "value": { + "description": "The value that the Product Tag represents", + "type": "string", + "example": "Pants" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTaxRate": { + "title": "Product Tax Rate", + "description": "Associates a tax rate with a product to indicate that the product is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "product_id", + "rate_id", + "updated_at" + ], + "properties": { + "product_id": { + "description": "The ID of the Product", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "rate_id": { + "description": "The ID of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductType": { + "title": "Product Type", + "description": "Product Type can be added to Products for filtering and reporting purposes.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The product type's ID", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "value": { + "description": "The value that the Product Type represents.", + "type": "string", + "example": "Clothing" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductTypeTaxRate": { + "title": "Product Type Tax Rate", + "description": "Associates a tax rate with a product type to indicate that the product type is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "product_type_id", + "rate_id", + "updated_at" + ], + "properties": { + "product_type_id": { + "description": "The ID of the Product type", + "type": "string", + "example": "ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "product_type": { + "description": "Available if the relation `product_type` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductType" + }, + "rate_id": { + "description": "The id of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductVariant": { + "title": "Product Variant", + "description": "Product Variants represent a Product with a specific set of Product Option configurations. The maximum number of Product Variants that a Product can have is given by the number of available Product Option combinations.", + "type": "object", + "required": [ + "allow_backorder", + "barcode", + "created_at", + "deleted_at", + "ean", + "height", + "hs_code", + "id", + "inventory_quantity", + "length", + "manage_inventory", + "material", + "metadata", + "mid_code", + "origin_country", + "product_id", + "sku", + "title", + "upc", + "updated_at", + "weight", + "width" + ], + "properties": { + "id": { + "description": "The product variant's ID", + "type": "string", + "example": "variant_01G1G5V2MRX2V3PVSR2WXYPFB6" + }, + "title": { + "description": "A title that can be displayed for easy identification of the Product Variant.", + "type": "string", + "example": "Small" + }, + "product_id": { + "description": "The ID of the Product that the Product Variant belongs to.", + "type": "string", + "example": "prod_01G1G5V2MBA328390B5AXJ610F" + }, + "product": { + "description": "A product object. Available if the relation `product` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Product" + }, + "prices": { + "description": "The Money Amounts defined for the Product Variant. Each Money Amount represents a price in a given currency or a price in a specific Region. Available if the relation `prices` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/MoneyAmount" + } + }, + "sku": { + "description": "The unique stock keeping unit used to identify the Product Variant. This will usually be a unqiue identifer for the item that is to be shipped, and can be referenced across multiple systems.", + "nullable": true, + "type": "string", + "example": "shirt-123" + }, + "barcode": { + "description": "A generic field for a GTIN number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "ean": { + "description": "An EAN barcode number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "upc": { + "description": "A UPC barcode number that can be used to identify the Product Variant.", + "nullable": true, + "type": "string", + "example": null + }, + "variant_rank": { + "description": "The ranking of this variant", + "nullable": true, + "type": "number", + "default": 0 + }, + "inventory_quantity": { + "description": "The current quantity of the item that is stocked.", + "type": "integer", + "example": 100 + }, + "allow_backorder": { + "description": "Whether the Product Variant should be purchasable when `inventory_quantity` is 0.", + "type": "boolean", + "default": false + }, + "manage_inventory": { + "description": "Whether Medusa should manage inventory for the Product Variant.", + "type": "boolean", + "default": true + }, + "hs_code": { + "description": "The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "origin_country": { + "description": "The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "mid_code": { + "description": "The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "material": { + "description": "The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers.", + "nullable": true, + "type": "string", + "example": null + }, + "weight": { + "description": "The weight of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "length": { + "description": "The length of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "height": { + "description": "The height of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "width": { + "description": "The width of the Product Variant. May be used in shipping rate calculations.", + "nullable": true, + "type": "number", + "example": null + }, + "options": { + "description": "The Product Option Values specified for the Product Variant. Available if the relation `options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductOptionValue" + } + }, + "inventory_items": { + "description": "The Inventory Items related to the product variant. Available if the relation `inventory_items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductVariantInventoryItem" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ProductVariantInventoryItem": { + "title": "Product Variant Inventory Item", + "description": "Product Variant Inventory Items link variants with inventory items and denote the number of inventory items constituting a variant.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "inventory_item_id", + "required_quantity", + "updated_at", + "variant_id" + ], + "properties": { + "id": { + "description": "The product variant inventory item's ID", + "type": "string", + "example": "pvitem_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "inventory_item_id": { + "description": "The id of the inventory item", + "type": "string" + }, + "variant_id": { + "description": "The id of the variant.", + "type": "string" + }, + "variant": { + "description": "A ProductVariant object. Available if the relation `variant` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ProductVariant" + }, + "required_quantity": { + "description": "The quantity of an inventory item required for one quantity of the variant.", + "type": "integer", + "default": 1 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "PublishableApiKey": { + "title": "Publishable API key", + "description": "Publishable API key defines scopes (i.e. resources) that are available within a request.", + "type": "object", + "required": [ + "created_at", + "created_by", + "id", + "revoked_by", + "revoked_at", + "title", + "updated_at" + ], + "properties": { + "id": { + "description": "The key's ID", + "type": "string", + "example": "pk_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "created_by": { + "description": "The unique identifier of the user that created the key.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "revoked_by": { + "description": "The unique identifier of the user that revoked the key.", + "nullable": true, + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "revoked_at": { + "description": "The date with timezone at which the key was revoked.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "title": { + "description": "The key's title.", + "type": "string" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + } + } + }, + "PublishableApiKeySalesChannel": { + "title": "Publishable API key sales channel", + "description": "Holds mapping between Publishable API keys and Sales Channels", + "type": "object", + "required": [ + "publishable_key_id", + "sales_channel_id" + ], + "properties": { + "sales_channel_id": { + "description": "The sales channel's ID", + "type": "string", + "example": "sc_01G1G5V21KADXNGH29BJMAJ4B4" + }, + "publishable_key_id": { + "description": "The publishable API key's ID", + "type": "string", + "example": "pak_01G1G5V21KADXNGH29BJMAJ4B4" + } + } + }, + "Refund": { + "title": "Refund", + "description": "Refund represent an amount of money transfered back to the Customer for a given reason. Refunds may occur in relation to Returns, Swaps and Claims, but can also be initiated by a store operator.", + "type": "object", + "required": [ + "amount", + "created_at", + "id", + "idempotency_key", + "metadata", + "note", + "order_id", + "payment_id", + "reason", + "updated_at" + ], + "properties": { + "id": { + "description": "The refund's ID", + "type": "string", + "example": "ref_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "order_id": { + "description": "The id of the Order that the Refund is related to.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "payment_id": { + "description": "The payment's ID if available", + "nullable": true, + "type": "string", + "example": "pay_01G8ZCC5W42ZNY842124G7P5R9" + }, + "payment": { + "description": "Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "amount": { + "description": "The amount that has be refunded to the Customer.", + "type": "integer", + "example": 1000 + }, + "note": { + "description": "An optional note explaining why the amount was refunded.", + "nullable": true, + "type": "string", + "example": "I didn't like it" + }, + "reason": { + "description": "The reason given for the Refund, will automatically be set when processed as part of a Swap, Claim or Return.", + "type": "string", + "enum": [ + "discount", + "return", + "swap", + "claim", + "other" + ], + "example": "return" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the refund in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "Region": { + "title": "Region", + "description": "Regions hold settings for how Customers in a given geographical location shop. The is, for example, where currencies and tax rates are defined. A Region can consist of multiple countries to accomodate common shopping settings across countries.", + "type": "object", + "required": [ + "automatic_taxes", + "created_at", + "currency_code", + "deleted_at", + "gift_cards_taxable", + "id", + "metadata", + "name", + "tax_code", + "tax_provider_id", + "tax_rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "name": { + "description": "The name of the region as displayed to the customer. If the Region only has one country it is recommended to write the country name.", + "type": "string", + "example": "EU" + }, + "currency_code": { + "description": "The 3 character currency code that the Region uses.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "currency": { + "description": "Available if the relation `currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "tax_rate": { + "description": "The tax rate that should be charged on purchases in the Region.", + "type": "number", + "example": 0 + }, + "tax_rates": { + "description": "The tax rates that are included in the Region. Available if the relation `tax_rates` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxRate" + } + }, + "tax_code": { + "description": "The tax code used on purchases in the Region. This may be used by other systems for accounting purposes.", + "nullable": true, + "type": "string", + "example": null + }, + "gift_cards_taxable": { + "description": "Whether the gift cards are taxable or not in this region.", + "type": "boolean", + "default": true + }, + "automatic_taxes": { + "description": "Whether taxes should be automated in this region.", + "type": "boolean", + "default": true + }, + "countries": { + "description": "The countries that are included in the Region. Available if the relation `countries` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + }, + "tax_provider_id": { + "description": "The ID of the tax provider used in this region", + "nullable": true, + "type": "string", + "example": null + }, + "tax_provider": { + "description": "Available if the relation `tax_provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxProvider" + }, + "payment_providers": { + "description": "The Payment Providers that can be used to process Payments in the Region. Available if the relation `payment_providers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentProvider" + } + }, + "fulfillment_providers": { + "description": "The Fulfillment Providers that can be used to fulfill orders in the Region. Available if the relation `fulfillment_providers` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/FulfillmentProvider" + } + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the prices for the region include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReservationItemDTO": { + "title": "Reservation item", + "description": "Represents a reservation of an inventory item at a stock location", + "type": "object", + "required": [ + "id", + "location_id", + "inventory_item_id", + "quantity" + ], + "properties": { + "id": { + "description": "The id of the reservation item", + "type": "string" + }, + "location_id": { + "description": "The id of the location of the reservation", + "type": "string" + }, + "inventory_item_id": { + "description": "The id of the inventory item the reservation relates to", + "type": "string" + }, + "quantity": { + "description": "The id of the reservation item", + "type": "number" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "Return": { + "title": "Return", + "description": "Return orders hold information about Line Items that a Customer wishes to send back, along with how the items will be returned. Returns can be used as part of a Swap.", + "type": "object", + "required": [ + "claim_order_id", + "created_at", + "id", + "idempotency_key", + "location_id", + "metadata", + "no_notification", + "order_id", + "received_at", + "refund_amount", + "shipping_data", + "status", + "swap_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The return's ID", + "type": "string", + "example": "ret_01F0YET7XPCMF8RZ0Y151NZV2V" + }, + "status": { + "description": "Status of the Return.", + "type": "string", + "enum": [ + "requested", + "received", + "requires_action", + "canceled" + ], + "default": "requested" + }, + "items": { + "description": "The Return Items that will be shipped back to the warehouse. Available if the relation `items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ReturnItem" + } + }, + "swap_id": { + "description": "The ID of the Swap that the Return is a part of.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "claim_order_id": { + "description": "The ID of the Claim that the Return is a part of.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "order_id": { + "description": "The ID of the Order that the Return is made from.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "shipping_method": { + "description": "The Shipping Method that will be used to send the Return back. Can be null if the Customer facilitates the return shipment themselves. Available if the relation `shipping_method` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingMethod" + }, + "shipping_data": { + "description": "Data about the return shipment as provided by the Fulfilment Provider that handles the return shipment.", + "nullable": true, + "type": "object", + "example": {} + }, + "location_id": { + "description": "The id of the stock location the return will be added back.", + "nullable": true, + "type": "string", + "example": "sloc_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "refund_amount": { + "description": "The amount that should be refunded as a result of the return.", + "type": "integer", + "example": 1000 + }, + "no_notification": { + "description": "When set to true, no notification will be sent related to this return.", + "nullable": true, + "type": "boolean", + "example": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the return in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "received_at": { + "description": "The date with timezone at which the return was received.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReturnItem": { + "title": "Return Item", + "description": "Correlates a Line Item with a Return, keeping track of the quantity of the Line Item that will be returned.", + "type": "object", + "required": [ + "is_requested", + "item_id", + "metadata", + "note", + "quantity", + "reason_id", + "received_quantity", + "requested_quantity", + "return_id" + ], + "properties": { + "return_id": { + "description": "The id of the Return that the Return Item belongs to.", + "type": "string", + "example": "ret_01F0YET7XPCMF8RZ0Y151NZV2V" + }, + "item_id": { + "description": "The id of the Line Item that the Return Item references.", + "type": "string", + "example": "item_01G8ZC9GWT6B2GP5FSXRXNFNGN" + }, + "return_order": { + "description": "Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "item": { + "description": "Available if the relation `item` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/LineItem" + }, + "quantity": { + "description": "The quantity of the Line Item that is included in the Return.", + "type": "integer", + "example": 1 + }, + "is_requested": { + "description": "Whether the Return Item was requested initially or received unexpectedly in the warehouse.", + "type": "boolean", + "default": true + }, + "requested_quantity": { + "description": "The quantity that was originally requested to be returned.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "received_quantity": { + "description": "The quantity that was received in the warehouse.", + "nullable": true, + "type": "integer", + "example": 1 + }, + "reason_id": { + "description": "The ID of the reason for returning the item.", + "nullable": true, + "type": "string", + "example": "rr_01G8X82GCCV2KSQHDBHSSAH5TQ" + }, + "reason": { + "description": "Available if the relation `reason` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ReturnReason" + }, + "note": { + "description": "An optional note with additional details about the Return.", + "nullable": true, + "type": "string", + "example": "I didn't like it." + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ReturnReason": { + "title": "Return Reason", + "description": "A Reason for why a given product is returned. A Return Reason can be used on Return Items in order to indicate why a Line Item was returned.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "id", + "label", + "metadata", + "parent_return_reason_id", + "updated_at", + "value" + ], + "properties": { + "id": { + "description": "The return reason's ID", + "type": "string", + "example": "rr_01G8X82GCCV2KSQHDBHSSAH5TQ" + }, + "value": { + "description": "The value to identify the reason by.", + "type": "string", + "example": "damaged" + }, + "label": { + "description": "A text that can be displayed to the Customer as a reason.", + "type": "string", + "example": "Damaged goods" + }, + "description": { + "description": "A description of the Reason.", + "nullable": true, + "type": "string", + "example": "Items that are damaged" + }, + "parent_return_reason_id": { + "description": "The ID of the parent reason.", + "nullable": true, + "type": "string", + "example": null + }, + "parent_return_reason": { + "description": "Available if the relation `parent_return_reason` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ReturnReason" + }, + "return_reason_children": { + "description": "Available if the relation `return_reason_children` is expanded.", + "$ref": "#/components/schemas/ReturnReason" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "SalesChannel": { + "title": "Sales Channel", + "description": "A Sales Channel", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "description", + "id", + "is_disabled", + "name", + "updated_at" + ], + "properties": { + "id": { + "description": "The sales channel's ID", + "type": "string", + "example": "sc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "name": { + "description": "The name of the sales channel.", + "type": "string", + "example": "Market" + }, + "description": { + "description": "The description of the sales channel.", + "nullable": true, + "type": "string", + "example": "Multi-vendor market" + }, + "is_disabled": { + "description": "Specify if the sales channel is enabled or disabled.", + "type": "boolean", + "default": false + }, + "locations": { + "description": "The Stock Locations related to the sales channel. Available if the relation `locations` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannelLocation" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "SalesChannelLocation": { + "title": "Sales Channel Stock Location", + "description": "Sales Channel Stock Location link sales channels with stock locations.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "location_id", + "sales_channel_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The Sales Channel Stock Location's ID", + "type": "string", + "example": "scloc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "sales_channel_id": { + "description": "The id of the Sales Channel", + "type": "string", + "example": "sc_01G8X9A7ESKAJXG2H0E6F1MW7A" + }, + "location_id": { + "description": "The id of the Location Stock.", + "type": "string" + }, + "sales_channel": { + "description": "The sales channel the location is associated with. Available if the relation `sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "ShippingMethod": { + "title": "Shipping Method", + "description": "Shipping Methods represent a way in which an Order or Return can be shipped. Shipping Methods are built from a Shipping Option, but may contain additional details, that can be necessary for the Fulfillment Provider to handle the shipment.", + "type": "object", + "required": [ + "cart_id", + "claim_order_id", + "data", + "id", + "order_id", + "price", + "return_id", + "shipping_option_id", + "swap_id" + ], + "properties": { + "id": { + "description": "The shipping method's ID", + "type": "string", + "example": "sm_01F0YET7DR2E7CYVSDHM593QG2" + }, + "shipping_option_id": { + "description": "The id of the Shipping Option that the Shipping Method is built from.", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "order_id": { + "description": "The id of the Order that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "claim_order_id": { + "description": "The id of the Claim that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "claim_order": { + "description": "A claim order object. Available if the relation `claim_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ClaimOrder" + }, + "cart_id": { + "description": "The id of the Cart that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "swap_id": { + "description": "The id of the Swap that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "swap": { + "description": "A swap object. Available if the relation `swap` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Swap" + }, + "return_id": { + "description": "The id of the Return that the Shipping Method is used on.", + "nullable": true, + "type": "string", + "example": null + }, + "return_order": { + "description": "A return object. Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "tax_lines": { + "description": "Available if the relation `tax_lines` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethodTaxLine" + } + }, + "price": { + "description": "The amount to charge for the Shipping Method. The currency of the price is defined by the Region that the Order that the Shipping Method belongs to is a part of.", + "type": "integer", + "example": 200 + }, + "data": { + "description": "Additional data that the Fulfillment Provider needs to fulfill the shipment. This is used in combination with the Shipping Options data, and may contain information such as a drop point id.", + "type": "object", + "example": {} + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Indicates if the shipping method price include tax", + "type": "boolean", + "default": false + }, + "subtotal": { + "description": "The subtotal of the shipping", + "type": "integer", + "example": 8000 + }, + "total": { + "description": "The total amount of the shipping", + "type": "integer", + "example": 8200 + }, + "tax_total": { + "description": "The total of tax", + "type": "integer", + "example": 0 + } + } + }, + "ShippingMethodTaxLine": { + "title": "Shipping Method Tax Line", + "description": "Shipping Method Tax Line", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "shipping_method_id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The line item tax line's ID", + "type": "string", + "example": "smtl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "shipping_method_id": { + "description": "The ID of the line item", + "type": "string", + "example": "sm_01F0YET7DR2E7CYVSDHM593QG2" + }, + "shipping_method": { + "description": "Available if the relation `shipping_method` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingMethod" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingOption": { + "title": "Shipping Option", + "description": "Shipping Options represent a way in which an Order or Return can be shipped. Shipping Options have an associated Fulfillment Provider that will be used when the fulfillment of an Order is initiated. Shipping Options themselves cannot be added to Carts, but serve as a template for Shipping Methods. This distinction makes it possible to customize individual Shipping Methods with additional information.", + "type": "object", + "required": [ + "admin_only", + "amount", + "created_at", + "data", + "deleted_at", + "id", + "is_return", + "metadata", + "name", + "price_type", + "profile_id", + "provider_id", + "region_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The shipping option's ID", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "name": { + "description": "The name given to the Shipping Option - this may be displayed to the Customer.", + "type": "string", + "example": "PostFake Standard" + }, + "region_id": { + "description": "The region's ID", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "profile_id": { + "description": "The ID of the Shipping Profile that the shipping option belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products.", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "profile": { + "description": "Available if the relation `profile` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingProfile" + }, + "provider_id": { + "description": "The id of the Fulfillment Provider, that will be used to process Fulfillments from the Shipping Option.", + "type": "string", + "example": "manual" + }, + "provider": { + "description": "Available if the relation `provider` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/FulfillmentProvider" + }, + "price_type": { + "description": "The type of pricing calculation that is used when creatin Shipping Methods from the Shipping Option. Can be `flat_rate` for fixed prices or `calculated` if the Fulfillment Provider can provide price calulations.", + "type": "string", + "enum": [ + "flat_rate", + "calculated" + ], + "example": "flat_rate" + }, + "amount": { + "description": "The amount to charge for shipping when the Shipping Option price type is `flat_rate`.", + "nullable": true, + "type": "integer", + "example": 200 + }, + "is_return": { + "description": "Flag to indicate if the Shipping Option can be used for Return shipments.", + "type": "boolean", + "default": false + }, + "admin_only": { + "description": "Flag to indicate if the Shipping Option usage is restricted to admin users.", + "type": "boolean", + "default": false + }, + "requirements": { + "description": "The requirements that must be satisfied for the Shipping Option to be available for a Cart. Available if the relation `requirements` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingOptionRequirement" + } + }, + "data": { + "description": "The data needed for the Fulfillment Provider to identify the Shipping Option.", + "type": "object", + "example": {} + }, + "includes_tax": { + "description": "[EXPERIMENTAL] Does the shipping option price include tax", + "type": "boolean", + "default": false + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingOptionRequirement": { + "title": "Shipping Option Requirement", + "description": "A requirement that a Cart must satisfy for the Shipping Option to be available to the Cart.", + "type": "object", + "required": [ + "amount", + "deleted_at", + "id", + "shipping_option_id", + "type" + ], + "properties": { + "id": { + "description": "The shipping option requirement's ID", + "type": "string", + "example": "sor_01G1G5V29AB4CTNDRFSRWSRKWD" + }, + "shipping_option_id": { + "description": "The id of the Shipping Option that the hipping option requirement belongs to", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "type": { + "description": "The type of the requirement, this defines how the value will be compared to the Cart's total. `min_subtotal` requirements define the minimum subtotal that is needed for the Shipping Option to be available, while the `max_subtotal` defines the maximum subtotal that the Cart can have for the Shipping Option to be available.", + "type": "string", + "enum": [ + "min_subtotal", + "max_subtotal" + ], + "example": "min_subtotal" + }, + "amount": { + "description": "The amount to compare the Cart subtotal to.", + "type": "integer", + "example": 100 + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + } + } + }, + "ShippingProfile": { + "title": "Shipping Profile", + "description": "Shipping Profiles have a set of defined Shipping Options that can be used to fulfill a given set of Products.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "id", + "metadata", + "name", + "type", + "updated_at" + ], + "properties": { + "id": { + "description": "The shipping profile's ID", + "type": "string", + "example": "sp_01G1G5V239ENSZ5MV4JAR737BM" + }, + "name": { + "description": "The name given to the Shipping profile - this may be displayed to the Customer.", + "type": "string", + "example": "Default Shipping Profile" + }, + "type": { + "description": "The type of the Shipping Profile, may be `default`, `gift_card` or `custom`.", + "type": "string", + "enum": [ + "default", + "gift_card", + "custom" + ], + "example": "default" + }, + "products": { + "description": "The Products that the Shipping Profile defines Shipping Options for. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "shipping_options": { + "description": "The Shipping Options that can be used to fulfill the Products in the Shipping Profile. Available if the relation `shipping_options` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingOption" + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "ShippingTaxRate": { + "title": "Shipping Tax Rate", + "description": "Associates a tax rate with a shipping option to indicate that the shipping option is taxed in a certain way", + "type": "object", + "required": [ + "created_at", + "metadata", + "rate_id", + "shipping_option_id", + "updated_at" + ], + "properties": { + "shipping_option_id": { + "description": "The ID of the Shipping Option", + "type": "string", + "example": "so_01G1G5V27GYX4QXNARRQCW1N8T" + }, + "shipping_option": { + "description": "Available if the relation `shipping_option` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/ShippingOption" + }, + "rate_id": { + "description": "The ID of the Tax Rate", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "tax_rate": { + "description": "Available if the relation `tax_rate` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/TaxRate" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "StagedJob": { + "title": "Staged Job", + "description": "A staged job resource", + "type": "object", + "required": [ + "data", + "event_name", + "id", + "options" + ], + "properties": { + "id": { + "description": "The staged job's ID", + "type": "string", + "example": "job_01F0YET7BZTARY9MKN1SJ7AAXF" + }, + "event_name": { + "description": "The name of the event", + "type": "string", + "example": "order.placed" + }, + "data": { + "description": "Data necessary for the job", + "type": "object", + "example": {} + }, + "option": { + "description": "The staged job's option", + "type": "object", + "example": {} + } + } + }, + "StockLocationAddressDTO": { + "title": "Stock Location Address", + "description": "Represents a Stock Location Address", + "type": "object", + "required": [ + "address_1", + "country_code", + "created_at", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "The stock location address' ID", + "example": "laddr_51G4ZW853Y6TFXWPG5ENJ81X42" + }, + "address_1": { + "type": "string", + "description": "Stock location address", + "example": "35, Jhon Doe Ave" + }, + "address_2": { + "type": "string", + "description": "Stock location address' complement", + "example": "apartment 4432" + }, + "company": { + "type": "string", + "description": "Stock location company' name", + "example": "Medusa" + }, + "city": { + "type": "string", + "description": "Stock location address' city", + "example": "Mexico city" + }, + "country_code": { + "type": "string", + "description": "Stock location address' country", + "example": "MX" + }, + "phone": { + "type": "string", + "description": "Stock location address' phone number", + "example": "+1 555 61646" + }, + "postal_code": { + "type": "string", + "description": "Stock location address' postal code", + "example": "HD3-1G8" + }, + "province": { + "type": "string", + "description": "Stock location address' province", + "example": "Sinaloa" + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "StockLocationAddressInput": { + "title": "Stock Location Address Input", + "description": "Represents a Stock Location Address Input", + "type": "object", + "required": [ + "address_1", + "country_code" + ], + "properties": { + "address_1": { + "type": "string", + "description": "Stock location address", + "example": "35, Jhon Doe Ave" + }, + "address_2": { + "type": "string", + "description": "Stock location address' complement", + "example": "apartment 4432" + }, + "city": { + "type": "string", + "description": "Stock location address' city", + "example": "Mexico city" + }, + "country_code": { + "type": "string", + "description": "Stock location address' country", + "example": "MX" + }, + "phone": { + "type": "string", + "description": "Stock location address' phone number", + "example": "+1 555 61646" + }, + "postal_code": { + "type": "string", + "description": "Stock location address' postal code", + "example": "HD3-1G8" + }, + "province": { + "type": "string", + "description": "Stock location address' province", + "example": "Sinaloa" + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "StockLocationDTO": { + "title": "Stock Location", + "description": "Represents a Stock Location", + "type": "object", + "required": [ + "id", + "name", + "address_id", + "created_at", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "description": "The stock location's ID", + "example": "sloc_51G4ZW853Y6TFXWPG5ENJ81X42" + }, + "address_id": { + "type": "string", + "description": "Stock location address' ID", + "example": "laddr_05B2ZE853Y6FTXWPW85NJ81A44" + }, + "name": { + "type": "string", + "description": "The name of the stock location", + "example": "Main Warehouse" + }, + "address": { + "description": "The Address of the Stock Location", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressDTO" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + }, + "created_at": { + "type": "string", + "description": "The date with timezone at which the resource was created.", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "description": "The date with timezone at which the resource was updated.", + "format": "date-time" + }, + "deleted_at": { + "type": "string", + "description": "The date with timezone at which the resource was deleted.", + "format": "date-time" + } + } + }, + "StockLocationExpandedDTO": { + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationDTO" + }, + { + "type": "object", + "properties": { + "sales_channels": { + "$ref": "#/components/schemas/SalesChannel" + } + } + } + ] + }, + "Store": { + "title": "Store", + "description": "Holds settings for the Store, such as name, currencies, etc.", + "type": "object", + "required": [ + "created_at", + "default_currency_code", + "default_location_id", + "id", + "invite_link_template", + "metadata", + "name", + "payment_link_template", + "swap_link_template", + "updated_at" + ], + "properties": { + "id": { + "description": "The store's ID", + "type": "string", + "example": "store_01G1G5V21KADXNGH29BJMAJ4B4" + }, + "name": { + "description": "The name of the Store - this may be displayed to the Customer.", + "type": "string", + "example": "Medusa Store" + }, + "default_currency_code": { + "description": "The 3 character currency code that is the default of the store.", + "type": "string", + "example": "usd", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_4217#Active_codes", + "description": "See a list of codes." + } + }, + "default_currency": { + "description": "Available if the relation `default_currency` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Currency" + }, + "currencies": { + "description": "The currencies that are enabled for the Store. Available if the relation `currencies` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + }, + "swap_link_template": { + "description": "A template to generate Swap links from. Use {{cart_id}} to include the Swap's `cart_id` in the link.", + "nullable": true, + "type": "string", + "example": null + }, + "payment_link_template": { + "description": "A template to generate Payment links from. Use {{cart_id}} to include the payment's `cart_id` in the link.", + "nullable": true, + "type": "string", + "example": null + }, + "invite_link_template": { + "description": "A template to generate Invite links from", + "nullable": true, + "type": "string", + "example": null + }, + "default_location_id": { + "description": "The location ID the store is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "default_sales_channel_id": { + "description": "The sales channel ID the cart is associated with.", + "nullable": true, + "type": "string", + "example": null + }, + "default_sales_channel": { + "description": "A sales channel object. Available if the relation `default_sales_channel` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/SalesChannel" + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "StoreAuthRes": { + "type": "object", + "x-expanded-relations": { + "field": "customer", + "relations": [ + "orders", + "orders.items", + "shipping_addresses" + ] + }, + "required": [ + "customer" + ], + "properties": { + "customer": { + "$ref": "#/components/schemas/Customer" + } + } + }, + "StoreCartShippingOptionsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "shipping_options", + "implicit": [ + "profile", + "requirements" + ] + }, + "required": [ + "shipping_options" + ], + "properties": { + "shipping_options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedShippingOption" + } + } + } + }, + "StoreCartsRes": { + "type": "object", + "x-expanded-relations": { + "field": "cart", + "relations": [ + "billing_address", + "discounts", + "discounts.rule", + "gift_cards", + "items", + "items.adjustments", + "items.variant", + "payment", + "payment_sessions", + "region", + "region.countries", + "region.payment_providers", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers", + "shipping_methods.shipping_option" + ], + "implicit": [ + "items", + "items.variant", + "items.variant.product", + "items.tax_lines", + "items.adjustments", + "gift_cards", + "discounts", + "discounts.rule", + "shipping_methods", + "shipping_methods.tax_lines", + "shipping_address", + "region", + "region.tax_rates" + ], + "totals": [ + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "item_tax_total", + "refundable_amount", + "refunded_total", + "shipping_tax_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total" + ] + }, + "required": [ + "cart" + ], + "properties": { + "cart": { + "$ref": "#/components/schemas/Cart" + } + } + }, + "StoreCollectionsListRes": { + "type": "object", + "required": [ + "collections", + "count", + "offset", + "limit" + ], + "properties": { + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCollection" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "StoreCollectionsRes": { + "type": "object", + "required": [ + "collection" + ], + "properties": { + "collection": { + "$ref": "#/components/schemas/ProductCollection" + } + } + }, + "StoreCompleteCartRes": { + "type": "object", + "required": [ + "type", + "data" + ], + "properties": { + "type": { + "type": "string", + "description": "The type of the data property.", + "enum": [ + "order", + "cart", + "swap" + ] + }, + "data": { + "type": "object", + "description": "The data of the result object. Its type depends on the type field.", + "oneOf": [ + { + "type": "object", + "allOf": [ + { + "description": "Cart was successfully authorized and order was placed successfully." + }, + { + "$ref": "#/components/schemas/Order" + } + ] + }, + { + "type": "object", + "allOf": [ + { + "description": "Cart was successfully authorized but requires further actions." + }, + { + "$ref": "#/components/schemas/Cart" + } + ] + }, + { + "type": "object", + "allOf": [ + { + "description": "When cart is used for a swap and it has been completed successfully." + }, + { + "$ref": "#/components/schemas/Swap" + } + ] + } + ] + } + } + }, + "StoreCustomersListOrdersRes": { + "type": "object", + "x-expanded-relations": { + "field": "orders", + "relations": [ + "customer", + "discounts", + "discounts.rule", + "fulfillments", + "fulfillments.tracking_links", + "items", + "items.variant", + "payments", + "region", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers", + "shipping_methods.shipping_option" + ], + "implicit": [ + "claims", + "claims.additional_items", + "claims.additional_items.adjustments", + "claims.additional_items.refundable", + "claims.additional_items.tax_lines", + "customer", + "discounts", + "discounts.rule", + "gift_card_transactions", + "gift_card_transactions.gift_card", + "gift_cards", + "items", + "items.adjustments", + "items.refundable", + "items.tax_lines", + "items.variant", + "items.variant.product", + "refunds", + "region", + "shipping_address", + "shipping_methods", + "shipping_methods.tax_lines", + "swaps", + "swaps.additional_items", + "swaps.additional_items.adjustments", + "swaps.additional_items.refundable", + "swaps.additional_items.tax_lines" + ], + "totals": [ + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "paid_total", + "refundable_amount", + "refunded_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "claims.additional_items.discount_total", + "claims.additional_items.gift_card_total", + "claims.additional_items.original_tax_total", + "claims.additional_items.original_total", + "claims.additional_items.refundable", + "claims.additional_items.subtotal", + "claims.additional_items.tax_total", + "claims.additional_items.total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total", + "swaps.additional_items.discount_total", + "swaps.additional_items.gift_card_total", + "swaps.additional_items.original_tax_total", + "swaps.additional_items.original_total", + "swaps.additional_items.refundable", + "swaps.additional_items.subtotal", + "swaps.additional_items.tax_total", + "swaps.additional_items.total" + ] + }, + "required": [ + "orders", + "count", + "offset", + "limit" + ], + "properties": { + "orders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + "count": { + "description": "The total number of items available", + "type": "integer" + }, + "offset": { + "description": "The number of items skipped before these items", + "type": "integer" + }, + "limit": { + "description": "The number of items per page", + "type": "integer" + } + } + }, + "StoreCustomersListPaymentMethodsRes": { + "type": "object", + "required": [ + "payment_methods" + ], + "properties": { + "payment_methods": { + "type": "array", + "items": { + "type": "object", + "required": [ + "provider_id", + "data" + ], + "properties": { + "provider_id": { + "description": "The id of the Payment Provider where the payment method is saved.", + "type": "string" + }, + "data": { + "description": "The data needed for the Payment Provider to use the saved payment method.", + "type": "object" + } + } + } + } + } + }, + "StoreCustomersRes": { + "type": "object", + "x-expanded-relations": { + "field": "customer", + "relations": [ + "billing_address", + "shipping_addresses" + ] + }, + "required": [ + "customer" + ], + "properties": { + "customer": { + "$ref": "#/components/schemas/Customer" + } + } + }, + "StoreCustomersResetPasswordRes": { + "type": "object", + "required": [ + "customer" + ], + "properties": { + "customer": { + "$ref": "#/components/schemas/Customer" + } + } + }, + "StoreGetAuthEmailRes": { + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "description": "Whether email exists or not.", + "type": "boolean" + } + } + }, + "StoreGetProductCategoriesCategoryRes": { + "type": "object", + "x-expanded-relations": { + "field": "product_category", + "relations": [ + "category_children", + "parent_category" + ] + }, + "required": [ + "product_category" + ], + "properties": { + "product_category": { + "$ref": "#/components/schemas/ProductCategory" + } + } + }, + "StoreGetProductCategoriesRes": { + "type": "object", + "x-expanded-relations": { + "field": "product_categories", + "relations": [ + "category_children", + "parent_category" + ] + }, + "required": [ + "product_categories", + "count", + "offset", + "limit" + ], + "properties": { + "product_categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCategory" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "StoreGiftCardsRes": { + "type": "object", + "required": [ + "gift_card" + ], + "properties": { + "gift_card": { + "$ref": "#/components/schemas/GiftCard" + } + } + }, + "StoreOrderEditsRes": { + "type": "object", + "x-expanded-relations": { + "field": "order_edit", + "relations": [ + "changes", + "changes.line_item", + "changes.line_item.variant", + "changes.original_line_item", + "changes.original_line_item.variant", + "items", + "items.adjustments", + "items.tax_lines", + "items.variant", + "payment_collection" + ], + "implicit": [ + "items", + "items.tax_lines", + "items.adjustments", + "items.variant" + ], + "totals": [ + "difference_due", + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total" + ] + }, + "required": [ + "order_edit" + ], + "properties": { + "order_edit": { + "$ref": "#/components/schemas/OrderEdit" + } + } + }, + "StoreOrdersRes": { + "type": "object", + "required": [ + "order" + ], + "x-expanded-relations": { + "field": "order", + "relations": [ + "customer", + "discounts", + "discounts.rule", + "fulfillments", + "fulfillments.tracking_links", + "items", + "items.variant", + "payments", + "region", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "fulfillments.items", + "region.fulfillment_providers", + "region.payment_providers", + "shipping_methods.shipping_option" + ], + "implicit": [ + "claims", + "claims.additional_items", + "claims.additional_items.adjustments", + "claims.additional_items.refundable", + "claims.additional_items.tax_lines", + "discounts", + "discounts.rule", + "gift_card_transactions", + "gift_card_transactions.gift_card", + "gift_cards", + "items", + "items.adjustments", + "items.refundable", + "items.tax_lines", + "items.variant", + "items.variant.product", + "refunds", + "region", + "shipping_methods", + "shipping_methods.tax_lines", + "swaps", + "swaps.additional_items", + "swaps.additional_items.adjustments", + "swaps.additional_items.refundable", + "swaps.additional_items.tax_lines" + ], + "totals": [ + "discount_total", + "gift_card_tax_total", + "gift_card_total", + "paid_total", + "refundable_amount", + "refunded_total", + "shipping_total", + "subtotal", + "tax_total", + "total", + "claims.additional_items.discount_total", + "claims.additional_items.gift_card_total", + "claims.additional_items.original_tax_total", + "claims.additional_items.original_total", + "claims.additional_items.refundable", + "claims.additional_items.subtotal", + "claims.additional_items.tax_total", + "claims.additional_items.total", + "items.discount_total", + "items.gift_card_total", + "items.original_tax_total", + "items.original_total", + "items.refundable", + "items.subtotal", + "items.tax_total", + "items.total", + "swaps.additional_items.discount_total", + "swaps.additional_items.gift_card_total", + "swaps.additional_items.original_tax_total", + "swaps.additional_items.original_total", + "swaps.additional_items.refundable", + "swaps.additional_items.subtotal", + "swaps.additional_items.tax_total", + "swaps.additional_items.total" + ] + }, + "properties": { + "order": { + "$ref": "#/components/schemas/Order" + } + } + }, + "StorePaymentCollectionSessionsReq": { + "type": "object", + "required": [ + "provider_id" + ], + "properties": { + "provider_id": { + "type": "string", + "description": "The ID of the Payment Provider." + } + } + }, + "StorePaymentCollectionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "payment_collection", + "relations": [ + "payment_sessions", + "region" + ], + "eager": [ + "region.fulfillment_providers", + "region.payment_providers" + ] + }, + "required": [ + "payment_collection" + ], + "properties": { + "payment_collection": { + "$ref": "#/components/schemas/PaymentCollection" + } + } + }, + "StorePaymentCollectionsSessionRes": { + "type": "object", + "required": [ + "payment_session" + ], + "properties": { + "payment_session": { + "$ref": "#/components/schemas/PaymentSession" + } + } + }, + "StorePostAuthReq": { + "type": "object", + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "type": "string", + "description": "The Customer's email." + }, + "password": { + "type": "string", + "description": "The Customer's password." + } + } + }, + "StorePostCartReq": { + "type": "object", + "properties": { + "region_id": { + "type": "string", + "description": "The ID of the Region to create the Cart in." + }, + "sales_channel_id": { + "type": "string", + "description": "[EXPERIMENTAL] The ID of the Sales channel to create the Cart in." + }, + "country_code": { + "type": "string", + "description": "The 2 character ISO country code to create the Cart in.", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "items": { + "description": "An optional array of `variant_id`, `quantity` pairs to generate Line Items from.", + "type": "array", + "items": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "description": "The id of the Product Variant to generate a Line Item from.", + "type": "string" + }, + "quantity": { + "description": "The quantity of the Product Variant to add", + "type": "integer" + } + } + } + }, + "context": { + "description": "An optional object to provide context to the Cart. The `context` field is automatically populated with `ip` and `user_agent`", + "type": "object", + "example": { + "ip": "::1", + "user_agent": "Chrome" + } + } + } + }, + "StorePostCartsCartLineItemsItemReq": { + "type": "object", + "required": [ + "quantity" + ], + "properties": { + "quantity": { + "type": "number", + "description": "The quantity to set the Line Item to." + } + } + }, + "StorePostCartsCartLineItemsReq": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "type": "string", + "description": "The id of the Product Variant to generate the Line Item from." + }, + "quantity": { + "type": "number", + "description": "The quantity of the Product Variant to add to the Line Item." + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details about the Line Item." + } + } + }, + "StorePostCartsCartPaymentSessionReq": { + "type": "object", + "required": [ + "provider_id" + ], + "properties": { + "provider_id": { + "type": "string", + "description": "The ID of the Payment Provider." + } + } + }, + "StorePostCartsCartPaymentSessionUpdateReq": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "object", + "description": "The data to update the payment session with." + } + } + }, + "StorePostCartsCartReq": { + "type": "object", + "properties": { + "region_id": { + "type": "string", + "description": "The id of the Region to create the Cart in." + }, + "country_code": { + "type": "string", + "description": "The 2 character ISO country code to create the Cart in.", + "externalDocs": { + "url": "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements", + "description": "See a list of codes." + } + }, + "email": { + "type": "string", + "description": "An email to be used on the Cart.", + "format": "email" + }, + "sales_channel_id": { + "type": "string", + "description": "The ID of the Sales channel to update the Cart with." + }, + "billing_address": { + "description": "The Address to be used for billing purposes.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload", + "description": "A full billing address object." + }, + { + "type": "string", + "description": "The billing address ID" + } + ] + }, + "shipping_address": { + "description": "The Address to be used for shipping.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload", + "description": "A full shipping address object." + }, + { + "type": "string", + "description": "The shipping address ID" + } + ] + }, + "gift_cards": { + "description": "An array of Gift Card codes to add to the Cart.", + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "description": "The code that a Gift Card is identified by.", + "type": "string" + } + } + } + }, + "discounts": { + "description": "An array of Discount codes to add to the Cart.", + "type": "array", + "items": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "description": "The code that a Discount is identifed by.", + "type": "string" + } + } + } + }, + "customer_id": { + "description": "The ID of the Customer to associate the Cart with.", + "type": "string" + }, + "context": { + "description": "An optional object to provide context to the Cart.", + "type": "object", + "example": { + "ip": "::1", + "user_agent": "Chrome" + } + } + } + }, + "StorePostCartsCartShippingMethodReq": { + "type": "object", + "required": [ + "option_id" + ], + "properties": { + "option_id": { + "type": "string", + "description": "ID of the shipping option to create the method from" + }, + "data": { + "type": "object", + "description": "Used to hold any data that the shipping method may need to process the fulfillment of the order. Look at the documentation for your installed fulfillment providers to find out what to send." + } + } + }, + "StorePostCustomersCustomerAcceptClaimReq": { + "type": "object", + "required": [ + "token" + ], + "properties": { + "token": { + "description": "The invite token provided by the admin.", + "type": "string" + } + } + }, + "StorePostCustomersCustomerAddressesAddressReq": { + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload" + } + ] + }, + "StorePostCustomersCustomerAddressesReq": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "description": "The Address to add to the Customer.", + "$ref": "#/components/schemas/AddressCreatePayload" + } + } + }, + "StorePostCustomersCustomerOrderClaimReq": { + "type": "object", + "required": [ + "order_ids" + ], + "properties": { + "order_ids": { + "description": "The ids of the orders to claim", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "StorePostCustomersCustomerPasswordTokenReq": { + "type": "object", + "required": [ + "email" + ], + "properties": { + "email": { + "description": "The email of the customer.", + "type": "string", + "format": "email" + } + } + }, + "StorePostCustomersCustomerReq": { + "type": "object", + "properties": { + "first_name": { + "description": "The Customer's first name.", + "type": "string" + }, + "last_name": { + "description": "The Customer's last name.", + "type": "string" + }, + "billing_address": { + "description": "The Address to be used for billing purposes.", + "anyOf": [ + { + "$ref": "#/components/schemas/AddressPayload", + "description": "The full billing address object" + }, + { + "type": "string", + "description": "The ID of an existing billing address" + } + ] + }, + "password": { + "description": "The Customer's password.", + "type": "string" + }, + "phone": { + "description": "The Customer's phone number.", + "type": "string" + }, + "email": { + "description": "The email of the customer.", + "type": "string" + }, + "metadata": { + "description": "Metadata about the customer.", + "type": "object" + } + } + }, + "StorePostCustomersReq": { + "type": "object", + "required": [ + "first_name", + "last_name", + "email", + "password" + ], + "properties": { + "first_name": { + "description": "The Customer's first name.", + "type": "string" + }, + "last_name": { + "description": "The Customer's last name.", + "type": "string" + }, + "email": { + "description": "The email of the customer.", + "type": "string", + "format": "email" + }, + "password": { + "description": "The Customer's password.", + "type": "string", + "format": "password" + }, + "phone": { + "description": "The Customer's phone number.", + "type": "string" + } + } + }, + "StorePostCustomersResetPasswordReq": { + "type": "object", + "required": [ + "email", + "password", + "token" + ], + "properties": { + "email": { + "description": "The email of the customer.", + "type": "string", + "format": "email" + }, + "password": { + "description": "The Customer's password.", + "type": "string", + "format": "password" + }, + "token": { + "description": "The reset password token", + "type": "string" + } + } + }, + "StorePostOrderEditsOrderEditDecline": { + "type": "object", + "properties": { + "declined_reason": { + "type": "string", + "description": "The reason for declining the OrderEdit." + } + } + }, + "StorePostPaymentCollectionsBatchSessionsAuthorizeReq": { + "type": "object", + "required": [ + "session_ids" + ], + "properties": { + "session_ids": { + "description": "List of Payment Session IDs to authorize.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "StorePostPaymentCollectionsBatchSessionsReq": { + "type": "object", + "required": [ + "sessions" + ], + "properties": { + "sessions": { + "description": "An array of payment sessions related to the Payment Collection. If the session_id is not provided, existing sessions not present will be deleted and the provided ones will be created.", + "type": "array", + "items": { + "type": "object", + "required": [ + "provider_id", + "amount" + ], + "properties": { + "provider_id": { + "type": "string", + "description": "The ID of the Payment Provider." + }, + "amount": { + "type": "integer", + "description": "The amount ." + }, + "session_id": { + "type": "string", + "description": "The ID of the Payment Session to be updated." + } + } + } + } + } + }, + "StorePostReturnsReq": { + "type": "object", + "required": [ + "order_id", + "items" + ], + "properties": { + "order_id": { + "type": "string", + "description": "The ID of the Order to create the Return from." + }, + "items": { + "description": "The items to include in the Return.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item from the Order.", + "type": "string" + }, + "quantity": { + "description": "The quantity to return.", + "type": "integer" + }, + "reason_id": { + "description": "The ID of the return reason.", + "type": "string" + }, + "note": { + "description": "A note to add to the item returned.", + "type": "string" + } + } + } + }, + "return_shipping": { + "description": "If the Return is to be handled by the store operator the Customer can choose a Return Shipping Method. Alternatvely the Customer can handle the Return themselves.", + "type": "object", + "required": [ + "option_id" + ], + "properties": { + "option_id": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + } + } + } + } + }, + "StorePostSearchRes": { + "allOf": [ + { + "type": "object", + "required": [ + "hits" + ], + "properties": { + "hits": { + "description": "Array of results. The format of the items depends on the search engine installed on the server.", + "type": "array" + } + } + }, + { + "type": "object" + } + ] + }, + "StorePostSwapsReq": { + "type": "object", + "required": [ + "order_id", + "return_items", + "additional_items" + ], + "properties": { + "order_id": { + "type": "string", + "description": "The ID of the Order to create the Swap for." + }, + "return_items": { + "description": "The items to include in the Return.", + "type": "array", + "items": { + "type": "object", + "required": [ + "item_id", + "quantity" + ], + "properties": { + "item_id": { + "description": "The ID of the Line Item from the Order.", + "type": "string" + }, + "quantity": { + "description": "The quantity to swap.", + "type": "integer" + }, + "reason_id": { + "description": "The ID of the reason of this return.", + "type": "string" + }, + "note": { + "description": "The note to add to the item being swapped.", + "type": "string" + } + } + } + }, + "return_shipping_option": { + "type": "string", + "description": "The ID of the Shipping Option to create the Shipping Method from." + }, + "additional_items": { + "description": "The items to exchange the returned items to.", + "type": "array", + "items": { + "type": "object", + "required": [ + "variant_id", + "quantity" + ], + "properties": { + "variant_id": { + "description": "The ID of the Product Variant to send.", + "type": "string" + }, + "quantity": { + "description": "The quantity to send of the variant.", + "type": "integer" + } + } + } + } + } + }, + "StoreProductTagsListRes": { + "type": "object", + "required": [ + "product_tags", + "count", + "offset", + "limit" + ], + "properties": { + "product_tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductTag" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "StoreProductTypesListRes": { + "type": "object", + "required": [ + "product_types", + "count", + "offset", + "limit" + ], + "properties": { + "product_types": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "StoreProductsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "products", + "relations": [ + "collection", + "images", + "options", + "options.values", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "products", + "count", + "offset", + "limit" + ], + "properties": { + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedProduct" + } + }, + "count": { + "type": "integer", + "description": "The total number of items available" + }, + "offset": { + "type": "integer", + "description": "The number of items skipped before these items" + }, + "limit": { + "type": "integer", + "description": "The number of items per page" + } + } + }, + "StoreProductsRes": { + "type": "object", + "x-expanded-relations": { + "field": "product", + "relations": [ + "collection", + "images", + "options", + "options.values", + "tags", + "type", + "variants", + "variants.options", + "variants.prices" + ] + }, + "required": [ + "product" + ], + "properties": { + "product": { + "$ref": "#/components/schemas/PricedProduct" + } + } + }, + "StoreRegionsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "regions", + "relations": [ + "countries", + "payment_providers", + "fulfillment_providers" + ], + "eager": [ + "payment_providers", + "fulfillment_providers" + ] + }, + "required": [ + "regions" + ], + "properties": { + "regions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Region" + } + } + } + }, + "StoreRegionsRes": { + "type": "object", + "x-expanded-relations": { + "field": "region", + "relations": [ + "countries", + "payment_providers", + "fulfillment_providers" + ], + "eager": [ + "payment_providers", + "fulfillment_providers" + ] + }, + "required": [ + "region" + ], + "properties": { + "region": { + "$ref": "#/components/schemas/Region" + } + } + }, + "StoreReturnReasonsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "return_reasons", + "relations": [ + "parent_return_reason", + "return_reason_children" + ] + }, + "required": [ + "return_reasons" + ], + "properties": { + "return_reasons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReturnReason" + } + } + } + }, + "StoreReturnReasonsRes": { + "type": "object", + "x-expanded-relations": { + "field": "return_reason", + "relations": [ + "parent_return_reason", + "return_reason_children" + ] + }, + "required": [ + "return_reason" + ], + "properties": { + "return_reason": { + "$ref": "#/components/schemas/ReturnReason" + } + } + }, + "StoreReturnsRes": { + "type": "object", + "x-expanded-relations": { + "field": "return", + "relations": [ + "items", + "items.reason" + ], + "eager": [ + "items" + ] + }, + "required": [ + "return" + ], + "properties": { + "return": { + "$ref": "#/components/schemas/Return" + } + } + }, + "StoreShippingOptionsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "shipping_options", + "relations": [ + "requirements" + ] + }, + "required": [ + "shipping_options" + ], + "properties": { + "shipping_options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedShippingOption" + } + } + } + }, + "StoreSwapsRes": { + "type": "object", + "x-expanded-relations": { + "field": "swap", + "relations": [ + "additional_items", + "additional_items.variant", + "cart", + "fulfillments", + "order", + "payment", + "return_order", + "return_order.shipping_method", + "shipping_address", + "shipping_methods" + ], + "eager": [ + "fulfillments.items" + ] + }, + "required": [ + "swap" + ], + "properties": { + "swap": { + "$ref": "#/components/schemas/Swap" + } + } + }, + "StoreVariantsListRes": { + "type": "object", + "x-expanded-relations": { + "field": "variants", + "relations": [ + "prices", + "options", + "product" + ] + }, + "required": [ + "variants" + ], + "properties": { + "variants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PricedVariant" + } + } + } + }, + "StoreVariantsRes": { + "type": "object", + "x-expanded-relations": { + "field": "variant", + "relations": [ + "prices", + "options", + "product" + ] + }, + "required": [ + "variant" + ], + "properties": { + "variant": { + "$ref": "#/components/schemas/PricedVariant" + } + } + }, + "Swap": { + "title": "Swap", + "description": "Swaps can be created when a Customer wishes to exchange Products that they have purchased to different Products. Swaps consist of a Return of previously purchased Products and a Fulfillment of new Products, the amount paid for the Products being returned will be used towards payment for the new Products. In the case where the amount paid for the the Products being returned exceed the amount to be paid for the new Products, a Refund will be issued for the difference.", + "type": "object", + "required": [ + "allow_backorder", + "canceled_at", + "cart_id", + "confirmed_at", + "created_at", + "deleted_at", + "difference_due", + "fulfillment_status", + "id", + "idempotency_key", + "metadata", + "no_notification", + "order_id", + "payment_status", + "shipping_address_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The swap's ID", + "type": "string", + "example": "swap_01F0YET86Y9G92D3YDR9Y6V676" + }, + "fulfillment_status": { + "description": "The status of the Fulfillment of the Swap.", + "type": "string", + "enum": [ + "not_fulfilled", + "fulfilled", + "shipped", + "partially_shipped", + "canceled", + "requires_action" + ], + "example": "not_fulfilled" + }, + "payment_status": { + "description": "The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount.", + "type": "string", + "enum": [ + "not_paid", + "awaiting", + "captured", + "confirmed", + "canceled", + "difference_refunded", + "partially_refunded", + "refunded", + "requires_action" + ], + "example": "not_paid" + }, + "order_id": { + "description": "The ID of the Order where the Line Items to be returned where purchased.", + "type": "string", + "example": "order_01G8TJSYT9M6AVS5N4EMNFS1EK" + }, + "order": { + "description": "An order object. Available if the relation `order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Order" + }, + "additional_items": { + "description": "The new Line Items to ship to the Customer. Available if the relation `additional_items` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "return_order": { + "description": "A return order object. The Return that is issued for the return part of the Swap. Available if the relation `return_order` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Return" + }, + "fulfillments": { + "description": "The Fulfillments used to send the new Line Items. Available if the relation `fulfillments` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Fulfillment" + } + }, + "payment": { + "description": "The Payment authorized when the Swap requires an additional amount to be charged from the Customer. Available if the relation `payment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Payment" + }, + "difference_due": { + "description": "The difference that is paid or refunded as a result of the Swap. May be negative when the amount paid for the returned items exceed the total of the new Products.", + "nullable": true, + "type": "integer", + "example": 0 + }, + "shipping_address_id": { + "description": "The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order.", + "nullable": true, + "type": "string", + "example": "addr_01G8ZH853YPY9B94857DY91YGW" + }, + "shipping_address": { + "description": "Available if the relation `shipping_address` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Address" + }, + "shipping_methods": { + "description": "The Shipping Methods used to fulfill the additional items purchased. Available if the relation `shipping_methods` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "cart_id": { + "description": "The id of the Cart that the Customer will use to confirm the Swap.", + "nullable": true, + "type": "string", + "example": "cart_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "cart": { + "description": "A cart object. Available if the relation `cart` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Cart" + }, + "confirmed_at": { + "description": "The date with timezone at which the Swap was confirmed by the Customer.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "canceled_at": { + "description": "The date with timezone at which the Swap was canceled.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "no_notification": { + "description": "If set to true, no notification will be sent related to this swap", + "nullable": true, + "type": "boolean", + "example": false + }, + "allow_backorder": { + "description": "If true, swaps can be completed with items out of stock", + "type": "boolean", + "default": false + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of the swap in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TaxLine": { + "title": "Tax Line", + "description": "Line item that specifies an amount of tax to add to a line item.", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "metadata", + "name", + "rate", + "updated_at" + ], + "properties": { + "id": { + "description": "The tax line's ID", + "type": "string", + "example": "tl_01G1G5V2DRX1SK6NQQ8VVX4HQ8" + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "rate": { + "description": "The numeric rate to charge tax by", + "type": "number", + "example": 10 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TaxProvider": { + "title": "Tax Provider", + "description": "The tax service used to calculate taxes", + "type": "object", + "required": [ + "id", + "is_installed" + ], + "properties": { + "id": { + "description": "The id of the tax provider as given by the plugin.", + "type": "string", + "example": "manual" + }, + "is_installed": { + "description": "Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`.", + "type": "boolean", + "default": true + } + } + }, + "TaxRate": { + "title": "Tax Rate", + "description": "A Tax Rate can be used to associate a certain rate to charge on products within a given Region", + "type": "object", + "required": [ + "code", + "created_at", + "id", + "metadata", + "name", + "rate", + "region_id", + "updated_at" + ], + "properties": { + "id": { + "description": "The tax rate's ID", + "type": "string", + "example": "txr_01G8XDBAWKBHHJRKH0AV02KXBR" + }, + "rate": { + "description": "The numeric rate to charge", + "nullable": true, + "type": "number", + "example": 10 + }, + "code": { + "description": "A code to identify the tax type by", + "nullable": true, + "type": "string", + "example": "tax01" + }, + "name": { + "description": "A human friendly name for the tax", + "type": "string", + "example": "Tax Example" + }, + "region_id": { + "description": "The id of the Region that the rate belongs to", + "type": "string", + "example": "reg_01G1G5V26T9H8Y0M4JNE3YGA4G" + }, + "region": { + "description": "A region object. Available if the relation `region` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Region" + }, + "products": { + "description": "The products that belong to this tax rate. Available if the relation `products` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "product_types": { + "description": "The product types that belong to this tax rate. Available if the relation `product_types` is expanded.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductType" + } + }, + "shipping_options": { + "type": "array", + "description": "The shipping options that belong to this tax rate. Available if the relation `shipping_options` is expanded.", + "items": { + "$ref": "#/components/schemas/ShippingOption" + } + }, + "product_count": { + "description": "The count of products", + "type": "integer", + "example": 10 + }, + "product_type_count": { + "description": "The count of product types", + "type": "integer", + "example": 2 + }, + "shipping_option_count": { + "description": "The count of shipping options", + "type": "integer", + "example": 1 + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "TrackingLink": { + "title": "Tracking Link", + "description": "Tracking Link holds information about tracking numbers for a Fulfillment. Tracking Links can optionally contain a URL that can be visited to see the status of the shipment.", + "type": "object", + "required": [ + "created_at", + "deleted_at", + "fulfillment_id", + "id", + "idempotency_key", + "metadata", + "tracking_number", + "updated_at", + "url" + ], + "properties": { + "id": { + "description": "The tracking link's ID", + "type": "string", + "example": "tlink_01G8ZH853Y6TFXWPG5EYE81X63" + }, + "url": { + "description": "The URL at which the status of the shipment can be tracked.", + "nullable": true, + "type": "string", + "format": "uri" + }, + "tracking_number": { + "description": "The tracking number given by the shipping carrier.", + "type": "string", + "format": "RH370168054CN" + }, + "fulfillment_id": { + "description": "The id of the Fulfillment that the Tracking Link references.", + "type": "string", + "example": "ful_01G8ZRTMQCA76TXNAT81KPJZRF" + }, + "fulfillment": { + "description": "Available if the relation `fulfillment` is expanded.", + "nullable": true, + "$ref": "#/components/schemas/Fulfillment" + }, + "idempotency_key": { + "description": "Randomly generated key used to continue the completion of a process in case of failure.", + "nullable": true, + "type": "string", + "externalDocs": { + "url": "https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key", + "description": "Learn more how to use the idempotency key." + } + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + }, + "UpdateStockLocationInput": { + "title": "Update Stock Location Input", + "description": "Represents the Input to update a Stock Location", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The stock location name" + }, + "address_id": { + "type": "string", + "description": "The Stock location address ID" + }, + "address": { + "description": "Stock location address object", + "allOf": [ + { + "$ref": "#/components/schemas/StockLocationAddressInput" + }, + { + "type": "object" + } + ] + }, + "metadata": { + "type": "object", + "description": "An optional key-value map with additional details", + "example": { + "car": "white" + } + } + } + }, + "User": { + "title": "User", + "description": "Represents a User who can manage store settings.", + "type": "object", + "required": [ + "api_token", + "created_at", + "deleted_at", + "email", + "first_name", + "id", + "last_name", + "metadata", + "role", + "updated_at" + ], + "properties": { + "id": { + "description": "The user's ID", + "type": "string", + "example": "usr_01G1G5V26F5TB3GPAPNJ8X1S3V" + }, + "role": { + "description": "The user's role", + "type": "string", + "enum": [ + "admin", + "member", + "developer" + ], + "default": "member" + }, + "email": { + "description": "The email of the User", + "type": "string", + "format": "email" + }, + "first_name": { + "description": "The first name of the User", + "nullable": true, + "type": "string", + "example": "Levi" + }, + "last_name": { + "description": "The last name of the User", + "nullable": true, + "type": "string", + "example": "Bogan" + }, + "api_token": { + "description": "An API token associated with the user.", + "nullable": true, + "type": "string", + "example": null + }, + "created_at": { + "description": "The date with timezone at which the resource was created.", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "description": "The date with timezone at which the resource was updated.", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "description": "The date with timezone at which the resource was deleted.", + "nullable": true, + "type": "string", + "format": "date-time" + }, + "metadata": { + "description": "An optional key-value map with additional details", + "nullable": true, + "type": "object", + "example": { + "car": "white" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/api/store.oas.yaml b/docs/api/store.oas.yaml new file mode 100644 index 0000000000..eb940ba47a --- /dev/null +++ b/docs/api/store.oas.yaml @@ -0,0 +1,12229 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: Medusa Storefront API + description: | + API reference for Medusa's Storefront endpoints. All endpoints are prefixed with `/store`. + + ## Authentication + + To send requests as an authenticated customer, you must use the Cookie Session ID. + + + + ## Expanding Fields + + In many endpoints you'll find an `expand` query parameter that can be passed to the endpoint. You can use the `expand` query parameter to unpack an entity's relations and return them in the response. + + Please note that the relations you pass to `expand` replace any relations that are expanded by default in the request. + + ### Expanding One Relation + + For example, when you retrieve a product, you can retrieve its collection by passing to the `expand` query parameter the value `collection`: + + ```bash + curl "http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand=collection" + ``` + + ### Expanding Multiple Relations + + You can expand more than one relation by separating the relations in the `expand` query parameter with a comma. + + For example, to retrieve both the variants and the collection of a product, pass to the `expand` query parameter the value `variants,collection`: + + ```bash + curl "http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand=variants,collection" + ``` + + ### Prevent Expanding Relations + + Some requests expand relations by default. You can prevent that by passing an empty expand value to retrieve an entity without any extra relations. + + For example: + + ```bash + curl "http://localhost:9000/store/products/prod_01GDJGP2XPQT2N3JHZQFMH5V45?expand" + ``` + + This would retrieve the product with only its properties, without any relations like `collection`. + + ## Selecting Fields + + In many endpoints you'll find a `fields` query parameter that can be passed to the endpoint. You can use the `fields` query parameter to specify which fields in the entity should be returned in the response. + + Please note that if you pass a `fields` query parameter, only the fields you pass in the value along with the `id` of the entity will be returned in the response. + + Also, the `fields` query parameter does not affect the expanded relations. You'll have to use the `expand` parameter instead. + + ### Selecting One Field + + For example, when you retrieve a list of products, you can retrieve only the titles of the products by passing `title` as a value to the `fields` query parameter: + + ```bash + curl "http://localhost:9000/store/products?fields=title" + ``` + + As mentioned above, the expanded relations such as `variants` will still be returned as they're not affected by the `fields` parameter. + + You can ensure that only the `title` field is returned by passing an empty value to the `expand` query parameter. For example: + + ```bash + curl "http://localhost:9000/store/products?fields=title&expand" + ``` + + ### Selecting Multiple Fields + + You can pass more than one field by seperating the field names in the `fields` query parameter with a comma. + + For example, to select the `title` and `handle` of a product: + + ```bash + curl "http://localhost:9000/store/products?fields=title,handle" + ``` + + ### Retrieve Only the ID + + You can pass an empty `fields` query parameter to return only the ID of an entity. For example: + + ```bash + curl "http://localhost:9000/store/products?fields" + ``` + + You can also pair with an empty `expand` query parameter to ensure that the relations aren't retrieved as well. For example: + + ```bash + curl "http://localhost:9000/store/products?fields&expand" + ``` + + ## Query Parameter Types + + This section covers how to pass some common data types as query parameters. This is useful if you're sending requests to the API endpoints and not using our JS Client. For example, when using cURL or Postman. + + ### Strings + + You can pass a string value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/store/products?title=Shirt" + ``` + + If the string has any characters other than letters and numbers, you must encode them. + + For example, if the string has spaces, you can encode the space with `+` or `%20`: + + ```bash + curl "http://localhost:9000/store/products?title=Blue%20Shirt" + ``` + + You can use tools like [this one](https://www.urlencoder.org/) to learn how a value can be encoded. + + ### Integers + + You can pass an integer value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/store/products?offset=1" + ``` + + ### Boolean + + You can pass a boolean value in the form of `=`. + + For example: + + ```bash + curl "http://localhost:9000/store/products?is_giftcard=true" + ``` + + ### Date and DateTime + + You can pass a date value in the form `=`. The date must be in the format `YYYY-MM-DD`. + + For example: + + ```bash + curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17" + ``` + + You can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please note that the `T` and `Z` here are fixed. + + For example: + + ```bash + curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17T07:22:30Z" + ``` + + ### Array + + Each array value must be passed as a separate query parameter in the form `[]=`. You can also specify the index of each parameter in the brackets `[0]=`. + + For example: + + ```bash + curl -g "http://localhost:9000/store/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7" + ``` + + Note that the `-g` parameter passed to `curl` disables errors being thrown for using the brackets. Read more [here](https://curl.se/docs/manpage.html#-g). + + ### Object + + Object parameters must be passed as separate query parameters in the form `[]=`. + + For example: + + ```bash + curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17" + ``` + + ## Pagination + + ### Query Parameters + + In listing endpoints, such as list customers or list products, you can control the pagination using the query parameters `limit` and `offset`. + + `limit` is used to specify the maximum number of items that can be return in the response. `offset` is used to specify how many items to skip before returning the resulting entities. + + You can use the `offset` query parameter to change between pages. For example, if the limit is 50, at page 1 the offset should be 0; at page 2 the offset should be 50, and so on. + + For example, to limit the number of products returned in the List Products endpoint: + + ```bash + curl "http://localhost:9000/store/products?limit=5" + ``` + + ### Response Fields + + In the response of listing endpoints, aside from the entities retrieved, there are three pagination-related fields returned: `count`, `limit`, and `offset`. + + Similar to the query parameters, `limit` is the maximum number of items that can be returned in the response, and `field` is the number of items that were skipped before the entities in the result. + + `count` is the total number of available items of this entity. It can be used to determine how many pages are there. + + For example, if the `count` is 100 and the `limit` is 50, you can divide the `count` by the `limit` to get the number of pages: `100/50 = 2 pages`. + license: + name: MIT + url: https://github.com/medusajs/medusa/blob/master/LICENSE +tags: + - name: Auth + description: Auth endpoints that allow authorization of customers and manages their sessions. + - name: Carts + description: Cart endpoints that allow handling carts in Medusa. + - name: Collections + description: Collection endpoints that allow handling collections in Medusa. + - name: Customers + description: Customer endpoints that allow handling customers in Medusa. + - name: Gift Cards + description: Gift Card endpoints that allow handling gift cards in Medusa. + - name: Orders + description: Order endpoints that allow handling orders in Medusa. + - name: Products + description: Product endpoints that allow handling products in Medusa. + - name: Product Variants + description: Product Variant endpoints that allow handling product variants in Medusa. + - name: Regions + description: Region endpoints that allow handling regions in Medusa. + - name: Return Reasons + description: Return Reason endpoints that allow handling return reasons in Medusa. + - name: Returns + description: Return endpoints that allow handling returns in Medusa. + - name: Shipping Options + description: Shipping Option endpoints that allow handling shipping options in Medusa. + - name: Swaps + description: Swap endpoints that allow handling swaps in Medusa. +servers: + - url: https://api.medusa-commerce.com +paths: + /store/auth: + get: + operationId: GetAuth + summary: Get Current Customer + description: Gets the currently logged in Customer. + x-authenticated: true + x-codegen: + method: getSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.auth.getSession() + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/auth' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreAuthRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostAuth + summary: Customer Login + description: Logs a Customer in and authorizes them to view their details. Successful authentication will set a session cookie in the Customer's browser. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostAuthReq' + x-codegen: + method: authenticate + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.auth.authenticate({ + email: 'user@example.com', + password: 'user@example.com' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/auth' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret" + }' + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreAuthRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/incorrect_credentials' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteAuth + summary: Customer Log out + description: Destroys a Customer's authenticated session. + x-authenticated: true + x-codegen: + method: deleteSession + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/store/auth' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/auth/{email}: + get: + operationId: GetAuthEmail + summary: Check if email exists + description: Checks if a Customer with the given email has signed up. + parameters: + - in: path + name: email + schema: + type: string + format: email + required: true + description: The email to check if exists. + x-codegen: + method: exists + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.auth.exists('user@example.com') + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/auth/user@example.com' \ + --header 'Cookie: connect.sid={sid}' + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreGetAuthEmailRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts: + post: + summary: Create a Cart + operationId: PostCart + description: Creates a Cart within the given region and with the initial items. If no `region_id` is provided the cart will be associated with the first Region available. If no items are provided the cart will be empty after creation. If a user is logged in the cart's customer id and email will be set. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.create() + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts' + tags: + - Carts + responses: + '200': + description: Successfully created a new Cart + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}: + get: + operationId: GetCartsCart + summary: Get a Cart + description: Retrieves a Cart. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.retrieve(cart_id) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/carts/{id}' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCartsCart + summary: Update a Cart + description: Updates a Cart. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.update(cart_id, { + email: 'user@example.com' + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com" + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/complete: + post: + summary: Complete a Cart + operationId: PostCartsCartComplete + description: Completes a cart. The following steps will be performed. Payment authorization is attempted and if more work is required, we simply return the cart for further updates. If payment is authorized and order is not yet created, we make sure to do so. The completion of a cart can be performed idempotently with a provided header `Idempotency-Key`. If not provided, we will generate one for the request. + parameters: + - in: path + name: id + required: true + description: The Cart id. + schema: + type: string + x-codegen: + method: complete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.complete(cart_id) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/complete' + tags: + - Carts + responses: + '200': + description: If a cart was successfully authorized, but requires further action from the user the response body will contain the cart with an updated payment session. If the Cart was successfully completed the response body will contain the newly created Order. + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCompleteCartRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/discounts/{code}: + delete: + operationId: DeleteCartsCartDiscountsDiscount + description: Removes a Discount from a Cart. + summary: Remove Discount + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: code + required: true + description: The unique Discount code. + schema: + type: string + x-codegen: + method: deleteDiscount + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.deleteDiscount(cart_id, code) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/discounts/{code}' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/line-items: + post: + operationId: PostCartsCartLineItems + summary: Add a Line Item + description: Generates a Line Item with a given Product Variant and adds it to the Cart + parameters: + - in: path + name: id + required: true + description: The id of the Cart to add the Line Item to. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartLineItemsReq' + x-codegen: + method: createLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.lineItems.create(cart_id, { + variant_id, + quantity: 1 + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/line-items' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "variant_id": "{variant_id}", + "quantity": 1 + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/line-items/{line_id}: + post: + operationId: PostCartsCartLineItemsItem + summary: Update a Line Item + description: Updates a Line Item if the desired quantity can be fulfilled. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: line_id + required: true + description: The id of the Line Item. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartLineItemsItemReq' + x-codegen: + method: updateLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.lineItems.update(cart_id, line_id, { + quantity: 1 + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/line-items/{line_id}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "quantity": 1 + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCartsCartLineItemsItem + summary: Delete a Line Item + description: Removes a Line Item from a Cart. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: line_id + required: true + description: The id of the Line Item. + schema: + type: string + x-codegen: + method: deleteLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.lineItems.delete(cart_id, line_id) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/line-items/{line_id}' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/payment-session: + post: + operationId: PostCartsCartPaymentSession + summary: Select a Payment Session + description: Selects a Payment Session as the session intended to be used towards the completion of the Cart. + parameters: + - in: path + name: id + required: true + description: The ID of the Cart. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartPaymentSessionReq' + x-codegen: + method: setPaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.setPaymentSession(cart_id, { + provider_id: 'manual' + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "provider_id": "manual" + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/payment-sessions: + post: + operationId: PostCartsCartPaymentSessions + summary: Create Payment Sessions + description: Creates Payment Sessions for each of the available Payment Providers in the Cart's Region. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + x-codegen: + method: createPaymentSessions + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.createPaymentSessions(cart_id) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/payment-sessions/{provider_id}: + post: + operationId: PostCartsCartPaymentSessionUpdate + summary: Update a Payment Session + description: Updates a Payment Session with additional data. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: provider_id + required: true + description: The id of the payment provider. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartPaymentSessionUpdateReq' + x-codegen: + method: updatePaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.updatePaymentSession(cart_id, 'manual', { + data: { + + } + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "data": {} + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCartsCartPaymentSessionsSession + summary: Delete a Payment Session + description: Deletes a Payment Session on a Cart. May be useful if a payment has failed. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: provider_id + required: true + description: The id of the Payment Provider used to create the Payment Session to be deleted. + schema: + type: string + x-codegen: + method: deletePaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.deletePaymentSession(cart_id, 'manual') + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/payment-sessions/{provider_id}/refresh: + post: + operationId: PostCartsCartPaymentSessionsSession + summary: Refresh a Payment Session + description: Refreshes a Payment Session to ensure that it is in sync with the Cart - this is usually not necessary. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: provider_id + required: true + description: The id of the Payment Provider that created the Payment Session to be refreshed. + schema: + type: string + x-codegen: + method: refreshPaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.refreshPaymentSession(cart_id, 'manual') + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/payment-sessions/manual/refresh' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/shipping-methods: + post: + operationId: PostCartsCartShippingMethod + description: Adds a Shipping Method to the Cart. + summary: Add a Shipping Method + parameters: + - in: path + name: id + required: true + description: The cart ID. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCartsCartShippingMethodReq' + x-codegen: + method: addShippingMethod + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.carts.addShippingMethod(cart_id, { + option_id + }) + .then(({ cart }) => { + console.log(cart.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/shipping-methods' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "option_id": "{option_id}", + }' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/carts/{id}/taxes: + post: + summary: Calculate Cart Taxes + operationId: PostCartsCartTaxes + description: Calculates taxes for a cart. Depending on the cart's region this may involve making 3rd party API calls to a Tax Provider service. + parameters: + - in: path + name: id + required: true + description: The Cart ID. + schema: + type: string + x-codegen: + method: calculateTaxes + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/carts/{id}/taxes' + tags: + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/collections: + get: + operationId: GetCollections + summary: List Collections + description: Retrieve a list of Product Collection. + parameters: + - in: query + name: offset + description: The number of collections to skip before starting to collect the collections set + schema: + type: integer + default: 0 + - in: query + name: limit + description: The number of collections to return + schema: + type: integer + default: 10 + - in: query + name: handle + style: form + explode: false + description: Filter by the collection handle + schema: + type: array + items: + type: string + - in: query + name: created_at + description: Date comparison for when resulting collections were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting collections were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: StoreGetCollectionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.collections.list() + .then(({ collections, limit, offset, count }) => { + console.log(collections.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/collections' + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCollectionsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/collections/{id}: + get: + operationId: GetCollectionsCollection + summary: Get a Collection + description: Retrieves a Product Collection. + parameters: + - in: path + name: id + required: true + description: The id of the Product Collection + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.collections.retrieve(collection_id) + .then(({ collection }) => { + console.log(collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/collections/{id}' + tags: + - Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers: + post: + operationId: PostCustomers + summary: Create a Customer + description: Creates a Customer account. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.customers.create({ + first_name: 'Alec', + last_name: 'Reynolds', + email: 'user@example.com', + password: 'supersecret' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "first_name": "Alec", + "last_name": "Reynolds", + "email": "user@example.com", + "password": "supersecret" + }' + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + description: A customer with the same email exists + content: + application/json: + schema: + type: object + properties: + code: + type: string + description: The error code + type: + type: string + description: The type of error + message: + type: string + description: Human-readable message with details about the error + example: + code: invalid_request_error + type: duplicate_error + message: A customer with the given email already has an account. Log in instead + '500': + $ref: '#/components/responses/500_error' + /store/customers/me: + get: + operationId: GetCustomersCustomer + summary: Get a Customer + description: Retrieves a Customer - the Customer must be logged in to retrieve their details. + x-authenticated: true + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.retrieve() + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/customers/me' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + post: + operationId: PostCustomersCustomer + summary: Update Customer + description: Updates a Customer's saved details. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerReq' + x-codegen: + method: update + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.update({ + first_name: 'Laury' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers/me' \ + --header 'Cookie: connect.sid={sid}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "first_name": "Laury" + }' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/me/addresses: + post: + operationId: PostCustomersCustomerAddresses + summary: Add a Shipping Address + description: Adds a Shipping Address to a Customer's saved addresses. + x-authenticated: true + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerAddressesReq' + x-codegen: + method: addAddress + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.addresses.addAddress({ + address: { + first_name: 'Celia', + last_name: 'Schumm', + address_1: '225 Bednar Curve', + city: 'Danielville', + country_code: 'US', + postal_code: '85137', + phone: '981-596-6748 x90188', + company: 'Wyman LLC', + address_2: '', + province: 'Georgia', + metadata: {} + } + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers/me/addresses' \ + --header 'Cookie: connect.sid={sid}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "address": { + "first_name": "Celia", + "last_name": "Schumm", + "address_1": "225 Bednar Curve", + "city": "Danielville", + "country_code": "US", + "postal_code": "85137" + } + }' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: A successful response + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/me/addresses/{address_id}: + post: + operationId: PostCustomersCustomerAddressesAddress + summary: Update a Shipping Address + description: Updates a Customer's saved Shipping Address. + x-authenticated: true + parameters: + - in: path + name: address_id + required: true + description: The id of the Address to update. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerAddressesAddressReq' + x-codegen: + method: updateAddress + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.addresses.updateAddress(address_id, { + first_name: 'Gina' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers/me/addresses/{address_id}' \ + --header 'Cookie: connect.sid={sid}' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "first_name": "Gina" + }' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + delete: + operationId: DeleteCustomersCustomerAddressesAddress + summary: Delete an Address + description: Removes an Address from the Customer's saved addresses. + x-authenticated: true + parameters: + - in: path + name: address_id + required: true + description: The id of the Address to remove. + schema: + type: string + x-codegen: + method: deleteAddress + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.addresses.deleteAddress(address_id) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request DELETE 'https://medusa-url.com/store/customers/me/addresses/{address_id}' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/me/orders: + get: + operationId: GetCustomersCustomerOrders + summary: List Orders + description: Retrieves a list of a Customer's Orders. + x-authenticated: true + parameters: + - in: query + name: q + description: Query used for searching orders. + schema: + type: string + - in: query + name: id + description: Id of the order to search for. + schema: + type: string + - in: query + name: status + style: form + explode: false + description: Status to search for. + schema: + type: array + items: + type: string + - in: query + name: fulfillment_status + style: form + explode: false + description: Fulfillment status to search for. + schema: + type: array + items: + type: string + - in: query + name: payment_status + style: form + explode: false + description: Payment status to search for. + schema: + type: array + items: + type: string + - in: query + name: display_id + description: Display id to search for. + schema: + type: string + - in: query + name: cart_id + description: to search for. + schema: + type: string + - in: query + name: email + description: to search for. + schema: + type: string + - in: query + name: region_id + description: to search for. + schema: + type: string + - in: query + name: currency_code + style: form + explode: false + description: The 3 character ISO currency code to set prices based on. + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + - in: query + name: tax_rate + description: to search for. + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting collections were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting collections were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: canceled_at + description: Date comparison for when resulting collections were canceled. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: limit + description: How many orders to return. + schema: + type: integer + default: 10 + - in: query + name: offset + description: The offset in the resulting orders. + schema: + type: integer + default: 0 + - in: query + name: fields + description: (Comma separated string) Which fields should be included in the resulting orders. + schema: + type: string + - in: query + name: expand + description: (Comma separated string) Which relations should be expanded in the resulting orders. + schema: + type: string + x-codegen: + method: listOrders + queryParams: StoreGetCustomersCustomerOrdersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.listOrders() + .then(({ orders, limit, offset, count }) => { + console.log(orders); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/customers/me/orders' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersListOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/me/payment-methods: + get: + operationId: GetCustomersCustomerPaymentMethods + summary: Get Payment Methods + description: Retrieves a list of a Customer's saved payment methods. Payment methods are saved with Payment Providers and it is their responsibility to fetch saved methods. + x-authenticated: true + x-codegen: + method: listPaymentMethods + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged + medusa.customers.paymentMethods.list() + .then(({ payment_methods }) => { + console.log(payment_methods.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/customers/me/payment-methods' \ + --header 'Cookie: connect.sid={sid}' + security: + - cookie_auth: [] + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersListPaymentMethodsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/password-reset: + post: + operationId: PostCustomersResetPassword + summary: Reset Password + description: Resets a Customer's password using a password token created by a previous /password-token request. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersResetPasswordReq' + x-codegen: + method: resetPassword + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.customers.resetPassword({ + email: 'user@example.com', + password: 'supersecret', + token: 'supersecrettoken' + }) + .then(({ customer }) => { + console.log(customer.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers/password-reset' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret", + "token": "supersecrettoken" + }' + tags: + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCustomersResetPasswordRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/customers/password-token: + post: + operationId: PostCustomersCustomerPasswordToken + summary: Request Password Reset + description: Creates a reset password token to be used in a subsequent /reset-password request. The password token should be sent out of band e.g. via email and will not be returned. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerPasswordTokenReq' + x-codegen: + method: generatePasswordToken + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.customers.generatePasswordToken({ + email: 'user@example.com' + }) + .then(() => { + // successful + }) + .catch(() => { + // failed + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/customers/password-token' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com" + }' + tags: + - Customers + responses: + '204': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/gift-cards/{code}: + get: + operationId: GetGiftCardsCode + summary: Get Gift Card by Code + description: Retrieves a Gift Card by its associated unique code. + parameters: + - in: path + name: code + required: true + description: The unique Gift Card code. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.giftCards.retrieve(code) + .then(({ gift_card }) => { + console.log(gift_card.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/gift-cards/{code}' + tags: + - Gift Cards + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreGiftCardsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/order-edits/{id}: + get: + operationId: GetOrderEditsOrderEdit + summary: Retrieve an OrderEdit + description: Retrieves a OrderEdit. + parameters: + - in: path + name: id + required: true + description: The ID of the OrderEdit. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orderEdits.retrieve(order_edit_id) + .then(({ order_edit }) => { + console.log(order_edit.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/order-edits/{id}' + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/order-edits/{id}/complete: + post: + operationId: PostOrderEditsOrderEditComplete + summary: Completes an OrderEdit + description: Completes an OrderEdit. + parameters: + - in: path + name: id + required: true + description: The ID of the Order Edit. + schema: + type: string + x-codegen: + method: complete + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orderEdits.complete(order_edit_id) + .then(({ order_edit }) => { + console.log(order_edit.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/order-edits/{id}/complete' + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '500': + $ref: '#/components/responses/500_error' + /store/order-edits/{id}/decline: + post: + operationId: PostOrderEditsOrderEditDecline + summary: Decline an OrderEdit + description: Declines an OrderEdit. + parameters: + - in: path + name: id + required: true + description: The ID of the OrderEdit. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostOrderEditsOrderEditDecline' + x-codegen: + method: decline + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orderEdits.decline(order_edit_id) + .then(({ order_edit }) => { + console.log(order_edit.id); + }) + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/order-edits/{id}/decline' + tags: + - Order Edits + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrderEditsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '500': + $ref: '#/components/responses/500_error' + /store/orders: + get: + operationId: GetOrders + summary: Look Up an Order + description: Look up an order using filters. + parameters: + - in: query + name: display_id + required: true + description: The display id given to the Order. + schema: + type: number + - in: query + name: fields + description: (Comma separated) Which fields should be included in the result. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the result. + schema: + type: string + - in: query + name: email + style: form + explode: false + description: The email associated with this order. + required: true + schema: + type: string + format: email + - in: query + name: shipping_address + style: form + explode: false + description: The shipping address associated with this order. + schema: + type: object + properties: + postal_code: + type: string + description: The postal code of the shipping address + x-codegen: + method: lookupOrder + queryParams: StoreGetOrdersParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orders.lookupOrder({ + display_id: 1, + email: 'user@example.com' + }) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/orders?display_id=1&email=user@example.com' + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/orders/batch/customer/token: + post: + operationId: PostOrdersCustomerOrderClaim + summary: Claim an Order + description: Sends an email to emails registered to orders provided with link to transfer order ownership + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerOrderClaimReq' + x-codegen: + method: requestCustomerOrders + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.orders.claimOrders({ + display_ids, + }) + .then(() => { + // successful + }) + .catch(() => { + // an error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/batch/customer/token' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "display_ids": ["id"], + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/orders/cart/{cart_id}: + get: + operationId: GetOrdersOrderCartId + summary: Get by Cart ID + description: Retrieves an Order by the id of the Cart that was used to create the Order. + parameters: + - in: path + name: cart_id + required: true + description: The ID of Cart. + schema: + type: string + x-codegen: + method: retrieveByCartId + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orders.retrieveByCartId(cart_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/orders/cart/{id}' + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/orders/customer/confirm: + post: + operationId: PostOrdersCustomerOrderClaimsCustomerOrderClaimAccept + summary: Verify an Order Claim + description: Verifies the claim order token provided to the customer upon request of order ownership + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostCustomersCustomerAcceptClaimReq' + x-codegen: + method: confirmRequest + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.orders.confirmRequest( + token, + ) + .then(() => { + // successful + }) + .catch(() => { + // an error occurred + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/orders/customer/confirm' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "token": "{token}", + }' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Orders + responses: + '200': + description: OK + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/orders/{id}: + get: + operationId: GetOrdersOrder + summary: Get an Order + description: Retrieves an Order + parameters: + - in: path + name: id + required: true + description: The id of the Order. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the result. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in the result. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.orders.retrieve(order_id) + .then(({ order }) => { + console.log(order.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/orders/{id}' + tags: + - Orders + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreOrdersRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}: + get: + operationId: GetPaymentCollectionsPaymentCollection + summary: Get a PaymentCollection + description: Get a Payment Collection + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the PaymentCollection. + schema: + type: string + - in: query + name: expand + description: Comma separated list of relations to include in the results. + schema: + type: string + - in: query + name: fields + description: Comma separated list of fields to include in the results. + schema: + type: string + x-codegen: + method: retrieve + queryParams: StoreGetPaymentCollectionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.paymentCollections.retrieve(paymentCollectionId) + .then(({ payment_collection }) => { + console.log(payment_collection.id) + }) + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/payment-collections/{id}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}/sessions: + post: + operationId: PostPaymentCollectionsSessions + summary: Manage a Payment Session + description: Manages Payment Sessions from Payment Collections. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collection. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionSessionsReq' + x-codegen: + method: managePaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + + // Total amount = 10000 + + // Adding a payment session + medusa.paymentCollections.managePaymentSession(payment_id, { provider_id: "stripe" }) + .then(({ payment_collection }) => { + console.log(payment_collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}/sessions/batch: + post: + operationId: PostPaymentCollectionsPaymentCollectionSessionsBatch + summary: Manage Payment Sessions + description: Manages Multiple Payment Sessions from Payment Collections. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collections. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostPaymentCollectionsBatchSessionsReq' + x-codegen: + method: managePaymentSessionsBatch + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + + // Total amount = 10000 + + // Adding two new sessions + medusa.paymentCollections.managePaymentSessionsBatch(payment_id, [ + { + provider_id: "stripe", + amount: 5000, + }, + { + provider_id: "manual", + amount: 5000, + }, + ]) + .then(({ payment_collection }) => { + console.log(payment_collection.id); + }); + + // Updating one session and removing the other + medusa.paymentCollections.managePaymentSessionsBatch(payment_id, [ + { + provider_id: "stripe", + amount: 10000, + session_id: "ps_123456" + }, + ]) + .then(({ payment_collection }) => { + console.log(payment_collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/batch' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}/sessions/batch/authorize: + post: + operationId: PostPaymentCollectionsSessionsBatchAuthorize + summary: Authorize PaymentSessions + description: Authorizes Payment Sessions of a Payment Collection. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collections. + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostPaymentCollectionsBatchSessionsAuthorizeReq' + x-codegen: + method: authorizePaymentSessionsBatch + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.paymentCollections.authorize(payment_id) + .then(({ payment_collection }) => { + console.log(payment_collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/batch/authorize' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}/sessions/{session_id}: + post: + operationId: PostPaymentCollectionsPaymentCollectionPaymentSessionsSession + summary: Refresh a Payment Session + description: Refreshes a Payment Session to ensure that it is in sync with the Payment Collection. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The id of the PaymentCollection. + schema: + type: string + - in: path + name: session_id + required: true + description: The id of the Payment Session to be refreshed. + schema: + type: string + x-codegen: + method: refreshPaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.paymentCollections.refreshPaymentSession(payment_collection_id, session_id) + .then(({ payment_session }) => { + console.log(payment_session.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/{session_id}' + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsSessionRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/payment-collections/{id}/sessions/{session_id}/authorize: + post: + operationId: PostPaymentCollectionsSessionsSessionAuthorize + summary: Authorize Payment Session + description: Authorizes a Payment Session of a Payment Collection. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the Payment Collections. + schema: + type: string + - in: path + name: session_id + required: true + description: The ID of the Payment Session. + schema: + type: string + x-codegen: + method: authorizePaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.paymentCollections.authorize(payment_id, session_id) + .then(({ payment_collection }) => { + console.log(payment_collection.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/payment-collections/{id}/sessions/{session_id}/authorize' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Payment Collections + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePaymentCollectionsSessionRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/product-categories: + get: + operationId: GetProductCategories + summary: List Product Categories + description: Retrieve a list of product categories. + x-authenticated: false + parameters: + - in: query + name: q + description: Query used for searching product category names or handles. + schema: + type: string + - in: query + name: parent_category_id + description: Returns categories scoped by parent + schema: + type: string + - in: query + name: include_descendants_tree + description: Include all nested descendants of category + schema: + type: boolean + - in: query + name: offset + description: How many product categories to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of product categories returned. + schema: + type: integer + default: 100 + x-codegen: + method: list + queryParams: StoreGetProductCategoriesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.productCategories.list() + .then(({ product_categories, limit, offset, count }) => { + console.log(product_categories.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/product-categories' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreGetProductCategoriesRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/product-categories/{id}: + get: + operationId: GetProductCategoriesCategory + summary: Get a Product Category + description: Retrieves a Product Category. + x-authenticated: false + parameters: + - in: path + name: id + required: true + description: The ID of the Product Category + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product category. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be retrieved in each product category. + schema: + type: string + x-codegen: + method: retrieve + queryParams: StoreGetProductCategoriesCategoryParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.productCategories.retrieve(product_category_id) + .then(({ product_category }) => { + console.log(product_category.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/product-categories/{id}' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Categories + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreGetProductCategoriesCategoryRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/product-tags: + get: + operationId: GetProductTags + summary: List Product Tags + description: Retrieve a list of Product Tags. + x-authenticated: true + x-codegen: + method: list + queryParams: StoreGetProductTagsParams + parameters: + - in: query + name: limit + description: The number of types to return. + schema: + type: integer + default: 20 + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: order + description: The field to sort items by. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the product tags. + schema: + type: string + - in: query + name: value + style: form + explode: false + description: The tag values to search for + schema: + type: array + items: + type: string + - in: query + name: id + style: form + explode: false + description: The tag IDs to search for + schema: + type: array + items: + type: string + - in: query + name: q + description: A query string to search values for + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting product tags were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting product tags were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.productTags.list() + .then(({ product_tags }) => { + console.log(product_tags.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/product-tags' + tags: + - Product Tags + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreProductTagsListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/product-types: + get: + operationId: GetProductTypes + summary: List Product Types + description: Retrieve a list of Product Types. + x-authenticated: true + parameters: + - in: query + name: limit + description: The number of types to return. + schema: + type: integer + default: 20 + - in: query + name: offset + description: The number of items to skip before the results. + schema: + type: integer + default: 0 + - in: query + name: order + description: The field to sort items by. + schema: + type: string + - in: query + name: discount_condition_id + description: The discount condition id on which to filter the product types. + schema: + type: string + - in: query + name: value + style: form + explode: false + description: The type values to search for + schema: + type: array + items: + type: string + - in: query + name: id + style: form + explode: false + description: The type IDs to search for + schema: + type: array + items: + type: string + - in: query + name: q + description: A query string to search values for + schema: + type: string + - in: query + name: created_at + description: Date comparison for when resulting product types were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting product types were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: StoreGetProductTypesParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + // must be previously logged in or use api token + medusa.productTypes.list() + .then(({ product_types }) => { + console.log(product_types.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/product-types' \ + --header 'Authorization: Bearer {api_token}' + security: + - api_token: [] + - cookie_auth: [] + tags: + - Product Types + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreProductTypesListRes' + '400': + $ref: '#/components/responses/400_error' + '401': + $ref: '#/components/responses/unauthorized' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/products: + get: + operationId: GetProducts + summary: List Products + description: Retrieves a list of Products. + parameters: + - in: query + name: q + description: Query used for searching products by title, description, variant's title, variant's sku, and collection's title + schema: + type: string + - in: query + name: id + style: form + explode: false + description: product IDs to search for. + schema: + oneOf: + - type: string + - type: array + items: + type: string + - in: query + name: sales_channel_id + style: form + explode: false + description: an array of sales channel IDs to filter the retrieved products by. + schema: + type: array + items: + type: string + - in: query + name: collection_id + style: form + explode: false + description: Collection IDs to search for + schema: + type: array + items: + type: string + - in: query + name: type_id + style: form + explode: false + description: Type IDs to search for + schema: + type: array + items: + type: string + - in: query + name: tags + style: form + explode: false + description: Tag IDs to search for + schema: + type: array + items: + type: string + - in: query + name: title + description: title to search for. + schema: + type: string + - in: query + name: description + description: description to search for. + schema: + type: string + - in: query + name: handle + description: handle to search for. + schema: + type: string + - in: query + name: is_giftcard + description: Search for giftcards using is_giftcard=true. + schema: + type: boolean + - in: query + name: created_at + description: Date comparison for when resulting products were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting products were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: category_id + style: form + explode: false + description: Category ids to filter by. + schema: + type: array + items: + type: string + - in: query + name: include_category_children + description: Include category children when filtering by category_id. + schema: + type: boolean + - in: query + name: offset + description: How many products to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of products returned. + schema: + type: integer + default: 100 + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product of the result. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in each product of the result. + schema: + type: string + - in: query + name: order + description: the field used to order the products. + schema: + type: string + - in: query + name: cart_id + description: The id of the Cart to set prices based on. + schema: + type: string + - in: query + name: region_id + description: The id of the Region to set prices based on. + schema: + type: string + - in: query + name: currency_code + description: The currency code to use for price selection. + schema: + type: string + x-codegen: + method: list + queryParams: StoreGetProductsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.products.list() + .then(({ products, limit, offset, count }) => { + console.log(products.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/products' + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreProductsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/products/search: + post: + operationId: PostProductsSearch + summary: Search Products + description: Run a search query on products using the search engine installed on Medusa + parameters: + - in: query + name: q + required: true + description: The query to run the search with. + schema: + type: string + - in: query + name: offset + description: How many products to skip in the result. + schema: + type: integer + - in: query + name: limit + description: Limit the number of products returned. + schema: + type: integer + x-codegen: + method: search + queryParams: StorePostSearchReq + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.products.search({ + q: 'Shirt' + }) + .then(({ hits }) => { + console.log(hits.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/products/search?q=Shirt' + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostSearchRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/products/{id}: + get: + operationId: GetProductsProduct + summary: Get a Product + description: Retrieves a Product. + parameters: + - in: path + name: id + required: true + description: The id of the Product. + schema: + type: string + - in: query + name: sales_channel_id + description: The sales channel used when fetching the product. + schema: + type: string + - in: query + name: cart_id + description: The ID of the customer's cart. + schema: + type: string + - in: query + name: region_id + description: The ID of the region the customer is using. This is helpful to ensure correct prices are retrieved for a region. + schema: + type: string + - in: query + name: fields + description: (Comma separated) Which fields should be included in the result. + schema: + type: string + - in: query + name: expand + description: (Comma separated) Which fields should be expanded in each product of the result. + schema: + type: string + - in: query + name: currency_code + style: form + explode: false + description: The 3 character ISO currency code to set prices based on. This is helpful to ensure correct prices are retrieved for a currency. + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + x-codegen: + method: retrieve + queryParams: StoreGetProductsProductParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.products.retrieve(product_id) + .then(({ product }) => { + console.log(product.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/products/{id}' + tags: + - Products + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreProductsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/regions: + get: + operationId: GetRegions + summary: List Regions + description: Retrieves a list of Regions. + parameters: + - in: query + name: offset + description: How many regions to skip in the result. + schema: + type: integer + default: 0 + - in: query + name: limit + description: Limit the number of regions returned. + schema: + type: integer + default: 100 + - in: query + name: created_at + description: Date comparison for when resulting regions were created. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + - in: query + name: updated_at + description: Date comparison for when resulting regions were updated. + schema: + type: object + properties: + lt: + type: string + description: filter by dates less than this date + format: date + gt: + type: string + description: filter by dates greater than this date + format: date + lte: + type: string + description: filter by dates less than or equal to this date + format: date + gte: + type: string + description: filter by dates greater than or equal to this date + format: date + x-codegen: + method: list + queryParams: StoreGetRegionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.regions.list() + .then(({ regions }) => { + console.log(regions.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/regions' + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreRegionsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/regions/{id}: + get: + operationId: GetRegionsRegion + summary: Get a Region + description: Retrieves a Region. + parameters: + - in: path + name: id + required: true + description: The id of the Region. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.regions.retrieve(region_id) + .then(({ region }) => { + console.log(region.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/regions/{id}' + tags: + - Regions + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreRegionsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/return-reasons: + get: + operationId: GetReturnReasons + summary: List Return Reasons + description: Retrieves a list of Return Reasons. + x-codegen: + method: list + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.returnReasons.list() + .then(({ return_reasons }) => { + console.log(return_reasons.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/return-reasons' + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreReturnReasonsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/return-reasons/{id}: + get: + operationId: GetReturnReasonsReason + summary: Get a Return Reason + description: Retrieves a Return Reason. + parameters: + - in: path + name: id + required: true + description: The id of the Return Reason. + schema: + type: string + x-codegen: + method: retrieve + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.returnReasons.retrieve(reason_id) + .then(({ return_reason }) => { + console.log(return_reason.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/return-reasons/{id}' + tags: + - Return Reasons + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreReturnReasonsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/returns: + post: + operationId: PostReturns + summary: Create Return + description: Creates a Return for an Order. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostReturnsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.returns.create({ + order_id, + items: [ + { + item_id, + quantity: 1 + } + ] + }) + .then((data) => { + console.log(data.return.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/returns' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "order_id": "asfasf", + "items": [ + { + "item_id": "assfasf", + "quantity": 1 + } + ] + }' + tags: + - Returns + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreReturnsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/shipping-options: + get: + operationId: GetShippingOptions + summary: Get Shipping Options + description: Retrieves a list of Shipping Options. + parameters: + - in: query + name: is_return + description: Whether return Shipping Options should be included. By default all Shipping Options are returned. + schema: + type: boolean + - in: query + name: product_ids + description: A comma separated list of Product ids to filter Shipping Options by. + schema: + type: string + - in: query + name: region_id + description: the Region to retrieve Shipping Options from. + schema: + type: string + x-codegen: + method: list + queryParams: StoreGetShippingOptionsParams + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.shippingOptions.list() + .then(({ shipping_options }) => { + console.log(shipping_options.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/shipping-options' + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreShippingOptionsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/shipping-options/{cart_id}: + get: + operationId: GetShippingOptionsCartId + summary: List for Cart + description: Retrieves a list of Shipping Options available to a cart. + parameters: + - in: path + name: cart_id + required: true + description: The id of the Cart. + schema: + type: string + x-codegen: + method: listCartOptions + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.shippingOptions.listCartOptions(cart_id) + .then(({ shipping_options }) => { + console.log(shipping_options.length); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/shipping-options/{cart_id}' + tags: + - Shipping Options + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreCartShippingOptionsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/swaps: + post: + operationId: PostSwaps + summary: Create a Swap + description: Creates a Swap on an Order by providing some items to return along with some items to send back + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StorePostSwapsReq' + x-codegen: + method: create + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.swaps.create({ + order_id, + return_items: [ + { + item_id, + quantity: 1 + } + ], + additional_items: [ + { + variant_id, + quantity: 1 + } + ] + }) + .then(({ swap }) => { + console.log(swap.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request POST 'https://medusa-url.com/store/swaps' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "order_id": "asfasf", + "return_items": [ + { + "item_id": "asfas", + "quantity": 1 + } + ], + "additional_items": [ + { + "variant_id": "asfas", + "quantity": 1 + } + ] + }' + tags: + - Swaps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreSwapsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/swaps/{cart_id}: + get: + operationId: GetSwapsSwapCartId + summary: Get by Cart ID + description: Retrieves a Swap by the id of the Cart used to confirm the Swap. + parameters: + - in: path + name: cart_id + required: true + description: The id of the Cart + schema: + type: string + x-codegen: + method: retrieveByCartId + x-codeSamples: + - lang: JavaScript + label: JS Client + source: | + import Medusa from "@medusajs/medusa-js" + const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) + medusa.swaps.retrieveByCartId(cart_id) + .then(({ swap }) => { + console.log(swap.id); + }); + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/swaps/{cart_id}' + tags: + - Swaps + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreSwapsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/variants: + get: + operationId: GetVariants + summary: Get Product Variants + description: Retrieves a list of Product Variants + parameters: + - in: query + name: ids + description: A comma separated list of Product Variant ids to filter by. + schema: + type: string + - in: query + name: sales_channel_id + description: A sales channel id for result configuration. + schema: + type: string + - in: query + name: expand + description: A comma separated list of Product Variant relations to load. + schema: + type: string + - in: query + name: offset + description: How many product variants to skip in the result. + schema: + type: number + default: '0' + - in: query + name: limit + description: Maximum number of Product Variants to return. + schema: + type: number + default: '100' + - in: query + name: cart_id + description: The id of the Cart to set prices based on. + schema: + type: string + - in: query + name: region_id + description: The id of the Region to set prices based on. + schema: + type: string + - in: query + name: currency_code + description: The currency code to use for price selection. + schema: + type: string + - in: query + name: title + style: form + explode: false + description: product variant title to search for. + schema: + oneOf: + - type: string + description: a single title to search by + - type: array + description: multiple titles to search by + items: + type: string + - in: query + name: inventory_quantity + description: Filter by available inventory quantity + schema: + oneOf: + - type: number + description: a specific number to search by. + - type: object + description: search using less and greater than comparisons. + properties: + lt: + type: number + description: filter by inventory quantity less than this number + gt: + type: number + description: filter by inventory quantity greater than this number + lte: + type: number + description: filter by inventory quantity less than or equal to this number + gte: + type: number + description: filter by inventory quantity greater than or equal to this number + x-codegen: + method: list + queryParams: StoreGetVariantsParams + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/variants' + tags: + - Variants + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreVariantsListRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' + /store/variants/{variant_id}: + get: + operationId: GetVariantsVariant + summary: Get a Product Variant + description: Retrieves a Product Variant by id + parameters: + - in: path + name: variant_id + required: true + description: The id of the Product Variant. + schema: + type: string + - in: query + name: cart_id + description: The id of the Cart to set prices based on. + schema: + type: string + - in: query + name: sales_channel_id + description: A sales channel id for result configuration. + schema: + type: string + - in: query + name: region_id + description: The id of the Region to set prices based on. + schema: + type: string + - in: query + name: currency_code + style: form + explode: false + description: The 3 character ISO currency code to set prices based on. + schema: + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + x-codegen: + method: retrieve + queryParams: StoreGetVariantsVariantParams + x-codeSamples: + - lang: Shell + label: cURL + source: | + curl --location --request GET 'https://medusa-url.com/store/variants/{id}' + tags: + - Variants + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/StoreVariantsRes' + '400': + $ref: '#/components/responses/400_error' + '404': + $ref: '#/components/responses/not_found_error' + '409': + $ref: '#/components/responses/invalid_state_error' + '422': + $ref: '#/components/responses/invalid_request_error' + '500': + $ref: '#/components/responses/500_error' +components: + responses: + default_error: + description: Default Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: unknown_error + message: An unknown error occurred. + type: unknown_error + invalid_state_error: + description: Invalid State Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: unknown_error + message: The request conflicted with another request. You may retry the request with the provided Idempotency-Key. + type: QueryRunnerAlreadyReleasedError + invalid_request_error: + description: Invalid Request Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: invalid_request_error + message: Discount with code TEST already exists. + type: duplicate_error + not_found_error: + description: Not Found Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + message: Entity with id 1 was not found + type: not_found + 400_error: + description: Client Error or Multiple Errors + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Error' + - $ref: '#/components/schemas/MultipleErrors' + examples: + not_allowed: + $ref: '#/components/examples/not_allowed_error' + invalid_data: + $ref: '#/components/examples/invalid_data_error' + MultipleErrors: + $ref: '#/components/examples/multiple_errors' + 500_error: + description: Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + examples: + database: + $ref: '#/components/examples/database_error' + unexpected_state: + $ref: '#/components/examples/unexpected_state_error' + invalid_argument: + $ref: '#/components/examples/invalid_argument_error' + default_error: + $ref: '#/components/examples/default_error' + unauthorized: + description: User is not authorized. Must log in first + content: + text/plain: + schema: + type: string + default: Unauthorized + example: Unauthorized + incorrect_credentials: + description: User does not exist or incorrect credentials + content: + text/plain: + schema: + type: string + default: Unauthorized + example: Unauthorized + examples: + not_allowed_error: + summary: Not Allowed Error + value: + message: Discount must be set to dynamic + type: not_allowed + invalid_data_error: + summary: Invalid Data Error + value: + message: first_name must be a string + type: invalid_data + multiple_errors: + summary: Multiple Errors + value: + message: Provided request body contains errors. Please check the data and retry the request + errors: + - message: first_name must be a string + type: invalid_data + - message: Discount must be set to dynamic + type: not_allowed + database_error: + summary: Database Error + value: + code: api_error + message: An error occured while hashing password + type: database_error + unexpected_state_error: + summary: Unexpected State Error + value: + message: cart.total must be defined + type: unexpected_state + invalid_argument_error: + summary: Invalid Argument Error + value: + message: cart.total must be defined + type: unexpected_state + default_error: + summary: Default Error + value: + code: unknown_error + message: An unknown error occurred. + type: unknown_error + securitySchemes: + cookie_auth: + type: apiKey + x-displayName: Cookie Session ID + in: cookie + name: connect.sid + description: | + Use a cookie session to send authenticated requests. + + ### How to Obtain the Cookie Session + + If you're sending requests through a browser, using JS Client, or using tools like Postman, the cookie session should be automatically set when the customer is logged in. + + If you're sending requests using cURL, you must set the Session ID in the cookie manually. + + To do that, send a request to [authenticate the customer](#tag/Auth/operation/PostAuth) and pass the cURL option `-v`: + + ```bash + curl -v --location --request POST 'https://medusa-url.com/store/auth' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "email": "user@example.com", + "password": "supersecret" + }' + ``` + + The headers will be logged in the terminal as well as the response. You should find in the headers a Cookie header similar to this: + + ```bash + Set-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM; + ``` + + Copy the value after `connect.sid` (without the `;` at the end) and pass it as a cookie in subsequent requests as the following: + + ```bash + curl --location --request GET 'https://medusa-url.com/store/customers/me/orders' \ + --header 'Cookie: connect.sid={sid}' + ``` + + Where `{sid}` is the value of `connect.sid` that you copied. + schemas: + Address: + title: Address + description: An address. + type: object + required: + - address_1 + - address_2 + - city + - company + - country_code + - created_at + - customer_id + - deleted_at + - first_name + - id + - last_name + - metadata + - phone + - postal_code + - province + - updated_at + properties: + id: + type: string + description: ID of the address + example: addr_01G8ZC9VS1XVE149MGH2J7QSSH + customer_id: + description: ID of the customer this address belongs to + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: Available if the relation `customer` is expanded. + nullable: true + type: object + company: + description: Company name + nullable: true + type: string + example: Acme + first_name: + description: First name + nullable: true + type: string + example: Arno + last_name: + description: Last name + nullable: true + type: string + example: Willms + address_1: + description: Address line 1 + nullable: true + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + nullable: true + type: string + example: Suite 369 + city: + description: City + nullable: true + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + nullable: true + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + country: + description: A country object. Available if the relation `country` is expanded. + nullable: true + $ref: '#/components/schemas/Country' + province: + description: Province + nullable: true + type: string + example: Kentucky + postal_code: + description: Postal Code + nullable: true + type: string + example: 72093 + phone: + description: Phone Number + nullable: true + type: string + example: 16128234334802 + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + AddressCreatePayload: + type: object + description: Address fields used when creating an address. + required: + - first_name + - last_name + - address_1 + - city + - country_code + - postal_code + properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details + AddressPayload: + type: object + description: Address fields used when creating/updating an address. + properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details + BatchJob: + title: Batch Job + description: A Batch Job. + type: object + required: + - canceled_at + - completed_at + - confirmed_at + - context + - created_at + - created_by + - deleted_at + - dry_run + - failed_at + - id + - pre_processed_at + - processing_at + - result + - status + - type + - updated_at + properties: + id: + description: The unique identifier for the batch job. + type: string + example: batch_01G8T782965PYFG0751G0Z38B4 + type: + description: The type of batch job. + type: string + enum: + - product-import + - product-export + status: + description: The status of the batch job. + type: string + enum: + - created + - pre_processed + - confirmed + - processing + - completed + - canceled + - failed + default: created + created_by: + description: The unique identifier of the user that created the batch job. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + created_by_user: + description: A user object. Available if the relation `created_by_user` is expanded. + nullable: true + $ref: '#/components/schemas/User' + context: + description: The context of the batch job, the type of the batch job determines what the context should contain. + nullable: true + type: object + example: + shape: + prices: + - region: null + currency_code: eur + dynamicImageColumnCount: 4 + dynamicOptionColumnCount: 2 + list_config: + skip: 0 + take: 50 + order: + created_at: DESC + relations: + - variants + - variant.prices + - images + dry_run: + description: Specify if the job must apply the modifications or not. + type: boolean + default: false + result: + description: The result of the batch job. + nullable: true + allOf: + - type: object + example: {} + - type: object + properties: + count: + type: number + advancement_count: + type: number + progress: + type: number + errors: + type: object + properties: + message: + type: string + code: + oneOf: + - type: string + - type: number + err: + type: array + stat_descriptors: + type: object + properties: + key: + type: string + name: + type: string + message: + type: string + file_key: + type: string + file_size: + type: number + example: + errors: + - err: [] + code: unknown + message: Method not implemented. + stat_descriptors: + - key: product-export-count + name: Product count to export + message: There will be 8 products exported by this action + pre_processed_at: + description: The date from which the job has been pre-processed. + nullable: true + type: string + format: date-time + processing_at: + description: The date the job is processing at. + nullable: true + type: string + format: date-time + confirmed_at: + description: The date when the confirmation has been done. + nullable: true + type: string + format: date-time + completed_at: + description: The date of the completion. + nullable: true + type: string + format: date-time + canceled_at: + description: The date of the concellation. + nullable: true + type: string + format: date-time + failed_at: + description: The date when the job failed. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was last updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + Cart: + title: Cart + description: Represents a user cart + type: object + required: + - billing_address_id + - completed_at + - context + - created_at + - customer_id + - deleted_at + - email + - id + - idempotency_key + - metadata + - payment_authorized_at + - payment_id + - payment_session + - region_id + - shipping_address_id + - type + - updated_at + properties: + id: + description: The cart's ID + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + email: + description: The email associated with the cart + nullable: true + type: string + format: email + billing_address_id: + description: The billing address's ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_address_id: + description: The shipping address's ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + items: + description: Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + discounts: + description: Available if the relation `discounts` is expanded. + type: array + items: + $ref: '#/components/schemas/Discount' + gift_cards: + description: Available if the relation `gift_cards` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCard' + customer_id: + description: The customer's ID + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + type: object + payment_session: + description: The selected payment session in the cart. + nullable: true + type: object + payment_sessions: + description: The payment sessions created on the cart. + type: array + items: + type: object + payment_id: + description: The payment's ID if available + nullable: true + type: string + example: pay_01G8ZCC5W42ZNY842124G7P5R9 + payment: + description: Available if the relation `payment` is expanded. + nullable: true + type: object + shipping_methods: + description: The shipping methods added to the cart. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + type: + description: The cart's type. + type: string + enum: + - default + - swap + - draft_order + - payment_link + - claim + default: default + completed_at: + description: The date with timezone at which the cart was completed. + nullable: true + type: string + format: date-time + payment_authorized_at: + description: The date with timezone at which the payment was authorized. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of a cart in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + context: + description: The context of the cart which can include info like IP or user agent. + nullable: true + type: object + example: + ip: '::1' + user_agent: PostmanRuntime/7.29.2 + sales_channel_id: + description: The sales channel ID the cart is associated with. + nullable: true + type: string + example: null + sales_channel: + description: A sales channel object. Available if the relation `sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + shipping_total: + description: The total of shipping + type: integer + example: 1000 + discount_total: + description: The total of discount rounded + type: integer + example: 800 + raw_discount_total: + description: The total of discount + type: integer + example: 800 + item_tax_total: + description: The total of items with taxes + type: integer + example: 8000 + shipping_tax_total: + description: The total of shipping with taxes + type: integer + example: 1000 + tax_total: + description: The total of tax + type: integer + example: 0 + refunded_total: + description: The total amount refunded if the order associated with this cart is returned. + type: integer + example: 0 + total: + description: The total amount of the cart + type: integer + example: 8200 + subtotal: + description: The subtotal of the cart + type: integer + example: 8000 + refundable_amount: + description: The amount that can be refunded + type: integer + example: 8200 + gift_card_total: + description: The total of gift cards + type: integer + example: 0 + gift_card_tax_total: + description: The total of gift cards with taxes + type: integer + example: 0 + ClaimImage: + title: Claim Image + description: Represents photo documentation of a claim. + type: object + required: + - claim_item_id + - created_at + - deleted_at + - id + - metadata + - updated_at + - url + properties: + id: + description: The claim image's ID + type: string + example: cimg_01G8ZH853Y6TFXWPG5EYE81X63 + claim_item_id: + description: The ID of the claim item associated with the image + type: string + claim_item: + description: A claim item object. Available if the relation `claim_item` is expanded. + nullable: true + type: object + url: + description: The URL of the image + type: string + format: uri + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ClaimItem: + title: Claim Item + description: Represents a claimed item along with information about the reasons for the claim. + type: object + required: + - claim_order_id + - created_at + - deleted_at + - id + - item_id + - metadata + - note + - quantity + - reason + - updated_at + - variant_id + properties: + id: + description: The claim item's ID + type: string + example: citm_01G8ZH853Y6TFXWPG5EYE81X63 + images: + description: Available if the relation `images` is expanded. + type: array + items: + $ref: '#/components/schemas/ClaimImage' + claim_order_id: + description: The ID of the claim this item is associated with. + type: string + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + item_id: + description: The ID of the line item that the claim item refers to. + type: string + example: item_01G8ZM25TN49YV9EQBE2NC27KC + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + variant_id: + description: The ID of the product variant that is claimed. + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: A variant object. Available if the relation `variant` is expanded. + nullable: true + $ref: '#/components/schemas/ProductVariant' + reason: + description: The reason for the claim + type: string + enum: + - missing_item + - wrong_item + - production_failure + - other + note: + description: An optional note about the claim, for additional information + nullable: true + type: string + example: I don't like it. + quantity: + description: The quantity of the item that is being claimed; must be less than or equal to the amount purchased in the original order. + type: integer + example: 1 + tags: + description: User defined tags for easy filtering and grouping. Available if the relation 'tags' is expanded. + type: array + items: + $ref: '#/components/schemas/ClaimTag' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ClaimOrder: + title: Claim Order + description: Claim Orders represent a group of faulty or missing items. Each claim order consists of a subset of items associated with an original order, and can contain additional information about fulfillments and returns. + type: object + required: + - canceled_at + - created_at + - deleted_at + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - order_id + - payment_status + - refund_amount + - shipping_address_id + - type + - updated_at + properties: + id: + description: The claim's ID + type: string + example: claim_01G8ZH853Y6TFXWPG5EYE81X63 + type: + description: The claim's type + type: string + enum: + - refund + - replace + payment_status: + description: The status of the claim's payment + type: string + enum: + - na + - not_refunded + - refunded + default: na + fulfillment_status: + description: The claim's fulfillment status + type: string + enum: + - not_fulfilled + - partially_fulfilled + - fulfilled + - partially_shipped + - shipped + - partially_returned + - returned + - canceled + - requires_action + default: not_fulfilled + claim_items: + description: The items that have been claimed + type: array + items: + $ref: '#/components/schemas/ClaimItem' + additional_items: + description: Refers to the new items to be shipped when the claim order has the type `replace` + type: array + items: + $ref: '#/components/schemas/LineItem' + order_id: + description: The ID of the order that the claim comes from. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + return_order: + description: A return object. Holds information about the return if the claim is to be returned. Available if the relation 'return_order' is expanded + nullable: true + type: object + shipping_address_id: + description: The ID of the address that the new items should be shipped to + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_methods: + description: The shipping methods that the claim order will be shipped with. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + fulfillments: + description: The fulfillments of the new items to be shipped + type: array + items: + type: object + refund_amount: + description: The amount that will be refunded in conjunction with the claim + nullable: true + type: integer + example: 1000 + canceled_at: + description: The date with timezone at which the claim was canceled. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + no_notification: + description: Flag for describing whether or not notifications related to this should be send. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the cart associated with the claim in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + ClaimTag: + title: Claim Tag + description: Claim Tags are user defined tags that can be assigned to claim items for easy filtering and grouping. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The claim tag's ID + type: string + example: ctag_01G8ZCC5Y63B95V6B5SHBZ91S4 + value: + description: The value that the claim tag holds + type: string + example: Damaged + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Country: + title: Country + description: Country details + type: object + required: + - display_name + - id + - iso_2 + - iso_3 + - name + - num_code + - region_id + properties: + id: + description: The country's ID + type: string + example: 109 + iso_2: + description: The 2 character ISO code of the country in lower case + type: string + example: it + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + iso_3: + description: The 2 character ISO code of the country in lower case + type: string + example: ita + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements + description: See a list of codes. + num_code: + description: The numerical ISO code for the country. + type: string + example: 380 + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_numeric#Officially_assigned_code_elements + description: See a list of codes. + name: + description: The normalized country name in upper case. + type: string + example: ITALY + display_name: + description: The country name appropriate for display. + type: string + example: Italy + region_id: + description: The region ID this country is associated with. + nullable: true + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + CreateStockLocationInput: + title: Create Stock Location Input + description: Represents the Input to create a Stock Location + type: object + required: + - name + properties: + name: + type: string + description: The stock location name + address_id: + type: string + description: The Stock location address ID + address: + description: Stock location address object + allOf: + - $ref: '#/components/schemas/StockLocationAddressInput' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + Currency: + title: Currency + description: Currency + type: object + required: + - code + - name + - symbol + - symbol_native + properties: + code: + description: The 3 character ISO code for the currency. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + symbol: + description: The symbol used to indicate the currency. + type: string + example: $ + symbol_native: + description: The native symbol used to indicate the currency. + type: string + example: $ + name: + description: The written name of the currency + type: string + example: US Dollar + includes_tax: + description: '[EXPERIMENTAL] Does the currency prices include tax' + type: boolean + default: false + CustomShippingOption: + title: Custom Shipping Option + description: Custom Shipping Options are 'overriden' Shipping Options. Store managers can attach a Custom Shipping Option to a cart in order to set a custom price for a particular Shipping Option + type: object + required: + - cart_id + - created_at + - deleted_at + - id + - metadata + - price + - shipping_option_id + - updated_at + properties: + id: + description: The custom shipping option's ID + type: string + example: cso_01G8X99XNB77DMFBJFWX6DN9V9 + price: + description: The custom price set that will override the shipping option's original price + type: integer + example: 1000 + shipping_option_id: + description: The ID of the Shipping Option that the custom shipping option overrides + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: A shipping option object. Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + cart_id: + description: The ID of the Cart that the custom shipping option is attached to + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + $ref: '#/components/schemas/Cart' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Customer: + title: Customer + description: Represents a customer + type: object + required: + - billing_address_id + - created_at + - deleted_at + - email + - first_name + - has_account + - id + - last_name + - metadata + - phone + - updated_at + properties: + id: + description: The customer's ID + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + email: + description: The customer's email + type: string + format: email + first_name: + description: The customer's first name + nullable: true + type: string + example: Arno + last_name: + description: The customer's last name + nullable: true + type: string + example: Willms + billing_address_id: + description: The customer's billing address ID + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_addresses: + description: Available if the relation `shipping_addresses` is expanded. + type: array + items: + $ref: '#/components/schemas/Address' + phone: + description: The customer's phone number + nullable: true + type: string + example: 16128234334802 + has_account: + description: Whether the customer has an account or not + type: boolean + default: false + orders: + description: Available if the relation `orders` is expanded. + type: array + items: + type: object + groups: + description: The customer groups the customer belongs to. Available if the relation `groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + CustomerGroup: + title: Customer Group + description: Represents a customer group + type: object + required: + - created_at + - deleted_at + - id + - metadata + - name + - updated_at + properties: + id: + description: The customer group's ID + type: string + example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 + name: + description: The name of the customer group + type: string + example: VIP + customers: + description: The customers that belong to the customer group. Available if the relation `customers` is expanded. + type: array + items: + type: object + price_lists: + description: The price lists that are associated with the customer group. Available if the relation `price_lists` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Discount: + title: Discount + description: Represents a discount that can be applied to a cart for promotional purposes. + type: object + required: + - code + - created_at + - deleted_at + - ends_at + - id + - is_disabled + - is_dynamic + - metadata + - parent_discount_id + - rule_id + - starts_at + - updated_at + - usage_count + - usage_limit + - valid_duration + properties: + id: + description: The discount's ID + type: string + example: disc_01F0YESMW10MGHWJKZSDDMN0VN + code: + description: A unique code for the discount - this will be used by the customer to apply the discount + type: string + example: 10DISC + is_dynamic: + description: A flag to indicate if multiple instances of the discount can be generated. I.e. for newsletter discounts + type: boolean + example: false + rule_id: + description: The Discount Rule that governs the behaviour of the Discount + nullable: true + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + rule: + description: Available if the relation `rule` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountRule' + is_disabled: + description: Whether the Discount has been disabled. Disabled discounts cannot be applied to carts + type: boolean + example: false + parent_discount_id: + description: The Discount that the discount was created from. This will always be a dynamic discount + nullable: true + type: string + example: disc_01G8ZH853YPY9B94857DY91YGW + parent_discount: + description: Available if the relation `parent_discount` is expanded. + nullable: true + type: object + starts_at: + description: The time at which the discount can be used. + type: string + format: date-time + ends_at: + description: The time at which the discount can no longer be used. + nullable: true + type: string + format: date-time + valid_duration: + description: Duration the discount runs between + nullable: true + type: string + example: P3Y6M4DT12H30M5S + regions: + description: The Regions in which the Discount can be used. Available if the relation `regions` is expanded. + type: array + items: + $ref: '#/components/schemas/Region' + usage_limit: + description: The maximum number of times that a discount can be used. + nullable: true + type: integer + example: 100 + usage_count: + description: The number of times a discount has been used. + type: integer + example: 50 + default: 0 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountCondition: + title: Discount Condition + description: Holds rule conditions for when a discount is applicable + type: object + required: + - created_at + - deleted_at + - discount_rule_id + - id + - metadata + - operator + - type + - updated_at + properties: + id: + description: The discount condition's ID + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + type: + description: The type of the Condition + type: string + enum: + - products + - product_types + - product_collections + - product_tags + - customer_groups + operator: + description: The operator of the Condition + type: string + enum: + - in + - not_in + discount_rule_id: + description: The ID of the discount rule associated with the condition + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + discount_rule: + description: Available if the relation `discount_rule` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountRule' + products: + description: products associated with this condition if type = products. Available if the relation `products` is expanded. + type: array + items: + $ref: '#/components/schemas/Product' + product_types: + description: Product types associated with this condition if type = product_types. Available if the relation `product_types` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductType' + product_tags: + description: Product tags associated with this condition if type = product_tags. Available if the relation `product_tags` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductTag' + product_collections: + description: Product collections associated with this condition if type = product_collections. Available if the relation `product_collections` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductCollection' + customer_groups: + description: Customer groups associated with this condition if type = customer_groups. Available if the relation `customer_groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionCustomerGroup: + title: Product Tag Discount Condition + description: Associates a discount condition with a customer group + type: object + required: + - condition_id + - created_at + - customer_group_id + - metadata + - updated_at + properties: + customer_group_id: + description: The ID of the Product Tag + type: string + example: cgrp_01G8ZH853Y6TFXWPG5EYE81X63 + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + customer_group: + description: Available if the relation `customer_group` is expanded. + nullable: true + $ref: '#/components/schemas/CustomerGroup' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProduct: + title: Product Discount Condition + description: Associates a discount condition with a product + type: object + required: + - condition_id + - created_at + - metadata + - product_id + - updated_at + properties: + product_id: + description: The ID of the Product Tag + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product: + description: Available if the relation `product` is expanded. + nullable: true + $ref: '#/components/schemas/Product' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductCollection: + title: Product Collection Discount Condition + description: Associates a discount condition with a product collection + type: object + required: + - condition_id + - created_at + - metadata + - product_collection_id + - updated_at + properties: + product_collection_id: + description: The ID of the Product Collection + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_collection: + description: Available if the relation `product_collection` is expanded. + nullable: true + $ref: '#/components/schemas/ProductCollection' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductTag: + title: Product Tag Discount Condition + description: Associates a discount condition with a product tag + type: object + required: + - condition_id + - created_at + - metadata + - product_tag_id + - updated_at + properties: + product_tag_id: + description: The ID of the Product Tag + type: string + example: ptag_01F0YESHPZYY3H4SJ3A5918SBN + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_tag: + description: Available if the relation `product_tag` is expanded. + nullable: true + $ref: '#/components/schemas/ProductTag' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountConditionProductType: + title: Product Type Discount Condition + description: Associates a discount condition with a product type + type: object + required: + - condition_id + - created_at + - metadata + - product_type_id + - updated_at + properties: + product_type_id: + description: The ID of the Product Tag + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + condition_id: + description: The ID of the Discount Condition + type: string + example: discon_01G8X9A7ESKAJXG2H0E6F1MW7A + product_type: + description: Available if the relation `product_type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + discount_condition: + description: Available if the relation `discount_condition` is expanded. + nullable: true + $ref: '#/components/schemas/DiscountCondition' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DiscountRule: + title: Discount Rule + description: Holds the rules that governs how a Discount is calculated when applied to a Cart. + type: object + required: + - allocation + - created_at + - deleted_at + - description + - id + - metadata + - type + - updated_at + - value + properties: + id: + description: The discount rule's ID + type: string + example: dru_01F0YESMVK96HVX7N419E3CJ7C + type: + description: The type of the Discount, can be `fixed` for discounts that reduce the price by a fixed amount, `percentage` for percentage reductions or `free_shipping` for shipping vouchers. + type: string + enum: + - fixed + - percentage + - free_shipping + example: percentage + description: + description: A short description of the discount + nullable: true + type: string + example: 10 Percent + value: + description: The value that the discount represents; this will depend on the type of the discount + type: integer + example: 10 + allocation: + description: The scope that the discount should apply to. + nullable: true + type: string + enum: + - total + - item + example: total + conditions: + description: A set of conditions that can be used to limit when the discount can be used. Available if the relation `conditions` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + DraftOrder: + title: DraftOrder + description: Represents a draft order + type: object + required: + - canceled_at + - cart_id + - completed_at + - created_at + - display_id + - id + - idempotency_key + - metadata + - no_notification_order + - order_id + - status + - updated_at + properties: + id: + description: The draft order's ID + type: string + example: dorder_01G8TJFKBG38YYFQ035MSVG03C + status: + description: The status of the draft order + type: string + enum: + - open + - completed + default: open + display_id: + description: The draft order's display ID + type: string + example: 2 + cart_id: + description: The ID of the cart associated with the draft order. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the order associated with the draft order. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + canceled_at: + description: The date the draft order was canceled at. + nullable: true + type: string + format: date-time + completed_at: + description: The date the draft order was completed at. + nullable: true + type: string + format: date-time + no_notification_order: + description: Whether to send the customer notifications regarding order updates. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the cart associated with the draft order in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Error: + title: Response Error + type: object + properties: + code: + type: string + description: A slug code to indicate the type of the error. + message: + type: string + description: Description of the error that occurred. + type: + type: string + description: A slug indicating the type of the error. + ExtendedStoreDTO: + allOf: + - $ref: '#/components/schemas/Store' + - type: object + required: + - payment_providers + - fulfillment_providers + - feature_flags + - modules + properties: + payment_providers: + $ref: '#/components/schemas/PaymentProvider' + fulfillment_providers: + $ref: '#/components/schemas/FulfillmentProvider' + feature_flags: + $ref: '#/components/schemas/FeatureFlagsResponse' + modules: + $ref: '#/components/schemas/ModulesResponse' + FeatureFlagsResponse: + type: array + items: + type: object + required: + - key + - value + properties: + key: + description: The key of the feature flag. + type: string + value: + description: The value of the feature flag. + type: boolean + Fulfillment: + title: Fulfillment + description: Fulfillments are created once store operators can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a provider, which is typically an external shipping aggregator, shipping partner og 3PL, most plugins will have asynchronous communications with these providers through webhooks in order to automatically update and synchronize the state of Fulfillments. + type: object + required: + - canceled_at + - claim_order_id + - created_at + - data + - id + - idempotency_key + - location_id + - metadata + - no_notification + - order_id + - provider_id + - shipped_at + - swap_id + - tracking_numbers + - updated_at + properties: + id: + description: The fulfillment's ID + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + claim_order_id: + description: The id of the Claim that the Fulfillment belongs to. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Fulfillment belongs to. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + order_id: + description: The id of the Order that the Fulfillment belongs to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + provider_id: + description: The id of the Fulfillment Provider responsible for handling the fulfillment + type: string + example: manual + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/FulfillmentProvider' + location_id: + description: The id of the stock location the fulfillment will be shipped from + nullable: true + type: string + example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK + items: + description: The Fulfillment Items in the Fulfillment - these hold information about how many of each Line Item has been fulfilled. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/FulfillmentItem' + tracking_links: + description: The Tracking Links that can be used to track the status of the Fulfillment, these will usually be provided by the Fulfillment Provider. Available if the relation `tracking_links` is expanded. + type: array + items: + $ref: '#/components/schemas/TrackingLink' + tracking_numbers: + description: The tracking numbers that can be used to track the status of the fulfillment. + deprecated: true + type: array + items: + type: string + data: + description: This contains all the data necessary for the Fulfillment provider to handle the fulfillment. + type: object + example: {} + shipped_at: + description: The date with timezone at which the Fulfillment was shipped. + nullable: true + type: string + format: date-time + no_notification: + description: Flag for describing whether or not notifications related to this should be sent. + nullable: true + type: boolean + example: false + canceled_at: + description: The date with timezone at which the Fulfillment was canceled. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of the fulfillment in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + FulfillmentItem: + title: Fulfillment Item + description: Correlates a Line Item with a Fulfillment, keeping track of the quantity of the Line Item. + type: object + required: + - fulfillment_id + - item_id + - quantity + properties: + fulfillment_id: + description: The id of the Fulfillment that the Fulfillment Item belongs to. + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + item_id: + description: The id of the Line Item that the Fulfillment Item references. + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + fulfillment: + description: A fulfillment object. Available if the relation `fulfillment` is expanded. + nullable: true + type: object + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + quantity: + description: The quantity of the Line Item that is included in the Fulfillment. + type: integer + example: 1 + FulfillmentProvider: + title: Fulfillment Provider + description: Represents a fulfillment provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the fulfillment provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + GiftCard: + title: Gift Card + description: Gift Cards are redeemable and represent a value that can be used towards the payment of an Order. + type: object + required: + - balance + - code + - created_at + - deleted_at + - ends_at + - id + - is_disabled + - metadata + - order_id + - region_id + - tax_rate + - updated_at + - value + properties: + id: + description: The gift card's ID + type: string + example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ + code: + description: The unique code that identifies the Gift Card. This is used by the Customer to redeem the value of the Gift Card. + type: string + example: 3RFT-MH2C-Y4YZ-XMN4 + value: + description: The value that the Gift Card represents. + type: integer + example: 10 + balance: + description: The remaining value on the Gift Card. + type: integer + example: 10 + region_id: + description: The id of the Region in which the Gift Card is available. + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + order_id: + description: The id of the Order that the Gift Card was purchased in. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + is_disabled: + description: Whether the Gift Card has been disabled. Disabled Gift Cards cannot be applied to carts. + type: boolean + default: false + ends_at: + description: The time at which the Gift Card can no longer be used. + nullable: true + type: string + format: date-time + tax_rate: + description: The gift card's tax rate that will be applied on calculating totals + nullable: true + type: number + example: 0 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + GiftCardTransaction: + title: Gift Card Transaction + description: Gift Card Transactions are created once a Customer uses a Gift Card to pay for their Order + type: object + required: + - amount + - created_at + - gift_card_id + - id + - is_taxable + - order_id + - tax_rate + properties: + id: + description: The gift card transaction's ID + type: string + example: gct_01G8X9A7ESKAJXG2H0E6F1MW7A + gift_card_id: + description: The ID of the Gift Card that was used in the transaction. + type: string + example: gift_01G8XKBPBQY2R7RBET4J7E0XQZ + gift_card: + description: A gift card object. Available if the relation `gift_card` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Gift Card was used to pay for. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + amount: + description: The amount that was used from the Gift Card. + type: integer + example: 10 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + is_taxable: + description: Whether the transaction is taxable or not. + nullable: true + type: boolean + example: false + tax_rate: + description: The tax rate of the transaction + nullable: true + type: number + example: 0 + IdempotencyKey: + title: Idempotency Key + description: Idempotency Key is used to continue a process in case of any failure that might occur. + type: object + required: + - created_at + - id + - idempotency_key + - locked_at + - recovery_point + - response_code + - response_body + - request_method + - request_params + - request_path + properties: + id: + description: The idempotency key's ID + type: string + example: ikey_01G8X9A7ESKAJXG2H0E6F1MW7A + idempotency_key: + description: The unique randomly generated key used to determine the state of a process. + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: Date which the idempotency key was locked. + type: string + format: date-time + locked_at: + description: Date which the idempotency key was locked. + nullable: true + type: string + format: date-time + request_method: + description: The method of the request + nullable: true + type: string + example: POST + request_params: + description: The parameters passed to the request + nullable: true + type: object + example: + id: cart_01G8ZH853Y6TFXWPG5EYE81X63 + request_path: + description: The request's path + nullable: true + type: string + example: /store/carts/cart_01G8ZH853Y6TFXWPG5EYE81X63/complete + response_code: + description: The response's code. + nullable: true + type: string + example: 200 + response_body: + description: The response's body + nullable: true + type: object + example: + id: cart_01G8ZH853Y6TFXWPG5EYE81X63 + recovery_point: + description: Where to continue from. + type: string + default: started + Image: + title: Image + description: Images holds a reference to a URL at which the image file can be found. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - url + properties: + id: + type: string + description: The image's ID + example: img_01G749BFYR6T8JTVW6SGW3K3E6 + url: + description: The URL at which the image file can be found. + type: string + format: uri + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + InventoryItemDTO: + type: object + required: + - sku + properties: + sku: + description: The Stock Keeping Unit (SKU) code of the Inventory Item. + type: string + hs_code: + description: The Harmonized System code of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + origin_country: + description: The country in which the Inventory Item was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Inventory Item. May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + material: + description: The material and composition that the Inventory Item is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + type: string + weight: + description: The weight of the Inventory Item. May be used in shipping rate calculations. + type: number + height: + description: The height of the Inventory Item. May be used in shipping rate calculations. + type: number + width: + description: The width of the Inventory Item. May be used in shipping rate calculations. + type: number + length: + description: The length of the Inventory Item. May be used in shipping rate calculations. + type: number + requires_shipping: + description: Whether the item requires shipping. + type: boolean + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + InventoryLevelDTO: + type: object + required: + - inventory_item_id + - location_id + - stocked_quantity + - reserved_quantity + - incoming_quantity + properties: + location_id: + description: the item location ID + type: string + stocked_quantity: + description: the total stock quantity of an inventory item at the given location ID + type: number + reserved_quantity: + description: the reserved stock quantity of an inventory item at the given location ID + type: number + incoming_quantity: + description: the incoming stock quantity of an inventory item at the given location ID + type: number + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + Invite: + title: Invite + description: Represents an invite + type: object + required: + - accepted + - created_at + - deleted_at + - expires_at + - id + - metadata + - role + - token + - updated_at + - user_email + properties: + id: + type: string + description: The invite's ID + example: invite_01G8TKE4XYCTHSCK2GDEP47RE1 + user_email: + description: The email of the user being invited. + type: string + format: email + role: + description: The user's role. + nullable: true + type: string + enum: + - admin + - member + - developer + default: member + accepted: + description: Whether the invite was accepted or not. + type: boolean + default: false + token: + description: The token used to accept the invite. + type: string + expires_at: + description: The date the invite expires at. + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItem: + title: Line Item + description: Line Items represent purchasable units that can be added to a Cart for checkout. When Line Items are purchased they will get copied to the resulting order and can eventually be referenced in Fulfillments and Returns. Line Items may also be created when processing Swaps and Claims. + type: object + required: + - allow_discounts + - cart_id + - claim_order_id + - created_at + - description + - fulfilled_quantity + - has_shipping + - id + - is_giftcard + - is_return + - metadata + - order_edit_id + - order_id + - original_item_id + - quantity + - returned_quantity + - shipped_quantity + - should_merge + - swap_id + - thumbnail + - title + - unit_price + - updated_at + - variant_id + properties: + id: + description: The line item's ID + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + cart_id: + description: The ID of the Cart that the Line Item belongs to. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Line Item belongs to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Line Item belongs to. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + claim_order_id: + description: The id of the Claim that the Line Item belongs to. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + tax_lines: + description: Available if the relation `tax_lines` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItemTaxLine' + adjustments: + description: Available if the relation `adjustments` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItemAdjustment' + original_item_id: + description: The id of the original line item + nullable: true + type: string + order_edit_id: + description: The ID of the order edit to which a cloned item belongs + nullable: true + type: string + order_edit: + description: The order edit joined. Available if the relation `order_edit` is expanded. + nullable: true + type: object + title: + description: The title of the Line Item, this should be easily identifiable by the Customer. + type: string + example: Medusa Coffee Mug + description: + description: A more detailed description of the contents of the Line Item. + nullable: true + type: string + example: One Size + thumbnail: + description: A URL string to a small image of the contents of the Line Item. + nullable: true + type: string + format: uri + example: https://medusa-public-images.s3.eu-west-1.amazonaws.com/coffee-mug.png + is_return: + description: Is the item being returned + type: boolean + default: false + is_giftcard: + description: Flag to indicate if the Line Item is a Gift Card. + type: boolean + default: false + should_merge: + description: Flag to indicate if new Line Items with the same variant should be merged or added as an additional Line Item. + type: boolean + default: true + allow_discounts: + description: Flag to indicate if the Line Item should be included when doing discount calculations. + type: boolean + default: true + has_shipping: + description: Flag to indicate if the Line Item has fulfillment associated with it. + nullable: true + type: boolean + example: false + unit_price: + description: The price of one unit of the content in the Line Item. This should be in the currency defined by the Cart/Order/Swap/Claim that the Line Item belongs to. + type: integer + example: 8000 + variant_id: + description: The id of the Product Variant contained in the Line Item. + nullable: true + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: A product variant object. The Product Variant contained in the Line Item. Available if the relation `variant` is expanded. + nullable: true + $ref: '#/components/schemas/ProductVariant' + quantity: + description: The quantity of the content in the Line Item. + type: integer + example: 1 + fulfilled_quantity: + description: The quantity of the Line Item that has been fulfilled. + nullable: true + type: integer + example: 0 + returned_quantity: + description: The quantity of the Line Item that has been returned. + nullable: true + type: integer + example: 0 + shipped_quantity: + description: The quantity of the Line Item that has been shipped. + nullable: true + type: integer + example: 0 + refundable: + description: The amount that can be refunded from the given Line Item. Takes taxes and discounts into consideration. + type: integer + example: 0 + subtotal: + description: The subtotal of the line item + type: integer + example: 8000 + tax_total: + description: The total of tax of the line item + type: integer + example: 0 + total: + description: The total amount of the line item + type: integer + example: 8000 + original_total: + description: The original total amount of the line item + type: integer + example: 8000 + original_tax_total: + description: The original tax total amount of the line item + type: integer + example: 0 + discount_total: + description: The total of discount of the line item rounded + type: integer + example: 0 + raw_discount_total: + description: The total of discount of the line item + type: integer + example: 0 + gift_card_total: + description: The total of the gift card of the line item + type: integer + example: 0 + includes_tax: + description: '[EXPERIMENTAL] Indicates if the line item unit_price include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItemAdjustment: + title: Line Item Adjustment + description: Represents a Line Item Adjustment + type: object + required: + - amount + - description + - discount_id + - id + - item_id + - metadata + properties: + id: + description: The Line Item Adjustment's ID + type: string + example: lia_01G8TKE4XYCTHSCK2GDEP47RE1 + item_id: + description: The ID of the line item + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + item: + description: Available if the relation `item` is expanded. + nullable: true + type: object + description: + description: The line item's adjustment description + type: string + example: Adjusted item's price. + discount_id: + description: The ID of the discount associated with the adjustment + nullable: true + type: string + example: disc_01F0YESMW10MGHWJKZSDDMN0VN + discount: + description: Available if the relation `discount` is expanded. + nullable: true + $ref: '#/components/schemas/Discount' + amount: + description: The adjustment amount + type: number + example: 1000 + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + LineItemTaxLine: + title: Line Item Tax Line + description: Represents a Line Item Tax Line + type: object + required: + - code + - created_at + - id + - item_id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The line item tax line's ID + type: string + example: litl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + item_id: + description: The ID of the line item + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + item: + description: Available if the relation `item` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ModulesResponse: + type: array + items: + type: object + required: + - module + - resolution + properties: + module: + description: The key of the module. + type: string + resolution: + description: The resolution path of the module or false if module is not installed. + type: string + MoneyAmount: + title: Money Amount + description: Money Amounts represents an amount that a given Product Variant can be purcased for. Each Money Amount either has a Currency or Region associated with it to indicate the pricing in a given Currency or, for fully region-based pricing, the given price in a specific Region. If region-based pricing is used the amount will be in the currency defined for the Reigon. + type: object + required: + - amount + - created_at + - currency_code + - deleted_at + - id + - max_quantity + - min_quantity + - price_list_id + - region_id + - updated_at + - variant_id + properties: + id: + description: The money amount's ID + type: string + example: ma_01F0YESHRFQNH5S8Q0PK84YYZN + currency_code: + description: The 3 character currency code that the Money Amount is given in. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + amount: + description: The amount in the smallest currecny unit (e.g. cents 100 cents to charge $1) that the Product Variant will cost. + type: integer + example: 100 + min_quantity: + description: The minimum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. + nullable: true + type: integer + example: 1 + max_quantity: + description: The maximum quantity that the Money Amount applies to. If this value is not set, the Money Amount applies to all quantities. + nullable: true + type: integer + example: 1 + price_list_id: + description: The ID of the price list associated with the money amount + nullable: true + type: string + example: pl_01G8X3CKJXCG5VXVZ87H9KC09W + price_list: + description: Available if the relation `price_list` is expanded. + nullable: true + type: object + variant_id: + description: The id of the Product Variant contained in the Line Item. + nullable: true + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: The Product Variant contained in the Line Item. Available if the relation `variant` is expanded. + nullable: true + type: object + region_id: + description: The region's ID + nullable: true + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + MultipleErrors: + title: Multiple Errors + type: object + properties: + errors: + type: array + description: Array of errors + items: + $ref: '#/components/schemas/Error' + message: + type: string + default: Provided request body contains errors. Please check the data and retry the request + Note: + title: Note + description: Notes are elements which we can use in association with different resources to allow users to describe additional information in relation to these. + type: object + required: + - author_id + - created_at + - deleted_at + - id + - metadata + - resource_id + - resource_type + - updated_at + - value + properties: + id: + description: The note's ID + type: string + example: note_01G8TM8ENBMC7R90XRR1G6H26Q + resource_type: + description: The type of resource that the Note refers to. + type: string + example: order + resource_id: + description: The ID of the resource that the Note refers to. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + value: + description: The contents of the note. + type: string + example: This order must be fulfilled on Monday + author_id: + description: The ID of the author (user) + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + author: + description: Available if the relation `author` is expanded. + nullable: true + $ref: '#/components/schemas/User' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Notification: + title: Notification + description: Notifications a communications sent via Notification Providers as a reaction to internal events such as `order.placed`. Notifications can be used to show a chronological timeline for communications sent to a Customer regarding an Order, and enables resends. + type: object + required: + - created_at + - customer_id + - data + - event_name + - id + - parent_id + - provider_id + - resource_type + - resource_id + - to + - updated_at + properties: + id: + description: The notification's ID + type: string + example: noti_01G53V9Y6CKMCGBM1P0X7C28RX + event_name: + description: The name of the event that the notification was sent for. + nullable: true + type: string + example: order.placed + resource_type: + description: The type of resource that the Notification refers to. + type: string + example: order + resource_id: + description: The ID of the resource that the Notification refers to. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + customer_id: + description: The ID of the Customer that the Notification was sent to. + nullable: true + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + $ref: '#/components/schemas/Customer' + to: + description: The address that the Notification was sent to. This will usually be an email address, but represent other addresses such as a chat bot user id + type: string + example: user@example.com + data: + description: The data that the Notification was sent with. This contains all the data necessary for the Notification Provider to initiate a resend. + type: object + example: {} + parent_id: + description: The notification's parent ID + nullable: true + type: string + example: noti_01G53V9Y6CKMCGBM1P0X7C28RX + parent_notification: + description: Available if the relation `parent_notification` is expanded. + nullable: true + type: object + resends: + description: The resends that have been completed after the original Notification. Available if the relation `resends` is expanded. + type: array + items: + type: object + provider_id: + description: The id of the Notification Provider that handles the Notification. + nullable: true + type: string + example: sengrid + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/NotificationProvider' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + NotificationProvider: + title: Notification Provider + description: Represents a notification provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the notification provider as given by the plugin. + type: string + example: sendgrid + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + OAuth: + title: OAuth + description: Represent an OAuth app + type: object + required: + - application_name + - data + - display_name + - id + - install_url + - uninstall_url + properties: + id: + description: The app's ID + type: string + example: example_app + display_name: + description: The app's display name + type: string + example: Example app + application_name: + description: The app's name + type: string + example: example + install_url: + description: The URL to install the app + nullable: true + type: string + format: uri + uninstall_url: + description: The URL to uninstall the app + nullable: true + type: string + format: uri + data: + description: Any data necessary to the app. + nullable: true + type: object + example: {} + Order: + title: Order + description: Represents an order + type: object + required: + - billing_address_id + - canceled_at + - cart_id + - created_at + - currency_code + - customer_id + - draft_order_id + - display_id + - email + - external_id + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - object + - payment_status + - region_id + - shipping_address_id + - status + - tax_rate + - updated_at + properties: + id: + description: The order's ID + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + status: + description: The order's status + type: string + enum: + - pending + - completed + - archived + - canceled + - requires_action + default: pending + fulfillment_status: + description: The order's fulfillment status + type: string + enum: + - not_fulfilled + - partially_fulfilled + - fulfilled + - partially_shipped + - shipped + - partially_returned + - returned + - canceled + - requires_action + default: not_fulfilled + payment_status: + description: The order's payment status + type: string + enum: + - not_paid + - awaiting + - captured + - partially_refunded + - refunded + - canceled + - requires_action + default: not_paid + display_id: + description: The order's display ID + type: integer + example: 2 + cart_id: + description: The ID of the cart associated with the order + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + customer_id: + description: The ID of the customer associated with the order + type: string + example: cus_01G2SG30J8C85S4A5CHM2S1NS2 + customer: + description: A customer object. Available if the relation `customer` is expanded. + nullable: true + type: object + email: + description: The email associated with the order + type: string + format: email + billing_address_id: + description: The ID of the billing address associated with the order + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + billing_address: + description: Available if the relation `billing_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_address_id: + description: The ID of the shipping address associated with the order + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + currency_code: + description: The 3 character currency code that is used in the order + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + tax_rate: + description: The order's tax rate + nullable: true + type: number + example: 0 + discounts: + description: The discounts used in the order. Available if the relation `discounts` is expanded. + type: array + items: + $ref: '#/components/schemas/Discount' + gift_cards: + description: The gift cards used in the order. Available if the relation `gift_cards` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCard' + shipping_methods: + description: The shipping methods used in the order. Available if the relation `shipping_methods` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + payments: + description: The payments used in the order. Available if the relation `payments` is expanded. + type: array + items: + type: object + fulfillments: + description: The fulfillments used in the order. Available if the relation `fulfillments` is expanded. + type: array + items: + type: object + returns: + description: The returns associated with the order. Available if the relation `returns` is expanded. + type: array + items: + type: object + claims: + description: The claims associated with the order. Available if the relation `claims` is expanded. + type: array + items: + type: object + refunds: + description: The refunds associated with the order. Available if the relation `refunds` is expanded. + type: array + items: + type: object + swaps: + description: The swaps associated with the order. Available if the relation `swaps` is expanded. + type: array + items: + type: object + draft_order_id: + description: The ID of the draft order this order is associated with. + nullable: true + type: string + example: null + draft_order: + description: A draft order object. Available if the relation `draft_order` is expanded. + nullable: true + type: object + items: + description: The line items that belong to the order. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + edits: + description: Order edits done on the order. Available if the relation `edits` is expanded. + type: array + items: + type: object + gift_card_transactions: + description: The gift card transactions used in the order. Available if the relation `gift_card_transactions` is expanded. + type: array + items: + $ref: '#/components/schemas/GiftCardTransaction' + canceled_at: + description: The date the order was canceled on. + nullable: true + type: string + format: date-time + no_notification: + description: Flag for describing whether or not notifications related to this should be send. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the processing of the order in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + external_id: + description: The ID of an external order. + nullable: true + type: string + example: null + sales_channel_id: + description: The ID of the sales channel this order is associated with. + nullable: true + type: string + example: null + sales_channel: + description: A sales channel object. Available if the relation `sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + shipping_total: + type: integer + description: The total of shipping + example: 1000 + raw_discount_total: + description: The total of discount + type: integer + example: 800 + discount_total: + description: The total of discount rounded + type: integer + example: 800 + tax_total: + description: The total of tax + type: integer + example: 0 + refunded_total: + description: The total amount refunded if the order is returned. + type: integer + example: 0 + total: + description: The total amount of the order + type: integer + example: 8200 + subtotal: + description: The subtotal of the order + type: integer + example: 8000 + paid_total: + description: The total amount paid + type: integer + example: 8000 + refundable_amount: + description: The amount that can be refunded + type: integer + example: 8200 + gift_card_total: + description: The total of gift cards + type: integer + example: 0 + gift_card_tax_total: + description: The total of gift cards with taxes + type: integer + example: 0 + returnable_items: + description: The items that are returnable as part of the order, order swaps or order claims + type: array + items: + $ref: '#/components/schemas/LineItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + OrderEdit: + title: Order Edit + description: Order edit keeps track of order items changes. + type: object + required: + - canceled_at + - canceled_by + - confirmed_by + - confirmed_at + - created_at + - created_by + - declined_at + - declined_by + - declined_reason + - id + - internal_note + - order_id + - payment_collection_id + - requested_at + - requested_by + - status + - updated_at + properties: + id: + description: The order edit's ID + type: string + example: oe_01G8TJSYT9M6AVS5N4EMNFS1EK + order_id: + description: The ID of the order that is edited + type: string + example: order_01G2SG30J8C85S4A5CHM2S1NS2 + order: + description: Available if the relation `order` is expanded. + nullable: true + type: object + changes: + description: Available if the relation `changes` is expanded. + type: array + items: + $ref: '#/components/schemas/OrderItemChange' + internal_note: + description: An optional note with additional details about the order edit. + nullable: true + type: string + example: Included two more items B to the order. + created_by: + description: The unique identifier of the user or customer who created the order edit. + type: string + requested_by: + description: The unique identifier of the user or customer who requested the order edit. + nullable: true + type: string + requested_at: + description: The date with timezone at which the edit was requested. + nullable: true + type: string + format: date-time + confirmed_by: + description: The unique identifier of the user or customer who confirmed the order edit. + nullable: true + type: string + confirmed_at: + description: The date with timezone at which the edit was confirmed. + nullable: true + type: string + format: date-time + declined_by: + description: The unique identifier of the user or customer who declined the order edit. + nullable: true + type: string + declined_at: + description: The date with timezone at which the edit was declined. + nullable: true + type: string + format: date-time + declined_reason: + description: An optional note why the order edit is declined. + nullable: true + type: string + canceled_by: + description: The unique identifier of the user or customer who cancelled the order edit. + nullable: true + type: string + canceled_at: + description: The date with timezone at which the edit was cancelled. + nullable: true + type: string + format: date-time + subtotal: + description: The total of subtotal + type: integer + example: 8000 + discount_total: + description: The total of discount + type: integer + example: 800 + shipping_total: + description: The total of the shipping amount + type: integer + example: 800 + gift_card_total: + description: The total of the gift card amount + type: integer + example: 800 + gift_card_tax_total: + description: The total of the gift card tax amount + type: integer + example: 800 + tax_total: + description: The total of tax + type: integer + example: 0 + total: + description: The total amount of the edited order. + type: integer + example: 8200 + difference_due: + description: The difference between the total amount of the order and total amount of edited order. + type: integer + example: 8200 + status: + description: The status of the order edit. + type: string + enum: + - confirmed + - declined + - requested + - created + - canceled + items: + description: Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + payment_collection_id: + description: The ID of the payment collection + nullable: true + type: string + example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK + payment_collection: + description: Available if the relation `payment_collection` is expanded. + nullable: true + $ref: '#/components/schemas/PaymentCollection' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + OrderItemChange: + title: Order Item Change + description: Represents an order edit item change + type: object + required: + - created_at + - deleted_at + - id + - line_item_id + - order_edit_id + - original_line_item_id + - type + - updated_at + properties: + id: + description: The order item change's ID + type: string + example: oic_01G8TJSYT9M6AVS5N4EMNFS1EK + type: + description: The order item change's status + type: string + enum: + - item_add + - item_remove + - item_update + order_edit_id: + description: The ID of the order edit + type: string + example: oe_01G2SG30J8C85S4A5CHM2S1NS2 + order_edit: + description: Available if the relation `order_edit` is expanded. + nullable: true + type: object + original_line_item_id: + description: The ID of the original line item in the order + nullable: true + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + original_line_item: + description: Available if the relation `original_line_item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + line_item_id: + description: The ID of the cloned line item. + nullable: true + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + line_item: + description: Available if the relation `line_item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + Payment: + title: Payment + description: Payments represent an amount authorized with a given payment method, Payments can be captured, canceled or refunded. + type: object + required: + - amount + - amount_refunded + - canceled_at + - captured_at + - cart_id + - created_at + - currency_code + - data + - id + - idempotency_key + - metadata + - order_id + - provider_id + - swap_id + - updated_at + properties: + id: + description: The payment's ID + type: string + example: pay_01G2SJNT6DEEWDFNAJ4XWDTHKE + swap_id: + description: The ID of the Swap that the Payment is used for. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + cart_id: + description: The id of the Cart that the Payment Session is created for. + nullable: true + type: string + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Payment is used for. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + amount: + description: The amount that the Payment has been authorized for. + type: integer + example: 100 + currency_code: + description: The 3 character ISO currency code that the Payment is completed in. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + amount_refunded: + description: The amount of the original Payment amount that has been refunded back to the Customer. + type: integer + default: 0 + example: 0 + provider_id: + description: The id of the Payment Provider that is responsible for the Payment + type: string + example: manual + data: + description: The data required for the Payment Provider to identify, modify and process the Payment. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. + type: object + example: {} + captured_at: + description: The date with timezone at which the Payment was captured. + nullable: true + type: string + format: date-time + canceled_at: + description: The date with timezone at which the Payment was canceled. + nullable: true + type: string + format: date-time + idempotency_key: + description: Randomly generated key used to continue the completion of a payment in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + PaymentCollection: + title: Payment Collection + description: Payment Collection + type: object + required: + - amount + - authorized_amount + - created_at + - created_by + - currency_code + - deleted_at + - description + - id + - metadata + - region_id + - status + - type + - updated_at + properties: + id: + description: The payment collection's ID + type: string + example: paycol_01G8TJSYT9M6AVS5N4EMNFS1EK + type: + description: The type of the payment collection + type: string + enum: + - order_edit + status: + description: The type of the payment collection + type: string + enum: + - not_paid + - awaiting + - authorized + - partially_authorized + - canceled + description: + description: Description of the payment collection + nullable: true + type: string + amount: + description: Amount of the payment collection. + type: integer + authorized_amount: + description: Authorized amount of the payment collection. + nullable: true + type: integer + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: Available if the relation `region` is expanded. + nullable: true + $ref: '#/components/schemas/Region' + currency_code: + description: The 3 character ISO code for the currency. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + payment_sessions: + description: Available if the relation `payment_sessions` is expanded. + type: array + items: + $ref: '#/components/schemas/PaymentSession' + payments: + description: Available if the relation `payments` is expanded. + type: array + items: + $ref: '#/components/schemas/Payment' + created_by: + description: The ID of the user that created the payment collection. + type: string + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + PaymentProvider: + title: Payment Provider + description: Represents a Payment Provider plugin and holds its installation status. + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the payment provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + PaymentSession: + title: Payment Session + description: Payment Sessions are created when a Customer initilizes the checkout flow, and can be used to hold the state of a payment flow. Each Payment Session is controlled by a Payment Provider, who is responsible for the communication with external payment services. Authorized Payment Sessions will eventually get promoted to Payments to indicate that they are authorized for capture/refunds/etc. + type: object + required: + - amount + - cart_id + - created_at + - data + - id + - is_initiated + - is_selected + - idempotency_key + - payment_authorized_at + - provider_id + - status + - updated_at + properties: + id: + description: The payment session's ID + type: string + example: ps_01G901XNSRM2YS3ASN9H5KG3FZ + cart_id: + description: The id of the Cart that the Payment Session is created for. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + $ref: '#/components/schemas/Cart' + provider_id: + description: The id of the Payment Provider that is responsible for the Payment Session + type: string + example: manual + is_selected: + description: A flag to indicate if the Payment Session has been selected as the method that will be used to complete the purchase. + nullable: true + type: boolean + example: true + is_initiated: + description: A flag to indicate if a communication with the third party provider has been initiated. + type: boolean + default: false + example: true + status: + description: Indicates the status of the Payment Session. Will default to `pending`, and will eventually become `authorized`. Payment Sessions may have the status of `requires_more` to indicate that further actions are to be completed by the Customer. + type: string + enum: + - authorized + - pending + - requires_more + - error + - canceled + example: pending + data: + description: The data required for the Payment Provider to identify, modify and process the Payment Session. Typically this will be an object that holds an id to the external payment session, but can be an empty object if the Payment Provider doesn't hold any state. + type: object + example: {} + idempotency_key: + description: Randomly generated key used to continue the completion of a cart in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + amount: + description: The amount that the Payment Session has been authorized for. + nullable: true + type: integer + example: 100 + payment_authorized_at: + description: The date with timezone at which the Payment Session was authorized. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + PriceList: + title: Price List + description: Price Lists represents a set of prices that overrides the default price for one or more product variants. + type: object + required: + - created_at + - deleted_at + - description + - ends_at + - id + - name + - starts_at + - status + - type + - updated_at + properties: + id: + description: The price list's ID + type: string + example: pl_01G8X3CKJXCG5VXVZ87H9KC09W + name: + description: The price list's name + type: string + example: VIP Prices + description: + description: The price list's description + type: string + example: Prices for VIP customers + type: + description: The type of Price List. This can be one of either `sale` or `override`. + type: string + enum: + - sale + - override + default: sale + status: + description: The status of the Price List + type: string + enum: + - active + - draft + default: draft + starts_at: + description: The date with timezone that the Price List starts being valid. + nullable: true + type: string + format: date-time + ends_at: + description: The date with timezone that the Price List stops being valid. + nullable: true + type: string + format: date-time + customer_groups: + description: The Customer Groups that the Price List applies to. Available if the relation `customer_groups` is expanded. + type: array + items: + $ref: '#/components/schemas/CustomerGroup' + prices: + description: The Money Amounts that are associated with the Price List. Available if the relation `prices` is expanded. + type: array + items: + $ref: '#/components/schemas/MoneyAmount' + includes_tax: + description: '[EXPERIMENTAL] Does the price list prices include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + PricedProduct: + title: Priced Product + type: object + allOf: + - $ref: '#/components/schemas/Product' + - type: object + properties: + variants: + type: array + items: + $ref: '#/components/schemas/PricedVariant' + PricedShippingOption: + title: Priced Shipping Option + type: object + allOf: + - $ref: '#/components/schemas/ShippingOption' + - type: object + properties: + price_incl_tax: + type: number + description: Price including taxes + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + tax_amount: + type: number + description: The taxes applied. + PricedVariant: + title: Priced Product Variant + type: object + allOf: + - $ref: '#/components/schemas/ProductVariant' + - type: object + properties: + original_price: + type: number + description: The original price of the variant without any discounted prices applied. + calculated_price: + type: number + description: The calculated price of the variant. Can be a discounted price. + original_price_incl_tax: + type: number + description: The original price of the variant including taxes. + calculated_price_incl_tax: + type: number + description: The calculated price of the variant including taxes. + original_tax: + type: number + description: The taxes applied on the original price. + calculated_tax: + type: number + description: The taxes applied on the calculated price. + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + Product: + title: Product + description: Products are a grouping of Product Variants that have common properties such as images and descriptions. Products can have multiple options which define the properties that Product Variants differ by. + type: object + required: + - collection_id + - created_at + - deleted_at + - description + - discountable + - external_id + - handle + - height + - hs_code + - id + - is_giftcard + - length + - material + - metadata + - mid_code + - origin_country + - profile_id + - status + - subtitle + - type_id + - thumbnail + - title + - updated_at + - weight + - width + properties: + id: + description: The product's ID + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + title: + description: A title that can be displayed for easy identification of the Product. + type: string + example: Medusa Coffee Mug + subtitle: + description: An optional subtitle that can be used to further specify the Product. + nullable: true + type: string + description: + description: A short description of the Product. + nullable: true + type: string + example: Every programmer's best friend. + handle: + description: A unique identifier for the Product (e.g. for slug structure). + nullable: true + type: string + example: coffee-mug + is_giftcard: + description: Whether the Product represents a Gift Card. Products that represent Gift Cards will automatically generate a redeemable Gift Card code once they are purchased. + type: boolean + default: false + status: + description: The status of the product + type: string + enum: + - draft + - proposed + - published + - rejected + default: draft + images: + description: Images of the Product. Available if the relation `images` is expanded. + type: array + items: + $ref: '#/components/schemas/Image' + thumbnail: + description: A URL to an image file that can be used to identify the Product. + nullable: true + type: string + format: uri + options: + description: The Product Options that are defined for the Product. Product Variants of the Product will have a unique combination of Product Option Values. Available if the relation `options` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOption' + variants: + description: The Product Variants that belong to the Product. Each will have a unique combination of Product Option Values. Available if the relation `variants` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductVariant' + categories: + description: The product's associated categories. Available if the relation `categories` are expanded. + type: array + items: + $ref: '#/components/schemas/ProductCategory' + profile_id: + description: The ID of the Shipping Profile that the Product belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products. + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + profile: + description: Available if the relation `profile` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingProfile' + weight: + description: The weight of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + length: + description: The length of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + height: + description: The height of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + width: + description: The width of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + hs_code: + description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + origin_country: + description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + material: + description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + collection_id: + description: The Product Collection that the Product belongs to + nullable: true + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + collection: + description: A product collection object. Available if the relation `collection` is expanded. + nullable: true + $ref: '#/components/schemas/ProductCollection' + type_id: + description: The Product type that the Product belongs to + nullable: true + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + type: + description: Available if the relation `type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + tags: + description: The Product Tags assigned to the Product. Available if the relation `tags` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductTag' + discountable: + description: Whether the Product can be discounted. Discounts will not apply to Line Items of this Product when this flag is set to `false`. + type: boolean + default: true + external_id: + description: The external ID of the product + nullable: true + type: string + example: null + sales_channels: + description: The sales channels the product is associated with. Available if the relation `sales_channels` is expanded. + type: array + items: + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductCategory: + title: ProductCategory + description: Represents a product category + x-resourceId: ProductCategory + type: object + required: + - category_children + - created_at + - handle + - id + - is_active + - is_internal + - mpath + - name + - parent_category_id + - updated_at + properties: + id: + description: The product category's ID + type: string + example: pcat_01G2SG30J8C85S4A5CHM2S1NS2 + name: + description: The product category's name + type: string + example: Regular Fit + handle: + description: A unique string that identifies the Product Category - can for example be used in slug structures. + type: string + example: regular-fit + mpath: + description: A string for Materialized Paths - used for finding ancestors and descendents + nullable: true + type: string + example: pcat_id1.pcat_id2.pcat_id3 + is_internal: + type: boolean + description: A flag to make product category an internal category for admins + default: false + is_active: + type: boolean + description: A flag to make product category visible/hidden in the store front + default: false + rank: + type: integer + description: An integer that depicts the rank of category in a tree node + default: 0 + category_children: + description: Available if the relation `category_children` are expanded. + type: array + items: + type: object + parent_category_id: + description: The ID of the parent category. + nullable: true + type: string + default: null + parent_category: + description: A product category object. Available if the relation `parent_category` is expanded. + nullable: true + type: object + products: + description: Products associated with category. Available if the relation `products` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + ProductCollection: + title: Product Collection + description: Product Collections represents a group of Products that are related. + type: object + required: + - created_at + - deleted_at + - handle + - id + - metadata + - title + - updated_at + properties: + id: + description: The product collection's ID + type: string + example: pcol_01F0YESBFAZ0DV6V831JXWH0BG + title: + description: The title that the Product Collection is identified by. + type: string + example: Summer Collection + handle: + description: A unique string that identifies the Product Collection - can for example be used in slug structures. + nullable: true + type: string + example: summer-collection + products: + description: The Products contained in the Product Collection. Available if the relation `products` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductOption: + title: Product Option + description: Product Options define properties that may vary between different variants of a Product. Common Product Options are "Size" and "Color", but Medusa doesn't limit what Product Options that can be defined. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - product_id + - title + - updated_at + properties: + id: + description: The product option's ID + type: string + example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 + title: + description: The title that the Product Option is defined by (e.g. `Size`). + type: string + example: Size + values: + description: The Product Option Values that are defined for the Product Option. Available if the relation `values` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOptionValue' + product_id: + description: The ID of the Product that the Product Option is defined for. + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: A product object. Available if the relation `product` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductOptionValue: + title: Product Option Value + description: A value given to a Product Variant's option set. Product Variant have a Product Option Value for each of the Product Options defined on the Product. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - option_id + - updated_at + - value + - variant_id + properties: + id: + description: The product option value's ID + type: string + example: optval_01F0YESHR7S6ECD03RF6W12DSJ + value: + description: The value that the Product Variant has defined for the specific Product Option (e.g. if the Product Option is \"Size\" this value could be `Small`, `Medium` or `Large`). + type: string + example: large + option_id: + description: The ID of the Product Option that the Product Option Value is defined for. + type: string + example: opt_01F0YESHQBZVKCEXJ24BS6PCX3 + option: + description: Available if the relation `option` is expanded. + nullable: true + type: object + variant_id: + description: The ID of the Product Variant that the Product Option Value is defined for. + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + variant: + description: Available if the relation `variant` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTag: + title: Product Tag + description: Product Tags can be added to Products for easy filtering and grouping. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The product tag's ID + type: string + example: ptag_01G8K2MTMG9168F2B70S1TAVK3 + value: + description: The value that the Product Tag represents + type: string + example: Pants + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTaxRate: + title: Product Tax Rate + description: Associates a tax rate with a product to indicate that the product is taxed in a certain way + type: object + required: + - created_at + - metadata + - product_id + - rate_id + - updated_at + properties: + product_id: + description: The ID of the Product + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: Available if the relation `product` is expanded. + nullable: true + $ref: '#/components/schemas/Product' + rate_id: + description: The ID of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductType: + title: Product Type + description: Product Type can be added to Products for filtering and reporting purposes. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - updated_at + - value + properties: + id: + description: The product type's ID + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + value: + description: The value that the Product Type represents. + type: string + example: Clothing + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductTypeTaxRate: + title: Product Type Tax Rate + description: Associates a tax rate with a product type to indicate that the product type is taxed in a certain way + type: object + required: + - created_at + - metadata + - product_type_id + - rate_id + - updated_at + properties: + product_type_id: + description: The ID of the Product type + type: string + example: ptyp_01G8X9A7ESKAJXG2H0E6F1MW7A + product_type: + description: Available if the relation `product_type` is expanded. + nullable: true + $ref: '#/components/schemas/ProductType' + rate_id: + description: The id of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductVariant: + title: Product Variant + description: Product Variants represent a Product with a specific set of Product Option configurations. The maximum number of Product Variants that a Product can have is given by the number of available Product Option combinations. + type: object + required: + - allow_backorder + - barcode + - created_at + - deleted_at + - ean + - height + - hs_code + - id + - inventory_quantity + - length + - manage_inventory + - material + - metadata + - mid_code + - origin_country + - product_id + - sku + - title + - upc + - updated_at + - weight + - width + properties: + id: + description: The product variant's ID + type: string + example: variant_01G1G5V2MRX2V3PVSR2WXYPFB6 + title: + description: A title that can be displayed for easy identification of the Product Variant. + type: string + example: Small + product_id: + description: The ID of the Product that the Product Variant belongs to. + type: string + example: prod_01G1G5V2MBA328390B5AXJ610F + product: + description: A product object. Available if the relation `product` is expanded. + nullable: true + type: object + prices: + description: The Money Amounts defined for the Product Variant. Each Money Amount represents a price in a given currency or a price in a specific Region. Available if the relation `prices` is expanded. + type: array + items: + $ref: '#/components/schemas/MoneyAmount' + sku: + description: The unique stock keeping unit used to identify the Product Variant. This will usually be a unqiue identifer for the item that is to be shipped, and can be referenced across multiple systems. + nullable: true + type: string + example: shirt-123 + barcode: + description: A generic field for a GTIN number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + ean: + description: An EAN barcode number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + upc: + description: A UPC barcode number that can be used to identify the Product Variant. + nullable: true + type: string + example: null + variant_rank: + description: The ranking of this variant + nullable: true + type: number + default: 0 + inventory_quantity: + description: The current quantity of the item that is stocked. + type: integer + example: 100 + allow_backorder: + description: Whether the Product Variant should be purchasable when `inventory_quantity` is 0. + type: boolean + default: false + manage_inventory: + description: Whether Medusa should manage inventory for the Product Variant. + type: boolean + default: true + hs_code: + description: The Harmonized System code of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + origin_country: + description: The country in which the Product Variant was produced. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + mid_code: + description: The Manufacturers Identification code that identifies the manufacturer of the Product Variant. May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + material: + description: The material and composition that the Product Variant is made of, May be used by Fulfillment Providers to pass customs information to shipping carriers. + nullable: true + type: string + example: null + weight: + description: The weight of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + length: + description: The length of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + height: + description: The height of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + width: + description: The width of the Product Variant. May be used in shipping rate calculations. + nullable: true + type: number + example: null + options: + description: The Product Option Values specified for the Product Variant. Available if the relation `options` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductOptionValue' + inventory_items: + description: The Inventory Items related to the product variant. Available if the relation `inventory_items` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductVariantInventoryItem' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ProductVariantInventoryItem: + title: Product Variant Inventory Item + description: Product Variant Inventory Items link variants with inventory items and denote the number of inventory items constituting a variant. + type: object + required: + - created_at + - deleted_at + - id + - inventory_item_id + - required_quantity + - updated_at + - variant_id + properties: + id: + description: The product variant inventory item's ID + type: string + example: pvitem_01G8X9A7ESKAJXG2H0E6F1MW7A + inventory_item_id: + description: The id of the inventory item + type: string + variant_id: + description: The id of the variant. + type: string + variant: + description: A ProductVariant object. Available if the relation `variant` is expanded. + nullable: true + type: object + required_quantity: + description: The quantity of an inventory item required for one quantity of the variant. + type: integer + default: 1 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + PublishableApiKey: + title: Publishable API key + description: Publishable API key defines scopes (i.e. resources) that are available within a request. + type: object + required: + - created_at + - created_by + - id + - revoked_by + - revoked_at + - title + - updated_at + properties: + id: + description: The key's ID + type: string + example: pk_01G1G5V27GYX4QXNARRQCW1N8T + created_by: + description: The unique identifier of the user that created the key. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + revoked_by: + description: The unique identifier of the user that revoked the key. + nullable: true + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + revoked_at: + description: The date with timezone at which the key was revoked. + nullable: true + type: string + format: date-time + title: + description: The key's title. + type: string + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + PublishableApiKeySalesChannel: + title: Publishable API key sales channel + description: Holds mapping between Publishable API keys and Sales Channels + type: object + required: + - publishable_key_id + - sales_channel_id + properties: + sales_channel_id: + description: The sales channel's ID + type: string + example: sc_01G1G5V21KADXNGH29BJMAJ4B4 + publishable_key_id: + description: The publishable API key's ID + type: string + example: pak_01G1G5V21KADXNGH29BJMAJ4B4 + Refund: + title: Refund + description: Refund represent an amount of money transfered back to the Customer for a given reason. Refunds may occur in relation to Returns, Swaps and Claims, but can also be initiated by a store operator. + type: object + required: + - amount + - created_at + - id + - idempotency_key + - metadata + - note + - order_id + - payment_id + - reason + - updated_at + properties: + id: + description: The refund's ID + type: string + example: ref_01G1G5V27GYX4QXNARRQCW1N8T + order_id: + description: The id of the Order that the Refund is related to. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + payment_id: + description: The payment's ID if available + nullable: true + type: string + example: pay_01G8ZCC5W42ZNY842124G7P5R9 + payment: + description: Available if the relation `payment` is expanded. + nullable: true + type: object + amount: + description: The amount that has be refunded to the Customer. + type: integer + example: 1000 + note: + description: An optional note explaining why the amount was refunded. + nullable: true + type: string + example: I didn't like it + reason: + description: The reason given for the Refund, will automatically be set when processed as part of a Swap, Claim or Return. + type: string + enum: + - discount + - return + - swap + - claim + - other + example: return + idempotency_key: + description: Randomly generated key used to continue the completion of the refund in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + Region: + title: Region + description: Regions hold settings for how Customers in a given geographical location shop. The is, for example, where currencies and tax rates are defined. A Region can consist of multiple countries to accomodate common shopping settings across countries. + type: object + required: + - automatic_taxes + - created_at + - currency_code + - deleted_at + - gift_cards_taxable + - id + - metadata + - name + - tax_code + - tax_provider_id + - tax_rate + - updated_at + properties: + id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + name: + description: The name of the region as displayed to the customer. If the Region only has one country it is recommended to write the country name. + type: string + example: EU + currency_code: + description: The 3 character currency code that the Region uses. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + currency: + description: Available if the relation `currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + tax_rate: + description: The tax rate that should be charged on purchases in the Region. + type: number + example: 0 + tax_rates: + description: The tax rates that are included in the Region. Available if the relation `tax_rates` is expanded. + type: array + items: + $ref: '#/components/schemas/TaxRate' + tax_code: + description: The tax code used on purchases in the Region. This may be used by other systems for accounting purposes. + nullable: true + type: string + example: null + gift_cards_taxable: + description: Whether the gift cards are taxable or not in this region. + type: boolean + default: true + automatic_taxes: + description: Whether taxes should be automated in this region. + type: boolean + default: true + countries: + description: The countries that are included in the Region. Available if the relation `countries` is expanded. + type: array + items: + $ref: '#/components/schemas/Country' + tax_provider_id: + description: The ID of the tax provider used in this region + nullable: true + type: string + example: null + tax_provider: + description: Available if the relation `tax_provider` is expanded. + nullable: true + $ref: '#/components/schemas/TaxProvider' + payment_providers: + description: The Payment Providers that can be used to process Payments in the Region. Available if the relation `payment_providers` is expanded. + type: array + items: + $ref: '#/components/schemas/PaymentProvider' + fulfillment_providers: + description: The Fulfillment Providers that can be used to fulfill orders in the Region. Available if the relation `fulfillment_providers` is expanded. + type: array + items: + $ref: '#/components/schemas/FulfillmentProvider' + includes_tax: + description: '[EXPERIMENTAL] Does the prices for the region include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReservationItemDTO: + title: Reservation item + description: Represents a reservation of an inventory item at a stock location + type: object + required: + - id + - location_id + - inventory_item_id + - quantity + properties: + id: + description: The id of the reservation item + type: string + location_id: + description: The id of the location of the reservation + type: string + inventory_item_id: + description: The id of the inventory item the reservation relates to + type: string + quantity: + description: The id of the reservation item + type: number + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + Return: + title: Return + description: Return orders hold information about Line Items that a Customer wishes to send back, along with how the items will be returned. Returns can be used as part of a Swap. + type: object + required: + - claim_order_id + - created_at + - id + - idempotency_key + - location_id + - metadata + - no_notification + - order_id + - received_at + - refund_amount + - shipping_data + - status + - swap_id + - updated_at + properties: + id: + description: The return's ID + type: string + example: ret_01F0YET7XPCMF8RZ0Y151NZV2V + status: + description: Status of the Return. + type: string + enum: + - requested + - received + - requires_action + - canceled + default: requested + items: + description: The Return Items that will be shipped back to the warehouse. Available if the relation `items` is expanded. + type: array + items: + $ref: '#/components/schemas/ReturnItem' + swap_id: + description: The ID of the Swap that the Return is a part of. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + claim_order_id: + description: The ID of the Claim that the Return is a part of. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + order_id: + description: The ID of the Order that the Return is made from. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + shipping_method: + description: The Shipping Method that will be used to send the Return back. Can be null if the Customer facilitates the return shipment themselves. Available if the relation `shipping_method` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingMethod' + shipping_data: + description: Data about the return shipment as provided by the Fulfilment Provider that handles the return shipment. + nullable: true + type: object + example: {} + location_id: + description: The id of the stock location the return will be added back. + nullable: true + type: string + example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK + refund_amount: + description: The amount that should be refunded as a result of the return. + type: integer + example: 1000 + no_notification: + description: When set to true, no notification will be sent related to this return. + nullable: true + type: boolean + example: false + idempotency_key: + description: Randomly generated key used to continue the completion of the return in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + received_at: + description: The date with timezone at which the return was received. + nullable: true + type: string + format: date-time + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReturnItem: + title: Return Item + description: Correlates a Line Item with a Return, keeping track of the quantity of the Line Item that will be returned. + type: object + required: + - is_requested + - item_id + - metadata + - note + - quantity + - reason_id + - received_quantity + - requested_quantity + - return_id + properties: + return_id: + description: The id of the Return that the Return Item belongs to. + type: string + example: ret_01F0YET7XPCMF8RZ0Y151NZV2V + item_id: + description: The id of the Line Item that the Return Item references. + type: string + example: item_01G8ZC9GWT6B2GP5FSXRXNFNGN + return_order: + description: Available if the relation `return_order` is expanded. + nullable: true + type: object + item: + description: Available if the relation `item` is expanded. + nullable: true + $ref: '#/components/schemas/LineItem' + quantity: + description: The quantity of the Line Item that is included in the Return. + type: integer + example: 1 + is_requested: + description: Whether the Return Item was requested initially or received unexpectedly in the warehouse. + type: boolean + default: true + requested_quantity: + description: The quantity that was originally requested to be returned. + nullable: true + type: integer + example: 1 + received_quantity: + description: The quantity that was received in the warehouse. + nullable: true + type: integer + example: 1 + reason_id: + description: The ID of the reason for returning the item. + nullable: true + type: string + example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ + reason: + description: Available if the relation `reason` is expanded. + nullable: true + $ref: '#/components/schemas/ReturnReason' + note: + description: An optional note with additional details about the Return. + nullable: true + type: string + example: I didn't like it. + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ReturnReason: + title: Return Reason + description: A Reason for why a given product is returned. A Return Reason can be used on Return Items in order to indicate why a Line Item was returned. + type: object + required: + - created_at + - deleted_at + - description + - id + - label + - metadata + - parent_return_reason_id + - updated_at + - value + properties: + id: + description: The return reason's ID + type: string + example: rr_01G8X82GCCV2KSQHDBHSSAH5TQ + value: + description: The value to identify the reason by. + type: string + example: damaged + label: + description: A text that can be displayed to the Customer as a reason. + type: string + example: Damaged goods + description: + description: A description of the Reason. + nullable: true + type: string + example: Items that are damaged + parent_return_reason_id: + description: The ID of the parent reason. + nullable: true + type: string + example: null + parent_return_reason: + description: Available if the relation `parent_return_reason` is expanded. + nullable: true + type: object + return_reason_children: + description: Available if the relation `return_reason_children` is expanded. + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + SalesChannel: + title: Sales Channel + description: A Sales Channel + type: object + required: + - created_at + - deleted_at + - description + - id + - is_disabled + - name + - updated_at + properties: + id: + description: The sales channel's ID + type: string + example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A + name: + description: The name of the sales channel. + type: string + example: Market + description: + description: The description of the sales channel. + nullable: true + type: string + example: Multi-vendor market + is_disabled: + description: Specify if the sales channel is enabled or disabled. + type: boolean + default: false + locations: + description: The Stock Locations related to the sales channel. Available if the relation `locations` is expanded. + type: array + items: + $ref: '#/components/schemas/SalesChannelLocation' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + SalesChannelLocation: + title: Sales Channel Stock Location + description: Sales Channel Stock Location link sales channels with stock locations. + type: object + required: + - created_at + - deleted_at + - id + - location_id + - sales_channel_id + - updated_at + properties: + id: + description: The Sales Channel Stock Location's ID + type: string + example: scloc_01G8X9A7ESKAJXG2H0E6F1MW7A + sales_channel_id: + description: The id of the Sales Channel + type: string + example: sc_01G8X9A7ESKAJXG2H0E6F1MW7A + location_id: + description: The id of the Location Stock. + type: string + sales_channel: + description: The sales channel the location is associated with. Available if the relation `sales_channel` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + ShippingMethod: + title: Shipping Method + description: Shipping Methods represent a way in which an Order or Return can be shipped. Shipping Methods are built from a Shipping Option, but may contain additional details, that can be necessary for the Fulfillment Provider to handle the shipment. + type: object + required: + - cart_id + - claim_order_id + - data + - id + - order_id + - price + - return_id + - shipping_option_id + - swap_id + properties: + id: + description: The shipping method's ID + type: string + example: sm_01F0YET7DR2E7CYVSDHM593QG2 + shipping_option_id: + description: The id of the Shipping Option that the Shipping Method is built from. + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + order_id: + description: The id of the Order that the Shipping Method is used on. + nullable: true + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + claim_order_id: + description: The id of the Claim that the Shipping Method is used on. + nullable: true + type: string + example: null + claim_order: + description: A claim order object. Available if the relation `claim_order` is expanded. + nullable: true + type: object + cart_id: + description: The id of the Cart that the Shipping Method is used on. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + swap_id: + description: The id of the Swap that the Shipping Method is used on. + nullable: true + type: string + example: null + swap: + description: A swap object. Available if the relation `swap` is expanded. + nullable: true + type: object + return_id: + description: The id of the Return that the Shipping Method is used on. + nullable: true + type: string + example: null + return_order: + description: A return object. Available if the relation `return_order` is expanded. + nullable: true + type: object + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + tax_lines: + description: Available if the relation `tax_lines` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethodTaxLine' + price: + description: The amount to charge for the Shipping Method. The currency of the price is defined by the Region that the Order that the Shipping Method belongs to is a part of. + type: integer + example: 200 + data: + description: Additional data that the Fulfillment Provider needs to fulfill the shipment. This is used in combination with the Shipping Options data, and may contain information such as a drop point id. + type: object + example: {} + includes_tax: + description: '[EXPERIMENTAL] Indicates if the shipping method price include tax' + type: boolean + default: false + subtotal: + description: The subtotal of the shipping + type: integer + example: 8000 + total: + description: The total amount of the shipping + type: integer + example: 8200 + tax_total: + description: The total of tax + type: integer + example: 0 + ShippingMethodTaxLine: + title: Shipping Method Tax Line + description: Shipping Method Tax Line + type: object + required: + - code + - created_at + - id + - shipping_method_id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The line item tax line's ID + type: string + example: smtl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + shipping_method_id: + description: The ID of the line item + type: string + example: sm_01F0YET7DR2E7CYVSDHM593QG2 + shipping_method: + description: Available if the relation `shipping_method` is expanded. + nullable: true + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingOption: + title: Shipping Option + description: Shipping Options represent a way in which an Order or Return can be shipped. Shipping Options have an associated Fulfillment Provider that will be used when the fulfillment of an Order is initiated. Shipping Options themselves cannot be added to Carts, but serve as a template for Shipping Methods. This distinction makes it possible to customize individual Shipping Methods with additional information. + type: object + required: + - admin_only + - amount + - created_at + - data + - deleted_at + - id + - is_return + - metadata + - name + - price_type + - profile_id + - provider_id + - region_id + - updated_at + properties: + id: + description: The shipping option's ID + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + name: + description: The name given to the Shipping Option - this may be displayed to the Customer. + type: string + example: PostFake Standard + region_id: + description: The region's ID + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + profile_id: + description: The ID of the Shipping Profile that the shipping option belongs to. Shipping Profiles have a set of defined Shipping Options that can be used to Fulfill a given set of Products. + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + profile: + description: Available if the relation `profile` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingProfile' + provider_id: + description: The id of the Fulfillment Provider, that will be used to process Fulfillments from the Shipping Option. + type: string + example: manual + provider: + description: Available if the relation `provider` is expanded. + nullable: true + $ref: '#/components/schemas/FulfillmentProvider' + price_type: + description: The type of pricing calculation that is used when creatin Shipping Methods from the Shipping Option. Can be `flat_rate` for fixed prices or `calculated` if the Fulfillment Provider can provide price calulations. + type: string + enum: + - flat_rate + - calculated + example: flat_rate + amount: + description: The amount to charge for shipping when the Shipping Option price type is `flat_rate`. + nullable: true + type: integer + example: 200 + is_return: + description: Flag to indicate if the Shipping Option can be used for Return shipments. + type: boolean + default: false + admin_only: + description: Flag to indicate if the Shipping Option usage is restricted to admin users. + type: boolean + default: false + requirements: + description: The requirements that must be satisfied for the Shipping Option to be available for a Cart. Available if the relation `requirements` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingOptionRequirement' + data: + description: The data needed for the Fulfillment Provider to identify the Shipping Option. + type: object + example: {} + includes_tax: + description: '[EXPERIMENTAL] Does the shipping option price include tax' + type: boolean + default: false + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingOptionRequirement: + title: Shipping Option Requirement + description: A requirement that a Cart must satisfy for the Shipping Option to be available to the Cart. + type: object + required: + - amount + - deleted_at + - id + - shipping_option_id + - type + properties: + id: + description: The shipping option requirement's ID + type: string + example: sor_01G1G5V29AB4CTNDRFSRWSRKWD + shipping_option_id: + description: The id of the Shipping Option that the hipping option requirement belongs to + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + type: object + type: + description: The type of the requirement, this defines how the value will be compared to the Cart's total. `min_subtotal` requirements define the minimum subtotal that is needed for the Shipping Option to be available, while the `max_subtotal` defines the maximum subtotal that the Cart can have for the Shipping Option to be available. + type: string + enum: + - min_subtotal + - max_subtotal + example: min_subtotal + amount: + description: The amount to compare the Cart subtotal to. + type: integer + example: 100 + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + ShippingProfile: + title: Shipping Profile + description: Shipping Profiles have a set of defined Shipping Options that can be used to fulfill a given set of Products. + type: object + required: + - created_at + - deleted_at + - id + - metadata + - name + - type + - updated_at + properties: + id: + description: The shipping profile's ID + type: string + example: sp_01G1G5V239ENSZ5MV4JAR737BM + name: + description: The name given to the Shipping profile - this may be displayed to the Customer. + type: string + example: Default Shipping Profile + type: + description: The type of the Shipping Profile, may be `default`, `gift_card` or `custom`. + type: string + enum: + - default + - gift_card + - custom + example: default + products: + description: The Products that the Shipping Profile defines Shipping Options for. Available if the relation `products` is expanded. + type: array + items: + type: object + shipping_options: + description: The Shipping Options that can be used to fulfill the Products in the Shipping Profile. Available if the relation `shipping_options` is expanded. + type: array + items: + type: object + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + ShippingTaxRate: + title: Shipping Tax Rate + description: Associates a tax rate with a shipping option to indicate that the shipping option is taxed in a certain way + type: object + required: + - created_at + - metadata + - rate_id + - shipping_option_id + - updated_at + properties: + shipping_option_id: + description: The ID of the Shipping Option + type: string + example: so_01G1G5V27GYX4QXNARRQCW1N8T + shipping_option: + description: Available if the relation `shipping_option` is expanded. + nullable: true + $ref: '#/components/schemas/ShippingOption' + rate_id: + description: The ID of the Tax Rate + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + tax_rate: + description: Available if the relation `tax_rate` is expanded. + nullable: true + $ref: '#/components/schemas/TaxRate' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + StagedJob: + title: Staged Job + description: A staged job resource + type: object + required: + - data + - event_name + - id + - options + properties: + id: + description: The staged job's ID + type: string + example: job_01F0YET7BZTARY9MKN1SJ7AAXF + event_name: + description: The name of the event + type: string + example: order.placed + data: + description: Data necessary for the job + type: object + example: {} + option: + description: The staged job's option + type: object + example: {} + StockLocationAddressDTO: + title: Stock Location Address + description: Represents a Stock Location Address + type: object + required: + - address_1 + - country_code + - created_at + - updated_at + properties: + id: + type: string + description: The stock location address' ID + example: laddr_51G4ZW853Y6TFXWPG5ENJ81X42 + address_1: + type: string + description: Stock location address + example: 35, Jhon Doe Ave + address_2: + type: string + description: Stock location address' complement + example: apartment 4432 + company: + type: string + description: Stock location company' name + example: Medusa + city: + type: string + description: Stock location address' city + example: Mexico city + country_code: + type: string + description: Stock location address' country + example: MX + phone: + type: string + description: Stock location address' phone number + example: +1 555 61646 + postal_code: + type: string + description: Stock location address' postal code + example: HD3-1G8 + province: + type: string + description: Stock location address' province + example: Sinaloa + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + StockLocationAddressInput: + title: Stock Location Address Input + description: Represents a Stock Location Address Input + type: object + required: + - address_1 + - country_code + properties: + address_1: + type: string + description: Stock location address + example: 35, Jhon Doe Ave + address_2: + type: string + description: Stock location address' complement + example: apartment 4432 + city: + type: string + description: Stock location address' city + example: Mexico city + country_code: + type: string + description: Stock location address' country + example: MX + phone: + type: string + description: Stock location address' phone number + example: +1 555 61646 + postal_code: + type: string + description: Stock location address' postal code + example: HD3-1G8 + province: + type: string + description: Stock location address' province + example: Sinaloa + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + StockLocationDTO: + title: Stock Location + description: Represents a Stock Location + type: object + required: + - id + - name + - address_id + - created_at + - updated_at + properties: + id: + type: string + description: The stock location's ID + example: sloc_51G4ZW853Y6TFXWPG5ENJ81X42 + address_id: + type: string + description: Stock location address' ID + example: laddr_05B2ZE853Y6FTXWPW85NJ81A44 + name: + type: string + description: The name of the stock location + example: Main Warehouse + address: + description: The Address of the Stock Location + allOf: + - $ref: '#/components/schemas/StockLocationAddressDTO' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + created_at: + type: string + description: The date with timezone at which the resource was created. + format: date-time + updated_at: + type: string + description: The date with timezone at which the resource was updated. + format: date-time + deleted_at: + type: string + description: The date with timezone at which the resource was deleted. + format: date-time + StockLocationExpandedDTO: + allOf: + - $ref: '#/components/schemas/StockLocationDTO' + - type: object + properties: + sales_channels: + $ref: '#/components/schemas/SalesChannel' + Store: + title: Store + description: Holds settings for the Store, such as name, currencies, etc. + type: object + required: + - created_at + - default_currency_code + - default_location_id + - id + - invite_link_template + - metadata + - name + - payment_link_template + - swap_link_template + - updated_at + properties: + id: + description: The store's ID + type: string + example: store_01G1G5V21KADXNGH29BJMAJ4B4 + name: + description: The name of the Store - this may be displayed to the Customer. + type: string + example: Medusa Store + default_currency_code: + description: The 3 character currency code that is the default of the store. + type: string + example: usd + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_4217#Active_codes + description: See a list of codes. + default_currency: + description: Available if the relation `default_currency` is expanded. + nullable: true + $ref: '#/components/schemas/Currency' + currencies: + description: The currencies that are enabled for the Store. Available if the relation `currencies` is expanded. + type: array + items: + $ref: '#/components/schemas/Currency' + swap_link_template: + description: A template to generate Swap links from. Use {{cart_id}} to include the Swap's `cart_id` in the link. + nullable: true + type: string + example: null + payment_link_template: + description: A template to generate Payment links from. Use {{cart_id}} to include the payment's `cart_id` in the link. + nullable: true + type: string + example: null + invite_link_template: + description: A template to generate Invite links from + nullable: true + type: string + example: null + default_location_id: + description: The location ID the store is associated with. + nullable: true + type: string + example: null + default_sales_channel_id: + description: The sales channel ID the cart is associated with. + nullable: true + type: string + example: null + default_sales_channel: + description: A sales channel object. Available if the relation `default_sales_channel` is expanded. + nullable: true + $ref: '#/components/schemas/SalesChannel' + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + StoreAuthRes: + type: object + x-expanded-relations: + field: customer + relations: + - orders + - orders.items + - shipping_addresses + required: + - customer + properties: + customer: + $ref: '#/components/schemas/Customer' + StoreCartShippingOptionsListRes: + type: object + x-expanded-relations: + field: shipping_options + implicit: + - profile + - requirements + required: + - shipping_options + properties: + shipping_options: + type: array + items: + $ref: '#/components/schemas/PricedShippingOption' + StoreCartsRes: + type: object + x-expanded-relations: + field: cart + relations: + - billing_address + - discounts + - discounts.rule + - gift_cards + - items + - items.adjustments + - items.variant + - payment + - payment_sessions + - region + - region.countries + - region.payment_providers + - shipping_address + - shipping_methods + eager: + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - items + - items.variant + - items.variant.product + - items.tax_lines + - items.adjustments + - gift_cards + - discounts + - discounts.rule + - shipping_methods + - shipping_methods.tax_lines + - shipping_address + - region + - region.tax_rates + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - item_tax_total + - refundable_amount + - refunded_total + - shipping_tax_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + required: + - cart + properties: + cart: + $ref: '#/components/schemas/Cart' + StoreCollectionsListRes: + type: object + required: + - collections + - count + - offset + - limit + properties: + collections: + type: array + items: + $ref: '#/components/schemas/ProductCollection' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + StoreCollectionsRes: + type: object + required: + - collection + properties: + collection: + $ref: '#/components/schemas/ProductCollection' + StoreCompleteCartRes: + type: object + required: + - type + - data + properties: + type: + type: string + description: The type of the data property. + enum: + - order + - cart + - swap + data: + type: object + description: The data of the result object. Its type depends on the type field. + oneOf: + - type: object + allOf: + - description: Cart was successfully authorized and order was placed successfully. + - $ref: '#/components/schemas/Order' + - type: object + allOf: + - description: Cart was successfully authorized but requires further actions. + - $ref: '#/components/schemas/Cart' + - type: object + allOf: + - description: When cart is used for a swap and it has been completed successfully. + - $ref: '#/components/schemas/Swap' + StoreCustomersListOrdersRes: + type: object + x-expanded-relations: + field: orders + relations: + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.tracking_links + - items + - items.variant + - payments + - region + - shipping_address + - shipping_methods + eager: + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - customer + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_address + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total + required: + - orders + - count + - offset + - limit + properties: + orders: + type: array + items: + $ref: '#/components/schemas/Order' + count: + description: The total number of items available + type: integer + offset: + description: The number of items skipped before these items + type: integer + limit: + description: The number of items per page + type: integer + StoreCustomersListPaymentMethodsRes: + type: object + required: + - payment_methods + properties: + payment_methods: + type: array + items: + type: object + required: + - provider_id + - data + properties: + provider_id: + description: The id of the Payment Provider where the payment method is saved. + type: string + data: + description: The data needed for the Payment Provider to use the saved payment method. + type: object + StoreCustomersRes: + type: object + x-expanded-relations: + field: customer + relations: + - billing_address + - shipping_addresses + required: + - customer + properties: + customer: + $ref: '#/components/schemas/Customer' + StoreCustomersResetPasswordRes: + type: object + required: + - customer + properties: + customer: + $ref: '#/components/schemas/Customer' + StoreGetAuthEmailRes: + type: object + required: + - exists + properties: + exists: + description: Whether email exists or not. + type: boolean + StoreGetProductCategoriesCategoryRes: + type: object + x-expanded-relations: + field: product_category + relations: + - category_children + - parent_category + required: + - product_category + properties: + product_category: + $ref: '#/components/schemas/ProductCategory' + StoreGetProductCategoriesRes: + type: object + x-expanded-relations: + field: product_categories + relations: + - category_children + - parent_category + required: + - product_categories + - count + - offset + - limit + properties: + product_categories: + type: array + items: + $ref: '#/components/schemas/ProductCategory' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + StoreGiftCardsRes: + type: object + required: + - gift_card + properties: + gift_card: + $ref: '#/components/schemas/GiftCard' + StoreOrderEditsRes: + type: object + x-expanded-relations: + field: order_edit + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + required: + - order_edit + properties: + order_edit: + $ref: '#/components/schemas/OrderEdit' + StoreOrdersRes: + type: object + required: + - order + x-expanded-relations: + field: order + relations: + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.tracking_links + - items + - items.variant + - payments + - region + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total + properties: + order: + $ref: '#/components/schemas/Order' + StorePaymentCollectionSessionsReq: + type: object + required: + - provider_id + properties: + provider_id: + type: string + description: The ID of the Payment Provider. + StorePaymentCollectionsRes: + type: object + x-expanded-relations: + field: payment_collection + relations: + - payment_sessions + - region + eager: + - region.fulfillment_providers + - region.payment_providers + required: + - payment_collection + properties: + payment_collection: + $ref: '#/components/schemas/PaymentCollection' + StorePaymentCollectionsSessionRes: + type: object + required: + - payment_session + properties: + payment_session: + $ref: '#/components/schemas/PaymentSession' + StorePostAuthReq: + type: object + required: + - email + - password + properties: + email: + type: string + description: The Customer's email. + password: + type: string + description: The Customer's password. + StorePostCartReq: + type: object + properties: + region_id: + type: string + description: The ID of the Region to create the Cart in. + sales_channel_id: + type: string + description: '[EXPERIMENTAL] The ID of the Sales channel to create the Cart in.' + country_code: + type: string + description: The 2 character ISO country code to create the Cart in. + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + items: + description: An optional array of `variant_id`, `quantity` pairs to generate Line Items from. + type: array + items: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + description: The id of the Product Variant to generate a Line Item from. + type: string + quantity: + description: The quantity of the Product Variant to add + type: integer + context: + description: An optional object to provide context to the Cart. The `context` field is automatically populated with `ip` and `user_agent` + type: object + example: + ip: '::1' + user_agent: Chrome + StorePostCartsCartLineItemsItemReq: + type: object + required: + - quantity + properties: + quantity: + type: number + description: The quantity to set the Line Item to. + StorePostCartsCartLineItemsReq: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + type: string + description: The id of the Product Variant to generate the Line Item from. + quantity: + type: number + description: The quantity of the Product Variant to add to the Line Item. + metadata: + type: object + description: An optional key-value map with additional details about the Line Item. + StorePostCartsCartPaymentSessionReq: + type: object + required: + - provider_id + properties: + provider_id: + type: string + description: The ID of the Payment Provider. + StorePostCartsCartPaymentSessionUpdateReq: + type: object + required: + - data + properties: + data: + type: object + description: The data to update the payment session with. + StorePostCartsCartReq: + type: object + properties: + region_id: + type: string + description: The id of the Region to create the Cart in. + country_code: + type: string + description: The 2 character ISO country code to create the Cart in. + externalDocs: + url: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + email: + type: string + description: An email to be used on the Cart. + format: email + sales_channel_id: + type: string + description: The ID of the Sales channel to update the Cart with. + billing_address: + description: The Address to be used for billing purposes. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + description: A full billing address object. + - type: string + description: The billing address ID + shipping_address: + description: The Address to be used for shipping. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + description: A full shipping address object. + - type: string + description: The shipping address ID + gift_cards: + description: An array of Gift Card codes to add to the Cart. + type: array + items: + type: object + required: + - code + properties: + code: + description: The code that a Gift Card is identified by. + type: string + discounts: + description: An array of Discount codes to add to the Cart. + type: array + items: + type: object + required: + - code + properties: + code: + description: The code that a Discount is identifed by. + type: string + customer_id: + description: The ID of the Customer to associate the Cart with. + type: string + context: + description: An optional object to provide context to the Cart. + type: object + example: + ip: '::1' + user_agent: Chrome + StorePostCartsCartShippingMethodReq: + type: object + required: + - option_id + properties: + option_id: + type: string + description: ID of the shipping option to create the method from + data: + type: object + description: Used to hold any data that the shipping method may need to process the fulfillment of the order. Look at the documentation for your installed fulfillment providers to find out what to send. + StorePostCustomersCustomerAcceptClaimReq: + type: object + required: + - token + properties: + token: + description: The invite token provided by the admin. + type: string + StorePostCustomersCustomerAddressesAddressReq: + anyOf: + - $ref: '#/components/schemas/AddressPayload' + StorePostCustomersCustomerAddressesReq: + type: object + required: + - address + properties: + address: + description: The Address to add to the Customer. + $ref: '#/components/schemas/AddressCreatePayload' + StorePostCustomersCustomerOrderClaimReq: + type: object + required: + - order_ids + properties: + order_ids: + description: The ids of the orders to claim + type: array + items: + type: string + StorePostCustomersCustomerPasswordTokenReq: + type: object + required: + - email + properties: + email: + description: The email of the customer. + type: string + format: email + StorePostCustomersCustomerReq: + type: object + properties: + first_name: + description: The Customer's first name. + type: string + last_name: + description: The Customer's last name. + type: string + billing_address: + description: The Address to be used for billing purposes. + anyOf: + - $ref: '#/components/schemas/AddressPayload' + description: The full billing address object + - type: string + description: The ID of an existing billing address + password: + description: The Customer's password. + type: string + phone: + description: The Customer's phone number. + type: string + email: + description: The email of the customer. + type: string + metadata: + description: Metadata about the customer. + type: object + StorePostCustomersReq: + type: object + required: + - first_name + - last_name + - email + - password + properties: + first_name: + description: The Customer's first name. + type: string + last_name: + description: The Customer's last name. + type: string + email: + description: The email of the customer. + type: string + format: email + password: + description: The Customer's password. + type: string + format: password + phone: + description: The Customer's phone number. + type: string + StorePostCustomersResetPasswordReq: + type: object + required: + - email + - password + - token + properties: + email: + description: The email of the customer. + type: string + format: email + password: + description: The Customer's password. + type: string + format: password + token: + description: The reset password token + type: string + StorePostOrderEditsOrderEditDecline: + type: object + properties: + declined_reason: + type: string + description: The reason for declining the OrderEdit. + StorePostPaymentCollectionsBatchSessionsAuthorizeReq: + type: object + required: + - session_ids + properties: + session_ids: + description: List of Payment Session IDs to authorize. + type: array + items: + type: string + StorePostPaymentCollectionsBatchSessionsReq: + type: object + required: + - sessions + properties: + sessions: + description: An array of payment sessions related to the Payment Collection. If the session_id is not provided, existing sessions not present will be deleted and the provided ones will be created. + type: array + items: + type: object + required: + - provider_id + - amount + properties: + provider_id: + type: string + description: The ID of the Payment Provider. + amount: + type: integer + description: The amount . + session_id: + type: string + description: The ID of the Payment Session to be updated. + StorePostReturnsReq: + type: object + required: + - order_id + - items + properties: + order_id: + type: string + description: The ID of the Order to create the Return from. + items: + description: The items to include in the Return. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item from the Order. + type: string + quantity: + description: The quantity to return. + type: integer + reason_id: + description: The ID of the return reason. + type: string + note: + description: A note to add to the item returned. + type: string + return_shipping: + description: If the Return is to be handled by the store operator the Customer can choose a Return Shipping Method. Alternatvely the Customer can handle the Return themselves. + type: object + required: + - option_id + properties: + option_id: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + StorePostSearchRes: + allOf: + - type: object + required: + - hits + properties: + hits: + description: Array of results. The format of the items depends on the search engine installed on the server. + type: array + - type: object + StorePostSwapsReq: + type: object + required: + - order_id + - return_items + - additional_items + properties: + order_id: + type: string + description: The ID of the Order to create the Swap for. + return_items: + description: The items to include in the Return. + type: array + items: + type: object + required: + - item_id + - quantity + properties: + item_id: + description: The ID of the Line Item from the Order. + type: string + quantity: + description: The quantity to swap. + type: integer + reason_id: + description: The ID of the reason of this return. + type: string + note: + description: The note to add to the item being swapped. + type: string + return_shipping_option: + type: string + description: The ID of the Shipping Option to create the Shipping Method from. + additional_items: + description: The items to exchange the returned items to. + type: array + items: + type: object + required: + - variant_id + - quantity + properties: + variant_id: + description: The ID of the Product Variant to send. + type: string + quantity: + description: The quantity to send of the variant. + type: integer + StoreProductTagsListRes: + type: object + required: + - product_tags + - count + - offset + - limit + properties: + product_tags: + type: array + items: + $ref: '#/components/schemas/ProductTag' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + StoreProductTypesListRes: + type: object + required: + - product_types + - count + - offset + - limit + properties: + product_types: + type: array + items: + $ref: '#/components/schemas/ProductType' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + StoreProductsListRes: + type: object + x-expanded-relations: + field: products + relations: + - collection + - images + - options + - options.values + - tags + - type + - variants + - variants.options + - variants.prices + required: + - products + - count + - offset + - limit + properties: + products: + type: array + items: + $ref: '#/components/schemas/PricedProduct' + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page + StoreProductsRes: + type: object + x-expanded-relations: + field: product + relations: + - collection + - images + - options + - options.values + - tags + - type + - variants + - variants.options + - variants.prices + required: + - product + properties: + product: + $ref: '#/components/schemas/PricedProduct' + StoreRegionsListRes: + type: object + x-expanded-relations: + field: regions + relations: + - countries + - payment_providers + - fulfillment_providers + eager: + - payment_providers + - fulfillment_providers + required: + - regions + properties: + regions: + type: array + items: + $ref: '#/components/schemas/Region' + StoreRegionsRes: + type: object + x-expanded-relations: + field: region + relations: + - countries + - payment_providers + - fulfillment_providers + eager: + - payment_providers + - fulfillment_providers + required: + - region + properties: + region: + $ref: '#/components/schemas/Region' + StoreReturnReasonsListRes: + type: object + x-expanded-relations: + field: return_reasons + relations: + - parent_return_reason + - return_reason_children + required: + - return_reasons + properties: + return_reasons: + type: array + items: + $ref: '#/components/schemas/ReturnReason' + StoreReturnReasonsRes: + type: object + x-expanded-relations: + field: return_reason + relations: + - parent_return_reason + - return_reason_children + required: + - return_reason + properties: + return_reason: + $ref: '#/components/schemas/ReturnReason' + StoreReturnsRes: + type: object + x-expanded-relations: + field: return + relations: + - items + - items.reason + eager: + - items + required: + - return + properties: + return: + $ref: '#/components/schemas/Return' + StoreShippingOptionsListRes: + type: object + x-expanded-relations: + field: shipping_options + relations: + - requirements + required: + - shipping_options + properties: + shipping_options: + type: array + items: + $ref: '#/components/schemas/PricedShippingOption' + StoreSwapsRes: + type: object + x-expanded-relations: + field: swap + relations: + - additional_items + - additional_items.variant + - cart + - fulfillments + - order + - payment + - return_order + - return_order.shipping_method + - shipping_address + - shipping_methods + eager: + - fulfillments.items + required: + - swap + properties: + swap: + $ref: '#/components/schemas/Swap' + StoreVariantsListRes: + type: object + x-expanded-relations: + field: variants + relations: + - prices + - options + - product + required: + - variants + properties: + variants: + type: array + items: + $ref: '#/components/schemas/PricedVariant' + StoreVariantsRes: + type: object + x-expanded-relations: + field: variant + relations: + - prices + - options + - product + required: + - variant + properties: + variant: + $ref: '#/components/schemas/PricedVariant' + Swap: + title: Swap + description: Swaps can be created when a Customer wishes to exchange Products that they have purchased to different Products. Swaps consist of a Return of previously purchased Products and a Fulfillment of new Products, the amount paid for the Products being returned will be used towards payment for the new Products. In the case where the amount paid for the the Products being returned exceed the amount to be paid for the new Products, a Refund will be issued for the difference. + type: object + required: + - allow_backorder + - canceled_at + - cart_id + - confirmed_at + - created_at + - deleted_at + - difference_due + - fulfillment_status + - id + - idempotency_key + - metadata + - no_notification + - order_id + - payment_status + - shipping_address_id + - updated_at + properties: + id: + description: The swap's ID + type: string + example: swap_01F0YET86Y9G92D3YDR9Y6V676 + fulfillment_status: + description: The status of the Fulfillment of the Swap. + type: string + enum: + - not_fulfilled + - fulfilled + - shipped + - partially_shipped + - canceled + - requires_action + example: not_fulfilled + payment_status: + description: The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount. + type: string + enum: + - not_paid + - awaiting + - captured + - confirmed + - canceled + - difference_refunded + - partially_refunded + - refunded + - requires_action + example: not_paid + order_id: + description: The ID of the Order where the Line Items to be returned where purchased. + type: string + example: order_01G8TJSYT9M6AVS5N4EMNFS1EK + order: + description: An order object. Available if the relation `order` is expanded. + nullable: true + type: object + additional_items: + description: The new Line Items to ship to the Customer. Available if the relation `additional_items` is expanded. + type: array + items: + $ref: '#/components/schemas/LineItem' + return_order: + description: A return order object. The Return that is issued for the return part of the Swap. Available if the relation `return_order` is expanded. + nullable: true + type: object + fulfillments: + description: The Fulfillments used to send the new Line Items. Available if the relation `fulfillments` is expanded. + type: array + items: + type: object + payment: + description: The Payment authorized when the Swap requires an additional amount to be charged from the Customer. Available if the relation `payment` is expanded. + nullable: true + type: object + difference_due: + description: The difference that is paid or refunded as a result of the Swap. May be negative when the amount paid for the returned items exceed the total of the new Products. + nullable: true + type: integer + example: 0 + shipping_address_id: + description: The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order. + nullable: true + type: string + example: addr_01G8ZH853YPY9B94857DY91YGW + shipping_address: + description: Available if the relation `shipping_address` is expanded. + nullable: true + $ref: '#/components/schemas/Address' + shipping_methods: + description: The Shipping Methods used to fulfill the additional items purchased. Available if the relation `shipping_methods` is expanded. + type: array + items: + $ref: '#/components/schemas/ShippingMethod' + cart_id: + description: The id of the Cart that the Customer will use to confirm the Swap. + nullable: true + type: string + example: cart_01G8ZH853Y6TFXWPG5EYE81X63 + cart: + description: A cart object. Available if the relation `cart` is expanded. + nullable: true + type: object + confirmed_at: + description: The date with timezone at which the Swap was confirmed by the Customer. + nullable: true + type: string + format: date-time + canceled_at: + description: The date with timezone at which the Swap was canceled. + nullable: true + type: string + format: date-time + no_notification: + description: If set to true, no notification will be sent related to this swap + nullable: true + type: boolean + example: false + allow_backorder: + description: If true, swaps can be completed with items out of stock + type: boolean + default: false + idempotency_key: + description: Randomly generated key used to continue the completion of the swap in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TaxLine: + title: Tax Line + description: Line item that specifies an amount of tax to add to a line item. + type: object + required: + - code + - created_at + - id + - metadata + - name + - rate + - updated_at + properties: + id: + description: The tax line's ID + type: string + example: tl_01G1G5V2DRX1SK6NQQ8VVX4HQ8 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + rate: + description: The numeric rate to charge tax by + type: number + example: 10 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TaxProvider: + title: Tax Provider + description: The tax service used to calculate taxes + type: object + required: + - id + - is_installed + properties: + id: + description: The id of the tax provider as given by the plugin. + type: string + example: manual + is_installed: + description: Whether the plugin is installed in the current version. Plugins that are no longer installed are not deleted by will have this field set to `false`. + type: boolean + default: true + TaxRate: + title: Tax Rate + description: A Tax Rate can be used to associate a certain rate to charge on products within a given Region + type: object + required: + - code + - created_at + - id + - metadata + - name + - rate + - region_id + - updated_at + properties: + id: + description: The tax rate's ID + type: string + example: txr_01G8XDBAWKBHHJRKH0AV02KXBR + rate: + description: The numeric rate to charge + nullable: true + type: number + example: 10 + code: + description: A code to identify the tax type by + nullable: true + type: string + example: tax01 + name: + description: A human friendly name for the tax + type: string + example: Tax Example + region_id: + description: The id of the Region that the rate belongs to + type: string + example: reg_01G1G5V26T9H8Y0M4JNE3YGA4G + region: + description: A region object. Available if the relation `region` is expanded. + nullable: true + type: object + products: + description: The products that belong to this tax rate. Available if the relation `products` is expanded. + type: array + items: + $ref: '#/components/schemas/Product' + product_types: + description: The product types that belong to this tax rate. Available if the relation `product_types` is expanded. + type: array + items: + $ref: '#/components/schemas/ProductType' + shipping_options: + type: array + description: The shipping options that belong to this tax rate. Available if the relation `shipping_options` is expanded. + items: + $ref: '#/components/schemas/ShippingOption' + product_count: + description: The count of products + type: integer + example: 10 + product_type_count: + description: The count of product types + type: integer + example: 2 + shipping_option_count: + description: The count of shipping options + type: integer + example: 1 + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + TrackingLink: + title: Tracking Link + description: Tracking Link holds information about tracking numbers for a Fulfillment. Tracking Links can optionally contain a URL that can be visited to see the status of the shipment. + type: object + required: + - created_at + - deleted_at + - fulfillment_id + - id + - idempotency_key + - metadata + - tracking_number + - updated_at + - url + properties: + id: + description: The tracking link's ID + type: string + example: tlink_01G8ZH853Y6TFXWPG5EYE81X63 + url: + description: The URL at which the status of the shipment can be tracked. + nullable: true + type: string + format: uri + tracking_number: + description: The tracking number given by the shipping carrier. + type: string + format: RH370168054CN + fulfillment_id: + description: The id of the Fulfillment that the Tracking Link references. + type: string + example: ful_01G8ZRTMQCA76TXNAT81KPJZRF + fulfillment: + description: Available if the relation `fulfillment` is expanded. + nullable: true + type: object + idempotency_key: + description: Randomly generated key used to continue the completion of a process in case of failure. + nullable: true + type: string + externalDocs: + url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key + description: Learn more how to use the idempotency key. + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white + UpdateStockLocationInput: + title: Update Stock Location Input + description: Represents the Input to update a Stock Location + type: object + properties: + name: + type: string + description: The stock location name + address_id: + type: string + description: The Stock location address ID + address: + description: Stock location address object + allOf: + - $ref: '#/components/schemas/StockLocationAddressInput' + - type: object + metadata: + type: object + description: An optional key-value map with additional details + example: + car: white + User: + title: User + description: Represents a User who can manage store settings. + type: object + required: + - api_token + - created_at + - deleted_at + - email + - first_name + - id + - last_name + - metadata + - role + - updated_at + properties: + id: + description: The user's ID + type: string + example: usr_01G1G5V26F5TB3GPAPNJ8X1S3V + role: + description: The user's role + type: string + enum: + - admin + - member + - developer + default: member + email: + description: The email of the User + type: string + format: email + first_name: + description: The first name of the User + nullable: true + type: string + example: Levi + last_name: + description: The last name of the User + nullable: true + type: string + example: Bogan + api_token: + description: An API token associated with the user. + nullable: true + type: string + example: null + created_at: + description: The date with timezone at which the resource was created. + type: string + format: date-time + updated_at: + description: The date with timezone at which the resource was updated. + type: string + format: date-time + deleted_at: + description: The date with timezone at which the resource was deleted. + nullable: true + type: string + format: date-time + metadata: + description: An optional key-value map with additional details + nullable: true + type: object + example: + car: white diff --git a/docs/api/store/code_samples/JavaScript/auth/get.js b/docs/api/store/code_samples/JavaScript/store_auth/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/auth/get.js rename to docs/api/store/code_samples/JavaScript/store_auth/get.js diff --git a/docs/api/store/code_samples/JavaScript/auth/post.js b/docs/api/store/code_samples/JavaScript/store_auth/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/auth/post.js rename to docs/api/store/code_samples/JavaScript/store_auth/post.js diff --git a/docs/api/store/code_samples/JavaScript/auth_{email}/get.js b/docs/api/store/code_samples/JavaScript/store_auth_{email}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/auth_{email}/get.js rename to docs/api/store/code_samples/JavaScript/store_auth_{email}/get.js diff --git a/docs/api/store/code_samples/JavaScript/carts/post.js b/docs/api/store/code_samples/JavaScript/store_carts/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts/post.js rename to docs/api/store/code_samples/JavaScript/store_carts/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_complete/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_complete/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_complete/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_complete/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_discounts_{code}/delete.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_discounts_{code}/delete.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_discounts_{code}/delete.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_discounts_{code}/delete.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_line-items/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_line-items/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_line-items_{line_id}/delete.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/delete.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_line-items_{line_id}/delete.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/delete.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_line-items_{line_id}/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_line-items_{line_id}/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-session/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-session/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_payment-session/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-session/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/delete.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/delete.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/delete.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/delete.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/post.js similarity index 99% rename from docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/post.js index 21e0253c2c..fbb0e0a564 100644 --- a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/post.js +++ b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/post.js @@ -2,6 +2,7 @@ import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) medusa.carts.updatePaymentSession(cart_id, 'manual', { data: { + } }) .then(({ cart }) => { diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}_refresh/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}_refresh/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.js diff --git a/docs/api/store/code_samples/JavaScript/carts_{id}_shipping-methods/post.js b/docs/api/store/code_samples/JavaScript/store_carts_{id}_shipping-methods/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/carts_{id}_shipping-methods/post.js rename to docs/api/store/code_samples/JavaScript/store_carts_{id}_shipping-methods/post.js diff --git a/docs/api/store/code_samples/JavaScript/collections/get.js b/docs/api/store/code_samples/JavaScript/store_collections/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/collections/get.js rename to docs/api/store/code_samples/JavaScript/store_collections/get.js diff --git a/docs/api/store/code_samples/JavaScript/collections_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_collections_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/collections_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_collections_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/customers/post.js b/docs/api/store/code_samples/JavaScript/store_customers/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers/post.js rename to docs/api/store/code_samples/JavaScript/store_customers/post.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me/get.js b/docs/api/store/code_samples/JavaScript/store_customers_me/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me/get.js rename to docs/api/store/code_samples/JavaScript/store_customers_me/get.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me/post.js b/docs/api/store/code_samples/JavaScript/store_customers_me/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me/post.js rename to docs/api/store/code_samples/JavaScript/store_customers_me/post.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me_addresses/post.js b/docs/api/store/code_samples/JavaScript/store_customers_me_addresses/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me_addresses/post.js rename to docs/api/store/code_samples/JavaScript/store_customers_me_addresses/post.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me_addresses_{address_id}/delete.js b/docs/api/store/code_samples/JavaScript/store_customers_me_addresses_{address_id}/delete.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me_addresses_{address_id}/delete.js rename to docs/api/store/code_samples/JavaScript/store_customers_me_addresses_{address_id}/delete.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me_addresses_{address_id}/post.js b/docs/api/store/code_samples/JavaScript/store_customers_me_addresses_{address_id}/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me_addresses_{address_id}/post.js rename to docs/api/store/code_samples/JavaScript/store_customers_me_addresses_{address_id}/post.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me_orders/get.js b/docs/api/store/code_samples/JavaScript/store_customers_me_orders/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me_orders/get.js rename to docs/api/store/code_samples/JavaScript/store_customers_me_orders/get.js diff --git a/docs/api/store/code_samples/JavaScript/customers_me_payment-methods/get.js b/docs/api/store/code_samples/JavaScript/store_customers_me_payment-methods/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_me_payment-methods/get.js rename to docs/api/store/code_samples/JavaScript/store_customers_me_payment-methods/get.js diff --git a/docs/api/store/code_samples/JavaScript/customers_password-reset/post.js b/docs/api/store/code_samples/JavaScript/store_customers_password-reset/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_password-reset/post.js rename to docs/api/store/code_samples/JavaScript/store_customers_password-reset/post.js diff --git a/docs/api/store/code_samples/JavaScript/customers_password-token/post.js b/docs/api/store/code_samples/JavaScript/store_customers_password-token/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/customers_password-token/post.js rename to docs/api/store/code_samples/JavaScript/store_customers_password-token/post.js diff --git a/docs/api/store/code_samples/JavaScript/gift-cards_{code}/get.js b/docs/api/store/code_samples/JavaScript/store_gift-cards_{code}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/gift-cards_{code}/get.js rename to docs/api/store/code_samples/JavaScript/store_gift-cards_{code}/get.js diff --git a/docs/api/store/code_samples/JavaScript/order-edits_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_order-edits_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/order-edits_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_order-edits_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/order-edits_{id}_complete/post.js b/docs/api/store/code_samples/JavaScript/store_order-edits_{id}_complete/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/order-edits_{id}_complete/post.js rename to docs/api/store/code_samples/JavaScript/store_order-edits_{id}_complete/post.js diff --git a/docs/api/store/code_samples/JavaScript/order-edits_{id}_decline/post.js b/docs/api/store/code_samples/JavaScript/store_order-edits_{id}_decline/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/order-edits_{id}_decline/post.js rename to docs/api/store/code_samples/JavaScript/store_order-edits_{id}_decline/post.js diff --git a/docs/api/store/code_samples/JavaScript/orders/get.js b/docs/api/store/code_samples/JavaScript/store_orders/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/orders/get.js rename to docs/api/store/code_samples/JavaScript/store_orders/get.js diff --git a/docs/api/store/code_samples/JavaScript/orders_batch_customer_token/post.js b/docs/api/store/code_samples/JavaScript/store_orders_batch_customer_token/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/orders_batch_customer_token/post.js rename to docs/api/store/code_samples/JavaScript/store_orders_batch_customer_token/post.js diff --git a/docs/api/store/code_samples/JavaScript/orders_cart_{cart_id}/get.js b/docs/api/store/code_samples/JavaScript/store_orders_cart_{cart_id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/orders_cart_{cart_id}/get.js rename to docs/api/store/code_samples/JavaScript/store_orders_cart_{cart_id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/orders_customer_confirm/post.js b/docs/api/store/code_samples/JavaScript/store_orders_customer_confirm/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/orders_customer_confirm/post.js rename to docs/api/store/code_samples/JavaScript/store_orders_customer_confirm/post.js diff --git a/docs/api/store/code_samples/JavaScript/orders_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_orders_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/orders_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_orders_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions/post.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions/post.js similarity index 99% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions/post.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions/post.js index 3205e03ec7..59e3022db9 100644 --- a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions/post.js +++ b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions/post.js @@ -1,7 +1,9 @@ import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token + // Total amount = 10000 + // Adding a payment session medusa.paymentCollections.managePaymentSession(payment_id, { provider_id: "stripe" }) .then(({ payment_collection }) => { diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_batch/post.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_batch/post.js similarity index 99% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_batch/post.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_batch/post.js index fdc8f51a65..6a87deeeee 100644 --- a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_batch/post.js +++ b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_batch/post.js @@ -1,7 +1,9 @@ import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token + // Total amount = 10000 + // Adding two new sessions medusa.paymentCollections.managePaymentSessionsBatch(payment_id, [ { @@ -16,6 +18,7 @@ medusa.paymentCollections.managePaymentSessionsBatch(payment_id, [ .then(({ payment_collection }) => { console.log(payment_collection.id); }); + // Updating one session and removing the other medusa.paymentCollections.managePaymentSessionsBatch(payment_id, [ { diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_batch_authorize/post.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_batch_authorize/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_batch_authorize/post.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_batch_authorize/post.js diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}/post.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}/post.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}/post.js diff --git a/docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}_authorize/post.js b/docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}_authorize/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}_authorize/post.js rename to docs/api/store/code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}_authorize/post.js diff --git a/docs/api/store/code_samples/JavaScript/product-categories/get.js b/docs/api/store/code_samples/JavaScript/store_product-categories/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/product-categories/get.js rename to docs/api/store/code_samples/JavaScript/store_product-categories/get.js diff --git a/docs/api/store/code_samples/JavaScript/product-categories_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_product-categories_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/product-categories_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_product-categories_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/product-tags/get.js b/docs/api/store/code_samples/JavaScript/store_product-tags/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/product-tags/get.js rename to docs/api/store/code_samples/JavaScript/store_product-tags/get.js diff --git a/docs/api/store/code_samples/JavaScript/product-types/get.js b/docs/api/store/code_samples/JavaScript/store_product-types/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/product-types/get.js rename to docs/api/store/code_samples/JavaScript/store_product-types/get.js diff --git a/docs/api/store/code_samples/JavaScript/products/get.js b/docs/api/store/code_samples/JavaScript/store_products/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/products/get.js rename to docs/api/store/code_samples/JavaScript/store_products/get.js diff --git a/docs/api/store/code_samples/JavaScript/products_search/post.js b/docs/api/store/code_samples/JavaScript/store_products_search/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/products_search/post.js rename to docs/api/store/code_samples/JavaScript/store_products_search/post.js diff --git a/docs/api/store/code_samples/JavaScript/products_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_products_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/products_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_products_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/regions/get.js b/docs/api/store/code_samples/JavaScript/store_regions/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/regions/get.js rename to docs/api/store/code_samples/JavaScript/store_regions/get.js diff --git a/docs/api/store/code_samples/JavaScript/regions_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_regions_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/regions_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_regions_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/return-reasons/get.js b/docs/api/store/code_samples/JavaScript/store_return-reasons/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/return-reasons/get.js rename to docs/api/store/code_samples/JavaScript/store_return-reasons/get.js diff --git a/docs/api/store/code_samples/JavaScript/return-reasons_{id}/get.js b/docs/api/store/code_samples/JavaScript/store_return-reasons_{id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/return-reasons_{id}/get.js rename to docs/api/store/code_samples/JavaScript/store_return-reasons_{id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/returns/post.js b/docs/api/store/code_samples/JavaScript/store_returns/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/returns/post.js rename to docs/api/store/code_samples/JavaScript/store_returns/post.js diff --git a/docs/api/store/code_samples/JavaScript/shipping-options/get.js b/docs/api/store/code_samples/JavaScript/store_shipping-options/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/shipping-options/get.js rename to docs/api/store/code_samples/JavaScript/store_shipping-options/get.js diff --git a/docs/api/store/code_samples/JavaScript/shipping-options_{cart_id}/get.js b/docs/api/store/code_samples/JavaScript/store_shipping-options_{cart_id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/shipping-options_{cart_id}/get.js rename to docs/api/store/code_samples/JavaScript/store_shipping-options_{cart_id}/get.js diff --git a/docs/api/store/code_samples/JavaScript/swaps/post.js b/docs/api/store/code_samples/JavaScript/store_swaps/post.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/swaps/post.js rename to docs/api/store/code_samples/JavaScript/store_swaps/post.js diff --git a/docs/api/store/code_samples/JavaScript/swaps_{cart_id}/get.js b/docs/api/store/code_samples/JavaScript/store_swaps_{cart_id}/get.js similarity index 100% rename from docs/api/store/code_samples/JavaScript/swaps_{cart_id}/get.js rename to docs/api/store/code_samples/JavaScript/store_swaps_{cart_id}/get.js diff --git a/docs/api/store/code_samples/Shell/auth/delete.sh b/docs/api/store/code_samples/Shell/store_auth/delete.sh similarity index 100% rename from docs/api/store/code_samples/Shell/auth/delete.sh rename to docs/api/store/code_samples/Shell/store_auth/delete.sh diff --git a/docs/api/store/code_samples/Shell/auth/get.sh b/docs/api/store/code_samples/Shell/store_auth/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/auth/get.sh rename to docs/api/store/code_samples/Shell/store_auth/get.sh diff --git a/docs/api/store/code_samples/Shell/auth/post.sh b/docs/api/store/code_samples/Shell/store_auth/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/auth/post.sh rename to docs/api/store/code_samples/Shell/store_auth/post.sh diff --git a/docs/api/store/code_samples/Shell/auth_{email}/get.sh b/docs/api/store/code_samples/Shell/store_auth_{email}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/auth_{email}/get.sh rename to docs/api/store/code_samples/Shell/store_auth_{email}/get.sh diff --git a/docs/api/store/code_samples/Shell/carts/post.sh b/docs/api/store/code_samples/Shell/store_carts/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts/post.sh rename to docs/api/store/code_samples/Shell/store_carts/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}/get.sh b/docs/api/store/code_samples/Shell/store_carts_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_complete/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_complete/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_complete/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_complete/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_discounts_{code}/delete.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_discounts_{code}/delete.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_discounts_{code}/delete.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_discounts_{code}/delete.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_line-items/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_line-items/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_line-items/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_line-items/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_line-items_{line_id}/delete.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_line-items_{line_id}/delete.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_line-items_{line_id}/delete.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_line-items_{line_id}/delete.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_line-items_{line_id}/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_line-items_{line_id}/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_line-items_{line_id}/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_line-items_{line_id}/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_payment-session/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_payment-session/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_payment-session/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_payment-session/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_payment-sessions/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_payment-sessions/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/delete.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/delete.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/delete.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/delete.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}_refresh/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_payment-sessions_{provider_id}_refresh/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_shipping-methods/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_shipping-methods/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_shipping-methods/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_shipping-methods/post.sh diff --git a/docs/api/store/code_samples/Shell/carts_{id}_taxes/post.sh b/docs/api/store/code_samples/Shell/store_carts_{id}_taxes/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/carts_{id}_taxes/post.sh rename to docs/api/store/code_samples/Shell/store_carts_{id}_taxes/post.sh diff --git a/docs/api/store/code_samples/Shell/collections/get.sh b/docs/api/store/code_samples/Shell/store_collections/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/collections/get.sh rename to docs/api/store/code_samples/Shell/store_collections/get.sh diff --git a/docs/api/store/code_samples/Shell/collections_{id}/get.sh b/docs/api/store/code_samples/Shell/store_collections_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/collections_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_collections_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/customers/post.sh b/docs/api/store/code_samples/Shell/store_customers/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers/post.sh rename to docs/api/store/code_samples/Shell/store_customers/post.sh diff --git a/docs/api/store/code_samples/Shell/customers_me/get.sh b/docs/api/store/code_samples/Shell/store_customers_me/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me/get.sh rename to docs/api/store/code_samples/Shell/store_customers_me/get.sh diff --git a/docs/api/store/code_samples/Shell/customers_me/post.sh b/docs/api/store/code_samples/Shell/store_customers_me/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me/post.sh rename to docs/api/store/code_samples/Shell/store_customers_me/post.sh diff --git a/docs/api/store/code_samples/Shell/customers_me_addresses/post.sh b/docs/api/store/code_samples/Shell/store_customers_me_addresses/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me_addresses/post.sh rename to docs/api/store/code_samples/Shell/store_customers_me_addresses/post.sh diff --git a/docs/api/store/code_samples/Shell/customers_me_addresses_{address_id}/delete.sh b/docs/api/store/code_samples/Shell/store_customers_me_addresses_{address_id}/delete.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me_addresses_{address_id}/delete.sh rename to docs/api/store/code_samples/Shell/store_customers_me_addresses_{address_id}/delete.sh diff --git a/docs/api/store/code_samples/Shell/customers_me_addresses_{address_id}/post.sh b/docs/api/store/code_samples/Shell/store_customers_me_addresses_{address_id}/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me_addresses_{address_id}/post.sh rename to docs/api/store/code_samples/Shell/store_customers_me_addresses_{address_id}/post.sh diff --git a/docs/api/store/code_samples/Shell/customers_me_orders/get.sh b/docs/api/store/code_samples/Shell/store_customers_me_orders/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me_orders/get.sh rename to docs/api/store/code_samples/Shell/store_customers_me_orders/get.sh diff --git a/docs/api/store/code_samples/Shell/customers_me_payment-methods/get.sh b/docs/api/store/code_samples/Shell/store_customers_me_payment-methods/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_me_payment-methods/get.sh rename to docs/api/store/code_samples/Shell/store_customers_me_payment-methods/get.sh diff --git a/docs/api/store/code_samples/Shell/customers_password-reset/post.sh b/docs/api/store/code_samples/Shell/store_customers_password-reset/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_password-reset/post.sh rename to docs/api/store/code_samples/Shell/store_customers_password-reset/post.sh diff --git a/docs/api/store/code_samples/Shell/customers_password-token/post.sh b/docs/api/store/code_samples/Shell/store_customers_password-token/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/customers_password-token/post.sh rename to docs/api/store/code_samples/Shell/store_customers_password-token/post.sh diff --git a/docs/api/store/code_samples/Shell/gift-cards_{code}/get.sh b/docs/api/store/code_samples/Shell/store_gift-cards_{code}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/gift-cards_{code}/get.sh rename to docs/api/store/code_samples/Shell/store_gift-cards_{code}/get.sh diff --git a/docs/api/store/code_samples/Shell/order-edits_{id}/get.sh b/docs/api/store/code_samples/Shell/store_order-edits_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/order-edits_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_order-edits_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/order-edits_{id}_complete/post.sh b/docs/api/store/code_samples/Shell/store_order-edits_{id}_complete/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/order-edits_{id}_complete/post.sh rename to docs/api/store/code_samples/Shell/store_order-edits_{id}_complete/post.sh diff --git a/docs/api/store/code_samples/Shell/order-edits_{id}_decline/post.sh b/docs/api/store/code_samples/Shell/store_order-edits_{id}_decline/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/order-edits_{id}_decline/post.sh rename to docs/api/store/code_samples/Shell/store_order-edits_{id}_decline/post.sh diff --git a/docs/api/store/code_samples/Shell/orders/get.sh b/docs/api/store/code_samples/Shell/store_orders/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/orders/get.sh rename to docs/api/store/code_samples/Shell/store_orders/get.sh diff --git a/docs/api/store/code_samples/Shell/orders_batch_customer_token/post.sh b/docs/api/store/code_samples/Shell/store_orders_batch_customer_token/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/orders_batch_customer_token/post.sh rename to docs/api/store/code_samples/Shell/store_orders_batch_customer_token/post.sh diff --git a/docs/api/store/code_samples/Shell/orders_cart_{cart_id}/get.sh b/docs/api/store/code_samples/Shell/store_orders_cart_{cart_id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/orders_cart_{cart_id}/get.sh rename to docs/api/store/code_samples/Shell/store_orders_cart_{cart_id}/get.sh diff --git a/docs/api/store/code_samples/Shell/orders_customer_confirm/post.sh b/docs/api/store/code_samples/Shell/store_orders_customer_confirm/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/orders_customer_confirm/post.sh rename to docs/api/store/code_samples/Shell/store_orders_customer_confirm/post.sh diff --git a/docs/api/store/code_samples/Shell/orders_{id}/get.sh b/docs/api/store/code_samples/Shell/store_orders_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/orders_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_orders_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}/get.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}_sessions/post.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}_sessions/post.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions/post.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_batch/post.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_batch/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_batch/post.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_batch/post.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_batch_authorize/post.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_batch_authorize/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_batch_authorize/post.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_batch_authorize/post.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_{session_id}/post.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_{session_id}/post.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}/post.sh diff --git a/docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_{session_id}_authorize/post.sh b/docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}_authorize/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/payment-collections_{id}_sessions_{session_id}_authorize/post.sh rename to docs/api/store/code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}_authorize/post.sh diff --git a/docs/api/store/code_samples/Shell/product-categories/get.sh b/docs/api/store/code_samples/Shell/store_product-categories/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/product-categories/get.sh rename to docs/api/store/code_samples/Shell/store_product-categories/get.sh diff --git a/docs/api/store/code_samples/Shell/product-categories_{id}/get.sh b/docs/api/store/code_samples/Shell/store_product-categories_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/product-categories_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_product-categories_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/product-tags/get.sh b/docs/api/store/code_samples/Shell/store_product-tags/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/product-tags/get.sh rename to docs/api/store/code_samples/Shell/store_product-tags/get.sh diff --git a/docs/api/store/code_samples/Shell/product-types/get.sh b/docs/api/store/code_samples/Shell/store_product-types/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/product-types/get.sh rename to docs/api/store/code_samples/Shell/store_product-types/get.sh diff --git a/docs/api/store/code_samples/Shell/products/get.sh b/docs/api/store/code_samples/Shell/store_products/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/products/get.sh rename to docs/api/store/code_samples/Shell/store_products/get.sh diff --git a/docs/api/store/code_samples/Shell/products_search/post.sh b/docs/api/store/code_samples/Shell/store_products_search/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/products_search/post.sh rename to docs/api/store/code_samples/Shell/store_products_search/post.sh diff --git a/docs/api/store/code_samples/Shell/products_{id}/get.sh b/docs/api/store/code_samples/Shell/store_products_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/products_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_products_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/regions/get.sh b/docs/api/store/code_samples/Shell/store_regions/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/regions/get.sh rename to docs/api/store/code_samples/Shell/store_regions/get.sh diff --git a/docs/api/store/code_samples/Shell/regions_{id}/get.sh b/docs/api/store/code_samples/Shell/store_regions_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/regions_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_regions_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/return-reasons/get.sh b/docs/api/store/code_samples/Shell/store_return-reasons/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/return-reasons/get.sh rename to docs/api/store/code_samples/Shell/store_return-reasons/get.sh diff --git a/docs/api/store/code_samples/Shell/return-reasons_{id}/get.sh b/docs/api/store/code_samples/Shell/store_return-reasons_{id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/return-reasons_{id}/get.sh rename to docs/api/store/code_samples/Shell/store_return-reasons_{id}/get.sh diff --git a/docs/api/store/code_samples/Shell/returns/post.sh b/docs/api/store/code_samples/Shell/store_returns/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/returns/post.sh rename to docs/api/store/code_samples/Shell/store_returns/post.sh diff --git a/docs/api/store/code_samples/Shell/shipping-options/get.sh b/docs/api/store/code_samples/Shell/store_shipping-options/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/shipping-options/get.sh rename to docs/api/store/code_samples/Shell/store_shipping-options/get.sh diff --git a/docs/api/store/code_samples/Shell/shipping-options_{cart_id}/get.sh b/docs/api/store/code_samples/Shell/store_shipping-options_{cart_id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/shipping-options_{cart_id}/get.sh rename to docs/api/store/code_samples/Shell/store_shipping-options_{cart_id}/get.sh diff --git a/docs/api/store/code_samples/Shell/swaps/post.sh b/docs/api/store/code_samples/Shell/store_swaps/post.sh similarity index 100% rename from docs/api/store/code_samples/Shell/swaps/post.sh rename to docs/api/store/code_samples/Shell/store_swaps/post.sh diff --git a/docs/api/store/code_samples/Shell/swaps_{cart_id}/get.sh b/docs/api/store/code_samples/Shell/store_swaps_{cart_id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/swaps_{cart_id}/get.sh rename to docs/api/store/code_samples/Shell/store_swaps_{cart_id}/get.sh diff --git a/docs/api/store/code_samples/Shell/variants/get.sh b/docs/api/store/code_samples/Shell/store_variants/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/variants/get.sh rename to docs/api/store/code_samples/Shell/store_variants/get.sh diff --git a/docs/api/store/code_samples/Shell/variants_{variant_id}/get.sh b/docs/api/store/code_samples/Shell/store_variants_{variant_id}/get.sh similarity index 100% rename from docs/api/store/code_samples/Shell/variants_{variant_id}/get.sh rename to docs/api/store/code_samples/Shell/store_variants_{variant_id}/get.sh diff --git a/docs/api/store/components/schemas/AddressCreatePayload.yaml b/docs/api/store/components/schemas/AddressCreatePayload.yaml new file mode 100644 index 0000000000..1094c0f176 --- /dev/null +++ b/docs/api/store/components/schemas/AddressCreatePayload.yaml @@ -0,0 +1,57 @@ +type: object +description: Address fields used when creating an address. +required: + - first_name + - last_name + - address_1 + - city + - country_code + - postal_code +properties: + first_name: + description: First name + type: string + example: Arno + last_name: + description: Last name + type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: + description: Address line 1 + type: string + example: 14433 Kemmer Court + address_2: + description: Address line 2 + type: string + example: Suite 369 + city: + description: City + type: string + example: South Geoffreyview + country_code: + description: The 2 character ISO code of the country in lower case + type: string + externalDocs: + url: >- + https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + description: See a list of codes. + example: st + province: + description: Province + type: string + example: Kentucky + postal_code: + description: Postal Code + type: string + example: 72093 + metadata: + type: object + example: + car: white + description: An optional key-value map with additional details diff --git a/docs/api/store/components/schemas/AddressFields.yaml b/docs/api/store/components/schemas/AddressPayload.yaml similarity index 94% rename from docs/api/store/components/schemas/AddressFields.yaml rename to docs/api/store/components/schemas/AddressPayload.yaml index 6e4c4d6358..89fa9ff576 100644 --- a/docs/api/store/components/schemas/AddressFields.yaml +++ b/docs/api/store/components/schemas/AddressPayload.yaml @@ -1,53 +1,50 @@ -title: Address Fields -description: Address fields used when creating/updating an address. type: object +description: Address fields used when creating/updating an address. properties: - company: - type: string - description: Company name - example: Acme first_name: - type: string description: First name + type: string example: Arno last_name: - type: string description: Last name - example: Willms - address_1: type: string + example: Willms + phone: + type: string + description: Phone Number + example: 16128234334802 + company: + type: string + address_1: description: Address line 1 + type: string example: 14433 Kemmer Court address_2: - type: string description: Address line 2 + type: string example: Suite 369 city: - type: string description: City + type: string example: South Geoffreyview country_code: - type: string description: The 2 character ISO code of the country in lower case + type: string externalDocs: url: >- https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements description: See a list of codes. example: st province: - type: string description: Province + type: string example: Kentucky postal_code: - type: string description: Postal Code - example: 72093 - phone: type: string - description: Phone Number - example: 16128234334802 + example: 72093 metadata: type: object - description: An optional key-value map with additional details example: car: white + description: An optional key-value map with additional details diff --git a/docs/api/store/components/schemas/Cart.yaml b/docs/api/store/components/schemas/Cart.yaml index 92c5146ff8..649b1149fd 100644 --- a/docs/api/store/components/schemas/Cart.yaml +++ b/docs/api/store/components/schemas/Cart.yaml @@ -174,6 +174,10 @@ properties: type: integer example: 1000 discount_total: + description: The total of discount rounded + type: integer + example: 800 + raw_discount_total: description: The total of discount type: integer example: 800 diff --git a/docs/api/store/components/schemas/ExtendedStoreDTO.yaml b/docs/api/store/components/schemas/ExtendedStoreDTO.yaml new file mode 100644 index 0000000000..af6132c641 --- /dev/null +++ b/docs/api/store/components/schemas/ExtendedStoreDTO.yaml @@ -0,0 +1,17 @@ +allOf: + - $ref: ./Store.yaml + - type: object + required: + - payment_providers + - fulfillment_providers + - feature_flags + - modules + properties: + payment_providers: + $ref: ./PaymentProvider.yaml + fulfillment_providers: + $ref: ./FulfillmentProvider.yaml + feature_flags: + $ref: ./FeatureFlagsResponse.yaml + modules: + $ref: ./ModulesResponse.yaml diff --git a/docs/api/store/components/schemas/FeatureFlagsResponse.yaml b/docs/api/store/components/schemas/FeatureFlagsResponse.yaml new file mode 100644 index 0000000000..ce55d9ccc4 --- /dev/null +++ b/docs/api/store/components/schemas/FeatureFlagsResponse.yaml @@ -0,0 +1,13 @@ +type: array +items: + type: object + required: + - key + - value + properties: + key: + description: The key of the feature flag. + type: string + value: + description: The value of the feature flag. + type: boolean diff --git a/docs/api/store/components/schemas/LineItem.yaml b/docs/api/store/components/schemas/LineItem.yaml index e809ce5e3c..67b1ee5cd0 100644 --- a/docs/api/store/components/schemas/LineItem.yaml +++ b/docs/api/store/components/schemas/LineItem.yaml @@ -199,6 +199,10 @@ properties: type: integer example: 0 discount_total: + description: The total of discount of the line item rounded + type: integer + example: 0 + raw_discount_total: description: The total of discount of the line item type: integer example: 0 diff --git a/docs/api/store/components/schemas/LineItemAdjustment.yaml b/docs/api/store/components/schemas/LineItemAdjustment.yaml index fe1b9049e8..5dcc6f496f 100644 --- a/docs/api/store/components/schemas/LineItemAdjustment.yaml +++ b/docs/api/store/components/schemas/LineItemAdjustment.yaml @@ -36,7 +36,7 @@ properties: $ref: ./Discount.yaml amount: description: The adjustment amount - type: integer + type: number example: 1000 metadata: description: An optional key-value map with additional details diff --git a/docs/api/store/components/schemas/ModulesResponse.yaml b/docs/api/store/components/schemas/ModulesResponse.yaml new file mode 100644 index 0000000000..f90e78d9f9 --- /dev/null +++ b/docs/api/store/components/schemas/ModulesResponse.yaml @@ -0,0 +1,13 @@ +type: array +items: + type: object + required: + - module + - resolution + properties: + module: + description: The key of the module. + type: string + resolution: + description: The resolution path of the module or false if module is not installed. + type: string diff --git a/docs/api/store/components/schemas/Order.yaml b/docs/api/store/components/schemas/Order.yaml index 26d73485be..8406e48d2f 100644 --- a/docs/api/store/components/schemas/Order.yaml +++ b/docs/api/store/components/schemas/Order.yaml @@ -267,10 +267,14 @@ properties: type: integer description: The total of shipping example: 1000 - discount_total: + raw_discount_total: description: The total of discount type: integer example: 800 + discount_total: + description: The total of discount rounded + type: integer + example: 800 tax_total: description: The total of tax type: integer diff --git a/docs/api/store/components/schemas/PricedShippingOption.yaml b/docs/api/store/components/schemas/PricedShippingOption.yaml new file mode 100644 index 0000000000..a5f479328b --- /dev/null +++ b/docs/api/store/components/schemas/PricedShippingOption.yaml @@ -0,0 +1,27 @@ +title: Priced Shipping Option +type: object +allOf: + - $ref: ./ShippingOption.yaml + - type: object + properties: + price_incl_tax: + type: number + description: Price including taxes + tax_rates: + type: array + description: An array of applied tax rates + items: + type: object + properties: + rate: + type: number + description: The tax rate value + name: + type: string + description: The name of the tax rate + code: + type: string + description: The code of the tax rate + tax_amount: + type: number + description: The taxes applied. diff --git a/docs/api/store/components/schemas/ProductCategory.yaml b/docs/api/store/components/schemas/ProductCategory.yaml index 9d15054cd5..3dfe3b8ca6 100644 --- a/docs/api/store/components/schemas/ProductCategory.yaml +++ b/docs/api/store/components/schemas/ProductCategory.yaml @@ -5,7 +5,6 @@ type: object required: - category_children - created_at - - deleted_at - handle - id - is_active @@ -44,6 +43,10 @@ properties: type: boolean description: A flag to make product category visible/hidden in the store front default: false + rank: + type: integer + description: An integer that depicts the rank of category in a tree node + default: 0 category_children: description: Available if the relation `category_children` are expanded. type: array @@ -75,8 +78,3 @@ properties: description: The date with timezone at which the resource was updated. type: string format: date-time - deleted_at: - description: The date with timezone at which the resource was deleted. - nullable: true - type: string - format: date-time diff --git a/docs/api/store/components/schemas/StockLocationExpandedDTO.yaml b/docs/api/store/components/schemas/StockLocationExpandedDTO.yaml new file mode 100644 index 0000000000..e2d6b28a56 --- /dev/null +++ b/docs/api/store/components/schemas/StockLocationExpandedDTO.yaml @@ -0,0 +1,6 @@ +allOf: + - $ref: ./StockLocationDTO.yaml + - type: object + properties: + sales_channels: + $ref: ./SalesChannel.yaml diff --git a/docs/api/store/components/schemas/StoreAuthRes.yaml b/docs/api/store/components/schemas/StoreAuthRes.yaml index ffb6903bf2..d46f399b85 100644 --- a/docs/api/store/components/schemas/StoreAuthRes.yaml +++ b/docs/api/store/components/schemas/StoreAuthRes.yaml @@ -1,4 +1,12 @@ type: object +x-expanded-relations: + field: customer + relations: + - orders + - orders.items + - shipping_addresses +required: + - customer properties: customer: $ref: ./Customer.yaml diff --git a/docs/api/store/components/schemas/StoreCartShippingOptionsListRes.yaml b/docs/api/store/components/schemas/StoreCartShippingOptionsListRes.yaml new file mode 100644 index 0000000000..fa027c42a6 --- /dev/null +++ b/docs/api/store/components/schemas/StoreCartShippingOptionsListRes.yaml @@ -0,0 +1,13 @@ +type: object +x-expanded-relations: + field: shipping_options + implicit: + - profile + - requirements +required: + - shipping_options +properties: + shipping_options: + type: array + items: + $ref: ./PricedShippingOption.yaml diff --git a/docs/api/store/components/schemas/StoreCartsRes.yaml b/docs/api/store/components/schemas/StoreCartsRes.yaml index f8895507ed..bcc2ca7b8d 100644 --- a/docs/api/store/components/schemas/StoreCartsRes.yaml +++ b/docs/api/store/components/schemas/StoreCartsRes.yaml @@ -1,4 +1,61 @@ type: object +x-expanded-relations: + field: cart + relations: + - billing_address + - discounts + - discounts.rule + - gift_cards + - items + - items.adjustments + - items.variant + - payment + - payment_sessions + - region + - region.countries + - region.payment_providers + - shipping_address + - shipping_methods + eager: + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - items + - items.variant + - items.variant.product + - items.tax_lines + - items.adjustments + - gift_cards + - discounts + - discounts.rule + - shipping_methods + - shipping_methods.tax_lines + - shipping_address + - region + - region.tax_rates + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - item_tax_total + - refundable_amount + - refunded_total + - shipping_tax_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total +required: + - cart properties: cart: $ref: ./Cart.yaml diff --git a/docs/api/store/components/schemas/StoreCollectionsListRes.yaml b/docs/api/store/components/schemas/StoreCollectionsListRes.yaml index 252256786c..32822ecdb6 100644 --- a/docs/api/store/components/schemas/StoreCollectionsListRes.yaml +++ b/docs/api/store/components/schemas/StoreCollectionsListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - collections + - count + - offset + - limit properties: collections: type: array diff --git a/docs/api/store/components/schemas/StoreCollectionsRes.yaml b/docs/api/store/components/schemas/StoreCollectionsRes.yaml index 7802152206..e21873dbc1 100644 --- a/docs/api/store/components/schemas/StoreCollectionsRes.yaml +++ b/docs/api/store/components/schemas/StoreCollectionsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - collection properties: collection: $ref: ./ProductCollection.yaml diff --git a/docs/api/store/components/schemas/StoreCompleteCartRes.yaml b/docs/api/store/components/schemas/StoreCompleteCartRes.yaml index eb30651ad6..0359a68f13 100644 --- a/docs/api/store/components/schemas/StoreCompleteCartRes.yaml +++ b/docs/api/store/components/schemas/StoreCompleteCartRes.yaml @@ -1,4 +1,7 @@ type: object +required: + - type + - data properties: type: type: string diff --git a/docs/api/store/components/schemas/StoreCustomersListOrdersRes.yaml b/docs/api/store/components/schemas/StoreCustomersListOrdersRes.yaml index 1b4106242e..2733f8b01b 100644 --- a/docs/api/store/components/schemas/StoreCustomersListOrdersRes.yaml +++ b/docs/api/store/components/schemas/StoreCustomersListOrdersRes.yaml @@ -1,15 +1,101 @@ type: object +x-expanded-relations: + field: orders + relations: + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.tracking_links + - items + - items.variant + - payments + - region + - shipping_address + - shipping_methods + eager: + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - customer + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_address + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total +required: + - orders + - count + - offset + - limit properties: orders: type: array items: $ref: ./Order.yaml count: - type: integer description: The total number of items available + type: integer offset: - type: integer description: The number of items skipped before these items - limit: type: integer + limit: description: The number of items per page + type: integer diff --git a/docs/api/store/components/schemas/StoreCustomersListPaymentMethodsRes.yaml b/docs/api/store/components/schemas/StoreCustomersListPaymentMethodsRes.yaml index 4fb8d8304a..a2ebfb8cfa 100644 --- a/docs/api/store/components/schemas/StoreCustomersListPaymentMethodsRes.yaml +++ b/docs/api/store/components/schemas/StoreCustomersListPaymentMethodsRes.yaml @@ -1,15 +1,20 @@ type: object +required: + - payment_methods properties: payment_methods: type: array items: type: object + required: + - provider_id + - data properties: provider_id: - type: string description: The id of the Payment Provider where the payment method is saved. + type: string data: - type: object description: >- The data needed for the Payment Provider to use the saved payment method. + type: object diff --git a/docs/api/store/components/schemas/StoreCustomersRes.yaml b/docs/api/store/components/schemas/StoreCustomersRes.yaml index ffb6903bf2..3569d05363 100644 --- a/docs/api/store/components/schemas/StoreCustomersRes.yaml +++ b/docs/api/store/components/schemas/StoreCustomersRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: customer + relations: + - billing_address + - shipping_addresses +required: + - customer properties: customer: $ref: ./Customer.yaml diff --git a/docs/api/store/components/schemas/StoreCustomersResetPasswordRes.yaml b/docs/api/store/components/schemas/StoreCustomersResetPasswordRes.yaml new file mode 100644 index 0000000000..4c256ac6ce --- /dev/null +++ b/docs/api/store/components/schemas/StoreCustomersResetPasswordRes.yaml @@ -0,0 +1,6 @@ +type: object +required: + - customer +properties: + customer: + $ref: ./Customer.yaml diff --git a/docs/api/store/components/schemas/StoreGetAuthEmailRes.yaml b/docs/api/store/components/schemas/StoreGetAuthEmailRes.yaml index bcc2e3fce2..6e24297835 100644 --- a/docs/api/store/components/schemas/StoreGetAuthEmailRes.yaml +++ b/docs/api/store/components/schemas/StoreGetAuthEmailRes.yaml @@ -1,5 +1,7 @@ type: object +required: + - exists properties: exists: - type: boolean description: Whether email exists or not. + type: boolean diff --git a/docs/api/store/components/schemas/StoreGetProductCategoriesCategoryRes.yaml b/docs/api/store/components/schemas/StoreGetProductCategoriesCategoryRes.yaml index d343bc439f..eaf81a7222 100644 --- a/docs/api/store/components/schemas/StoreGetProductCategoriesCategoryRes.yaml +++ b/docs/api/store/components/schemas/StoreGetProductCategoriesCategoryRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: product_category + relations: + - category_children + - parent_category +required: + - product_category properties: product_category: $ref: ./ProductCategory.yaml diff --git a/docs/api/store/components/schemas/StoreGetProductCategoriesRes.yaml b/docs/api/store/components/schemas/StoreGetProductCategoriesRes.yaml new file mode 100644 index 0000000000..f053d45d1e --- /dev/null +++ b/docs/api/store/components/schemas/StoreGetProductCategoriesRes.yaml @@ -0,0 +1,25 @@ +type: object +x-expanded-relations: + field: product_categories + relations: + - category_children + - parent_category +required: + - product_categories + - count + - offset + - limit +properties: + product_categories: + type: array + items: + $ref: ./ProductCategory.yaml + count: + type: integer + description: The total number of items available + offset: + type: integer + description: The number of items skipped before these items + limit: + type: integer + description: The number of items per page diff --git a/docs/api/store/components/schemas/StoreGiftCardsRes.yaml b/docs/api/store/components/schemas/StoreGiftCardsRes.yaml index d72a7917c2..b866fde0a4 100644 --- a/docs/api/store/components/schemas/StoreGiftCardsRes.yaml +++ b/docs/api/store/components/schemas/StoreGiftCardsRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - gift_card properties: gift_card: $ref: ./GiftCard.yaml diff --git a/docs/api/store/components/schemas/StoreOrderEditsRes.yaml b/docs/api/store/components/schemas/StoreOrderEditsRes.yaml index d266863926..4f5087710f 100644 --- a/docs/api/store/components/schemas/StoreOrderEditsRes.yaml +++ b/docs/api/store/components/schemas/StoreOrderEditsRes.yaml @@ -1,4 +1,41 @@ type: object +x-expanded-relations: + field: order_edit + relations: + - changes + - changes.line_item + - changes.line_item.variant + - changes.original_line_item + - changes.original_line_item.variant + - items + - items.adjustments + - items.tax_lines + - items.variant + - payment_collection + implicit: + - items + - items.tax_lines + - items.adjustments + - items.variant + totals: + - difference_due + - discount_total + - gift_card_tax_total + - gift_card_total + - shipping_total + - subtotal + - tax_total + - total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total +required: + - order_edit properties: order_edit: $ref: ./OrderEdit.yaml diff --git a/docs/api/store/components/schemas/StoreOrdersRes.yaml b/docs/api/store/components/schemas/StoreOrdersRes.yaml index 43b8e917ca..2cd84fe12d 100644 --- a/docs/api/store/components/schemas/StoreOrdersRes.yaml +++ b/docs/api/store/components/schemas/StoreOrdersRes.yaml @@ -1,4 +1,86 @@ type: object +required: + - order +x-expanded-relations: + field: order + relations: + - customer + - discounts + - discounts.rule + - fulfillments + - fulfillments.tracking_links + - items + - items.variant + - payments + - region + - shipping_address + - shipping_methods + eager: + - fulfillments.items + - region.fulfillment_providers + - region.payment_providers + - shipping_methods.shipping_option + implicit: + - claims + - claims.additional_items + - claims.additional_items.adjustments + - claims.additional_items.refundable + - claims.additional_items.tax_lines + - discounts + - discounts.rule + - gift_card_transactions + - gift_card_transactions.gift_card + - gift_cards + - items + - items.adjustments + - items.refundable + - items.tax_lines + - items.variant + - items.variant.product + - refunds + - region + - shipping_methods + - shipping_methods.tax_lines + - swaps + - swaps.additional_items + - swaps.additional_items.adjustments + - swaps.additional_items.refundable + - swaps.additional_items.tax_lines + totals: + - discount_total + - gift_card_tax_total + - gift_card_total + - paid_total + - refundable_amount + - refunded_total + - shipping_total + - subtotal + - tax_total + - total + - claims.additional_items.discount_total + - claims.additional_items.gift_card_total + - claims.additional_items.original_tax_total + - claims.additional_items.original_total + - claims.additional_items.refundable + - claims.additional_items.subtotal + - claims.additional_items.tax_total + - claims.additional_items.total + - items.discount_total + - items.gift_card_total + - items.original_tax_total + - items.original_total + - items.refundable + - items.subtotal + - items.tax_total + - items.total + - swaps.additional_items.discount_total + - swaps.additional_items.gift_card_total + - swaps.additional_items.original_tax_total + - swaps.additional_items.original_total + - swaps.additional_items.refundable + - swaps.additional_items.subtotal + - swaps.additional_items.tax_total + - swaps.additional_items.total properties: order: $ref: ./Order.yaml diff --git a/docs/api/store/components/schemas/StorePaymentCollectionsRes.yaml b/docs/api/store/components/schemas/StorePaymentCollectionsRes.yaml index a7748cf4f4..235443c942 100644 --- a/docs/api/store/components/schemas/StorePaymentCollectionsRes.yaml +++ b/docs/api/store/components/schemas/StorePaymentCollectionsRes.yaml @@ -1,4 +1,14 @@ type: object +x-expanded-relations: + field: payment_collection + relations: + - payment_sessions + - region + eager: + - region.fulfillment_providers + - region.payment_providers +required: + - payment_collection properties: payment_collection: $ref: ./PaymentCollection.yaml diff --git a/docs/api/store/components/schemas/StorePaymentCollectionsSessionRes.yaml b/docs/api/store/components/schemas/StorePaymentCollectionsSessionRes.yaml index 4a421583a8..075c9ef9e2 100644 --- a/docs/api/store/components/schemas/StorePaymentCollectionsSessionRes.yaml +++ b/docs/api/store/components/schemas/StorePaymentCollectionsSessionRes.yaml @@ -1,4 +1,6 @@ type: object +required: + - payment_session properties: payment_session: $ref: ./PaymentSession.yaml diff --git a/docs/api/store/components/schemas/StorePostCartsCartReq.yaml b/docs/api/store/components/schemas/StorePostCartsCartReq.yaml index 86402c2bd1..787339ceb5 100644 --- a/docs/api/store/components/schemas/StorePostCartsCartReq.yaml +++ b/docs/api/store/components/schemas/StorePostCartsCartReq.yaml @@ -20,14 +20,14 @@ properties: billing_address: description: The Address to be used for billing purposes. anyOf: - - $ref: ./Address.yaml + - $ref: ./AddressPayload.yaml description: A full billing address object. - type: string description: The billing address ID shipping_address: description: The Address to be used for shipping. anyOf: - - $ref: ./Address.yaml + - $ref: ./AddressPayload.yaml description: A full shipping address object. - type: string description: The shipping address ID diff --git a/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesAddressReq.yaml b/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesAddressReq.yaml index dffdfc21c3..2974d52c0a 100644 --- a/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesAddressReq.yaml +++ b/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesAddressReq.yaml @@ -1,2 +1,2 @@ anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml diff --git a/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesReq.yaml b/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesReq.yaml index 8f4dcf9c92..84aed96646 100644 --- a/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesReq.yaml +++ b/docs/api/store/components/schemas/StorePostCustomersCustomerAddressesReq.yaml @@ -4,13 +4,4 @@ required: properties: address: description: The Address to add to the Customer. - allOf: - - $ref: ./AddressFields.yaml - - type: object - required: - - first_name - - last_name - - address_1 - - city - - country_code - - postal_code + $ref: ./AddressCreatePayload.yaml diff --git a/docs/api/store/components/schemas/StorePostCustomersCustomerReq.yaml b/docs/api/store/components/schemas/StorePostCustomersCustomerReq.yaml index 1579b30340..6b2089aeb1 100644 --- a/docs/api/store/components/schemas/StorePostCustomersCustomerReq.yaml +++ b/docs/api/store/components/schemas/StorePostCustomersCustomerReq.yaml @@ -9,7 +9,7 @@ properties: billing_address: description: The Address to be used for billing purposes. anyOf: - - $ref: ./AddressFields.yaml + - $ref: ./AddressPayload.yaml description: The full billing address object - type: string description: The ID of an existing billing address diff --git a/docs/api/store/components/schemas/StorePostSearchRes.yaml b/docs/api/store/components/schemas/StorePostSearchRes.yaml index 43237f6eb7..b2eec4718a 100644 --- a/docs/api/store/components/schemas/StorePostSearchRes.yaml +++ b/docs/api/store/components/schemas/StorePostSearchRes.yaml @@ -1,7 +1,11 @@ -type: object -properties: - hits: - type: array - description: >- - Array of results. The format of the items depends on the search engine - installed on the server. +allOf: + - type: object + required: + - hits + properties: + hits: + description: >- + Array of results. The format of the items depends on the search engine + installed on the server. + type: array + - type: object diff --git a/docs/api/store/components/schemas/StoreProductCategoriesListRes.yaml b/docs/api/store/components/schemas/StoreProductTagsListRes.yaml similarity index 74% rename from docs/api/store/components/schemas/StoreProductCategoriesListRes.yaml rename to docs/api/store/components/schemas/StoreProductTagsListRes.yaml index 0b6a32c916..405eac0731 100644 --- a/docs/api/store/components/schemas/StoreProductCategoriesListRes.yaml +++ b/docs/api/store/components/schemas/StoreProductTagsListRes.yaml @@ -1,9 +1,14 @@ type: object +required: + - product_tags + - count + - offset + - limit properties: - product_categories: + product_tags: type: array items: - $ref: ./ProductCategory.yaml + $ref: ./ProductTag.yaml count: type: integer description: The total number of items available diff --git a/docs/api/store/components/schemas/StoreProductTypesListRes.yaml b/docs/api/store/components/schemas/StoreProductTypesListRes.yaml index 4cb021af96..774ce804cc 100644 --- a/docs/api/store/components/schemas/StoreProductTypesListRes.yaml +++ b/docs/api/store/components/schemas/StoreProductTypesListRes.yaml @@ -1,4 +1,9 @@ type: object +required: + - product_types + - count + - offset + - limit properties: product_types: type: array diff --git a/docs/api/store/components/schemas/StoreProductsListRes.yaml b/docs/api/store/components/schemas/StoreProductsListRes.yaml index 976580d53a..f5b0ce9a4c 100644 --- a/docs/api/store/components/schemas/StoreProductsListRes.yaml +++ b/docs/api/store/components/schemas/StoreProductsListRes.yaml @@ -1,4 +1,21 @@ type: object +x-expanded-relations: + field: products + relations: + - collection + - images + - options + - options.values + - tags + - type + - variants + - variants.options + - variants.prices +required: + - products + - count + - offset + - limit properties: products: type: array diff --git a/docs/api/store/components/schemas/StoreProductsRes.yaml b/docs/api/store/components/schemas/StoreProductsRes.yaml index 8a64340be6..18276b4392 100644 --- a/docs/api/store/components/schemas/StoreProductsRes.yaml +++ b/docs/api/store/components/schemas/StoreProductsRes.yaml @@ -1,4 +1,18 @@ type: object +x-expanded-relations: + field: product + relations: + - collection + - images + - options + - options.values + - tags + - type + - variants + - variants.options + - variants.prices +required: + - product properties: product: $ref: ./PricedProduct.yaml diff --git a/docs/api/store/components/schemas/StoreRegionsListRes.yaml b/docs/api/store/components/schemas/StoreRegionsListRes.yaml index dc541b0eb1..429be83f52 100644 --- a/docs/api/store/components/schemas/StoreRegionsListRes.yaml +++ b/docs/api/store/components/schemas/StoreRegionsListRes.yaml @@ -1,4 +1,15 @@ type: object +x-expanded-relations: + field: regions + relations: + - countries + - payment_providers + - fulfillment_providers + eager: + - payment_providers + - fulfillment_providers +required: + - regions properties: regions: type: array diff --git a/docs/api/store/components/schemas/StoreRegionsRes.yaml b/docs/api/store/components/schemas/StoreRegionsRes.yaml index b4080ea096..f8a5d38f26 100644 --- a/docs/api/store/components/schemas/StoreRegionsRes.yaml +++ b/docs/api/store/components/schemas/StoreRegionsRes.yaml @@ -1,4 +1,15 @@ type: object +x-expanded-relations: + field: region + relations: + - countries + - payment_providers + - fulfillment_providers + eager: + - payment_providers + - fulfillment_providers +required: + - region properties: region: $ref: ./Region.yaml diff --git a/docs/api/store/components/schemas/StoreReturnReasonsListRes.yaml b/docs/api/store/components/schemas/StoreReturnReasonsListRes.yaml index c52e27f424..0f212752fc 100644 --- a/docs/api/store/components/schemas/StoreReturnReasonsListRes.yaml +++ b/docs/api/store/components/schemas/StoreReturnReasonsListRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: return_reasons + relations: + - parent_return_reason + - return_reason_children +required: + - return_reasons properties: return_reasons: type: array diff --git a/docs/api/store/components/schemas/StoreReturnReasonsRes.yaml b/docs/api/store/components/schemas/StoreReturnReasonsRes.yaml index ac6e4045bd..f5a1907b17 100644 --- a/docs/api/store/components/schemas/StoreReturnReasonsRes.yaml +++ b/docs/api/store/components/schemas/StoreReturnReasonsRes.yaml @@ -1,4 +1,11 @@ type: object +x-expanded-relations: + field: return_reason + relations: + - parent_return_reason + - return_reason_children +required: + - return_reason properties: return_reason: $ref: ./ReturnReason.yaml diff --git a/docs/api/store/components/schemas/StoreReturnsRes.yaml b/docs/api/store/components/schemas/StoreReturnsRes.yaml index 3291cf0e08..e786e22d89 100644 --- a/docs/api/store/components/schemas/StoreReturnsRes.yaml +++ b/docs/api/store/components/schemas/StoreReturnsRes.yaml @@ -1,4 +1,13 @@ type: object +x-expanded-relations: + field: return + relations: + - items + - items.reason + eager: + - items +required: + - return properties: return: $ref: ./Return.yaml diff --git a/docs/api/store/components/schemas/StoreShippingOptionsListRes.yaml b/docs/api/store/components/schemas/StoreShippingOptionsListRes.yaml index f7fe30ecaf..fab21b5ea1 100644 --- a/docs/api/store/components/schemas/StoreShippingOptionsListRes.yaml +++ b/docs/api/store/components/schemas/StoreShippingOptionsListRes.yaml @@ -1,6 +1,12 @@ type: object +x-expanded-relations: + field: shipping_options + relations: + - requirements +required: + - shipping_options properties: shipping_options: type: array items: - $ref: ./ShippingOption.yaml + $ref: ./PricedShippingOption.yaml diff --git a/docs/api/store/components/schemas/StoreSwapsRes.yaml b/docs/api/store/components/schemas/StoreSwapsRes.yaml index 3eaa21eadf..f1b319e8de 100644 --- a/docs/api/store/components/schemas/StoreSwapsRes.yaml +++ b/docs/api/store/components/schemas/StoreSwapsRes.yaml @@ -1,4 +1,21 @@ type: object +x-expanded-relations: + field: swap + relations: + - additional_items + - additional_items.variant + - cart + - fulfillments + - order + - payment + - return_order + - return_order.shipping_method + - shipping_address + - shipping_methods + eager: + - fulfillments.items +required: + - swap properties: swap: $ref: ./Swap.yaml diff --git a/docs/api/store/components/schemas/StoreVariantsListRes.yaml b/docs/api/store/components/schemas/StoreVariantsListRes.yaml index 4f6be3d191..8f824f9351 100644 --- a/docs/api/store/components/schemas/StoreVariantsListRes.yaml +++ b/docs/api/store/components/schemas/StoreVariantsListRes.yaml @@ -1,4 +1,12 @@ type: object +x-expanded-relations: + field: variants + relations: + - prices + - options + - product +required: + - variants properties: variants: type: array diff --git a/docs/api/store/components/schemas/StoreVariantsRes.yaml b/docs/api/store/components/schemas/StoreVariantsRes.yaml index 7fed2ab768..04ab6f681e 100644 --- a/docs/api/store/components/schemas/StoreVariantsRes.yaml +++ b/docs/api/store/components/schemas/StoreVariantsRes.yaml @@ -1,4 +1,12 @@ type: object +x-expanded-relations: + field: variant + relations: + - prices + - options + - product +required: + - variant properties: variant: $ref: ./PricedVariant.yaml diff --git a/docs/api/store/openapi.yaml b/docs/api/store/openapi.yaml index 4097c80001..1250218303 100644 --- a/docs/api/store/openapi.yaml +++ b/docs/api/store/openapi.yaml @@ -381,147 +381,147 @@ tags: description: >- Auth endpoints that allow authorization of customers and manages their sessions. - - name: Cart + - name: Carts description: Cart endpoints that allow handling carts in Medusa. - - name: Collection + - name: Collections description: Collection endpoints that allow handling collections in Medusa. - - name: Customer + - name: Customers description: Customer endpoints that allow handling customers in Medusa. - - name: Gift Card + - name: Gift Cards description: Gift Card endpoints that allow handling gift cards in Medusa. - - name: Order + - name: Orders description: Order endpoints that allow handling orders in Medusa. - - name: Product + - name: Products description: Product endpoints that allow handling products in Medusa. - - name: Product Variant + - name: Product Variants description: Product Variant endpoints that allow handling product variants in Medusa. - - name: Region + - name: Regions description: Region endpoints that allow handling regions in Medusa. - - name: Return Reason + - name: Return Reasons description: Return Reason endpoints that allow handling return reasons in Medusa. - - name: Return + - name: Returns description: Return endpoints that allow handling returns in Medusa. - - name: Shipping Option + - name: Shipping Options description: Shipping Option endpoints that allow handling shipping options in Medusa. - - name: Swap + - name: Swaps description: Swap endpoints that allow handling swaps in Medusa. servers: - - url: https://api.medusa-commerce.com/store + - url: https://api.medusa-commerce.com paths: - /auth: - $ref: paths/auth.yaml - /auth/{email}: - $ref: paths/auth_{email}.yaml - /carts/{id}/shipping-methods: - $ref: paths/carts_{id}_shipping-methods.yaml - /carts/{id}/taxes: - $ref: paths/carts_{id}_taxes.yaml - /carts/{id}/complete: - $ref: paths/carts_{id}_complete.yaml - /carts: - $ref: paths/carts.yaml - /carts/{id}/payment-sessions: - $ref: paths/carts_{id}_payment-sessions.yaml - /carts/{id}/discounts/{code}: - $ref: paths/carts_{id}_discounts_{code}.yaml - /carts/{id}/line-items/{line_id}: - $ref: paths/carts_{id}_line-items_{line_id}.yaml - /carts/{id}/payment-sessions/{provider_id}: - $ref: paths/carts_{id}_payment-sessions_{provider_id}.yaml - /carts/{id}: - $ref: paths/carts_{id}.yaml - /carts/{id}/payment-sessions/{provider_id}/refresh: - $ref: paths/carts_{id}_payment-sessions_{provider_id}_refresh.yaml - /carts/{id}/payment-session: - $ref: paths/carts_{id}_payment-session.yaml - /collections/{id}: - $ref: paths/collections_{id}.yaml - /collections: - $ref: paths/collections.yaml - /customers/me/addresses: - $ref: paths/customers_me_addresses.yaml - /customers: - $ref: paths/customers.yaml - /customers/me/addresses/{address_id}: - $ref: paths/customers_me_addresses_{address_id}.yaml - /customers/me: - $ref: paths/customers_me.yaml - /customers/me/payment-methods: - $ref: paths/customers_me_payment-methods.yaml - /customers/me/orders: - $ref: paths/customers_me_orders.yaml - /customers/password-token: - $ref: paths/customers_password-token.yaml - /customers/password-reset: - $ref: paths/customers_password-reset.yaml - /gift-cards/{code}: - $ref: paths/gift-cards_{code}.yaml - /order-edits/{id}/complete: - $ref: paths/order-edits_{id}_complete.yaml - /order-edits/{id}/decline: - $ref: paths/order-edits_{id}_decline.yaml - /order-edits/{id}: - $ref: paths/order-edits_{id}.yaml - /orders/customer/confirm: - $ref: paths/orders_customer_confirm.yaml - /orders/cart/{cart_id}: - $ref: paths/orders_cart_{cart_id}.yaml - /orders/{id}: - $ref: paths/orders_{id}.yaml - /orders: - $ref: paths/orders.yaml - /orders/batch/customer/token: - $ref: paths/orders_batch_customer_token.yaml - /payment-collections/{id}/sessions/batch/authorize: - $ref: paths/payment-collections_{id}_sessions_batch_authorize.yaml - /payment-collections/{id}/sessions/{session_id}/authorize: - $ref: paths/payment-collections_{id}_sessions_{session_id}_authorize.yaml - /payment-collections/{id}: - $ref: paths/payment-collections_{id}.yaml - /payment-collections/{id}/sessions/batch: - $ref: paths/payment-collections_{id}_sessions_batch.yaml - /payment-collections/{id}/sessions: - $ref: paths/payment-collections_{id}_sessions.yaml - /payment-collections/{id}/sessions/{session_id}: - $ref: paths/payment-collections_{id}_sessions_{session_id}.yaml - /product-categories/{id}: - $ref: paths/product-categories_{id}.yaml - /product-categories: - $ref: paths/product-categories.yaml - /product-tags: - $ref: paths/product-tags.yaml - /product-types: - $ref: paths/product-types.yaml - /products/{id}: - $ref: paths/products_{id}.yaml - /products: - $ref: paths/products.yaml - /products/search: - $ref: paths/products_search.yaml - /regions/{id}: - $ref: paths/regions_{id}.yaml - /regions: - $ref: paths/regions.yaml - /return-reasons/{id}: - $ref: paths/return-reasons_{id}.yaml - /return-reasons: - $ref: paths/return-reasons.yaml - /returns: - $ref: paths/returns.yaml - /shipping-options: - $ref: paths/shipping-options.yaml - /shipping-options/{cart_id}: - $ref: paths/shipping-options_{cart_id}.yaml - /swaps: - $ref: paths/swaps.yaml - /swaps/{cart_id}: - $ref: paths/swaps_{cart_id}.yaml - /variants/{variant_id}: - $ref: paths/variants_{variant_id}.yaml - /variants: - $ref: paths/variants.yaml - /carts/{id}/line-items: - $ref: paths/carts_{id}_line-items.yaml + /store/auth: + $ref: paths/store_auth.yaml + /store/auth/{email}: + $ref: paths/store_auth_{email}.yaml + /store/carts: + $ref: paths/store_carts.yaml + /store/carts/{id}: + $ref: paths/store_carts_{id}.yaml + /store/carts/{id}/complete: + $ref: paths/store_carts_{id}_complete.yaml + /store/carts/{id}/discounts/{code}: + $ref: paths/store_carts_{id}_discounts_{code}.yaml + /store/carts/{id}/line-items: + $ref: paths/store_carts_{id}_line-items.yaml + /store/carts/{id}/line-items/{line_id}: + $ref: paths/store_carts_{id}_line-items_{line_id}.yaml + /store/carts/{id}/payment-session: + $ref: paths/store_carts_{id}_payment-session.yaml + /store/carts/{id}/payment-sessions: + $ref: paths/store_carts_{id}_payment-sessions.yaml + /store/carts/{id}/payment-sessions/{provider_id}: + $ref: paths/store_carts_{id}_payment-sessions_{provider_id}.yaml + /store/carts/{id}/payment-sessions/{provider_id}/refresh: + $ref: paths/store_carts_{id}_payment-sessions_{provider_id}_refresh.yaml + /store/carts/{id}/shipping-methods: + $ref: paths/store_carts_{id}_shipping-methods.yaml + /store/carts/{id}/taxes: + $ref: paths/store_carts_{id}_taxes.yaml + /store/collections: + $ref: paths/store_collections.yaml + /store/collections/{id}: + $ref: paths/store_collections_{id}.yaml + /store/customers: + $ref: paths/store_customers.yaml + /store/customers/me: + $ref: paths/store_customers_me.yaml + /store/customers/me/addresses: + $ref: paths/store_customers_me_addresses.yaml + /store/customers/me/addresses/{address_id}: + $ref: paths/store_customers_me_addresses_{address_id}.yaml + /store/customers/me/orders: + $ref: paths/store_customers_me_orders.yaml + /store/customers/me/payment-methods: + $ref: paths/store_customers_me_payment-methods.yaml + /store/customers/password-reset: + $ref: paths/store_customers_password-reset.yaml + /store/customers/password-token: + $ref: paths/store_customers_password-token.yaml + /store/gift-cards/{code}: + $ref: paths/store_gift-cards_{code}.yaml + /store/order-edits/{id}: + $ref: paths/store_order-edits_{id}.yaml + /store/order-edits/{id}/complete: + $ref: paths/store_order-edits_{id}_complete.yaml + /store/order-edits/{id}/decline: + $ref: paths/store_order-edits_{id}_decline.yaml + /store/orders: + $ref: paths/store_orders.yaml + /store/orders/batch/customer/token: + $ref: paths/store_orders_batch_customer_token.yaml + /store/orders/cart/{cart_id}: + $ref: paths/store_orders_cart_{cart_id}.yaml + /store/orders/customer/confirm: + $ref: paths/store_orders_customer_confirm.yaml + /store/orders/{id}: + $ref: paths/store_orders_{id}.yaml + /store/payment-collections/{id}: + $ref: paths/store_payment-collections_{id}.yaml + /store/payment-collections/{id}/sessions: + $ref: paths/store_payment-collections_{id}_sessions.yaml + /store/payment-collections/{id}/sessions/batch: + $ref: paths/store_payment-collections_{id}_sessions_batch.yaml + /store/payment-collections/{id}/sessions/batch/authorize: + $ref: paths/store_payment-collections_{id}_sessions_batch_authorize.yaml + /store/payment-collections/{id}/sessions/{session_id}: + $ref: paths/store_payment-collections_{id}_sessions_{session_id}.yaml + /store/payment-collections/{id}/sessions/{session_id}/authorize: + $ref: paths/store_payment-collections_{id}_sessions_{session_id}_authorize.yaml + /store/product-categories: + $ref: paths/store_product-categories.yaml + /store/product-categories/{id}: + $ref: paths/store_product-categories_{id}.yaml + /store/product-tags: + $ref: paths/store_product-tags.yaml + /store/product-types: + $ref: paths/store_product-types.yaml + /store/products: + $ref: paths/store_products.yaml + /store/products/search: + $ref: paths/store_products_search.yaml + /store/products/{id}: + $ref: paths/store_products_{id}.yaml + /store/regions: + $ref: paths/store_regions.yaml + /store/regions/{id}: + $ref: paths/store_regions_{id}.yaml + /store/return-reasons: + $ref: paths/store_return-reasons.yaml + /store/return-reasons/{id}: + $ref: paths/store_return-reasons_{id}.yaml + /store/returns: + $ref: paths/store_returns.yaml + /store/shipping-options: + $ref: paths/store_shipping-options.yaml + /store/shipping-options/{cart_id}: + $ref: paths/store_shipping-options_{cart_id}.yaml + /store/swaps: + $ref: paths/store_swaps.yaml + /store/swaps/{cart_id}: + $ref: paths/store_swaps_{cart_id}.yaml + /store/variants: + $ref: paths/store_variants.yaml + /store/variants/{variant_id}: + $ref: paths/store_variants_{variant_id}.yaml components: securitySchemes: cookie_auth: diff --git a/docs/api/store/paths/auth.yaml b/docs/api/store/paths/store_auth.yaml similarity index 90% rename from docs/api/store/paths/auth.yaml rename to docs/api/store/paths/store_auth.yaml index e6b8bdfa0f..7cb59f50a9 100644 --- a/docs/api/store/paths/auth.yaml +++ b/docs/api/store/paths/store_auth.yaml @@ -1,3 +1,42 @@ +get: + operationId: GetAuth + summary: Get Current Customer + description: Gets the currently logged in Customer. + x-authenticated: true + x-codegen: + method: getSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: ../code_samples/JavaScript/store_auth/get.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/store_auth/get.sh + security: + - cookie_auth: [] + tags: + - Auth + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/StoreAuthRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml post: operationId: PostAuth summary: Customer Login @@ -15,11 +54,11 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/auth/post.js + $ref: ../code_samples/JavaScript/store_auth/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/auth/post.sh + $ref: ../code_samples/Shell/store_auth/post.sh tags: - Auth responses: @@ -52,7 +91,7 @@ delete: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/auth/delete.sh + $ref: ../code_samples/Shell/store_auth/delete.sh security: - cookie_auth: [] tags: @@ -72,42 +111,3 @@ delete: $ref: ../components/responses/invalid_request_error.yaml '500': $ref: ../components/responses/500_error.yaml -get: - operationId: GetAuth - summary: Get Current Customer - description: Gets the currently logged in Customer. - x-authenticated: true - x-codegen: - method: getSession - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/auth/get.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/auth/get.sh - security: - - cookie_auth: [] - tags: - - Auth - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/StoreAuthRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml diff --git a/docs/api/store/paths/auth_{email}.yaml b/docs/api/store/paths/store_auth_{email}.yaml similarity index 88% rename from docs/api/store/paths/auth_{email}.yaml rename to docs/api/store/paths/store_auth_{email}.yaml index fb414e798e..b02b775028 100644 --- a/docs/api/store/paths/auth_{email}.yaml +++ b/docs/api/store/paths/store_auth_{email}.yaml @@ -16,11 +16,11 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/auth_{email}/get.js + $ref: ../code_samples/JavaScript/store_auth_{email}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/auth_{email}/get.sh + $ref: ../code_samples/Shell/store_auth_{email}/get.sh tags: - Auth responses: diff --git a/docs/api/store/paths/carts.yaml b/docs/api/store/paths/store_carts.yaml similarity index 90% rename from docs/api/store/paths/carts.yaml rename to docs/api/store/paths/store_carts.yaml index abce30a7cb..5925c934d4 100644 --- a/docs/api/store/paths/carts.yaml +++ b/docs/api/store/paths/store_carts.yaml @@ -17,13 +17,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts/post.js + $ref: ../code_samples/JavaScript/store_carts/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts/post.sh + $ref: ../code_samples/Shell/store_carts/post.sh tags: - - Cart + - Carts responses: '200': description: Successfully created a new Cart diff --git a/docs/api/store/paths/carts_{id}.yaml b/docs/api/store/paths/store_carts_{id}.yaml similarity index 87% rename from docs/api/store/paths/carts_{id}.yaml rename to docs/api/store/paths/store_carts_{id}.yaml index 6b2602f54e..1b46a1d457 100644 --- a/docs/api/store/paths/carts_{id}.yaml +++ b/docs/api/store/paths/store_carts_{id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}/get.js + $ref: ../code_samples/JavaScript/store_carts_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}/get.sh + $ref: ../code_samples/Shell/store_carts_{id}/get.sh tags: - - Cart + - Carts responses: '200': description: OK @@ -61,13 +61,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}/post.sh + $ref: ../code_samples/Shell/store_carts_{id}/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_complete.yaml b/docs/api/store/paths/store_carts_{id}_complete.yaml similarity index 91% rename from docs/api/store/paths/carts_{id}_complete.yaml rename to docs/api/store/paths/store_carts_{id}_complete.yaml index ce23f42808..2113e2d024 100644 --- a/docs/api/store/paths/carts_{id}_complete.yaml +++ b/docs/api/store/paths/store_carts_{id}_complete.yaml @@ -21,13 +21,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_complete/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}_complete/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_complete/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_complete/post.sh tags: - - Cart + - Carts responses: '200': description: >- diff --git a/docs/api/store/paths/carts_{id}_discounts_{code}.yaml b/docs/api/store/paths/store_carts_{id}_discounts_{code}.yaml similarity index 85% rename from docs/api/store/paths/carts_{id}_discounts_{code}.yaml rename to docs/api/store/paths/store_carts_{id}_discounts_{code}.yaml index 56b4494909..740838c76b 100644 --- a/docs/api/store/paths/carts_{id}_discounts_{code}.yaml +++ b/docs/api/store/paths/store_carts_{id}_discounts_{code}.yaml @@ -21,13 +21,13 @@ delete: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_discounts_{code}/delete.js + $ref: ../code_samples/JavaScript/store_carts_{id}_discounts_{code}/delete.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_discounts_{code}/delete.sh + $ref: ../code_samples/Shell/store_carts_{id}_discounts_{code}/delete.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_line-items.yaml b/docs/api/store/paths/store_carts_{id}_line-items.yaml similarity index 87% rename from docs/api/store/paths/carts_{id}_line-items.yaml rename to docs/api/store/paths/store_carts_{id}_line-items.yaml index 268a70bac2..c542c8af12 100644 --- a/docs/api/store/paths/carts_{id}_line-items.yaml +++ b/docs/api/store/paths/store_carts_{id}_line-items.yaml @@ -20,13 +20,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_line-items/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}_line-items/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_line-items/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_line-items/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_line-items_{line_id}.yaml b/docs/api/store/paths/store_carts_{id}_line-items_{line_id}.yaml similarity index 85% rename from docs/api/store/paths/carts_{id}_line-items_{line_id}.yaml rename to docs/api/store/paths/store_carts_{id}_line-items_{line_id}.yaml index b2e1b8c367..bd9d50e7a3 100644 --- a/docs/api/store/paths/carts_{id}_line-items_{line_id}.yaml +++ b/docs/api/store/paths/store_carts_{id}_line-items_{line_id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteCartsCartLineItemsItem - summary: Delete a Line Item - description: Removes a Line Item from a Cart. - parameters: - - in: path - name: id - required: true - description: The id of the Cart. - schema: - type: string - - in: path - name: line_id - required: true - description: The id of the Line Item. - schema: - type: string - x-codegen: - method: deleteLineItem - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: ../code_samples/JavaScript/carts_{id}_line-items_{line_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/carts_{id}_line-items_{line_id}/delete.sh - tags: - - Cart - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/StoreCartsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostCartsCartLineItemsItem summary: Update a Line Item @@ -73,13 +26,62 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_line-items_{line_id}/post.js + $ref: >- + ../code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_line-items_{line_id}/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_line-items_{line_id}/post.sh tags: - - Cart + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/StoreCartsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteCartsCartLineItemsItem + summary: Delete a Line Item + description: Removes a Line Item from a Cart. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: line_id + required: true + description: The id of the Line Item. + schema: + type: string + x-codegen: + method: deleteLineItem + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/store_carts_{id}_line-items_{line_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: ../code_samples/Shell/store_carts_{id}_line-items_{line_id}/delete.sh + tags: + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_payment-session.yaml b/docs/api/store/paths/store_carts_{id}_payment-session.yaml similarity index 87% rename from docs/api/store/paths/carts_{id}_payment-session.yaml rename to docs/api/store/paths/store_carts_{id}_payment-session.yaml index f6a044fb97..248f6c3733 100644 --- a/docs/api/store/paths/carts_{id}_payment-session.yaml +++ b/docs/api/store/paths/store_carts_{id}_payment-session.yaml @@ -22,13 +22,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_payment-session/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}_payment-session/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_payment-session/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_payment-session/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_payment-sessions.yaml b/docs/api/store/paths/store_carts_{id}_payment-sessions.yaml similarity index 85% rename from docs/api/store/paths/carts_{id}_payment-sessions.yaml rename to docs/api/store/paths/store_carts_{id}_payment-sessions.yaml index 92f77fa1d9..22ef8e378f 100644 --- a/docs/api/store/paths/carts_{id}_payment-sessions.yaml +++ b/docs/api/store/paths/store_carts_{id}_payment-sessions.yaml @@ -17,13 +17,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_payment-sessions/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}_payment-sessions/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_payment-sessions/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_payment-sessions/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}.yaml b/docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}.yaml similarity index 86% rename from docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}.yaml rename to docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}.yaml index 03220c3c5f..5d8877f3f2 100644 --- a/docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}.yaml +++ b/docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}.yaml @@ -1,54 +1,3 @@ -delete: - operationId: DeleteCartsCartPaymentSessionsSession - summary: Delete a Payment Session - description: Deletes a Payment Session on a Cart. May be useful if a payment has failed. - parameters: - - in: path - name: id - required: true - description: The id of the Cart. - schema: - type: string - - in: path - name: provider_id - required: true - description: >- - The id of the Payment Provider used to create the Payment Session to be - deleted. - schema: - type: string - x-codegen: - method: deletePaymentSession - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: >- - ../code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/delete.sh - tags: - - Cart - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/StoreCartsRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostCartsCartPaymentSessionUpdate summary: Update a Payment Session @@ -78,14 +27,65 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}/post.js + ../code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/carts_{id}_payment-sessions_{provider_id}/post.sh + ../code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/post.sh tags: - - Cart + - Carts + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/StoreCartsRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteCartsCartPaymentSessionsSession + summary: Delete a Payment Session + description: Deletes a Payment Session on a Cart. May be useful if a payment has failed. + parameters: + - in: path + name: id + required: true + description: The id of the Cart. + schema: + type: string + - in: path + name: provider_id + required: true + description: >- + The id of the Payment Provider used to create the Payment Session to be + deleted. + schema: + type: string + x-codegen: + method: deletePaymentSession + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}/delete.sh + tags: + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}_refresh.yaml b/docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}_refresh.yaml similarity index 86% rename from docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}_refresh.yaml rename to docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}_refresh.yaml index 1d054b5d08..13808738e2 100644 --- a/docs/api/store/paths/carts_{id}_payment-sessions_{provider_id}_refresh.yaml +++ b/docs/api/store/paths/store_carts_{id}_payment-sessions_{provider_id}_refresh.yaml @@ -26,14 +26,14 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/carts_{id}_payment-sessions_{provider_id}_refresh/post.js + ../code_samples/JavaScript/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/carts_{id}_payment-sessions_{provider_id}_refresh/post.sh + ../code_samples/Shell/store_carts_{id}_payment-sessions_{provider_id}_refresh/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_shipping-methods.yaml b/docs/api/store/paths/store_carts_{id}_shipping-methods.yaml similarity index 86% rename from docs/api/store/paths/carts_{id}_shipping-methods.yaml rename to docs/api/store/paths/store_carts_{id}_shipping-methods.yaml index 9151a80e1a..cc7833976c 100644 --- a/docs/api/store/paths/carts_{id}_shipping-methods.yaml +++ b/docs/api/store/paths/store_carts_{id}_shipping-methods.yaml @@ -20,13 +20,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/carts_{id}_shipping-methods/post.js + $ref: ../code_samples/JavaScript/store_carts_{id}_shipping-methods/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_shipping-methods/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_shipping-methods/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/carts_{id}_taxes.yaml b/docs/api/store/paths/store_carts_{id}_taxes.yaml similarity index 92% rename from docs/api/store/paths/carts_{id}_taxes.yaml rename to docs/api/store/paths/store_carts_{id}_taxes.yaml index 21591b1d43..994b1daffd 100644 --- a/docs/api/store/paths/carts_{id}_taxes.yaml +++ b/docs/api/store/paths/store_carts_{id}_taxes.yaml @@ -17,9 +17,9 @@ post: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/carts_{id}_taxes/post.sh + $ref: ../code_samples/Shell/store_carts_{id}_taxes/post.sh tags: - - Cart + - Carts responses: '200': description: OK diff --git a/docs/api/store/paths/collections.yaml b/docs/api/store/paths/store_collections.yaml similarity index 88% rename from docs/api/store/paths/collections.yaml rename to docs/api/store/paths/store_collections.yaml index 22d770bca8..3ebc694a93 100644 --- a/docs/api/store/paths/collections.yaml +++ b/docs/api/store/paths/store_collections.yaml @@ -17,6 +17,15 @@ get: schema: type: integer default: 10 + - in: query + name: handle + style: form + explode: false + description: Filter by the collection handle + schema: + type: array + items: + type: string - in: query name: created_at description: Date comparison for when resulting collections were created. @@ -68,13 +77,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/collections/get.js + $ref: ../code_samples/JavaScript/store_collections/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections/get.sh + $ref: ../code_samples/Shell/store_collections/get.sh tags: - - Collection + - Collections responses: '200': description: OK diff --git a/docs/api/store/paths/collections_{id}.yaml b/docs/api/store/paths/store_collections_{id}.yaml similarity index 85% rename from docs/api/store/paths/collections_{id}.yaml rename to docs/api/store/paths/store_collections_{id}.yaml index 0ea79a1461..57782abd2c 100644 --- a/docs/api/store/paths/collections_{id}.yaml +++ b/docs/api/store/paths/store_collections_{id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/collections_{id}/get.js + $ref: ../code_samples/JavaScript/store_collections_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/collections_{id}/get.sh + $ref: ../code_samples/Shell/store_collections_{id}/get.sh tags: - - Collection + - Collections responses: '200': description: OK diff --git a/docs/api/store/paths/customers.yaml b/docs/api/store/paths/store_customers.yaml similarity index 91% rename from docs/api/store/paths/customers.yaml rename to docs/api/store/paths/store_customers.yaml index 68378b419c..4d1c1131b1 100644 --- a/docs/api/store/paths/customers.yaml +++ b/docs/api/store/paths/store_customers.yaml @@ -13,13 +13,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers/post.js + $ref: ../code_samples/JavaScript/store_customers/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers/post.sh + $ref: ../code_samples/Shell/store_customers/post.sh tags: - - Customer + - Customers responses: '200': description: OK diff --git a/docs/api/store/paths/customers_me.yaml b/docs/api/store/paths/store_customers_me.yaml similarity index 87% rename from docs/api/store/paths/customers_me.yaml rename to docs/api/store/paths/store_customers_me.yaml index ac589e5ce1..b09af257ae 100644 --- a/docs/api/store/paths/customers_me.yaml +++ b/docs/api/store/paths/store_customers_me.yaml @@ -11,15 +11,15 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me/get.js + $ref: ../code_samples/JavaScript/store_customers_me/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me/get.sh + $ref: ../code_samples/Shell/store_customers_me/get.sh security: - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK @@ -55,15 +55,15 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me/post.js + $ref: ../code_samples/JavaScript/store_customers_me/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me/post.sh + $ref: ../code_samples/Shell/store_customers_me/post.sh security: - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK diff --git a/docs/api/store/paths/customers_me_addresses.yaml b/docs/api/store/paths/store_customers_me_addresses.yaml similarity index 87% rename from docs/api/store/paths/customers_me_addresses.yaml rename to docs/api/store/paths/store_customers_me_addresses.yaml index ba83e00c9b..841ec61ba6 100644 --- a/docs/api/store/paths/customers_me_addresses.yaml +++ b/docs/api/store/paths/store_customers_me_addresses.yaml @@ -14,15 +14,15 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me_addresses/post.js + $ref: ../code_samples/JavaScript/store_customers_me_addresses/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me_addresses/post.sh + $ref: ../code_samples/Shell/store_customers_me_addresses/post.sh security: - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: A successful response diff --git a/docs/api/store/paths/customers_me_addresses_{address_id}.yaml b/docs/api/store/paths/store_customers_me_addresses_{address_id}.yaml similarity index 85% rename from docs/api/store/paths/customers_me_addresses_{address_id}.yaml rename to docs/api/store/paths/store_customers_me_addresses_{address_id}.yaml index 9b0b70531a..94b1dd6731 100644 --- a/docs/api/store/paths/customers_me_addresses_{address_id}.yaml +++ b/docs/api/store/paths/store_customers_me_addresses_{address_id}.yaml @@ -1,50 +1,3 @@ -delete: - operationId: DeleteCustomersCustomerAddressesAddress - summary: Delete an Address - description: Removes an Address from the Customer's saved addresses. - x-authenticated: true - parameters: - - in: path - name: address_id - required: true - description: The id of the Address to remove. - schema: - type: string - x-codegen: - method: deleteAddress - x-codeSamples: - - lang: JavaScript - label: JS Client - source: - $ref: >- - ../code_samples/JavaScript/customers_me_addresses_{address_id}/delete.js - - lang: Shell - label: cURL - source: - $ref: ../code_samples/Shell/customers_me_addresses_{address_id}/delete.sh - security: - - cookie_auth: [] - tags: - - Customer - responses: - '200': - description: OK - content: - application/json: - schema: - $ref: ../components/schemas/StoreCustomersRes.yaml - '400': - $ref: ../components/responses/400_error.yaml - '401': - $ref: ../components/responses/unauthorized.yaml - '404': - $ref: ../components/responses/not_found_error.yaml - '409': - $ref: ../components/responses/invalid_state_error.yaml - '422': - $ref: ../components/responses/invalid_request_error.yaml - '500': - $ref: ../components/responses/500_error.yaml post: operationId: PostCustomersCustomerAddressesAddress summary: Update a Shipping Address @@ -69,15 +22,65 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me_addresses_{address_id}/post.js + $ref: >- + ../code_samples/JavaScript/store_customers_me_addresses_{address_id}/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me_addresses_{address_id}/post.sh + $ref: >- + ../code_samples/Shell/store_customers_me_addresses_{address_id}/post.sh security: - cookie_auth: [] tags: - - Customer + - Customers + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/StoreCustomersRes.yaml + '400': + $ref: ../components/responses/400_error.yaml + '401': + $ref: ../components/responses/unauthorized.yaml + '404': + $ref: ../components/responses/not_found_error.yaml + '409': + $ref: ../components/responses/invalid_state_error.yaml + '422': + $ref: ../components/responses/invalid_request_error.yaml + '500': + $ref: ../components/responses/500_error.yaml +delete: + operationId: DeleteCustomersCustomerAddressesAddress + summary: Delete an Address + description: Removes an Address from the Customer's saved addresses. + x-authenticated: true + parameters: + - in: path + name: address_id + required: true + description: The id of the Address to remove. + schema: + type: string + x-codegen: + method: deleteAddress + x-codeSamples: + - lang: JavaScript + label: JS Client + source: + $ref: >- + ../code_samples/JavaScript/store_customers_me_addresses_{address_id}/delete.js + - lang: Shell + label: cURL + source: + $ref: >- + ../code_samples/Shell/store_customers_me_addresses_{address_id}/delete.sh + security: + - cookie_auth: [] + tags: + - Customers responses: '200': description: OK diff --git a/docs/api/store/paths/customers_me_orders.yaml b/docs/api/store/paths/store_customers_me_orders.yaml similarity index 97% rename from docs/api/store/paths/customers_me_orders.yaml rename to docs/api/store/paths/store_customers_me_orders.yaml index b58425bcb1..960f944c96 100644 --- a/docs/api/store/paths/customers_me_orders.yaml +++ b/docs/api/store/paths/store_customers_me_orders.yaml @@ -175,15 +175,15 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me_orders/get.js + $ref: ../code_samples/JavaScript/store_customers_me_orders/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me_orders/get.sh + $ref: ../code_samples/Shell/store_customers_me_orders/get.sh security: - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK diff --git a/docs/api/store/paths/customers_me_payment-methods.yaml b/docs/api/store/paths/store_customers_me_payment-methods.yaml similarity index 86% rename from docs/api/store/paths/customers_me_payment-methods.yaml rename to docs/api/store/paths/store_customers_me_payment-methods.yaml index 96f715aad0..3f5dcd6639 100644 --- a/docs/api/store/paths/customers_me_payment-methods.yaml +++ b/docs/api/store/paths/store_customers_me_payment-methods.yaml @@ -12,15 +12,15 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_me_payment-methods/get.js + $ref: ../code_samples/JavaScript/store_customers_me_payment-methods/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_me_payment-methods/get.sh + $ref: ../code_samples/Shell/store_customers_me_payment-methods/get.sh security: - cookie_auth: [] tags: - - Customer + - Customers responses: '200': description: OK diff --git a/docs/api/store/paths/customers_password-reset.yaml b/docs/api/store/paths/store_customers_password-reset.yaml similarity index 80% rename from docs/api/store/paths/customers_password-reset.yaml rename to docs/api/store/paths/store_customers_password-reset.yaml index 8ae3b378c6..78f71d059f 100644 --- a/docs/api/store/paths/customers_password-reset.yaml +++ b/docs/api/store/paths/store_customers_password-reset.yaml @@ -15,20 +15,20 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_password-reset/post.js + $ref: ../code_samples/JavaScript/store_customers_password-reset/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_password-reset/post.sh + $ref: ../code_samples/Shell/store_customers_password-reset/post.sh tags: - - Customer + - Customers responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/StoreCustomersRes.yaml + $ref: ../components/schemas/StoreCustomersResetPasswordRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/store/paths/customers_password-token.yaml b/docs/api/store/paths/store_customers_password-token.yaml similarity index 86% rename from docs/api/store/paths/customers_password-token.yaml rename to docs/api/store/paths/store_customers_password-token.yaml index f010c0f30d..f49a22542c 100644 --- a/docs/api/store/paths/customers_password-token.yaml +++ b/docs/api/store/paths/store_customers_password-token.yaml @@ -17,13 +17,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/customers_password-token/post.js + $ref: ../code_samples/JavaScript/store_customers_password-token/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/customers_password-token/post.sh + $ref: ../code_samples/Shell/store_customers_password-token/post.sh tags: - - Customer + - Customers responses: '204': description: OK diff --git a/docs/api/store/paths/gift-cards_{code}.yaml b/docs/api/store/paths/store_gift-cards_{code}.yaml similarity index 86% rename from docs/api/store/paths/gift-cards_{code}.yaml rename to docs/api/store/paths/store_gift-cards_{code}.yaml index 61acd5b360..dfba240fbb 100644 --- a/docs/api/store/paths/gift-cards_{code}.yaml +++ b/docs/api/store/paths/store_gift-cards_{code}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/gift-cards_{code}/get.js + $ref: ../code_samples/JavaScript/store_gift-cards_{code}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/gift-cards_{code}/get.sh + $ref: ../code_samples/Shell/store_gift-cards_{code}/get.sh tags: - - Gift Card + - Gift Cards responses: '200': description: OK diff --git a/docs/api/store/paths/order-edits_{id}.yaml b/docs/api/store/paths/store_order-edits_{id}.yaml similarity index 86% rename from docs/api/store/paths/order-edits_{id}.yaml rename to docs/api/store/paths/store_order-edits_{id}.yaml index 971517ac96..4d77c09cf4 100644 --- a/docs/api/store/paths/order-edits_{id}.yaml +++ b/docs/api/store/paths/store_order-edits_{id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}/get.js + $ref: ../code_samples/JavaScript/store_order-edits_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}/get.sh + $ref: ../code_samples/Shell/store_order-edits_{id}/get.sh tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/store/paths/order-edits_{id}_complete.yaml b/docs/api/store/paths/store_order-edits_{id}_complete.yaml similarity index 83% rename from docs/api/store/paths/order-edits_{id}_complete.yaml rename to docs/api/store/paths/store_order-edits_{id}_complete.yaml index 97cff00d7b..39d132b04a 100644 --- a/docs/api/store/paths/order-edits_{id}_complete.yaml +++ b/docs/api/store/paths/store_order-edits_{id}_complete.yaml @@ -15,13 +15,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_complete/post.js + $ref: ../code_samples/JavaScript/store_order-edits_{id}_complete/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_complete/post.sh + $ref: ../code_samples/Shell/store_order-edits_{id}_complete/post.sh tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/store/paths/order-edits_{id}_decline.yaml b/docs/api/store/paths/store_order-edits_{id}_decline.yaml similarity index 85% rename from docs/api/store/paths/order-edits_{id}_decline.yaml rename to docs/api/store/paths/store_order-edits_{id}_decline.yaml index 47292e7f17..94fdff9486 100644 --- a/docs/api/store/paths/order-edits_{id}_decline.yaml +++ b/docs/api/store/paths/store_order-edits_{id}_decline.yaml @@ -20,13 +20,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/order-edits_{id}_decline/post.js + $ref: ../code_samples/JavaScript/store_order-edits_{id}_decline/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/order-edits_{id}_decline/post.sh + $ref: ../code_samples/Shell/store_order-edits_{id}_decline/post.sh tags: - - OrderEdit + - Order Edits responses: '200': description: OK diff --git a/docs/api/store/paths/orders.yaml b/docs/api/store/paths/store_orders.yaml similarity index 93% rename from docs/api/store/paths/orders.yaml rename to docs/api/store/paths/store_orders.yaml index bcf397aff9..9479e9bbc0 100644 --- a/docs/api/store/paths/orders.yaml +++ b/docs/api/store/paths/store_orders.yaml @@ -46,13 +46,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders/get.js + $ref: ../code_samples/JavaScript/store_orders/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders/get.sh + $ref: ../code_samples/Shell/store_orders/get.sh tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/store/paths/orders_batch_customer_token.yaml b/docs/api/store/paths/store_orders_batch_customer_token.yaml similarity index 85% rename from docs/api/store/paths/orders_batch_customer_token.yaml rename to docs/api/store/paths/store_orders_batch_customer_token.yaml index 71f6cfb30e..e8346ff429 100644 --- a/docs/api/store/paths/orders_batch_customer_token.yaml +++ b/docs/api/store/paths/store_orders_batch_customer_token.yaml @@ -15,16 +15,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_batch_customer_token/post.js + $ref: ../code_samples/JavaScript/store_orders_batch_customer_token/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_batch_customer_token/post.sh + $ref: ../code_samples/Shell/store_orders_batch_customer_token/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Invite + - Orders responses: '200': description: OK diff --git a/docs/api/store/paths/orders_cart_{cart_id}.yaml b/docs/api/store/paths/store_orders_cart_{cart_id}.yaml similarity index 85% rename from docs/api/store/paths/orders_cart_{cart_id}.yaml rename to docs/api/store/paths/store_orders_cart_{cart_id}.yaml index 296e93bc86..30780eb6ce 100644 --- a/docs/api/store/paths/orders_cart_{cart_id}.yaml +++ b/docs/api/store/paths/store_orders_cart_{cart_id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_cart_{cart_id}/get.js + $ref: ../code_samples/JavaScript/store_orders_cart_{cart_id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_cart_{cart_id}/get.sh + $ref: ../code_samples/Shell/store_orders_cart_{cart_id}/get.sh tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/store/paths/orders_customer_confirm.yaml b/docs/api/store/paths/store_orders_customer_confirm.yaml similarity index 86% rename from docs/api/store/paths/orders_customer_confirm.yaml rename to docs/api/store/paths/store_orders_customer_confirm.yaml index 9fba54cfd5..e9b166bac6 100644 --- a/docs/api/store/paths/orders_customer_confirm.yaml +++ b/docs/api/store/paths/store_orders_customer_confirm.yaml @@ -15,16 +15,16 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_customer_confirm/post.js + $ref: ../code_samples/JavaScript/store_orders_customer_confirm/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_customer_confirm/post.sh + $ref: ../code_samples/Shell/store_orders_customer_confirm/post.sh security: - api_token: [] - cookie_auth: [] tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/store/paths/orders_{id}.yaml b/docs/api/store/paths/store_orders_{id}.yaml similarity index 89% rename from docs/api/store/paths/orders_{id}.yaml rename to docs/api/store/paths/store_orders_{id}.yaml index d511afd673..10f587f07d 100644 --- a/docs/api/store/paths/orders_{id}.yaml +++ b/docs/api/store/paths/store_orders_{id}.yaml @@ -25,13 +25,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/orders_{id}/get.js + $ref: ../code_samples/JavaScript/store_orders_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/orders_{id}/get.sh + $ref: ../code_samples/Shell/store_orders_{id}/get.sh tags: - - Order + - Orders responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}.yaml b/docs/api/store/paths/store_payment-collections_{id}.yaml similarity index 86% rename from docs/api/store/paths/payment-collections_{id}.yaml rename to docs/api/store/paths/store_payment-collections_{id}.yaml index 8c6cf5f81c..fd4b2aa306 100644 --- a/docs/api/store/paths/payment-collections_{id}.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}.yaml @@ -22,21 +22,21 @@ get: type: string x-codegen: method: retrieve - queryParams: GetPaymentCollectionsParams + queryParams: StoreGetPaymentCollectionsParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payment-collections_{id}/get.js + $ref: ../code_samples/JavaScript/store_payment-collections_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}/get.sh + $ref: ../code_samples/Shell/store_payment-collections_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}_sessions.yaml b/docs/api/store/paths/store_payment-collections_{id}_sessions.yaml similarity index 85% rename from docs/api/store/paths/payment-collections_{id}_sessions.yaml rename to docs/api/store/paths/store_payment-collections_{id}_sessions.yaml index ad8cf6c210..24230b7395 100644 --- a/docs/api/store/paths/payment-collections_{id}_sessions.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}_sessions.yaml @@ -21,16 +21,17 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/payment-collections_{id}_sessions/post.js + $ref: >- + ../code_samples/JavaScript/store_payment-collections_{id}_sessions/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}_sessions/post.sh + $ref: ../code_samples/Shell/store_payment-collections_{id}_sessions/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}_sessions_batch.yaml b/docs/api/store/paths/store_payment-collections_{id}_sessions_batch.yaml similarity index 86% rename from docs/api/store/paths/payment-collections_{id}_sessions_batch.yaml rename to docs/api/store/paths/store_payment-collections_{id}_sessions_batch.yaml index 15c827e38f..c894269f3b 100644 --- a/docs/api/store/paths/payment-collections_{id}_sessions_batch.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}_sessions_batch.yaml @@ -23,16 +23,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/payment-collections_{id}_sessions_batch/post.js + ../code_samples/JavaScript/store_payment-collections_{id}_sessions_batch/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/payment-collections_{id}_sessions_batch/post.sh + $ref: >- + ../code_samples/Shell/store_payment-collections_{id}_sessions_batch/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}_sessions_batch_authorize.yaml b/docs/api/store/paths/store_payment-collections_{id}_sessions_batch_authorize.yaml similarity index 86% rename from docs/api/store/paths/payment-collections_{id}_sessions_batch_authorize.yaml rename to docs/api/store/paths/store_payment-collections_{id}_sessions_batch_authorize.yaml index 14eaf4a628..a3bb6178f7 100644 --- a/docs/api/store/paths/payment-collections_{id}_sessions_batch_authorize.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}_sessions_batch_authorize.yaml @@ -23,17 +23,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/payment-collections_{id}_sessions_batch_authorize/post.js + ../code_samples/JavaScript/store_payment-collections_{id}_sessions_batch_authorize/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/payment-collections_{id}_sessions_batch_authorize/post.sh + ../code_samples/Shell/store_payment-collections_{id}_sessions_batch_authorize/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}_sessions_{session_id}.yaml b/docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}.yaml similarity index 85% rename from docs/api/store/paths/payment-collections_{id}_sessions_{session_id}.yaml rename to docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}.yaml index fb1fb511c5..746d8cec0c 100644 --- a/docs/api/store/paths/payment-collections_{id}_sessions_{session_id}.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}.yaml @@ -25,14 +25,14 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}/post.js + ../code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/payment-collections_{id}_sessions_{session_id}/post.sh + ../code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}/post.sh tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/payment-collections_{id}_sessions_{session_id}_authorize.yaml b/docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}_authorize.yaml similarity index 85% rename from docs/api/store/paths/payment-collections_{id}_sessions_{session_id}_authorize.yaml rename to docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}_authorize.yaml index 70064e284b..3d41bc7feb 100644 --- a/docs/api/store/paths/payment-collections_{id}_sessions_{session_id}_authorize.yaml +++ b/docs/api/store/paths/store_payment-collections_{id}_sessions_{session_id}_authorize.yaml @@ -23,17 +23,17 @@ post: label: JS Client source: $ref: >- - ../code_samples/JavaScript/payment-collections_{id}_sessions_{session_id}_authorize/post.js + ../code_samples/JavaScript/store_payment-collections_{id}_sessions_{session_id}_authorize/post.js - lang: Shell label: cURL source: $ref: >- - ../code_samples/Shell/payment-collections_{id}_sessions_{session_id}_authorize/post.sh + ../code_samples/Shell/store_payment-collections_{id}_sessions_{session_id}_authorize/post.sh security: - api_token: [] - cookie_auth: [] tags: - - PaymentCollection + - Payment Collections responses: '200': description: OK diff --git a/docs/api/store/paths/product-categories.yaml b/docs/api/store/paths/store_product-categories.yaml similarity index 79% rename from docs/api/store/paths/product-categories.yaml rename to docs/api/store/paths/store_product-categories.yaml index 2cc95446f2..0a830b4fdd 100644 --- a/docs/api/store/paths/product-categories.yaml +++ b/docs/api/store/paths/store_product-categories.yaml @@ -6,7 +6,7 @@ get: parameters: - in: query name: q - description: Query used for searching product category names orhandles. + description: Query used for searching product category names or handles. schema: type: string - in: query @@ -14,6 +14,11 @@ get: description: Returns categories scoped by parent schema: type: string + - in: query + name: include_descendants_tree + description: Include all nested descendants of category + schema: + type: boolean - in: query name: offset description: How many product categories to skip in the result. @@ -33,23 +38,23 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-categories/get.js + $ref: ../code_samples/JavaScript/store_product-categories/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories/get.sh + $ref: ../code_samples/Shell/store_product-categories/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/StoreProductCategoriesListRes.yaml + $ref: ../components/schemas/StoreGetProductCategoriesRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/store/paths/product-categories_{id}.yaml b/docs/api/store/paths/store_product-categories_{id}.yaml similarity index 86% rename from docs/api/store/paths/product-categories_{id}.yaml rename to docs/api/store/paths/store_product-categories_{id}.yaml index 62fcb28473..a066d66be8 100644 --- a/docs/api/store/paths/product-categories_{id}.yaml +++ b/docs/api/store/paths/store_product-categories_{id}.yaml @@ -26,21 +26,21 @@ get: type: string x-codegen: method: retrieve - queryParams: StoreGetProductCategoryParams + queryParams: StoreGetProductCategoriesCategoryParams x-codeSamples: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-categories_{id}/get.js + $ref: ../code_samples/JavaScript/store_product-categories_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-categories_{id}/get.sh + $ref: ../code_samples/Shell/store_product-categories_{id}/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Category + - Product Categories responses: '200': description: OK diff --git a/docs/api/store/paths/product-tags.yaml b/docs/api/store/paths/store_product-tags.yaml similarity index 84% rename from docs/api/store/paths/product-tags.yaml rename to docs/api/store/paths/store_product-tags.yaml index b4a8e99fca..14ef6c1a86 100644 --- a/docs/api/store/paths/product-tags.yaml +++ b/docs/api/store/paths/store_product-tags.yaml @@ -3,6 +3,9 @@ get: summary: List Product Tags description: Retrieve a list of Product Tags. x-authenticated: true + x-codegen: + method: list + queryParams: StoreGetProductTagsParams parameters: - in: query name: limit @@ -97,32 +100,20 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-tags/get.js + $ref: ../code_samples/JavaScript/store_product-tags/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-tags/get.sh + $ref: ../code_samples/Shell/store_product-tags/get.sh tags: - - Product Tag + - Product Tags responses: '200': description: OK content: application/json: schema: - type: object - properties: - product_tags: - $ref: ../components/schemas/ProductTag.yaml - count: - type: integer - description: The total number of items available - offset: - type: integer - description: The number of items skipped before these items - limit: - type: integer - description: The number of items per page + $ref: ../components/schemas/StoreProductTagsListRes.yaml '400': $ref: ../components/responses/400_error.yaml '401': diff --git a/docs/api/store/paths/product-types.yaml b/docs/api/store/paths/store_product-types.yaml similarity index 95% rename from docs/api/store/paths/product-types.yaml rename to docs/api/store/paths/store_product-types.yaml index 38eb9d78ca..c562e8f096 100644 --- a/docs/api/store/paths/product-types.yaml +++ b/docs/api/store/paths/store_product-types.yaml @@ -100,16 +100,16 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/product-types/get.js + $ref: ../code_samples/JavaScript/store_product-types/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/product-types/get.sh + $ref: ../code_samples/Shell/store_product-types/get.sh security: - api_token: [] - cookie_auth: [] tags: - - Product Type + - Product Types responses: '200': description: OK diff --git a/docs/api/store/paths/products.yaml b/docs/api/store/paths/store_products.yaml similarity index 97% rename from docs/api/store/paths/products.yaml rename to docs/api/store/paths/store_products.yaml index ccddde8462..6e57992712 100644 --- a/docs/api/store/paths/products.yaml +++ b/docs/api/store/paths/store_products.yaml @@ -188,13 +188,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products/get.js + $ref: ../code_samples/JavaScript/store_products/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products/get.sh + $ref: ../code_samples/Shell/store_products/get.sh tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/store/paths/products_search.yaml b/docs/api/store/paths/store_products_search.yaml similarity index 89% rename from docs/api/store/paths/products_search.yaml rename to docs/api/store/paths/store_products_search.yaml index 8600b8ac69..733b0dcb8d 100644 --- a/docs/api/store/paths/products_search.yaml +++ b/docs/api/store/paths/store_products_search.yaml @@ -26,13 +26,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_search/post.js + $ref: ../code_samples/JavaScript/store_products_search/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_search/post.sh + $ref: ../code_samples/Shell/store_products_search/post.sh tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/store/paths/products_{id}.yaml b/docs/api/store/paths/store_products_{id}.yaml similarity index 93% rename from docs/api/store/paths/products_{id}.yaml rename to docs/api/store/paths/store_products_{id}.yaml index 6ad685401a..7cc2bcad51 100644 --- a/docs/api/store/paths/products_{id}.yaml +++ b/docs/api/store/paths/store_products_{id}.yaml @@ -57,13 +57,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/products_{id}/get.js + $ref: ../code_samples/JavaScript/store_products_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/products_{id}/get.sh + $ref: ../code_samples/Shell/store_products_{id}/get.sh tags: - - Product + - Products responses: '200': description: OK diff --git a/docs/api/store/paths/regions.yaml b/docs/api/store/paths/store_regions.yaml similarity index 94% rename from docs/api/store/paths/regions.yaml rename to docs/api/store/paths/store_regions.yaml index f8b0d9b9da..5004737470 100644 --- a/docs/api/store/paths/regions.yaml +++ b/docs/api/store/paths/store_regions.yaml @@ -66,13 +66,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions/get.js + $ref: ../code_samples/JavaScript/store_regions/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions/get.sh + $ref: ../code_samples/Shell/store_regions/get.sh tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/store/paths/regions_{id}.yaml b/docs/api/store/paths/store_regions_{id}.yaml similarity index 86% rename from docs/api/store/paths/regions_{id}.yaml rename to docs/api/store/paths/store_regions_{id}.yaml index 63026d4adb..1754659804 100644 --- a/docs/api/store/paths/regions_{id}.yaml +++ b/docs/api/store/paths/store_regions_{id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/regions_{id}/get.js + $ref: ../code_samples/JavaScript/store_regions_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/regions_{id}/get.sh + $ref: ../code_samples/Shell/store_regions_{id}/get.sh tags: - - Region + - Regions responses: '200': description: OK diff --git a/docs/api/store/paths/return-reasons.yaml b/docs/api/store/paths/store_return-reasons.yaml similarity index 83% rename from docs/api/store/paths/return-reasons.yaml rename to docs/api/store/paths/store_return-reasons.yaml index 56d00ff79b..cf06804410 100644 --- a/docs/api/store/paths/return-reasons.yaml +++ b/docs/api/store/paths/store_return-reasons.yaml @@ -8,13 +8,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/return-reasons/get.js + $ref: ../code_samples/JavaScript/store_return-reasons/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/return-reasons/get.sh + $ref: ../code_samples/Shell/store_return-reasons/get.sh tags: - - Return Reason + - Return Reasons responses: '200': description: OK diff --git a/docs/api/store/paths/return-reasons_{id}.yaml b/docs/api/store/paths/store_return-reasons_{id}.yaml similarity index 85% rename from docs/api/store/paths/return-reasons_{id}.yaml rename to docs/api/store/paths/store_return-reasons_{id}.yaml index ba1cc066b1..e7bc32989a 100644 --- a/docs/api/store/paths/return-reasons_{id}.yaml +++ b/docs/api/store/paths/store_return-reasons_{id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/return-reasons_{id}/get.js + $ref: ../code_samples/JavaScript/store_return-reasons_{id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/return-reasons_{id}/get.sh + $ref: ../code_samples/Shell/store_return-reasons_{id}/get.sh tags: - - Return Reason + - Return Reasons responses: '200': description: OK diff --git a/docs/api/store/paths/returns.yaml b/docs/api/store/paths/store_returns.yaml similarity index 87% rename from docs/api/store/paths/returns.yaml rename to docs/api/store/paths/store_returns.yaml index ee04bb1ff5..644e8b36fd 100644 --- a/docs/api/store/paths/returns.yaml +++ b/docs/api/store/paths/store_returns.yaml @@ -13,13 +13,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/returns/post.js + $ref: ../code_samples/JavaScript/store_returns/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/returns/post.sh + $ref: ../code_samples/Shell/store_returns/post.sh tags: - - Return + - Returns responses: '200': description: OK diff --git a/docs/api/store/paths/shipping-options.yaml b/docs/api/store/paths/store_shipping-options.yaml similarity index 89% rename from docs/api/store/paths/shipping-options.yaml rename to docs/api/store/paths/store_shipping-options.yaml index 790c76832a..7e695789cb 100644 --- a/docs/api/store/paths/shipping-options.yaml +++ b/docs/api/store/paths/store_shipping-options.yaml @@ -27,13 +27,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-options/get.js + $ref: ../code_samples/JavaScript/store_shipping-options/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-options/get.sh + $ref: ../code_samples/Shell/store_shipping-options/get.sh tags: - - Shipping Option + - Shipping Options responses: '200': description: OK diff --git a/docs/api/store/paths/shipping-options_{cart_id}.yaml b/docs/api/store/paths/store_shipping-options_{cart_id}.yaml similarity index 77% rename from docs/api/store/paths/shipping-options_{cart_id}.yaml rename to docs/api/store/paths/store_shipping-options_{cart_id}.yaml index 159495603b..47056d05e1 100644 --- a/docs/api/store/paths/shipping-options_{cart_id}.yaml +++ b/docs/api/store/paths/store_shipping-options_{cart_id}.yaml @@ -15,20 +15,20 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/shipping-options_{cart_id}/get.js + $ref: ../code_samples/JavaScript/store_shipping-options_{cart_id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/shipping-options_{cart_id}/get.sh + $ref: ../code_samples/Shell/store_shipping-options_{cart_id}/get.sh tags: - - Shipping Option + - Shipping Options responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/StoreShippingOptionsListRes.yaml + $ref: ../components/schemas/StoreCartShippingOptionsListRes.yaml '400': $ref: ../components/responses/400_error.yaml '404': diff --git a/docs/api/store/paths/swaps.yaml b/docs/api/store/paths/store_swaps.yaml similarity index 88% rename from docs/api/store/paths/swaps.yaml rename to docs/api/store/paths/store_swaps.yaml index 9ae0d63cf0..cd06c487bf 100644 --- a/docs/api/store/paths/swaps.yaml +++ b/docs/api/store/paths/store_swaps.yaml @@ -15,13 +15,13 @@ post: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/swaps/post.js + $ref: ../code_samples/JavaScript/store_swaps/post.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/swaps/post.sh + $ref: ../code_samples/Shell/store_swaps/post.sh tags: - - Swap + - Swaps responses: '200': description: OK diff --git a/docs/api/store/paths/swaps_{cart_id}.yaml b/docs/api/store/paths/store_swaps_{cart_id}.yaml similarity index 86% rename from docs/api/store/paths/swaps_{cart_id}.yaml rename to docs/api/store/paths/store_swaps_{cart_id}.yaml index d50e68638d..8bccd19bbb 100644 --- a/docs/api/store/paths/swaps_{cart_id}.yaml +++ b/docs/api/store/paths/store_swaps_{cart_id}.yaml @@ -15,13 +15,13 @@ get: - lang: JavaScript label: JS Client source: - $ref: ../code_samples/JavaScript/swaps_{cart_id}/get.js + $ref: ../code_samples/JavaScript/store_swaps_{cart_id}/get.js - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/swaps_{cart_id}/get.sh + $ref: ../code_samples/Shell/store_swaps_{cart_id}/get.sh tags: - - Swap + - Swaps responses: '200': description: OK diff --git a/docs/api/store/paths/variants.yaml b/docs/api/store/paths/store_variants.yaml similarity index 97% rename from docs/api/store/paths/variants.yaml rename to docs/api/store/paths/store_variants.yaml index 90562879e6..fd071c0f97 100644 --- a/docs/api/store/paths/variants.yaml +++ b/docs/api/store/paths/store_variants.yaml @@ -89,9 +89,9 @@ get: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/variants/get.sh + $ref: ../code_samples/Shell/store_variants/get.sh tags: - - Product Variant + - Variants responses: '200': description: OK diff --git a/docs/api/store/paths/variants_{variant_id}.yaml b/docs/api/store/paths/store_variants_{variant_id}.yaml similarity index 95% rename from docs/api/store/paths/variants_{variant_id}.yaml rename to docs/api/store/paths/store_variants_{variant_id}.yaml index 59eaa551bb..9270e2839c 100644 --- a/docs/api/store/paths/variants_{variant_id}.yaml +++ b/docs/api/store/paths/store_variants_{variant_id}.yaml @@ -41,9 +41,9 @@ get: - lang: Shell label: cURL source: - $ref: ../code_samples/Shell/variants_{variant_id}/get.sh + $ref: ../code_samples/Shell/store_variants_{variant_id}/get.sh tags: - - Product Variant + - Variants responses: '200': description: OK From f5e6eab14ebee75324e81632c1d0b4eb8701d4f9 Mon Sep 17 00:00:00 2001 From: David Frnoch Date: Tue, 4 Apr 2023 20:32:11 +0200 Subject: [PATCH 12/12] docs: update implementation examples links to master branch (#3707) --- .../carts-and-checkout/backend/add-fulfillment-provider.md | 2 +- .../modules/carts-and-checkout/backend/add-payment-provider.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/modules/carts-and-checkout/backend/add-fulfillment-provider.md b/docs/content/modules/carts-and-checkout/backend/add-fulfillment-provider.md index 3ba9c30c8b..9775cb4c9a 100644 --- a/docs/content/modules/carts-and-checkout/backend/add-fulfillment-provider.md +++ b/docs/content/modules/carts-and-checkout/backend/add-fulfillment-provider.md @@ -310,4 +310,4 @@ class MyFulfillmentService extends FulfillmentService { ## See Also -- Example Implementations: [Webshipper plugin](https://github.com/medusajs/medusa/tree/cab5821f55cfa448c575a20250c918b7fc6835c9/packages/medusa-fulfillment-webshipper) and the [manual fulfillment plugin](https://github.com/medusajs/medusa/tree/cab5821f55cfa448c575a20250c918b7fc6835c9/packages/medusa-fulfillment-manual) +- Example Implementations: [Webshipper plugin](https://github.com/medusajs/medusa/tree/master/packages/medusa-fulfillment-webshipper) and the [manual fulfillment plugin](https://github.com/medusajs/medusa/tree/master/packages/medusa-fulfillment-manual) diff --git a/docs/content/modules/carts-and-checkout/backend/add-payment-provider.md b/docs/content/modules/carts-and-checkout/backend/add-payment-provider.md index e0db0179a5..bee3a274d2 100644 --- a/docs/content/modules/carts-and-checkout/backend/add-payment-provider.md +++ b/docs/content/modules/carts-and-checkout/backend/add-payment-provider.md @@ -599,5 +599,5 @@ class MyPaymentService extends AbstractPaymentService { ## See Also -- Implementation Examples: [Stripe](https://github.com/medusajs/medusa/tree/2e6622ec5d0ae19d1782e583e099000f0a93b051/packages/medusa-payment-stripe) and [PayPal](https://github.com/medusajs/medusa/tree/2e6622ec5d0ae19d1782e583e099000f0a93b051/packages/medusa-payment-paypal) Payment Processors. +- Implementation Examples: [Stripe](https://github.com/medusajs/medusa/tree/master/packages/medusa-payment-stripe) and [PayPal](https://github.com/medusajs/medusa/tree/master/packages/medusa-payment-paypal) Payment Processors. - [Implement checkout flow on the storefront](../storefront/implement-checkout-flow.mdx).

~tB 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�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%0D=K-=atM|$COVh%0fOAw7ERR^>k@=0JGJ-n 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