Skip to content

Comments

feat(product-category): add external_id to product-category#14799

Open
asgerjensen wants to merge 1 commit intomedusajs:developfrom
asgerjensen:feature/external-id-on-product-category
Open

feat(product-category): add external_id to product-category#14799
asgerjensen wants to merge 1 commit intomedusajs:developfrom
asgerjensen:feature/external-id-on-product-category

Conversation

@asgerjensen
Copy link

@asgerjensen asgerjensen commented Feb 24, 2026

Summary

What — What changes are introduced in this PR?

This PR adds external_id to the product-category type.
It is available on both /admin and /store, and can be used as filter.

Why — Why are these changes relevant or necessary?

To facilitate runtime lookup from values derived from 3rd party systems (PIM, ERP, Recommendations, CMS-stored-references) of the product-category.

Allows addressing data via its native/real-world identifier, rather than synthetic/instance-specific database identifier.

How — How have these changes been implemented?

Added migration to add field. Added field to schemas and queryInfo blocks.

Testing — How have these changes been tested, or how can the reviewer test the feature?

Integration tests included.


Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.
This helps with documentation and ensures maintainers can quickly understand and verify the change.

await sdk.admin.productCategory.create({
   name: 'test-category',
   external_id: 'my-external_id'
});
sdk.store.category.list({
   external_id: 'my-external_id'
});

Checklist

Please ensure the following before requesting a review:

  • I have added a changeset for this PR
    • Every non-breaking change should be marked as a patch
    • To add a changeset, run yarn changeset and follow the prompts
  • The changes are covered by relevant tests
  • I have verified the code works as intended locally
  • I have linked the related issue(s) if applicable

Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.


Note

Medium Risk
Introduces a schema change and expands API query/filter surface area; low logic complexity, but migrations and new filter parameters can affect production data and query behavior.

Overview
Adds a nullable external_id to product_category end-to-end: new DB migration + model field, updated type definitions/DTOs, and API validation/query configs so external_id is returned by default and accepted on create/update.

Enables filtering product categories by external_id in both Admin and Store list endpoints, with expanded integration test coverage (new store tests plus admin/service test updates) and a changeset bumping affected packages.

Written by Cursor Bugbot for commit 53e0dbc. This will update automatically on new commits. Configure here.

@asgerjensen asgerjensen requested a review from a team as a code owner February 24, 2026 16:55
@changeset-bot
Copy link

changeset-bot bot commented Feb 24, 2026

🦋 Changeset detected

Latest commit: 53e0dbc

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 76 packages
Name Type
@medusajs/product Patch
integration-tests-http Patch
@medusajs/types Patch
@medusajs/medusa Patch
@medusajs/event-bus-redis Patch
@medusajs/draft-order Patch
@medusajs/framework Patch
@medusajs/js-sdk Patch
@medusajs/modules-sdk Patch
@medusajs/orchestration Patch
@medusajs/utils Patch
@medusajs/workflows-sdk Patch
@medusajs/medusa-oas-cli Patch
@medusajs/admin-bundler Patch
@medusajs/dashboard Patch
@medusajs/test-utils Patch
@medusajs/analytics Patch
@medusajs/api-key Patch
@medusajs/auth Patch
@medusajs/cache-inmemory Patch
@medusajs/cache-redis Patch
@medusajs/caching Patch
@medusajs/cart Patch
@medusajs/currency Patch
@medusajs/customer Patch
@medusajs/event-bus-local Patch
@medusajs/file Patch
@medusajs/fulfillment Patch
@medusajs/index Patch
@medusajs/inventory Patch
@medusajs/link-modules Patch
@medusajs/locking Patch
@medusajs/notification Patch
@medusajs/order Patch
@medusajs/payment Patch
@medusajs/pricing Patch
@medusajs/promotion Patch
@medusajs/rbac Patch
@medusajs/region Patch
@medusajs/sales-channel Patch
@medusajs/settings Patch
@medusajs/stock-location Patch
@medusajs/store Patch
@medusajs/tax Patch
@medusajs/translation Patch
@medusajs/user Patch
@medusajs/workflow-engine-inmemory Patch
@medusajs/workflow-engine-redis Patch
@medusajs/analytics-local Patch
@medusajs/analytics-posthog Patch
@medusajs/auth-emailpass Patch
@medusajs/auth-github Patch
@medusajs/auth-google Patch
@medusajs/caching-redis Patch
@medusajs/file-local Patch
@medusajs/file-s3 Patch
@medusajs/fulfillment-manual Patch
@medusajs/locking-postgres Patch
@medusajs/locking-redis Patch
@medusajs/notification-local Patch
@medusajs/notification-sendgrid Patch
@medusajs/payment-stripe Patch
@medusajs/core-flows Patch
@medusajs/oas-github-ci Patch
@medusajs/cli Patch
@medusajs/deps Patch
@medusajs/telemetry Patch
@medusajs/admin-sdk Patch
@medusajs/admin-shared Patch
@medusajs/admin-vite-plugin Patch
@medusajs/icons Patch
@medusajs/toolbox Patch
@medusajs/ui-preset Patch
create-medusa-app Patch
medusa-dev-cli Patch
@medusajs/ui Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Feb 24, 2026

@asgerjensen is attempting to deploy a commit to the medusajs Team on Vercel.

A member of the Team first needs to authorize it.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

@asgerjensen asgerjensen force-pushed the feature/external-id-on-product-category branch from 6d39e37 to 33f1dbc Compare February 24, 2026 20:37
It is available on both /admin and /store, and can be used as filter.

fix: add missing snapshot

test: fix race condition in test
@asgerjensen asgerjensen force-pushed the feature/external-id-on-product-category branch from 33f1dbc to 53e0dbc Compare February 24, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant