**What**
- add/ remove sales channels to/from PublishableApiKey in batch
- associate created cart with SC defined by PK
- filter products if PK with SC association is present
- retrieve a list of sales channels for a PK
- implement 3 new middleware
- `extendRequestParams`
- _extend req object with PK scopes (a list of sales channels) if a publishable key is present in the header of the request_
- `validateProductSalesChannelAssociation`
- _validate if the passed product id belongs to a SC from the PK's scope_
- `validateSalesChannelParam`
- _validate that passed SC ids in the req body/query are within the scope of the PK_
**How**
- The general idea was to reuse existing logic in the controller layer which expects `sales_channel_id` array to be passed. The middleware sets associated SC ids in the request context if a PK is present. These ids are then merged in the controller and passed to the service layer.
**TODO**
- filter response from the search endpoint (CORE-824)
**Testing**
- _integration tests_
- add sales channels to the publishable API key scope
- remove sales channels from the publishable API key scope
- returns products from a specific channel associated with a publishable key
- returns products from multiples sales channels associated with a publishable key
- returns all products if PK is not passed
- returns all products if passed PK doesn't have associated channels
- should assign sales channel to order on cart completion if PK is present in the header
- list sales channels from the publishable api key
- throws because sales channel in query/body is not in the scope of passed PK
---
**Discussion**
- what about the other endpoints (e.g. GET /store/product/:id - do we return 404 if the product is not in the SC associated with passed PK)
- what about products search route
- what about `/admin/products` & `/admin/orders` routes (do we add the middleware there as well)
---
RESOLVES CORE-792
RESOLVES CORE-793
RESOLVES CORE-816
Medusa
Documentation | Medusa Admin Demo | Website
An open source composable commerce engine built for developers.
Getting Started
Follow our quickstart guide to learn how to set up a Medusa server.
Requirements
You can check out this documentation for details about setting up your environment.
What is Medusa
Medusa is an open source composable commerce engine built with Node.js. Medusa enables developers to build scalable and sophisticated commerce setups with low effort and great developer experience.
You can learn more about Medusa’s architecture in our documentation.
Features
You can learn about all of the ecommerce features that Medusa provides in our documentation.
Roadmap
Write-ups for all features will be made available in Github discussions before starting the implementation process.
2022
- Admin revamp
- Tax API
- Tax Calculation Strategy
- Cart Calculation Strategy
- Customer Groups API
- Promotions API
- Price Lists API
- Price Selection Strategy
- Import / Export API
- Sales Channel API
- Extended Order API (managing placed orders)
- PaymentCollection API (collecting payments separate from carts and draft orders)
- Multi-warehouse API
- Extended Product API (custom fields, publishing control, and more)
Plugins
Check out our available plugins that you can install and use instantly on your Medusa server.
Contributions
Please check our contribution guide for details about how to contribute to both our codebase and our documentation.
Upgrade Guides
Follow our upgrade guides on the documentation to keep your Medusa project up-to-date.
Community & Support
Use these channels to be part of the community, ask for help while using Medusa, or just learn more about Medusa:
- Discord: This is the main channel to join the community. You can ask for help, showcase your work with Medusa, and stay up to date with everything Medusa.
- GitHub Issues: for sending in any issues you face or bugs you find while using Medusa.
- GitHub Discussions: for joining discussions and submitting your ideas.
- Medusa Blog: find diverse tutorials and company news.
License
Licensed under the MIT License