It took us a while but we did it! Today, we’re proudly releasing Storefront API 1.0rc2.
You can use the Storefront GraphQL API to integrate all your backend systems with your eCommerce frontend under a single GraphQL/REST API. By default, all catalog information is stored in ElasticSearch, and all the write operations are forwarded to the platform driver (Magento1, Magento2, Spree, and others available).
From the last release, we’ve refactored the core heading towards separate npm-modules - managed in the multi repo structure. This refactoring wouldn’t have happened without Jens Sadowski (@ResuBaka) who joined our Core Development team in January.
More than that, we’ve fixed some bugs, worked on stabilization, and extended the TypeScript coverage among the source codebase.
Merging with Vue Storefront ecosystem?
Storefront API originated from Vue Storefront API - the original backend layer for the Vue Storefront. We’ve been focused on improving the maintainability, code structure, and extendibility. The current release is 100% compatible with Vue Storefront API so you could potentially use it as a drop-in replacement. We’re porting all the Vue Storefront API bug fixes and features to Storefront API to keep the current status.
The plan is to eventually replace Vue Storefront API with Storefront API, with the 1.0 stable release which is planned for the Q3 2020. We plan to sync this replacement with Vue Storefront release 1.13.
From Vue Storefront 1.11, you can easily test and play with Storefront API. As this is just the Release Candidate, we don’t recommend using it on production yet. However, if you’re thinking on adding new features to the Vue Storefront API, please consider adding it to Storefront API as well
We changed quite a lot, however, most of the changes can be taken as improvements and stabilization fixes. Please find the changelog below:
- Create attribute service that allows for fetching of attributes with specific options - used for products aggregates - @gibkigonzo (https://github.com/DivanteLtd/vue-storefront/pull/4001, https://github.com/DivanteLtd/mage2vuestorefront/pull/99)
- Add `resetPasswordUsingResetToken` to `magento1` platform - @cewald (#415)
- Fix MSI default stock id value - @Inicorena (#417)
- Add product processor to new URL mapper endpoint #401 - @cewald (#401, #403)
- Add ElasticSearch client support for HTTP authentication - @cewald (#397)
- Support for `save_in_addressbook` added - @lucasqm (#394)
- Magento2 / Create password endpoint - @fifciu (#366)
- API and Platform comments for all the REST endpoints added with the links to the official docs - @pkarw
- Added global logger which you can change the instance to use every logger you want to use - @resubaka (#24)
- Added better typescript annotation/new types - @resubaka (#24)
- Added that graphql resolvers are loaded with js or ts ending - @resubaka (#24)
- The lib folder is moved to a package - @resubaka (#30)
- Added hooks implementation from vue-storefront as a package - @resubaka (#30)
- Added the integration tests - @resubaka (#35)
- Add url module - @gibkigonzo (#3942)
- Add fallback for `sourcePriceInclTax` and `finalPriceInclTax` in `magento1` platform - @cewald (#398)
- moved server logic into packages/core @resubaka (#47)
- Update to `storefront-query-builder` version `1.0.0` - @cewald (#51)
Changed / Improved
- The `response_format` query parameter to the `/api/catalog` endpoint. Currently there is just one additional format supported: `response_format=compact`. When used, the response format got
a) remapping the results, removing the `_source` from the `hits.hits`; b) compressing the JSON fields names according to the `config.products.fieldsToCompact`;
c) removing the JSON fields from the `product.configurable_children` when their values === parent product values; overall response size reduced over -70% - @pkarw
- The support for `SearchQuery` instead of the ElasticSearch DSL as for the input to `/api/catalog` - using `storefront-query-builder` package - @pkarw - https://github.com/DivanteLtd/vue-storefront/issues/2167
- Taxcalc backport - special_prices (https://github.com/DivanteLtd/vue-storefront-api/pull/380) - @resubaka
- Check message property instead of errorMessage in apiError function - @cdshotels-liborpansky (#378)
- Replaced the old `crop` function call which has been removed from Sharp image processor - @grimasod (#381)
- Fixed that you can now run the dist folder output and don't get errors with module can't be loaded - @resubaka (#24)
- Changed that only one redis and elasticsearch client is created - @resubaka (#35)
- Send /reset-password with undefined websiteId as default - @gibkigonzo (#382)
- Fixed the restore command restore command of elastic7.ts so it exits when it finished - @resubaka (#35)
- Fixed the restore command restore command of elastic7.ts so it does not crash when it can't find the file it wants to upload - @resubaka (#35)
- Fix misplaced parenthesis for `taxClasses.find` - @resubaka (#39)
- Added missing build decencies for native decencies @alexshchur (#43)
- now all packages work when you install them from a registry @resubaka (#47)