{
"name": "root",
"private": true,
"workspaces": {
"packages": [
"packages/medusa",
"packages/medusa-test-utils",
"packages/modules/*",
"packages/modules/providers/*",
"packages/plugins/*",
"packages/core/*",
"packages/framework/*",
"packages/cli/*",
"packages/cli/oas/*",
"packages/*",
"packages/admin/*",
"packages/design-system/*",
"packages/generated/*",
"integration-tests/**/*"
]
},
"devDependencies": {
"@atomico/rollup-plugin-sizes": "^1.1.4",
"@faker-js/faker": "^9.2.0",
"@rollup/plugin-node-resolve": "^15.1.0",
"@rollup/plugin-replace": "^5.0.2",
"@storybook/addon-essentials": "^8.3.5",
"@storybook/addon-interactions": "^8.3.5",
"@storybook/addon-links": "^8.3.5",
"@storybook/addon-styling": "^1.3.7",
"@storybook/blocks": "^8.3.5",
"@storybook/react": "^8.3.5",
"@storybook/react-vite": "^8.3.5",
"@storybook/testing-library": "^0.2.2",
"@swc/core": "^1.7.28",
"@swc/helpers": "^0.5.11",
"@swc/jest": "^0.2.36",
"@testing-library/dom": "^9.3.1",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/autocannon": "^7.12.5",
"@types/chalk": "^2.2.0",
"@types/commander": "^2.12.2",
"@types/compression": "^1.7.5",
"@types/configstore": "^6.0.0",
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/fs-extra": "11.0.1",
"@types/inquirer": "^9.0.3",
"@types/js-yaml": "^4.0.9",
"@types/jsdom": "^27.0.0",
"@types/jsonwebtoken": "^8.5.9",
"@types/lodash": "^4.17.15",
"@types/lodash.debounce": "^4.0.9",
"@types/lodash.isequal": "^4.5.8",
"@types/lodash.mergewith": "^4.6.9",
"@types/multer": "^2.0.0",
"@types/node": "^20.12.11",
"@types/node-emoji": "^1.8.2",
"@types/react": "^18.3.2",
"@types/react-dom": "^18.2.25",
"@types/uuid": "^9.0.1",
"@types/validator": "^13.7.17",
"@types/wait-on": "^5.3.1",
"@types/yargs": "^15.0.15",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "^0.32.2",
"ajv": "^8.17.1",
"autocannon": "^8.0.0",
"autoprefixer": "^10.4.19",
"awilix": "^8.0.1",
"axios": "^1.13.1",
"axios-mock-adapter": "^1.19.0",
"chromatic": "^6.20.0",
"configstore": "^5.0.1",
"cross-env": "^5.2.1",
"esbuild": "^0.25.0",
"eslint": "^8.40.0",
"eslint-config-google": "^0.14.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.11",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"eslint-plugin-storybook": "^10.0.1",
"eslint-plugin-unused-imports": "^2.0.0",
"expect-type": "^0.20.0",
"express": "^4.21.0",
"faker": "^5.5.3",
"get-port": "^5.1.1",
"glob": "13.0.6",
"import-from": "^3.0.0",
"ioredis": "^5.4.1",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"jsdom": "^27.1.0",
"lint-staged": "^11.2.6",
"msw": "^2.3.0",
"node-notifier": "^10.0.1",
"nodemon": "^2.0.20",
"pg-god": "^1.0.12",
"postcss": "^8.4.38",
"posthog-node": "^5.11.0",
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.2.3",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "6.30.3",
"resize-observer-polyfill": "^1.5.1",
"resolve-cwd": "^3.0.0",
"rimraf": "^5.0.1",
"rollup": "^4.28.1",
"rollup-plugin-esbuild": "^5.0.0",
"rollup-plugin-ts": "^3.2.0",
"rollup-plugin-visualizer": "^5.9.2",
"storybook": "^8.3.5",
"supertest": "^7.1.4",
"tailwindcss": "^3.4.3",
"ts-jest": "^29.1.0",
"ts-node": "^10.9.2",
"tsc-alias": "^1.8.7",
"tsup": "^8.4.0",
"turbo": "^1.6.3",
"typescript": "^5.6.2",
"uuid": "^9.0.0",
"vite": "^5.4.21",
"vite-plugin-inspect": "^0.8.7",
"vite-plugin-turbosnap": "^1.0.2",
"vitest": "^3.0.5",
"yalc": "^1.0.0-pre.53",
"zod": "3.25.76"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": "yarn run lint",
"*.{md,yaml,yml}": "prettier --write"
},
"scripts": {
"build": "turbo run build --concurrency=100% --no-daemon",
"lint": "eslint --ignore-path .eslintignore --ext .js,.ts,.tsx .",
"lint:path": "eslint --ignore-path .eslintignore --ext .js,.ts,.tsx",
"prettier": "prettier",
"jest": "jest",
"test": "turbo run test --no-daemon --no-cache --force",
"test:chunk": "./scripts/run-workspace-unit-tests-in-chunks.sh",
"test:integration:packages:fast": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/core/*' --filter='./packages/medusa' --filter='./packages/modules/*' --filter='./packages/modules/providers/*' --filter='!./packages/modules/{workflow-engine-redis,index,product,order,cart}'",
"test:integration:packages:slow": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/modules/{workflow-engine-redis,index,product,order,cart}'",
"test:integration:packages": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/core/*' --filter='./packages/medusa' --filter='./packages/modules/*' --filter='./packages/modules/providers/*'",
"test:integration:api": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-api",
"test:integration:http": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-http",
"test:integration:modules": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-modules",
"generate:http-types": "yarn workspace @medusajs/http-types-generator generate:http-types",
"validate:http-types": "yarn workspace @medusajs/http-types-generator validate:http-types",
"openapi:generate": "yarn ./packages/cli/oas/oas-github-ci run ci --with-full-file",
"medusa-oas": "yarn ./packages/cli/oas/medusa-oas-cli run medusa-oas",
"release:snapshot": "changeset publish --no-git-tags --snapshot --tag snapshot",
"release:next": "chgstangeset publish --no-git-tags --snapshot --tag next",
"version:next": "changeset version --snapshot next",
"release": "changeset publish",
"version": "changeset version && yarn install --no-immutable"
},
"dependencies": {
"@changesets/changelog-github": "^0.4.8",
"@changesets/cli": "^2.26.0",
"import-from": "^3.0.0"
},
"resolutions": {
"@redocly/cli/react": "^17.0.1",
"@redocly/cli/react-dom": "^17.0.1",
"pg": "8.16.3",
"@changesets/get-github-info@^0.5.2": "patch:@changesets/get-github-info@npm:^0.5.2#.yarn/patches/changesets-github-info.patch",
"@types/react": "^18.3.2",
"@types/react-dom": "^18.2.25",
"semver": "^7.5.2",
"axios": "^1.13.1",
"esbuild": "^0.25.0",
"on-headers": "^1.1.0",
"validator": "^13.15.20",
"@changesets/[email protected]": "patch:@changesets/assemble-release-plan@npm:6.0.9#.yarn/patches/@changesets-assemble-release-plan-npm-6.0.9-e01af97ef4.patch"
},
"packageManager": "[email protected]"
}
As both product and category have external_ids and have open PRs for allowing addressing them by this ID for use in situations where medusa participates in a larger, preexisting stack.
Some assets are served from medusa, that aren't necessarily owned by medusa. And as such those entities will have either natural identifiers (GTIN), or ERP based identifiers (SKU) or PIM defined product-types.
Having the ability to look these up based on their external identity makes integration scenarios easier, when those scenarios are based on webhooks and event notifications.
Package.json file
{ "name": "root", "private": true, "workspaces": { "packages": [ "packages/medusa", "packages/medusa-test-utils", "packages/modules/*", "packages/modules/providers/*", "packages/plugins/*", "packages/core/*", "packages/framework/*", "packages/cli/*", "packages/cli/oas/*", "packages/*", "packages/admin/*", "packages/design-system/*", "packages/generated/*", "integration-tests/**/*" ] }, "devDependencies": { "@atomico/rollup-plugin-sizes": "^1.1.4", "@faker-js/faker": "^9.2.0", "@rollup/plugin-node-resolve": "^15.1.0", "@rollup/plugin-replace": "^5.0.2", "@storybook/addon-essentials": "^8.3.5", "@storybook/addon-interactions": "^8.3.5", "@storybook/addon-links": "^8.3.5", "@storybook/addon-styling": "^1.3.7", "@storybook/blocks": "^8.3.5", "@storybook/react": "^8.3.5", "@storybook/react-vite": "^8.3.5", "@storybook/testing-library": "^0.2.2", "@swc/core": "^1.7.28", "@swc/helpers": "^0.5.11", "@swc/jest": "^0.2.36", "@testing-library/dom": "^9.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", "@types/autocannon": "^7.12.5", "@types/chalk": "^2.2.0", "@types/commander": "^2.12.2", "@types/compression": "^1.7.5", "@types/configstore": "^6.0.0", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/fs-extra": "11.0.1", "@types/inquirer": "^9.0.3", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^27.0.0", "@types/jsonwebtoken": "^8.5.9", "@types/lodash": "^4.17.15", "@types/lodash.debounce": "^4.0.9", "@types/lodash.isequal": "^4.5.8", "@types/lodash.mergewith": "^4.6.9", "@types/multer": "^2.0.0", "@types/node": "^20.12.11", "@types/node-emoji": "^1.8.2", "@types/react": "^18.3.2", "@types/react-dom": "^18.2.25", "@types/uuid": "^9.0.1", "@types/validator": "^13.7.17", "@types/wait-on": "^5.3.1", "@types/yargs": "^15.0.15", "@typescript-eslint/eslint-plugin": "^6.19.0", "@typescript-eslint/parser": "^6.19.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^0.32.2", "ajv": "^8.17.1", "autocannon": "^8.0.0", "autoprefixer": "^10.4.19", "awilix": "^8.0.1", "axios": "^1.13.1", "axios-mock-adapter": "^1.19.0", "chromatic": "^6.20.0", "configstore": "^5.0.1", "cross-env": "^5.2.1", "esbuild": "^0.25.0", "eslint": "^8.40.0", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.11", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "eslint-plugin-storybook": "^10.0.1", "eslint-plugin-unused-imports": "^2.0.0", "expect-type": "^0.20.0", "express": "^4.21.0", "faker": "^5.5.3", "get-port": "^5.1.1", "glob": "13.0.6", "import-from": "^3.0.0", "ioredis": "^5.4.1", "jest": "^29.7.0", "js-yaml": "^4.1.0", "jsdom": "^27.1.0", "lint-staged": "^11.2.6", "msw": "^2.3.0", "node-notifier": "^10.0.1", "nodemon": "^2.0.20", "pg-god": "^1.0.12", "postcss": "^8.4.38", "posthog-node": "^5.11.0", "prettier": "^2.8.8", "prettier-plugin-tailwindcss": "^0.2.3", "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "6.30.3", "resize-observer-polyfill": "^1.5.1", "resolve-cwd": "^3.0.0", "rimraf": "^5.0.1", "rollup": "^4.28.1", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-ts": "^3.2.0", "rollup-plugin-visualizer": "^5.9.2", "storybook": "^8.3.5", "supertest": "^7.1.4", "tailwindcss": "^3.4.3", "ts-jest": "^29.1.0", "ts-node": "^10.9.2", "tsc-alias": "^1.8.7", "tsup": "^8.4.0", "turbo": "^1.6.3", "typescript": "^5.6.2", "uuid": "^9.0.0", "vite": "^5.4.21", "vite-plugin-inspect": "^0.8.7", "vite-plugin-turbosnap": "^1.0.2", "vitest": "^3.0.5", "yalc": "^1.0.0-pre.53", "zod": "3.25.76" }, "lint-staged": { "*.{js,jsx,ts,tsx}": "yarn run lint", "*.{md,yaml,yml}": "prettier --write" }, "scripts": { "build": "turbo run build --concurrency=100% --no-daemon", "lint": "eslint --ignore-path .eslintignore --ext .js,.ts,.tsx .", "lint:path": "eslint --ignore-path .eslintignore --ext .js,.ts,.tsx", "prettier": "prettier", "jest": "jest", "test": "turbo run test --no-daemon --no-cache --force", "test:chunk": "./scripts/run-workspace-unit-tests-in-chunks.sh", "test:integration:packages:fast": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/core/*' --filter='./packages/medusa' --filter='./packages/modules/*' --filter='./packages/modules/providers/*' --filter='!./packages/modules/{workflow-engine-redis,index,product,order,cart}'", "test:integration:packages:slow": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/modules/{workflow-engine-redis,index,product,order,cart}'", "test:integration:packages": "turbo run test:integration --concurrency=1 --no-daemon --no-cache --force --filter='./packages/core/*' --filter='./packages/medusa' --filter='./packages/modules/*' --filter='./packages/modules/providers/*'", "test:integration:api": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-api", "test:integration:http": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-http", "test:integration:modules": "turbo run test:integration:chunk --no-daemon --no-cache --force --filter=integration-tests-modules", "generate:http-types": "yarn workspace @medusajs/http-types-generator generate:http-types", "validate:http-types": "yarn workspace @medusajs/http-types-generator validate:http-types", "openapi:generate": "yarn ./packages/cli/oas/oas-github-ci run ci --with-full-file", "medusa-oas": "yarn ./packages/cli/oas/medusa-oas-cli run medusa-oas", "release:snapshot": "changeset publish --no-git-tags --snapshot --tag snapshot", "release:next": "chgstangeset publish --no-git-tags --snapshot --tag next", "version:next": "changeset version --snapshot next", "release": "changeset publish", "version": "changeset version && yarn install --no-immutable" }, "dependencies": { "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.0", "import-from": "^3.0.0" }, "resolutions": { "@redocly/cli/react": "^17.0.1", "@redocly/cli/react-dom": "^17.0.1", "pg": "8.16.3", "@changesets/get-github-info@^0.5.2": "patch:@changesets/get-github-info@npm:^0.5.2#.yarn/patches/changesets-github-info.patch", "@types/react": "^18.3.2", "@types/react-dom": "^18.2.25", "semver": "^7.5.2", "axios": "^1.13.1", "esbuild": "^0.25.0", "on-headers": "^1.1.0", "validator": "^13.15.20", "@changesets/[email protected]": "patch:@changesets/assemble-release-plan@npm:6.0.9#.yarn/patches/@changesets-assemble-release-plan-npm-6.0.9-e01af97ef4.patch" }, "packageManager": "[email protected]" }Node.js version
v20.0.0
Database and its version
PostgresQL 15.7
Operating system name and version
Mac
Browser name
Chrome
What happended?
Unable to address or look up tags, collections and types by external ids
Expected behavior
As both product and category have external_ids and have open PRs for allowing addressing them by this ID for use in situations where medusa participates in a larger, preexisting stack.
Some assets are served from medusa, that aren't necessarily owned by medusa. And as such those entities will have either natural identifiers (GTIN), or ERP based identifiers (SKU) or PIM defined product-types.
Having the ability to look these up based on their external identity makes integration scenarios easier, when those scenarios are based on webhooks and event notifications.
@NicolasGorga can you mark this as help-wanted for the new PR-check-process-appeasement?
Actual behavior
No ability to look up by a natural or external identifier
Link to reproduction repo
#14855