Version Release: 2024-01

Menu API 2024-01 is now stable and ready for production usage! This version has a few major changes compared to 2023-07 (v1). We did our best to outline the upgrade process in our guides, but these are the top three to call out:

  1. 👋 No more semi-compliant JSON:API responses in favor of dropping the JSON:API standard altogether, which means no more includes statements
  2. 👋 Say goodbye to cursor-based pagination if favor of page and page_size
  3. 🙌 Introduction of consistent response object formatting, query parameters, and identifiers

Added Capabilities

  • Double The Endpoints, Double The Fun: We've added a whole bunch of endpoints that support whatever kind of menu syncing flow you desire
  • Prioritizing Consistency: One of the main goals with this version was to have consistent response object formatting, query parameters, and identifiers; you should then see very similar filtering capabilities across all our endpoints
  • ML-Backed Product Classification: Introduction of a new endpoint that exposes our machine-learning model for classifying products; see more
  • Increased Cannabinoid Support: We've expanded support for cannabinoids beyond just THC and CBD to include over a dozen cannabinoids, including TCHA, CBN, CBG and more
  • Terpene Support: You can now also provide measurements for over 30 terpenes
  • Measurement Ranges: When sending cannabinoid and terpene values, you can now provide a range of values a given consumer can expect; see more
  • Strain Support: If you know the strain of a given menu item, you can now provide that strain during create or update; you can even provide strain_name instead of strain_id and we'll do an exact-match lookup on on your behalf
  • Tags Support: Similar to strain, you can now associate any number of tags to a given menu item by a list of IDs; providing a list of tag_names instead of tag_ids means we'll lookup those tags for you and apply the ones we find
  • Safer Brand & Product Assignment: We will now ignore brand_id and product_id values that are provided that have been removed by the brand, which should reduce the amount of 422 errors you may receive when that brand or product is no longer supported
  • Upsert menu items by external_id: You can now manage menu items with your own external_id, where we'll create the item if it doesn't exist or update it with the provided values if it does; see more

Breaking Changes

  • No More JSON:API Responses: We did away with our semi-compliant JSON:API response objects in favor of simplified flattened objects that are all nested under a data attribute
    • With the dropping of JSON:API formatting, we no longer allow includes params to load extra relationships; all critical relationships on a given entity are included in the response by default
  • Variants Array Instead of Prices Object: We removed support of the legacy pricing fields (prices[price_half_gram], prices[price_gram], prices[price_eight], etc); please use the backwards-compatible variants array instead
  • Removal Of Cursor-Based Pagination:: Pagination has been standardized to favor page and page_size, which means cursor values are no longer supported