menu_entity_id de cada partida de un pedido se relaciona directamente con su propio catálogo.
Publicar requiere el alcance (scope) menus:write y una conexión activa con el local. Leer requiere menus:read. Consulte Cómo funciona Maple para conocer las conexiones.
La estructura de un menú
Un menú es un árbol con definiciones compartidas a su lado:- Todo objeto tiene un
externalId: su identificador estable para ese objeto. Usted los elige; Maple nunca los cambia. Volver a publicar con el mismoexternalIdactualiza el mismo objeto. La respuesta también genera ID de Maple (item_…,var_…,ctg_…) como referencia, pero usted direcciona los objetos con suexternalId. - El precio está en la variante. Incluso un artículo simple tiene al menos una variante (llámela “Regular”). Todos los precios son enteros en unidades menores:
450equivale a $4.50.
Un menú mínimo
El documento válido más pequeño es una moneda y una categoría con un artículo que tiene una variante:externalId que usted envió se devuelven sin cambios.
Agregue modificadores compartidos
Defina un grupo de modificadores una sola vez en el nivel superior y haga referencia a él congroupId donde corresponda, para que “Milk options” quede en un solo lugar en todas las bebidas:
name y options) o una referencia ({ "groupId": "grp-milk" }). No mezcle las dos formas en una misma entrada: un payload que lo haga se rechaza en lugar de truncarse en silencio. Los artículos, las variantes y cada opción pueden incluir grupos de modificadores, lo que le permite anidar opciones donde el menú lo requiera.
Semántica de la publicación
Cada publicación envía el menú completo como su estado deseado. Maple lo compara (diff) con el menú actual (segúnexternalId) y aplica el resultado como una versión nueva. De esto se derivan varias reglas:
- El documento es el menú completo. Lo que usted envíe se convierte en el menú. Un objeto que publicó antes pero omite en una publicación posterior se elimina: para conservarlo, inclúyalo siempre.
stockStatuses la excepción. Es un valor a nivel de campo: si lo omite en un objeto que sí incluye, se conserva el inventario actual de ese objeto (los objetos nuevos quedan por defecto enin_stock). Por eso, marcar un artículo como agotado sigue siendo una publicación completa que incluye todos los objetos; solo cambia un campo.- La identidad es su
externalId. El mismoexternalIdactualiza el mismo objeto entre publicaciones; uno nuevo crea un objeto nuevo. Use ID que sean estables en su sistema (un SKU o una clave primaria), no nombres para mostrar. - Se conserva el orden. Las categorías, los artículos, las variantes y las opciones aparecen en el orden en que los envía.
- La validación es todo o nada. Si algo no es válido, recibe un
400con todos los problemas y el menú queda exactamente como estaba. Corríjalos todos y vuelva a enviar. - Las publicaciones idénticas no hacen nada. Enviar el mismo documento no cambia nada ni genera movimiento, así que puede publicar con seguridad en cada cambio del menú.
- Cada cambio genera una versión. Un cambio de contenido crea una versión nueva; el local siempre sirve la actual.
Establezca la zona horaria para la disponibilidad
Las ventanas de disponibilidad (franjas horarias y happy hours) se evalúan en la zona horaria del menú. Establézcala con el campo de nivel superiortimezone, un nombre IANA como America/New_York:
Léalo de vuelta
externalId con el que lo publicó. Un local sin menú publicado devuelve un 404.
Sepa cuándo se aplica una publicación
Suscríbase a los eventos de sincronización del menú para recibir una notificación a medida que un menú publicado se propaga:
Consulte Webhooks para suscribirse y verificarlos.
Siguiente
Reciba y decida pedidos
Las partidas de los pedidos hacen referencia a su menú con el
externalId que usted asigna.Esquema completo del menú
Todos los campos de cada objeto del menú, en la referencia de endpoints.