Repository navigation
[RFC] application/recipe - create and edit recipes for food and drink stores #38
patrickbolle
started this conversation in
RFC
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
What type are you proposing?
application/recipe, with the actionscreateandedit.A recipe is a set of ingredients and steps that a food or drink brand publishes on its
store, often with its own products linked to the ingredients. Many Shopify food and
drink brands use recipes as their main content: a hot sauce brand shows what to cook
with it, a coffee roaster shows how to brew it.
What do merchants ask Sidekick to do that needs it?
Real requests we see from merchants on Recipe Kit, a recipe app on the Shopify App Store
since 2020:
createwithfields extracted by Sidekick)
edit)createfrom an existing recipe)edit)Today Sidekick can find recipes through a data extension, but it has no action to hand
off to. Merchants have to leave Sidekick and do the work by hand.
What apps would register intents for it?
ingredients and steps.
What fields does it need?
A sketch, aligned with schema.org/Recipe so apps can map to
the structured data they already output for search engines. No
requiredfields.{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://extensions.shopifycdn.com/shopifycloud/schemas/v1/application/recipe.json", "title": "Recipe Schema", "type": "object", "properties": { "id": { "type": "string", "description": "The recipe ID. Used for edit actions." }, "title": { "type": "string" }, "description": { "type": "string" }, "ingredients": { "type": "array", "description": "One entry per ingredient line, for example \"2 cups oat milk\"", "items": { "type": "object", "properties": { "text": { "type": "string" }, "productId": { "type": "string", "description": "Optional Shopify product GID linked to this ingredient" } } } }, "instructions": { "type": "array", "description": "One entry per step", "items": { "type": "string" } }, "servings": { "type": "string", "description": "For example \"4\" or \"12 cookies\"" }, "prepTime": { "type": "string", "description": "ISO 8601 duration, for example PT15M" }, "cookTime": { "type": "string", "description": "ISO 8601 duration" }, "image": { "type": "string", "format": "uri" }, "category": { "type": "string", "description": "For example Dessert" }, "cuisine": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "sourceUrl": { "type": "string", "format": "uri", "description": "Where the recipe came from, if imported" } }, "additionalProperties": true }productIdon an ingredient is what makes a recipe shoppable, so we think it belongs inthe shared shape rather than in app-specific extra fields.
Anything close in the existing list?
application/storefront-page(open RFC [RFC] application/storefront-page — create and edit storefront pages for page builder apps #29) builds whole pages. A recipe is structuredcontent with ingredients, steps and product links, which a page type would flatten.
application/faqis question-and-answer content with no steps or ingredients.shopify/articleintent,and a recipe is not an article: apps render it as a structured card with its own data.
Open questions
Is a
deleteaction (or archive) planned forapplication/*types? If yes, recipeswould use it.
"turn on cook mode"). Is there a planned way for an app to accept a settings change
from Sidekick with merchant confirmation, or is that out of scope for intents?
create+bulkfitapplication/*types the wayimport+bulkfitsshopify/*types?We are glad to open the
types/application-recipe.mdPR once the shape is agreed.All reactions