Skip to content
This repository was archived by the owner on Dec 19, 2019. It is now read-only.

Roadmap

Alex Paliarush edited this page May 17, 2018 · 22 revisions

Phase 1 - Complete

Products

Using this query, a user can query for one or more products. Developers can use this query to fetch data necessary to build basic product-related e-commerce experiences like product detail pages, product listing pages, search result pages, cart/checkout, wishlists, product compare, product widgets, and many more. This query has built-in support for the following elements:

  • All product types: user can query on Simple, Configurable, Grouped, Bundled, Downloadable, Virtual, and Gift Card product types
  • Filtering: user can filter products based on attributes (e.g. sku, price, title, description, and many others) and standard applicable operators (is, is not, greater than, less than, etc)
  • Search: user can perform a full-text search on products. This can be combined with filtering as mentioned above
  • Sorting: user can sort the set of returned products based on various attributes
  • Pagination: user can paginate through the resulting set of products using PageSize and CurrentPage
  • Scopes: user can query multiple store views using a store view code designated in the HTTP headers
  • EAV: EAV product attributes are automatically generated as part of the schema
  • Extension attributes: these attributes can be explicitly declared to be a part of the schema
  • Pricing: detailed pricing information containing prices, currency codes, and adjustments
  • Resolvers: user can easily extend this model by declaring custom resolvers of modifying existing ones
  • Documentation: the schema and description for each field is displayed in graphical tools like GraphiQL.

Category

Using this query, a user can fetch data about a category. Developers can use this query to build out storefront category experiences for shoppers. This includes the navigation menu, breadcrumbs, related categories, and others. Any category can be fetched using its id.

Customer

The attributes of the currently logged-in customer can be queried. Authentication is based on the session token.

URL Resolution

This query can be used for resolving arbitrary URLs to their canonical versions, including identification of the type of resource: products, categories, or CMS pages.

Phase 2 - In Progress

In this phase we are looking to accelerate development of GraphQL capabilities through Community collaboration. We've broken down our backlog into several tracks.

Performance Track

Implement caching in GraphQL with consideration for both server-side and client-side (mainly for 3rd party tools), which

Persistence Layer

Persistence layer provides flexible and performant data retrieval and a persistence-agnostic way to declare and store entities.

Coverage Track

Provides an ability for a developer to create a checkout experience that is completely GraphQL-based. This includes cart manipulations and retrieval, as well as working with payment and shipping methods.

GraphQL needs to provide sufficient information for a developer to build out the storefront My Account experience for a shopper. This includes being able to fetch, for the logged in customer, My Orders, wishlists, stored payment methods, gift cards, rewards balance, gift registries, product reviews, etc.

This work is intended to improve the coverage of the products query for GraphQL and will be a mixture of bugs and new enhancements. More details in the link above.

This work is intended to improve the capabilities of the Category query by adding things like filtering, more efficient ways to fetch category parents/children, and exposing category-product relationships.

This will add an ability for GraphQL to return rendered CMS content from the original Magento CMS as well as Pagebuilder.

Framework Track

Extensibility

Applying extensibility principles from GraphQL and applying them to the rest of the Magento platform

There are several improvements we can make to the framework, including partial automation of docs and extensibility of tests

Security

Implementing a query complexity limitation so that attackers cannot cause harm by issuing extremely complex queries against the servers

Clone this wiki locally